@ file : Suppress (" Member Visibility Can Be Private ") Ċ Ċ package Ġcom . s ymb ios is . sdk . network Ċ Ċ import Ġcom . so y wiz . kb ignum . BigInt Ċ import Ġcom . s ymb ios is . sdk . Clients Manager Ċ import Ġcom . s ymb ios is . sdk . contract . sorted Addresses Ċ import Ġcom . s ymb ios is . sdk . currency . E rc 2 0 Token Ċ import Ġcom . s ymb ios is . sdk . currency . Network Token Pair Ċ import Ġcom . s ymb ios is . sdk . currency . this Or Wrapped Ċ import Ġcom . s ymb ios is . sdk . dex . Dex Endpoint Ċ import Ġcom . s ymb ios is . sdk . gas . Gas Configuration Ċ import Ġcom . s ymb ios is . sdk . network . contract . N er ve Contract Ċ import Ġcom . s ymb ios is . sdk . network . contract . Outbound Request Ċ import Ġcom . s ymb ios is . sdk . network . contract . Pool Contract Ċ import Ġcom . s ymb ios is . sdk . network . contract . Portal Contract Ċ import Ġcom . s ymb ios is . sdk . network . contract . Router Contract Ċ import Ġcom . s ymb ios is . sdk . network . contract . Syn th Fabric Contract Ċ import Ġcom . s ymb ios is . sdk . network . contract . Synt hesize Contract Ċ import Ġcom . s ymb ios is . sdk . network . contract . Token Contract Ċ import Ġcom . s ymb ios is . sdk . network . contract . Wrapped Contract Ċ import Ġcom . s ymb ios is . sdk . network . contract . abi . create Pool Contract Ab i Ċ import Ġcom . s ymb ios is . sdk . network . contract . abi . create Wrapped Contract Ab i Ċ import Ġcom . s ymb ios is . sdk . network . contract . abi . fabric Contract Ab i Ċ import Ġcom . s ymb ios is . sdk . network . contract . abi . meta Router V 2 Contract Ċ import Ġcom . s ymb ios is . sdk . network . contract . abi . ner ve Contract Ċ import Ġcom . s ymb ios is . sdk . network . contract . abi . portal Contract Ab i Ċ import Ġcom . s ymb ios is . sdk . network . contract . abi . router Contract Ab i Ċ import Ġcom . s ymb ios is . sdk . network . contract . abi . synthesize Contract Ab i Ċ import Ġcom . s ymb ios is . sdk . network . contract . meta Router . Meta Router V 2 Contract Ċ import Ġcom . s ymb ios is . sdk . network . wrapper . Swap Wrapper Ċ import Ġcom . s ymb ios is . sdk . st uck . St uck Request Ċ import Ġcom . s ymb ios is . sdk . swap . LP Token Address Generator Ċ import Ġcom . s ymb ios is . sdk . swap . generate Ċ import Ġcom . s ymb ios is . sdk . swap . meta . N er ve Stable Pool Ċ import Ġcom . s ymb ios is . sdk . transaction . Signed Transaction Ċ import Ġcom . s ymb ios is . sdk . wallet . Credentials Ċ import Ġdev . icer ock . mo ko . web 3 . BlockState Ċ import Ġdev . icer ock . mo ko . web 3 . Contract Address Ċ import Ġdev . icer ock . mo ko . web 3 . E thereum Address Ċ import Ġdev . icer ock . mo ko . web 3 . Wallet Address Ċ import Ġdev . icer ock . mo ko . web 3 . Web 3 Executor Ċ import Ġdev . icer ock . mo ko . web 3 . Web 3 Rpc Request Ċ import Ġdev . icer ock . mo ko . web 3 . contract . ABI Decoder Ċ import Ġdev . icer ock . mo ko . web 3 . contract . Smart Contract Ċ import Ġdev . icer ock . mo ko . web 3 . contract . create E rc 2 0 Token Ab i Ċ import Ġdev . icer ock . mo ko . web 3 . entity . Log Event Ċ import Ġdev . icer ock . mo ko . web 3 . hex . Hex 3 2 String Ċ import Ġdev . icer ock . mo ko . web 3 . requests . execute Batch Ċ import Ġdev . icer ock . mo ko . web 3 . requests . getBlock Number Ċ import Ġkotlinx . serialization . json . Json Ċ Ċ @ Requires Opt In ( ĊĠĠĠ Ġmessage Ġ= Ġ" Please , Ġconsider Ġto Ġuse ĠClients Manager . get Network Client Ġinstead Ġof Ġthe Ġraw Ġconstructor , Ġbecause Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" it 's Ġsignature Ġmay Ġbe Ġchanged Ġin Ġthe Ġfuture .", ĊĠĠĠ Ġlevel Ġ= ĠRequires Opt In . Level . WARNING Ċ ) Ċ annotation Ġclass ĠRaw Usage Of Network Constructor Ċ Ċ /** Ċ Ġ* ĠThis Ġis Ġa Ġsingle - network Ġclient Ġthat Ġrespon ds Ġfor Ċ Ġ* Ġexecuting Ġcontracts Ġand Ġweb 3 - requests . Ċ Ġ* ĠIn Ġother Ġwords , Ġwrapper Ġaround Ġm oko - web 3 Ġand Ġs ymb ios is Ġsmart Ġcontracts . Ċ Ġ* Ċ Ġ* ĠNorm ally Ġcreated Ġvia Ġ[ Clients Manager . get Network Client ], Ċ Ġ* Ġthus Ġeverything Ġinjected Ġfrom Ġsdk Ġconfiguration Ġby Ġdefault . Ċ Ġ* Ċ Ġ* ĠTo Ġget Ġmore Ġinformation Ġabout Ġcontracts , Ġuse Ġjump - to - definition Ġand Ċ Ġ* Ġcheck Ġfor Ġk doc Ċ Ġ*/ Ċ class ĠNetwork Client Ġ@ Raw Usage Of Network Constructor Ġconstructor ( val Ġnetwork : ĠNetwork ) Ġ: ĊĠĠĠ ĠWeb 3 Executor Ġby Ġnetwork . executor Ġ{ ĊĊĠĠĠ Ġ// Ġ---------------- ------- Ġ// ĊĠĠĠ Ġ// ĠSmart Ġcontracts Ġsection Ġ// ĊĠĠĠ Ġ// Ġ---------------- ------- Ġ// ĊĠĠĠ Ġprivate Ġval Ġfabric Smart Contract Ġ= ĠSmart Contract ( ĊĠĠĠĠĠĠĠ Ġexecutor Ġ= Ġnetwork . executor , ĊĠĠĠĠĠĠĠ Ġcontract Address Ġ= Ġnetwork . syn th Fabric Address , ĊĠĠĠĠĠĠĠ Ġabi Json Ġ= Ġfabric Contract Ab i ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġsyn th Fabric Ġ= ĠSyn th Fabric Contract ( ĊĠĠĠĠĠĠĠ Ġexecutor Ġ= Ġnetwork . executor , ĊĠĠĠĠĠĠĠ Ġnetwork Ġ= Ġnetwork , ĊĠĠĠĠĠĠĠ Ġwrapped Ġ= Ġfabric Smart Contract ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġsynt hesize Smart Contract Ġ= ĠSmart Contract ( ĊĠĠĠĠĠĠĠ Ġexecutor Ġ= Ġnetwork . executor , ĊĠĠĠĠĠĠĠ Ġcontract Address Ġ= Ġnetwork . synthesize Address , ĊĠĠĠĠĠĠĠ Ġabi Json Ġ= Ġsynt hesize Contract Ab i ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġsynt hesize Ġ= ĠSynt hesize Contract ( ĊĠĠĠĠĠĠĠ Ġexecutor Ġ= Ġnetwork . executor , ĊĠĠĠĠĠĠĠ Ġnetwork Ġ= Ġnetwork , ĊĠĠĠĠĠĠĠ Ġwrapped Ġ= Ġsynt hesize Smart Contract , ĊĠĠĠĠĠĠĠ Ġnonce Controller Ġ= Ġnetwork . nonce Controller , ĊĠĠĠĠĠĠĠ Ġtoken Contract Factory Ġ= Ġ:: getToken Contract , ĊĠĠĠĠĠĠĠ Ġdefault Gas Provider Ġ= Ġnetwork . gas Provider ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġportal Smart Contract Ġ= ĠSmart Contract ( ĊĠĠĠĠĠĠĠ Ġexecutor Ġ= Ġnetwork . executor , ĊĠĠĠĠĠĠĠ Ġcontract Address Ġ= Ġnetwork . portal Address , ĊĠĠĠĠĠĠĠ Ġabi Json Ġ= Ġportal Contract Ab i ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġportal Ġ= ĠPortal Contract ( ĊĠĠĠĠĠĠĠ Ġexecutor Ġ= Ġnetwork . executor , ĊĠĠĠĠĠĠĠ Ġnetwork Ġ= Ġnetwork , ĊĠĠĠĠĠĠĠ Ġwrapped Ġ= Ġportal Smart Contract , ĊĠĠĠĠĠĠĠ Ġnonce Controller Ġ= Ġnetwork . nonce Controller , ĊĠĠĠĠĠĠĠ Ġtoken Contract Factory Ġ= Ġ:: getToken Contract , ĊĠĠĠĠĠĠĠ Ġdefault Gas Provider Ġ= Ġnetwork . gas Provider ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġrouter Smart Contract Ġ= ĠSmart Contract ( ĊĠĠĠĠĠĠĠ Ġexecutor Ġ= Ġnetwork . executor , ĊĠĠĠĠĠĠĠ Ġcontract Address Ġ= Ġnetwork . router Address , ĊĠĠĠĠĠĠĠ Ġabi Json Ġ= Ġrouter Contract Ab i ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġrouter Ġ= ĠRouter Contract ( ĊĠĠĠĠĠĠĠ Ġexecutor Ġ= Ġnetwork . executor , ĊĠĠĠĠĠĠĠ Ġnetwork Ġ= Ġnetwork , ĊĠĠĠĠĠĠĠ Ġwrapped Ġ= Ġrouter Smart Contract , ĊĠĠĠĠĠĠĠ Ġnonce Controller Ġ= Ġnetwork . nonce Controller , ĊĠĠĠĠĠĠĠ Ġtoken Contract Factory Ġ= Ġ:: getToken Contract , ĊĠĠĠĠĠĠĠ Ġdefault Swap TTL Provider Ġ= Ġnetwork . swap TTL Provider , ĊĠĠĠĠĠĠĠ Ġdefault Gas Provider Ġ= Ġnetwork . gas Provider ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġmeta Router V 2 Smart Contract : ĠSmart Contract Ġ= ĠSmart Contract ( ĊĠĠĠĠĠĠĠ Ġexecutor Ġ= Ġnetwork . executor , ĊĠĠĠĠĠĠĠ Ġcontract Address Ġ= Ġnetwork . meta Router Address , ĊĠĠĠĠĠĠĠ Ġabi Json Ġ= Ġmeta Router V 2 Contract ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġmeta Router V 2 : ĠMeta Router V 2 Contract Ġ= ĠMeta Router V 2 Contract ( ĊĠĠĠĠĠĠĠ Ġmeta Router V 2 Smart Contract Ġ= Ġmeta Router V 2 Smart Contract , ĊĠĠĠĠĠĠĠ Ġnonce Controller Ġ= Ġnetwork . nonce Controller , ĊĠĠĠĠĠĠĠ Ġexecutor Ġ= Ġnetwork . executor , ĊĠĠĠĠĠĠĠ Ġdefault Gas Provider Ġ= Ġnetwork . gas Provider , ĊĠĠĠĠĠĠĠ Ġtoken Contract Provider Ġ= Ġ:: getToken Contract ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġget N er ve Contract ( pool : ĠN er ve Stable Pool ): ĠN er ve Contract Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġner ve Smart Contract Ġ= ĠSmart Contract ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecutor Ġ= Ġnetwork . executor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontract Address Ġ= Ġpool . address , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġabi Json Ġ= Ġner ve Contract ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn ĠN er ve Contract ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrapped Ġ= Ġner ve Smart Contract , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Ġ= Ġnetwork , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnonce Controller Ġ= Ġnetwork . nonce Controller , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecutor Ġ= Ġnetwork . executor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Gas Provider Ġ= Ġnetwork . gas Provider ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġswap Ġ= ĠSwap Wrapper ( ĊĠĠĠĠĠĠĠ Ġnetwork Ġ= Ġnetwork , ĊĠĠĠĠĠĠĠ Ġexecutor Ġ= Ġnetwork . executor , ĊĠĠĠĠĠĠĠ Ġre serves Requests Factory Ġ= Ġ{ Ġdex , Ġpair Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Pool Contract ( dex , Ġpair ). get Reser ves Request () ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġrouter Ġ= Ġrouter , ĊĠĠĠĠĠĠĠ Ġdefault Dex Endpoints Ġ= Ġnetwork . dex Endpoints ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun ĠgetToken Contract ( address : ĠContract Address ) Ġ= ĊĠĠĠĠĠĠĠ ĠToken Contract ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Ġ= Ġnetwork , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecutor Ġ= Ġnetwork . executor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnonce Controller Ġ= Ġnetwork . nonce Controller , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrapped Ġ= ĠSmart Contract ( network . executor , Ġaddress , Ġcreate E rc 2 0 Token Ab i ( Json )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Gas Provider Ġ= Ġnetwork . gas Provider ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġget Wrapped Token Contract ( address : ĠContract Address ) Ġ= ĊĠĠĠĠĠĠĠ ĠWr apped Contract ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Ġ= Ġnetwork , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecutor Ġ= Ġnetwork . executor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnonce Controller Ġ= Ġnetwork . nonce Controller , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrapped Ġ= ĠSmart Contract ( network . executor , Ġaddress , Ġcreate Wrapped Contract Ab i ( Json )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Gas Provider Ġ= Ġnetwork . gas Provider ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġget Pool Contract ( dex : ĠDex Endpoint , Ġpair : ĠNetwork Token Pair ): ĠPool Contract Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( pair . network . chain Id Ġ== Ġnetwork . chain Id ) Ġ{ Ġ" You Ġcan Ġonly Ġget ĠPool Contract Ġfor Ġ${ network . network Name } Ġon Ġthis ĠNetwork Client " Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= ĠLP Token Address Generator . generate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdex Ġ= Ġdex , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpair Ġ= Ġpair ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsmart Contract Ġ= ĠSmart Contract ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecutor Ġ= Ġnetwork . executor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontract Address Ġ= Ġaddress , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġabi Json Ġ= Ġcreate Pool Contract Ab i ( Json ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġis Re versed Ġ= ĠlistOf ( pair . first . this Or Wrapped . token Address , Ġpair . second . this Or Wrapped . token Address ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted Addresses () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first () Ġ!= Ġpair . first . this Or Wrapped . token Address ĊĊĠĠĠĠĠĠĠ Ġreturn ĠPool Contract ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecutor Ġ= Ġnetwork . executor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrapped Ġ= Ġsmart Contract , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Re versed Ġ= Ġis Re versed ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ---------------- ----------- Ġ// ĊĠĠĠ Ġ// ĠSmart Ġcontracts Ġsection Ġend Ġ// ĊĠĠĠ Ġ// Ġ---------------- ----------- Ġ// ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFunction Ġfor Ġcreating Ġtransfer Ġtransactions Ġsafely , ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠYou Ġshould Ġconsume Ġ[ Signed Transaction ] Ġinside ĊĠĠĠĠ Ġ* Ġthe Ġ[ handler ] Ġblock , Ġso Ġnonce Ġwill Ġbe Ġused Ġsafely ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġ< T > Ġcreate Transfer Transaction ( ĊĠĠĠĠĠĠĠ Ġcredentials : ĠCredentials , ĊĠĠĠĠĠĠĠ Ġto : ĠWallet Address , ĊĠĠĠĠĠĠĠ Ġvalue : ĠBigInt , ĊĠĠĠĠĠĠĠ Ġgas Configuration : ĠG as Configuration ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġhandler : Ġsuspend Ġ( Signed Transaction ) Ġ-> ĠT ĊĠĠĠ Ġ): ĠT Ġ= Ġnetwork . nonce Controller . with Nonce ( credentials . address ) Ġ{ Ġnonce Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġsigned Transaction Ġ= Ġcredentials . signer . sign Transfer Transaction ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnonce , Ġnetwork . chain Id , Ġto , Ġvalue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgas Configuration Ġ= Ġgas Configuration Ġ?: Ġnetwork . gas Provider . get Gas Configuration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Ġ= Ġcredentials . address , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Ġ= ĠContract Address ( to . prefix ed ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Data Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġvalue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecutor Ġ= Ġnetwork . executor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn @ with Nonce Ġhandler ( signed Transaction ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġget St uck Transactions ( ĊĠĠĠĠĠĠĠ Ġaddress : ĠWallet Address , ĊĠĠĠĠĠĠĠ Ġclients : ĠList < Network Client >, ĊĠĠĠĠĠĠĠ Ġblocks Offset : ĠInt Ġ= Ġ 5 _ 0 0 0 ĊĠĠĠ Ġ): ĠList < St uck Request > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Block Ġ= Ġget Block Number () ĊĊĠĠĠĠĠĠĠ Ġfun ĠLog Event . burn Client () Ġ= Ġclients ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first Ġ{ Ġburn Chain Id () Ġ== Ġit . network . chain Id Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠLog Event . syn th Client () Ġ= Ġclients ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first Ġ{ Ġsyn th Chain Id () Ġ== Ġit . network . chain Id Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġ( synthesize Events , Ġburn Events ) Ġ= Ġexecute Batch ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġportal . getS ynt hesize Requests Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddress Ġ= Ġaddress , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Block Ġ= ĠBlock State . Quantity ( block Number Ġ= Ġcurrent Block Ġ- Ġblocks Offset ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Block Ġ= ĠBlock State . Quantity ( block Number Ġ= Ġcurrent Block ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynt hesize . get Burn Requests Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddress Ġ= Ġaddress , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Block Ġ= ĠBlock State . Quantity ( block Number Ġ= Ġcurrent Block Ġ- Ġblocks Offset ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Block Ġ= ĠBlock State . Quantity ( block Number Ġ= Ġcurrent Block ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). let Ġ{ Ġ( synthesize , Ġburn ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynt hesize . filter Ġ{ Ġlog Ġ-> Ġlog . syn th Chain Id () Ġin Ġclients . map Ġ{ Ġclient Ġ-> Ġclient . network . chain Id Ġ} Ġ} Ġto ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġburn . filter Ġ{ Ġlog Ġ-> Ġlog . burn Chain Id () Ġin Ġclients . map Ġ{ Ġclient Ġ-> Ġclient . network . chain Id Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġstrategies Ġ= Ġsynt hesize Events . map Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProcess Strategy . Synt hesize ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . syn th Internal Id (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Client Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Client Ġ= Ġevent . syn th Client (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddress ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġ+ Ġburn Events . map Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProcess Strategy . Burn ( event . burn Internal Id (), Ġfrom Client Ġ= Ġthis , Ġtarget Client Ġ= Ġevent . burn Client (), Ġaddress ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstrategies . take If Ġ{ Ġit . isNotEmpty () Ġ} Ġ?: Ġreturn Ġempty List () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġprocess Requests ( str ategies ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġabstract Ġclass ĠProcess Strategy ( ĊĠĠĠĠĠĠĠ Ġval Ġfrom Client : ĠNetwork Client , ĊĠĠĠĠĠĠĠ Ġval Ġtarget Client : ĠNetwork Client , ĊĠĠĠĠĠĠĠ Ġval Ġinternal Id : ĠHex 3 2 String ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġabstract Ġfun Ġget External Id (): ĠHex 3 2 String ĊĠĠĠĠĠĠĠ Ġabstract Ġfun Ġrequests Request (): ĠWeb 3 Rpc Request < *, Ġout ĠOut bound Request > ĊĠĠĠĠĠĠĠ Ġabstract Ġfun Ġstates Request (): ĠWeb 3 Rpc Request < *, ĠSt uck Request . State > ĊĊĠĠĠĠĠĠĠ Ġclass ĠB urn ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Id : ĠHex 3 2 String , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Client : ĠNetwork Client , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Client : ĠNetwork Client , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġre ver table Address : ĠEthereum Address ĊĠĠĠĠĠĠĠ Ġ) Ġ: ĠProcess Strategy ( from Client , Ġtarget Client , Ġinternal Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget External Id (): ĠHex 3 2 String Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Client . portal . get External Id ( internal Id , Ġtarget Client . network , Ġre ver table Address ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrequests Request () Ġ= Ġfrom Client . synthesize . requests Request ( get External Id ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġstates Request () Ġ= Ġtarget Client . portal . un synthesize States Request ( get External Id ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġclass ĠSynt hesize ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Id : ĠHex 3 2 String , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Client : ĠNetwork Client , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Client : ĠNetwork Client , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġre ver table Address : ĠEthereum Address ĊĠĠĠĠĠĠĠ Ġ) Ġ: ĠProcess Strategy ( from Client , Ġtarget Client , Ġinternal Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget External Id (): ĠHex 3 2 String Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Client . synthesize . get External Id ( internal Id , Ġtarget Client . network , Ġre ver table Address ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrequests Request () Ġ= Ġfrom Client . portal . requests Request ( get External Id ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġstates Request () Ġ= Ġtarget Client . synthesize . synthesize States Request ( get External Id ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġprocess Requests ( str ategies : ĠList < Process Strategy >): ĠList < St uck Request > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequests Ġ= Ġexecute Batch ( str ategies . map Ġ{ Ġit . requests Request () Ġ}) ĊĊĠĠĠĠĠĠĠ Ġval Ġstates Ġ= Ġstrategies . groupBy Ġ{ Ġit . target Client . network . chain Id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. entries ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġ(_, Ġstrategies ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclient Ġ= Ġstrategies . first (). target Client ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient . execute Batch ( str ategies . map Ġ{ Ġit . states Request () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġstrategies ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. zip ( requests ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. zip ( states ) Ġ{ Ġ( strategy , Ġrequest ), Ġstate Ġ-> ĠTrip le ( strategy , Ġrequest , Ġstate ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġ(_, Ġrequest ) Ġ-> Ġrequest . state Ġ== ĠOut bound Request . State . Sent Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġ(_, Ġ_, Ġstate ) Ġ-> Ġstate Ġ== ĠSt uck Request . State . Default Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ( strategy , Ġrequest , Ġstate ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSt uck Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Id Ġ= Ġstrategy . internal Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexternal Id Ġ= Ġstrategy . get External Id (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġstate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Client Ġ= Ġstrategy . from Client , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Client Ġ= Ġstrategy . target Client , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb rid ging Fee Provider Ġ= Ġnetwork . brid ging Fee Provider ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠNetwork Client . getToken Contract ( currency : ĠE rc 2 0 Token ) Ġ= ĊĠĠĠ ĠgetToken Contract ( currency . token Address ) Ċ Ċ // Ġfix me : Ġevents Ġshould Ġbe Ġdecoded Ġsimilar Ġto Ġmethods Ċ private Ġfun ĠLog Event . syn th Chain Id () Ġ= ĠABI Decoder ĊĠĠĠ Ġ. decode Log Event ( portal Contract Ab i , Ġevent Ġ= Ġthis ) ĊĠĠĠ Ġ. let Ġ{ Ġ(_, Ġ_, Ġchain Id ) Ġ-> Ġchain Id Ġas ĠBigInt Ġ} Ċ Ċ private Ġfun ĠLog Event . burn Chain Id () Ġ= ĠABI Decoder ĊĠĠĠ Ġ. decode Log Event ( synthesize Contract Ab i , Ġevent Ġ= Ġthis ) ĊĠĠĠ Ġ. let Ġ{ Ġ(_, Ġ_, Ġchain Id ) Ġ-> Ġchain Id Ġas ĠBigInt Ġ} Ċ Ċ private Ġfun ĠLog Event . syn th Internal Id () Ġ= ĠABI Decoder ĊĠĠĠ Ġ. decode Log Event ( portal Contract Ab i , Ġevent Ġ= Ġthis ) ĊĠĠĠ Ġ. let Ġ{ Ġ( internal Id ) Ġ-> ĠHex 3 2 String ( internal Id Ġas ĠByteArray ) Ġ} Ċ Ċ private Ġfun ĠLog Event . burn Internal Id () Ġ= ĠABI Decoder ĊĠĠĠ Ġ. decode Log Event ( synthesize Contract Ab i , Ġevent Ġ= Ġthis ) ĊĠĠĠ Ġ. let Ġ{ Ġ( internal Id ) Ġ-> ĠHex 3 2 String ( internal Id Ġas ĠByteArray ) Ġ} Ċ