package Ġnet . cord a . finance . contracts Ċ Ċ import Ġnet . cord a . core . contracts . Command Data Ċ import Ġnet . cord a . core . contracts . Linear State Ċ import Ġnet . cord a . core . contracts . State And Ref Ċ import Ġnet . cord a . core . contracts . Token izable Asset Info Ċ import Ġnet . cord a . core . identity . Party Ċ import Ġnet . cord a . core . serialization . C ord a Serializable Ċ import Ġnet . cord a . core . transactions . Transaction Builder Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . time . LocalDate Ċ import Ġjava . util .* Ċ Ċ //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////// Ċ // Ċ // ĠInter est Ġrate Ġfixes Ċ // Ċ //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////// Ċ Ċ // ĠDOC START Ġ 1 Ċ /** ĠA Ġ[ Fix Of ] Ġidentifies Ġthe Ġquestion Ġside Ġof Ġa Ġfix : Ġwhat Ġday , Ġten or Ġand Ġtype Ġof Ġfix Ġ(" LIB OR ", Ġ" EUR IB OR " Ġetc ) Ġ*/ Ċ @ C ord a Serializable Ċ data Ġclass ĠFix Of ( val Ġname : ĠString , Ġval Ġfor Day : ĠLocalDate , Ġval Ġof Ten or : ĠTen or ) Ċ // ĠDOC END Ġ 1 Ċ Ċ // ĠDOC START Ġ 2 Ċ /** ĠA Ġ[ Fix ] Ġrepresents Ġa Ġnamed Ġinterest Ġrate , Ġon Ġa Ġgiven Ġday , Ġfor Ġa Ġgiven Ġduration . ĠIt Ġcan Ġbe Ġembedded Ġin Ġa Ġtx . Ġ*/ Ċ data Ġclass ĠFix ( val Ġof : ĠFix Of , Ġval Ġvalue : ĠBigDecimal ) Ġ: ĠCommand Data Ċ // ĠDOC END Ġ 2 Ċ Ċ /** ĠRepresents Ġa Ġtext ual Ġexpression Ġof Ġe . g . Ġa Ġformula Ġ*/ Ċ @ C ord a Serializable Ċ data Ġclass ĠExpression ( val Ġexpr : ĠString ) Ċ Ċ /** ĠPlace holder Ġclass Ġfor Ġthe ĠTen or Ġdatatype Ġ- Ġwhich Ġis Ġa Ġstandard ised Ġduration Ġof Ġtime Ġuntil Ġmat urity Ġ*/ Ċ @ C ord a Serializable Ċ data Ġclass ĠTen or ( val Ġname : ĠString ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġamount : ĠInt ĊĠĠĠ Ġprivate Ġval Ġunit : ĠTimeUnit ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( name Ġ== Ġ" ON ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOver night ĊĠĠĠĠĠĠĠĠĠĠĠ Ġamount Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunit Ġ= ĠTimeUnit . Day ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregex Ġ= Ġ""" (\ d +) ([ DM YW ]) """. to Regex () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= Ġregex . match Ent ire ( name )?. group Values Ġ?: Ġthrow ĠIllegalArgumentException (" Un re cogn ised Ġten or Ġname : Ġ$ name ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġamount Ġ= Ġmatch [ 1 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunit Ġ= ĠTimeUnit . values (). first Ġ{ Ġit . code Ġ== Ġmatch [ 2 ] Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdays To Mat urity ( startDate : ĠLocalDate , Ġcalendar : ĠBusiness Calendar ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmat urity Date Ġ= Ġwhen Ġ( unit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . Day Ġ-> ĠstartDate . plus Days ( amount . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . Week Ġ-> ĠstartDate . plus Week s ( amount . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . Month Ġ-> ĠstartDate . plus Months ( amount . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . Year Ġ-> ĠstartDate . plus Years ( amount . to Long ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠMove Ġdate Ġto Ġthe Ġclosest Ġbusiness Ġday Ġwhen Ġit Ġfalls Ġon Ġa Ġweekend / holiday ĊĠĠĠĠĠĠĠ Ġval Ġadjusted Mat urity Date Ġ= Ġcalendar . apply Roll Convention ( mat urity Date , ĠDate Roll Convention . Modified Following ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠBusiness Calendar . calculate Days Between ( startDate , Ġadjusted Mat urity Date , ĠDay Count Basis Year . Y 3 6 0 , ĠDay Count Basis Day . D Actual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġname ĊĊĠĠĠ Ġ@ C ord a Serializable ĊĠĠĠ Ġenum Ġclass ĠTimeUnit ( val Ġcode : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDay (" D "), ĠWeek (" W "), ĠMonth (" M "), ĠYear (" Y ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠSimple Ġenum Ġfor Ġreturning Ġaccur als Ġadjusted Ġor Ġun adjusted . Ċ Ġ* ĠWe Ġdon 't Ġactually Ġdo Ġanything Ġwith Ġthis Ġyet Ġthough , Ġso Ġit 's Ġignored Ġfor Ġnow . Ċ Ġ*/ Ċ @ C ord a Serializable Ċ enum Ġclass ĠAcc r ual Adjustment Ġ{ ĊĠĠĠ ĠAdjust ed , ĠUn adjusted Ċ } Ċ Ċ /** Ċ Ġ* ĠThis Ġis Ġutil ised Ġin Ġthe Ġ[ Date Roll Convention ] Ġclass Ġto Ġdetermine Ġwhich Ġway Ġwe Ġshould Ġinitially Ġstep Ġwhen Ċ Ġ* Ġfinding Ġa Ġbusiness Ġday . Ċ Ġ*/ Ċ @ C ord a Serializable Ċ enum Ġclass ĠDate Roll Direction ( val Ġvalue : ĠLong ) Ġ{ ĠFOR WARD ( 1 ), ĠBACK WARD (- 1 ) Ġ} Ċ Ċ /** Ċ Ġ* ĠThis Ġreflect s Ġwhat Ġhappens Ġif Ġa Ġdate Ġon Ġwhich Ġa Ġbusiness Ġevent Ġis Ġsupposed Ġto Ġhappen Ġactually Ġfalls Ġupon Ġa Ġnon - working Ġday . Ċ Ġ* ĠDep ending Ġon Ġthe Ġaccounting Ġrequirement , Ġwe Ġcan Ġmove Ġforward Ġuntil Ġwe Ġget Ġto Ġa Ġbusiness Ġday , Ġor Ġbackwards . Ċ Ġ* ĠThere Ġare Ġsome Ġadditional Ġrules Ġwhich Ġare Ġexplained Ġin Ġthe Ġindividual Ġcases Ġbelow . Ċ Ġ*/ Ċ @ C ord a Serializable Ċ enum Ġclass ĠDate Roll Convention ( val Ġdirection : Ġ() Ġ-> ĠDate Roll Direction , Ġval Ġis Modified : ĠBoolean ) Ġ{ ĊĠĠĠ Ġ// Ġdirection () Ġcannot Ġbe Ġa Ġval Ġdue Ġto Ġthe Ġthrow Ġin Ġthe ĠActual Ġinstance ĊĊĠĠĠ Ġ/** ĠDon 't Ġroll Ġthe Ġdate , Ġuse Ġthe Ġone Ġsupplied . Ġ*/ ĊĠĠĠ ĠActual ({ Ġthrow ĠUnsupportedOperationException (" Direction Ġis Ġnot Ġrelevant Ġfor Ġconvention ĠActual ") Ġ}, Ġfalse ), ĊĠĠĠ Ġ/** ĠFollowing Ġis Ġthe Ġnext Ġbusiness Ġdate Ġfrom Ġthis Ġone . Ġ*/ ĊĠĠĠ ĠFollowing ({ ĠDate Roll Direction . FORWARD Ġ}, Ġfalse ), ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ" Modified Ġfollowing " Ġis Ġthe Ġnext Ġbusiness Ġdate , Ġunless Ġit 's Ġin Ġthe Ġnext Ġmonth , Ġin Ġwhich Ġcase Ġuse Ġthe Ġpreceeding ĊĠĠĠĠ Ġ* Ġbusiness Ġdate . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠModified Following ({ ĠDate Roll Direction . FORWARD Ġ}, Ġtrue ), ĊĠĠĠ Ġ/** ĠPrevious Ġis Ġthe Ġprevious Ġbusiness Ġdate Ġfrom Ġthis Ġone . Ġ*/ ĊĠĠĠ ĠPrevious ({ ĠDate Roll Direction . BACK WARD Ġ}, Ġfalse ), ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠModified Ġprevious Ġis Ġthe Ġprevious Ġbusiness Ġdate , Ġunless Ġit 's Ġin Ġthe Ġprevious Ġmonth , Ġin Ġwhich Ġcase Ġuse Ġthe Ġnext ĊĠĠĠĠ Ġ* Ġbusiness Ġdate . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠModified Previous ({ ĠDate Roll Direction . BACK WARD Ġ}, Ġtrue ); Ċ } ĊĊ Ċ /** Ċ Ġ* ĠThis Ġforms Ġthe Ġday Ġpart Ġof Ġthe Ġ" Day ĠCount ĠB asis " Ġused Ġfor Ġinterest Ġcalculation . Ċ Ġ* ĠNote Ġthat Ġthe Ġfirst Ġcharacter Ġcannot Ġbe Ġa Ġnumber Ġ( enum Ġnaming Ġconstraints ), Ġso Ġwe Ġdrop Ġthat Ċ Ġ* Ġin Ġthe ĠtoString Ġle st Ġsome Ġpeople Ġget Ġconfused . Ċ Ġ*/ Ċ @ C ord a Serializable Ċ enum Ġclass ĠDay Count Basis Day Ġ{ ĊĠĠĠ Ġ// ĠWe Ġhave Ġto Ġprefix Ġ 3 0 Ġetc Ġwith Ġa Ġletter Ġdue Ġto Ġenum Ġnaming Ġconstraints . ĊĠĠĠ ĠD 3 0 , ĊĠĠĠ ĠD 3 0 N , ĠD 3 0 P , ĠD 3 0 E , ĠD 3 0 G , ĠD Actual , ĠD Actual J , ĠD 3 0 Z , ĠD 3 0 F , ĠDB us _ S ao P au lo ; ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . toString (). drop ( 1 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** ĠThis Ġforms Ġthe Ġyear Ġpart Ġof Ġthe Ġ" Day ĠCount ĠB asis " Ġused Ġfor Ġinterest Ġcalculation . Ġ*/ Ċ @ C ord a Serializable Ċ enum Ġclass ĠDay Count Basis Year Ġ{ ĊĠĠĠ Ġ// ĠD it to Ġabove Ġcomment Ġfor Ġyears . ĊĠĠĠ ĠY 3 6 0 , ĊĠĠĠ ĠY 3 6 5 F , ĠY 3 6 5 L , ĠY 3 6 5 Q , ĠY 3 6 6 , ĠY Actual , ĠY Actual A , ĠY 3 6 5 B , ĠY 3 6 5 , ĠY IS MA , ĠY IS DA , ĠY IC MA , ĠY 2 5 2 ; ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . toString (). drop ( 1 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** ĠWhether Ġthe Ġpayment Ġshould Ġbe Ġmade Ġbefore Ġthe Ġdue Ġdate , Ġor Ġafter Ġit . Ġ*/ Ċ @ C ord a Serializable Ċ enum Ġclass ĠPayment Rule Ġ{ ĊĠĠĠ ĠIn Advance , ĠIn Ar re ars , Ċ } Ċ Ċ /** Ċ Ġ* ĠFrequency Ġat Ġwhich Ġan Ġevent Ġoccurs Ġ- Ġthe Ġenumerator Ġalso Ġcast s Ġto Ġan Ġinteger Ġspecifying Ġthe Ġnumber Ġof Ġtimes Ġper Ġyear Ċ Ġ* Ġthat Ġwould Ġdivide Ġinto Ġ( eg Ġann ually Ġ= Ġ 1 , Ġsemi ann ual Ġ= Ġ 2 , Ġmonthly Ġ= Ġ 1 2 Ġetc ). Ċ Ġ*/ Ċ @ Suppress (" unused ") ĠĠ Ġ// ĠTODO : ĠRe visit Ġpost - Ve ga Ġand Ġsee Ġif Ġannual Compound Count Ġis Ġstill Ġneeded . Ċ @ C ord a Serializable Ċ enum Ġclass ĠFrequency ( val Ġannual Compound Count : ĠInt , Ġval Ġoffset : ĠLocalDate .( Long ) Ġ-> ĠLocalDate ) Ġ{ ĊĠĠĠ ĠAnn ual ( 1 , Ġ{ Ġplus Years ( 1 Ġ* Ġit ) Ġ}), ĊĠĠĠ ĠSemi Annual ( 2 , Ġ{ Ġplus Months ( 6 Ġ* Ġit ) Ġ}), ĊĠĠĠ ĠQu arter ly ( 4 , Ġ{ Ġplus Months ( 3 Ġ* Ġit ) Ġ}), ĊĠĠĠ ĠMonth ly ( 1 2 , Ġ{ Ġplus Months ( 1 Ġ* Ġit ) Ġ}), ĊĠĠĠ ĠWeek ly ( 5 2 , Ġ{ Ġplus Week s ( 1 Ġ* Ġit ) Ġ}), ĊĠĠĠ ĠBi Week ly ( 2 6 , Ġ{ Ġplus Week s ( 2 Ġ* Ġit ) Ġ}), ĊĠĠĠ ĠDaily ( 3 6 5 , Ġ{ Ġplus Days ( 1 Ġ* Ġit ) Ġ}); Ċ } Ċ Ċ // ĠTODO : ĠMake ĠCalendar Ġdata Ġcome Ġfrom Ġan Ġoracle Ċ Ċ /** ĠA Ġcommon Ġnet ting Ġcommand Ġfor Ġcontracts Ġwhose Ġstates Ġcan Ġbe Ġnet ted . Ġ*/ Ċ interface ĠNet Command Ġ: ĠCommand Data Ġ{ ĊĠĠĠ Ġ/** ĠThe Ġtype Ġof Ġnet ting Ġto Ġapply , Ġsee Ġ[ Net Type ] Ġfor Ġoptions . Ġ*/ ĊĠĠĠ Ġval Ġtype : ĠNet Type Ċ } Ċ Ċ /** Ċ Ġ* ĠEnum Ġfor Ġthe Ġtypes Ġof Ġnet ting Ġthat Ġcan Ġbe Ġapplied Ġto Ġstate Ġobjects . ĠExact Ġbehaviour Ċ Ġ* Ġfor Ġeach Ġtype Ġof Ġnet ting Ġis Ġleft Ġto Ġthe Ġcontract Ġto Ġdetermine . Ċ Ġ*/ Ċ @ C ord a Serializable Ċ enum Ġclass ĠNet Type Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠClose - out Ġnet ting Ġapplies Ġwhere Ġone Ġparty Ġis Ġbank rupt Ġor Ġotherwise Ġdefaults Ġ( exact Ġterms Ġare Ġcontract Ġspecific ), ĊĠĠĠĠ Ġ* Ġand Ġallows Ġtheir Ġcounter party Ġto Ġnet Ġoblig ations Ġwithout Ġrequiring Ġapproval Ġfrom Ġall Ġparties . ĠFor Ġexample , Ġif ĊĠĠĠĠ Ġ* ĠBank ĠA Ġow es ĠBank ĠB ĠÂ £ 1 m , Ġand ĠBank ĠB Ġow es ĠBank ĠA ĠÂ £ 1 m , Ġin Ġthe Ġcase Ġof ĠBank ĠB Ġdefault ing Ġthis Ġwould Ġenable ĠBank ĠA ĊĠĠĠĠ Ġ* Ġto Ġnet Ġout Ġthe Ġtwo Ġoblig ations Ġto Ġzero , Ġrather Ġthan Ġbeing Ġleg ally Ġob li ged Ġto Ġpay ĠÂ £ 1 m Ġwithout Ġany Ġreal istic ĊĠĠĠĠ Ġ* Ġexpectation Ġof Ġthe Ġde bt Ġto Ġthem Ġbeing Ġpaid . ĠReal istic ally Ġthis Ġis Ġlimited Ġto Ġbil ateral Ġnet ting , Ġto Ġsimplify ĊĠĠĠĠ Ġ* Ġdetermining Ġwhich Ġparty Ġmust Ġsign Ġthe Ġnet ting Ġtransaction . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠCLOSE _ OUT , ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ" Payment " Ġis Ġused Ġto Ġrefer Ġto Ġconvention al Ġnet ting , Ġwhere Ġall Ġparties Ġmust Ġconfirm Ġthe Ġnet ting Ġtransaction . ĠThis ĊĠĠĠĠ Ġ* Ġcan Ġbe Ġa Ġmult il ateral Ġnet ting Ġtransaction , Ġand Ġmay Ġbe Ġcreated Ġby Ġa Ġcentral Ġclearing Ġservice . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠP AY MENT Ċ } Ċ Ċ /** Ċ Ġ* ĠClass Ġrepresenting Ġa Ġcommod ity , Ġas Ġan Ġequivalent Ġto Ġthe Ġ[ Currency ] Ġclass . ĠThis Ġexists Ġpure ly Ġto Ġenable Ġthe Ċ Ġ* Ġ[ Com mod ity Contract ] Ġcontract , Ġand Ġis Ġlikely Ġto Ġchange Ġin Ġfuture . Ċ Ġ* Ċ Ġ* Ġ@ param Ġcommod ity Code Ġa Ġunique Ġcode Ġfor Ġthe Ġcommod ity . ĠNo Ġspecific Ġregistry Ġfor Ġthese Ġis Ġcurrently Ġdefined , Ġalthough Ċ Ġ* Ġthis Ġis Ġlikely Ġto Ġchange Ġin Ġfuture . Ċ Ġ* Ġ@ param ĠdisplayName Ġhuman Ġreadable Ġname Ġfor Ġthe Ġcommod ity . Ċ Ġ* Ġ@ param Ġdefault Fraction Digits Ġthe Ġnumber Ġof Ġdigits Ġnormally Ġafter Ġthe Ġdecimal Ġpoint Ġwhen Ġreferring Ġto Ġquant ities Ġof Ċ Ġ* Ġthis Ġcommod ity . Ċ Ġ*/ Ċ @ C ord a Serializable Ċ data Ġclass ĠCom mod ity ( val Ġcommod ity Code : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdisplayName : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdefault Fraction Digits : ĠInt Ġ= Ġ 0 ) Ġ: ĠToken izable Asset Info Ġ{ ĊĠĠĠ Ġoverride Ġval Ġdisplay Token Size : ĠBigDecimal ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠBigDecimal . ONE . scale By Power Of Ten (- default Fraction Digits ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġregistry Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSimple Ġexample Ġcommod ity , Ġas Ġin Ġhttp :// www . invest op edia . com / university / commod ities / commod ities 1 4 . asp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" F CO J ", ĠCom mod ity (" F CO J ", Ġ" Frozen Ġconcent r ated Ġorange Ġju ice ")) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( commod ity Code : ĠString ): ĠCom mod ity ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġregistry [ commod ity Code ] ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠInterface Ġrepresenting Ġan Ġagreement Ġthat Ġexposes Ġvarious Ġattributes Ġthat Ġare Ġcommon . ĠImplement ing Ġit Ġsimpl ifies Ċ Ġ* Ġimplementation Ġof Ġgeneral Ġflows Ġthat Ġmanipulate Ġmany Ġagreement Ġtypes . Ċ Ġ*/ Ċ interface ĠDe al State Ġ: ĠLinear State Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGenerate Ġa Ġpartial Ġtransaction Ġrepresenting Ġan Ġagreement Ġ( command ) Ġto Ġthis Ġdeal , Ġallowing Ġa Ġgeneral ĊĠĠĠĠ Ġ* Ġdeal / agreement Ġflow Ġto Ġgenerate Ġthe Ġnecessary Ġtransaction Ġfor Ġpotential Ġimplementations . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠTODO : ĠCurrently Ġthis Ġis Ġthe Ġ" inception " Ġtransaction Ġbut Ġin Ġfuture Ġan Ġoffer Ġof Ġsome Ġdescription Ġmight Ġbe Ġan Ġinput Ġstate Ġref ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠTODO : ĠThis Ġshould Ġmore Ġlikely Ġbe Ġa Ġmethod Ġon Ġthe ĠContract Ġ( on Ġa Ġcommon Ġinterface ) Ġand Ġthe Ġchanges Ġto Ġreference Ġa ĊĠĠĠĠ Ġ* ĠContract Ġinstance Ġfrom Ġa ĠContract State Ġare Ġim min ent , Ġat Ġwhich Ġpoint Ġwe Ġcan Ġmove Ġthis Ġout Ġof Ġhere . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġgenerate Agreement ( not ary : ĠParty ): ĠTransaction Builder Ċ } Ċ Ċ /** Ċ Ġ* ĠInterface Ġadding Ġfixing Ġspecific Ġmethods . Ċ Ġ*/ Ċ interface ĠFix able Deal State Ġ: ĠDe al State Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhen Ġis Ġthe Ġnext Ġfixing Ġand Ġwhat Ġis Ġthe Ġfixing Ġfor ? ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġnext Fix ing Of (): ĠFix Of ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhat Ġoracle Ġservice Ġto Ġuse Ġfor Ġthe Ġfixing ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġoracle : ĠParty ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGenerate Ġa Ġfixing Ġcommand Ġfor Ġthis Ġdeal Ġand Ġfix . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠTODO : ĠThis Ġwould Ġalso Ġlikely Ġmove Ġto Ġmethods Ġon Ġthe ĠContract Ġonce Ġthe Ġchanges Ġto Ġreference ĊĠĠĠĠ Ġ* Ġthe ĠContract Ġfrom Ġthe ĠContract State Ġare Ġin . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġgenerate Fix ( pt x : ĠTransaction Builder , Ġold State : ĠState And Ref <* >, Ġfix : ĠFix ) Ċ } ĊĊ Ċ /** Ċ Ġ* ĠInterface Ġfor Ġstate Ġobjects Ġthat Ġsupport Ġbeing Ġnet ted Ġwith Ġother Ġstate Ġobjects . Ċ Ġ*/ Ċ interface ĠB il ateral Net table State < N Ġ: ĠB il ateral Net table State < N >> Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġobject Ġused Ġto Ġdetermine Ġif Ġtwo Ġstates Ġcan Ġbe Ġsubject Ġto Ġclose - out Ġnet ting . ĠIf Ġtwo Ġstates Ġreturn ĊĠĠĠĠ Ġ* Ġequal Ġobjects , Ġthey Ġcan Ġbe Ġclose Ġout Ġnet ted Ġtogether . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġbil ateral Net State : ĠAny ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPerform Ġbil ateral Ġnet ting Ġof Ġthis Ġstate Ġwith Ġanother Ġstate . ĠThe Ġtwo Ġstates Ġmust Ġbe Ġcompatible Ġ( as Ġin ĊĠĠĠĠ Ġ* Ġbil ateral Net State Ġobjects Ġare Ġequal ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġnet ( other : ĠN ): ĠN Ċ } Ċ Ċ /** Ċ Ġ* ĠInterface Ġfor Ġstate Ġobjects Ġthat Ġsupport Ġbeing Ġnet ted Ġwith Ġother Ġstate Ġobjects . Ċ Ġ*/ Ċ interface ĠMult il ateral Net table State < out ĠT Ġ: ĠAny > Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġan Ġobject Ġused Ġto Ġdetermine Ġif Ġtwo Ġstates Ġcan Ġbe Ġsubject Ġto Ġclose - out Ġnet ting . ĠIf Ġtwo Ġstates Ġreturn ĊĠĠĠĠ Ġ* Ġequal Ġobjects , Ġthey Ġcan Ġbe Ġclose Ġout Ġnet ted Ġtogether . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġmult il ateral Net State : ĠT Ċ } Ċ Ċ interface ĠNet table State < N Ġ: ĠB il ateral Net table State < N >, Ġout ĠT Ġ: ĠAny > Ġ: ĠB il ateral Net table State < N >, ĊĠĠĠĠĠĠĠ ĠMult il ateral Net table State < T > Ċ