@layerzerolabs/common-canton 1.2.91 → 1.2.93

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/dist/{5R6WVDPV.js → 2B3PTIL7.js} +5 -5
  2. package/dist/{5R6WVDPV.js.map → 2B3PTIL7.js.map} +1 -1
  3. package/dist/{2LYS7MEK.js → 2ESYJNEG.js} +6 -6
  4. package/dist/{2LYS7MEK.js.map → 2ESYJNEG.js.map} +1 -1
  5. package/dist/{TDVOFX7N.js → 2XI5AOKE.js} +3 -3
  6. package/dist/{TDVOFX7N.js.map → 2XI5AOKE.js.map} +1 -1
  7. package/dist/{CCLVPRJK.js → 3B3WSXS4.js} +3 -3
  8. package/dist/{CCLVPRJK.js.map → 3B3WSXS4.js.map} +1 -1
  9. package/dist/{REFDOIP7.js → 3KBNHKU6.js} +3 -3
  10. package/dist/{REFDOIP7.js.map → 3KBNHKU6.js.map} +1 -1
  11. package/dist/{WHH4J5G2.js → 4FQYG575.js} +4 -4
  12. package/dist/{WHH4J5G2.js.map → 4FQYG575.js.map} +1 -1
  13. package/dist/{LAU7FTTN.js → 4IOVXUQO.js} +3 -3
  14. package/dist/{LAU7FTTN.js.map → 4IOVXUQO.js.map} +1 -1
  15. package/dist/{B3E3Z2XP.js → 4VXSUYWR.js} +3 -3
  16. package/dist/{B3E3Z2XP.js.map → 4VXSUYWR.js.map} +1 -1
  17. package/dist/{PQU2JID4.js → 5BK6GCUD.js} +4 -4
  18. package/dist/{PQU2JID4.js.map → 5BK6GCUD.js.map} +1 -1
  19. package/dist/{KPYTSJJS.js → 5QEY5OH6.js} +3 -3
  20. package/dist/{KPYTSJJS.js.map → 5QEY5OH6.js.map} +1 -1
  21. package/dist/{LHA6QVMC.js → 5VKWPQE4.js} +4 -4
  22. package/dist/{LHA6QVMC.js.map → 5VKWPQE4.js.map} +1 -1
  23. package/dist/{NPSCFRV6.js → 5XL75SHZ.js} +3 -3
  24. package/dist/{NPSCFRV6.js.map → 5XL75SHZ.js.map} +1 -1
  25. package/dist/{44EVBXCG.js → 7RS76HLN.js} +4 -4
  26. package/dist/{44EVBXCG.js.map → 7RS76HLN.js.map} +1 -1
  27. package/dist/{THOAMWP2.js → AAFWZD4P.js} +5 -5
  28. package/dist/{THOAMWP2.js.map → AAFWZD4P.js.map} +1 -1
  29. package/dist/{IWEUYC4L.js → ACFMWQJ6.js} +3 -3
  30. package/dist/{IWEUYC4L.js.map → ACFMWQJ6.js.map} +1 -1
  31. package/dist/{TPLC22KU.js → AVTRWMUF.js} +48 -48
  32. package/dist/{TPLC22KU.js.map → AVTRWMUF.js.map} +1 -1
  33. package/dist/{B7MBM6I4.js → B5WQLYXA.js} +3 -3
  34. package/dist/{B7MBM6I4.js.map → B5WQLYXA.js.map} +1 -1
  35. package/dist/{5CADV7BB.js → B7J77LOR.js} +3 -3
  36. package/dist/{5CADV7BB.js.map → B7J77LOR.js.map} +1 -1
  37. package/dist/{XLO35F3H.js → C76ILRYT.js} +3 -3
  38. package/dist/{XLO35F3H.js.map → C76ILRYT.js.map} +1 -1
  39. package/dist/{GZJQMFWY.js → CMFVLC7C.js} +3 -3
  40. package/dist/{GZJQMFWY.js.map → CMFVLC7C.js.map} +1 -1
  41. package/dist/{62JWAJEM.js → CRVXAMIK.js} +3 -3
  42. package/dist/{62JWAJEM.js.map → CRVXAMIK.js.map} +1 -1
  43. package/dist/{H4LEP3ZZ.js → DTELRK7C.js} +3 -3
  44. package/dist/{H4LEP3ZZ.js.map → DTELRK7C.js.map} +1 -1
  45. package/dist/{RMUGJKIV.js → DZCJJOBK.js} +6 -6
  46. package/dist/{RMUGJKIV.js.map → DZCJJOBK.js.map} +1 -1
  47. package/dist/{FRIE5Q6G.js → E6W3YWXU.js} +5 -5
  48. package/dist/{FRIE5Q6G.js.map → E6W3YWXU.js.map} +1 -1
  49. package/dist/{BH24MB7Z.js → EDEB2RIL.js} +3 -3
  50. package/dist/{BH24MB7Z.js.map → EDEB2RIL.js.map} +1 -1
  51. package/dist/{RDG3GOWQ.js → FPIVAENA.js} +3 -3
  52. package/dist/{RDG3GOWQ.js.map → FPIVAENA.js.map} +1 -1
  53. package/dist/{WOBST65M.js → FTFLSKTH.js} +3 -3
  54. package/dist/{WOBST65M.js.map → FTFLSKTH.js.map} +1 -1
  55. package/dist/{XZSSPQAG.js → HC2GOOAL.js} +4 -4
  56. package/dist/{XZSSPQAG.js.map → HC2GOOAL.js.map} +1 -1
  57. package/dist/{E6T5VFT3.js → HQMIA66Y.js} +3 -3
  58. package/dist/{E6T5VFT3.js.map → HQMIA66Y.js.map} +1 -1
  59. package/dist/{VX44V3KJ.js → I4QKYIMV.js} +3 -3
  60. package/dist/{VX44V3KJ.js.map → I4QKYIMV.js.map} +1 -1
  61. package/dist/{DTE3J7NQ.js → IEZRGT3K.js} +3 -3
  62. package/dist/{DTE3J7NQ.js.map → IEZRGT3K.js.map} +1 -1
  63. package/dist/{U2DNZHEJ.js → IN2CLBQM.js} +3 -3
  64. package/dist/{U2DNZHEJ.js.map → IN2CLBQM.js.map} +1 -1
  65. package/dist/{WHGZWN5I.js → JYY3MUS6.js} +3 -3
  66. package/dist/{WHGZWN5I.js.map → JYY3MUS6.js.map} +1 -1
  67. package/dist/{7FS5WGDR.js → KPFKPA5E.js} +3 -3
  68. package/dist/{7FS5WGDR.js.map → KPFKPA5E.js.map} +1 -1
  69. package/dist/{ACJE36CV.js → KPHXDZAV.js} +3 -3
  70. package/dist/{ACJE36CV.js.map → KPHXDZAV.js.map} +1 -1
  71. package/dist/{6OFY25TY.js → MK75XTDP.js} +3 -3
  72. package/dist/{6OFY25TY.js.map → MK75XTDP.js.map} +1 -1
  73. package/dist/{6FXVBMY6.js → MW62MSYE.js} +3 -3
  74. package/dist/{6FXVBMY6.js.map → MW62MSYE.js.map} +1 -1
  75. package/dist/{HH2BRNCO.js → ND24MKMU.js} +3 -3
  76. package/dist/{HH2BRNCO.js.map → ND24MKMU.js.map} +1 -1
  77. package/dist/{GO4QW5YL.js → NN67IIT7.js} +3 -3
  78. package/dist/{GO4QW5YL.js.map → NN67IIT7.js.map} +1 -1
  79. package/dist/{O6C7LDBM.js → NPEUGUYK.js} +3 -3
  80. package/dist/{O6C7LDBM.js.map → NPEUGUYK.js.map} +1 -1
  81. package/dist/{FC62Z3SD.js → NSHNCUWI.js} +4 -4
  82. package/dist/{FC62Z3SD.js.map → NSHNCUWI.js.map} +1 -1
  83. package/dist/{7IMQETOY.js → O4AMCIVA.js} +3 -3
  84. package/dist/{7IMQETOY.js.map → O4AMCIVA.js.map} +1 -1
  85. package/dist/{HDXXUK5L.js → OEY7PTSH.js} +3 -3
  86. package/dist/{HDXXUK5L.js.map → OEY7PTSH.js.map} +1 -1
  87. package/dist/{JHYA3YSD.js → OWJCJMGH.js} +3 -3
  88. package/dist/{JHYA3YSD.js.map → OWJCJMGH.js.map} +1 -1
  89. package/dist/{T3E2IEHA.js → OWKMOZQD.js} +3 -3
  90. package/dist/{T3E2IEHA.js.map → OWKMOZQD.js.map} +1 -1
  91. package/dist/{75TAXYGR.js → Q7PMEFCG.js} +3 -3
  92. package/dist/{75TAXYGR.js.map → Q7PMEFCG.js.map} +1 -1
  93. package/dist/{WTSICKTT.js → Q7YX4SGL.js} +3 -3
  94. package/dist/{WTSICKTT.js.map → Q7YX4SGL.js.map} +1 -1
  95. package/dist/{SDQAF6FO.js → QK2ZGQHP.js} +3 -3
  96. package/dist/{SDQAF6FO.js.map → QK2ZGQHP.js.map} +1 -1
  97. package/dist/{OUNGXSOC.js → QPSHOSQZ.js} +3 -3
  98. package/dist/{OUNGXSOC.js.map → QPSHOSQZ.js.map} +1 -1
  99. package/dist/{H3KQEQ6V.js → RFGCLYQN.js} +3 -3
  100. package/dist/{H3KQEQ6V.js.map → RFGCLYQN.js.map} +1 -1
  101. package/dist/{7AEH4XYM.js → TE6DS6TT.js} +3 -3
  102. package/dist/{7AEH4XYM.js.map → TE6DS6TT.js.map} +1 -1
  103. package/dist/{IWLXCJYV.js → U2RJBPZH.js} +3 -3
  104. package/dist/{IWLXCJYV.js.map → U2RJBPZH.js.map} +1 -1
  105. package/dist/{56HIY2EH.js → U42IGLTO.js} +3 -3
  106. package/dist/{56HIY2EH.js.map → U42IGLTO.js.map} +1 -1
  107. package/dist/{UFLW4WNF.js → VK75NQEJ.js} +3 -3
  108. package/dist/{UFLW4WNF.js.map → VK75NQEJ.js.map} +1 -1
  109. package/dist/{OMH63YYM.js → WEFRN6HM.js} +3 -3
  110. package/dist/{OMH63YYM.js.map → WEFRN6HM.js.map} +1 -1
  111. package/dist/{2MDY7NOT.js → WVKBCTC5.js} +3 -3
  112. package/dist/{2MDY7NOT.js.map → WVKBCTC5.js.map} +1 -1
  113. package/dist/{FSV2XOCP.js → XUYKCZXD.js} +3 -3
  114. package/dist/{FSV2XOCP.js.map → XUYKCZXD.js.map} +1 -1
  115. package/dist/{K2G3RXRI.js → Y6OIMN44.js} +3 -3
  116. package/dist/{K2G3RXRI.js.map → Y6OIMN44.js.map} +1 -1
  117. package/dist/{IV67I5J5.js → YBGD26CU.js} +3 -3
  118. package/dist/{IV67I5J5.js.map → YBGD26CU.js.map} +1 -1
  119. package/dist/{GURC7E3X.js → YIP3DFVS.js} +3 -3
  120. package/dist/{GURC7E3X.js.map → YIP3DFVS.js.map} +1 -1
  121. package/dist/{6TNI5YY3.js → YQ3LDJAY.js} +3 -3
  122. package/dist/{6TNI5YY3.js.map → YQ3LDJAY.js.map} +1 -1
  123. package/dist/auth/index.js +2 -2
  124. package/dist/browser.js +2 -2
  125. package/dist/client/amulet.js +2 -2
  126. package/dist/client/canton-client.js +147 -147
  127. package/dist/client/grpc.js +3 -3
  128. package/dist/client/index.js +155 -155
  129. package/dist/index.js +175 -175
  130. package/dist/open-api/apis/DefaultApi.js +144 -144
  131. package/dist/open-api/apis/index.js +144 -144
  132. package/dist/open-api/index.js +144 -144
  133. package/dist/open-api/models/Command.js +3 -3
  134. package/dist/open-api/models/Command1.js +3 -3
  135. package/dist/open-api/models/Completion.js +4 -4
  136. package/dist/open-api/models/Completion1.js +4 -4
  137. package/dist/open-api/models/CompletionResponse.js +8 -8
  138. package/dist/open-api/models/CompletionResponseOneOf.js +4 -4
  139. package/dist/open-api/models/CompletionStreamResponse.js +8 -8
  140. package/dist/open-api/models/CreateUserRequest.js +11 -11
  141. package/dist/open-api/models/CumulativeFilter.js +2 -2
  142. package/dist/open-api/models/DeduplicationPeriod.js +1 -1
  143. package/dist/open-api/models/DeduplicationPeriod1.js +3 -3
  144. package/dist/open-api/models/DeduplicationPeriod2.js +1 -1
  145. package/dist/open-api/models/Event.js +3 -3
  146. package/dist/open-api/models/EventFormat.js +2 -2
  147. package/dist/open-api/models/ExperimentalFeatures.js +2 -2
  148. package/dist/open-api/models/FeaturesDescriptor.js +4 -4
  149. package/dist/open-api/models/Filters.js +2 -2
  150. package/dist/open-api/models/GetActiveContractsPageRequest.js +2 -2
  151. package/dist/open-api/models/GetActiveContractsRequest.js +2 -2
  152. package/dist/open-api/models/GetCompletionByHashResponse.js +4 -4
  153. package/dist/open-api/models/GetEventsByContractIdRequest.js +2 -2
  154. package/dist/open-api/models/GetLedgerApiVersionResponse.js +5 -5
  155. package/dist/open-api/models/GetUpdateByHashRequest.js +2 -2
  156. package/dist/open-api/models/GetUpdateByIdRequest.js +2 -2
  157. package/dist/open-api/models/GetUpdateByOffsetRequest.js +2 -2
  158. package/dist/open-api/models/GetUpdatesPageRequest.js +2 -2
  159. package/dist/open-api/models/GetUpdatesRequest.js +2 -2
  160. package/dist/open-api/models/GrantUserRightsRequest.js +10 -10
  161. package/dist/open-api/models/GrantUserRightsResponse.js +10 -10
  162. package/dist/open-api/models/IdentifierFilter.js +2 -2
  163. package/dist/open-api/models/JsCommands.js +6 -6
  164. package/dist/open-api/models/JsContractEntry.js +3 -3
  165. package/dist/open-api/models/JsExecuteSubmissionAndWaitForTransactionRequest.js +8 -8
  166. package/dist/open-api/models/JsExecuteSubmissionAndWaitForTransactionResponse.js +5 -5
  167. package/dist/open-api/models/JsExecuteSubmissionAndWaitRequest.js +6 -6
  168. package/dist/open-api/models/JsExecuteSubmissionRequest.js +6 -6
  169. package/dist/open-api/models/JsGetActiveContractsPageResponse.js +5 -5
  170. package/dist/open-api/models/JsGetActiveContractsResponse.js +4 -4
  171. package/dist/open-api/models/JsGetEventsByContractIdResponse.js +1 -1
  172. package/dist/open-api/models/JsGetUpdateResponse.js +22 -22
  173. package/dist/open-api/models/JsGetUpdatesPageResponse.js +23 -23
  174. package/dist/open-api/models/JsGetUpdatesResponse.js +22 -22
  175. package/dist/open-api/models/JsPrepareSubmissionRequest.js +8 -8
  176. package/dist/open-api/models/JsReassignment.js +1 -1
  177. package/dist/open-api/models/JsReassignmentEvent.js +1 -1
  178. package/dist/open-api/models/JsSubmitAndWaitForReassignmentResponse.js +1 -1
  179. package/dist/open-api/models/JsSubmitAndWaitForTransactionRequest.js +10 -10
  180. package/dist/open-api/models/JsSubmitAndWaitForTransactionResponse.js +5 -5
  181. package/dist/open-api/models/JsTopologyTransaction.js +8 -8
  182. package/dist/open-api/models/JsTransaction.js +4 -4
  183. package/dist/open-api/models/Kind.js +8 -8
  184. package/dist/open-api/models/ListUserRightsResponse.js +10 -10
  185. package/dist/open-api/models/MinLedgerTime.js +3 -3
  186. package/dist/open-api/models/Operation.js +2 -2
  187. package/dist/open-api/models/Reassignment.js +1 -1
  188. package/dist/open-api/models/ReassignmentCommand.js +4 -4
  189. package/dist/open-api/models/ReassignmentCommands.js +5 -5
  190. package/dist/open-api/models/RevokeUserRightsRequest.js +10 -10
  191. package/dist/open-api/models/RevokeUserRightsResponse.js +10 -10
  192. package/dist/open-api/models/Right.js +9 -9
  193. package/dist/open-api/models/SubmitAndWaitForReassignmentRequest.js +9 -9
  194. package/dist/open-api/models/SubmitReassignmentRequest.js +6 -6
  195. package/dist/open-api/models/Time.js +2 -2
  196. package/dist/open-api/models/TopologyEvent.js +7 -7
  197. package/dist/open-api/models/TopologyEventEvent.js +6 -6
  198. package/dist/open-api/models/TopologyTransaction.js +9 -9
  199. package/dist/open-api/models/Transaction.js +5 -5
  200. package/dist/open-api/models/TransactionFormat.js +2 -2
  201. package/dist/open-api/models/Update.js +21 -21
  202. package/dist/open-api/models/UpdateFormat.js +2 -2
  203. package/dist/open-api/models/UpdateOneOf1.js +1 -1
  204. package/dist/open-api/models/UpdateOneOf2.js +10 -10
  205. package/dist/open-api/models/UpdateOneOf3.js +6 -6
  206. package/dist/open-api/models/UpdatePartyDetailsRequest.js +1 -1
  207. package/dist/open-api/models/UpdateUserRequest.js +1 -1
  208. package/dist/open-api/models/UpdateVettedPackagesRequest.js +4 -4
  209. package/dist/open-api/models/VettedPackagesChange.js +3 -3
  210. package/dist/open-api/models/index.js +143 -143
  211. package/dist/provider.js +155 -155
  212. package/dist/refresh/callback-burn-mint.js +4 -4
  213. package/dist/refresh/callback-lock-unlock.js +4 -4
  214. package/dist/refresh/callback-registry.js +3 -3
  215. package/dist/refresh/callback.js +6 -6
  216. package/dist/refresh/index.js +15 -15
  217. package/dist/refresh/onesig-discovery.js +2 -2
  218. package/dist/refresh/onesig-transfer-instruction.js +8 -8
  219. package/dist/refresh/onesig-transfer.js +8 -8
  220. package/dist/refresh/prepare-amulet-transfer.js +3 -3
  221. package/dist/refresh/resolve-plan.js +12 -12
  222. package/dist/refresh/resolve.js +13 -13
  223. package/package.json +10 -10
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/refresh/resolve-plan.ts"],"names":["CANTON_TIME_PATTERN","resolveParty","partyRef","senderParty","label","isCantonDeferredSender","party","Error","getContractNumericField","contract","field","raw","getCreateArgumentField","createdEvent","createArgument","value","initialAmount","parseDamlDecimal","contractId","selectContractsByGte","contracts","requestedValue","selectContractAmounts","makeActiveContractRef","selector","type","partyToFilter","queryAs","expectedSignatories","templateId","interfaceId","contractStateFilter","stateFilter","resolveSelectorContracts","resolver","resolveActiveContracts","source","length","filter","resolveContractValue","selectActiveContracts","selection","kind","resolveCantonActiveContracts","args","queryParty","createContractAddressResolver","client","signingParties","appendDisclosures","undefined","selected","contractIds","map","isRecord","Array","isArray","isCantonTime","test","Number","isFinite","Date","parse","isActiveContractRefresh","refresh","isActiveContractValueRefresh","isAmuletContextRefresh","isTimestampRefresh","replaceAtPath","root","path","current","position","segment","entries","isLast","index","damlMapKey","matches","entry","readAtPath","readTarget","commands","target","command","commandIndex","exerciseCommand","choice","choiceArgument","createCommand","template","createArguments","applyPatch","applyTarget","argument","arguments","containsDeferredSentinel","isCantonDeferredSentinel","some","item","Object","values","child","disclosuresEqual","left","right","createdEventBlob","synchronizerId","resolveCantonRefreshPlan","replacements","cantonRefreshPlanSchema","shape","replaceSentinels","refreshPlan","structuredClone","unresolvedCommands","trim","replacement","targets","cantonSenderPartyRef","callback","cantonFinalizeCallbackRefreshSchema","contextIndices","sort","cidIndices","callbackCidTargets","JSON","stringify","pendingCallbackCid","disclosureMap","Map","disclosures","disclosure","existing","get","set","unresolvedDisclosedContracts","ref","discloseActiveContracts","resolved","transfer","cantonOneSigTransferBatchRefreshSchema","firstTarget","calls","transferIndices","flatMap","call","tag","indices","Set","size","includes","bundle","resolveCantonOneSigTransferBatch","CantonSdk","disclosedContracts","forEach","contexts","instruction","cantonOneSigTransferInstructionContextRefreshSchema","slice","transferInstructionCid","resolveCantonOneSigTransferInstructionContext","context","config","cantonOneSigConfigContextRefreshSchema","expected","operation","oappId","admin","id","expectedHandler","resolveCantonOneSigConfigContext","scope","cantonOneSigScopeContextRefreshSchema","contextTag","category","resolveCantonOneSigScopeContext","discovery","cantonOneSigDiscoveryContextRefreshSchema","timestamp","feeAmount","feeDsoParty","dso","resolveCantonOneSigDiscoveryContext","request","cantonOneSigRequestContextRefreshSchema","requestTags","dsoParty","String","resolveCantonOneSigRequestContext","resolveCantonFinalizeCallback","executeContext","callbackCid","acceptance","cantonTransferInstructionAcceptContextRefreshSchema","getTransferInstructionAcceptContext","choiceContext","getAmuletContextWithExternalRules","amuletContext","contractIdTargets","externalPartyAmuletRulesCid","now","offsetMs","iso","getTime","toISOString"],"mappings":"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","file":"RMUGJKIV.js","sourcesContent":["import type { ICantonClient } from '../client/interface';\nimport {\n type CantonRefreshPartyFilter,\n cantonSenderPartyRef,\n isCantonDeferredSender,\n isCantonDeferredSentinel,\n} from '../deferredValue';\nimport type { JsActiveContract } from '../open-api/models';\nimport { CantonSdk } from '../sdk/canton-sdk';\nimport type {\n CantonCommand,\n CantonDisclosedContract,\n CantonUnresolvedCommand,\n} from '../transaction';\nimport { getCreateArgumentField } from '../trusted-origin';\nimport { type ActiveContractRef, createContractAddressResolver } from './address-resolver';\nimport { resolveCantonFinalizeCallback } from './callback';\nimport { resolveCantonOneSigConfigContext } from './onesig-config';\nimport { resolveCantonOneSigDiscoveryContext } from './onesig-discovery';\nimport { resolveCantonOneSigRequestContext } from './onesig-request';\nimport { resolveCantonOneSigScopeContext } from './onesig-scope';\nimport { resolveCantonOneSigTransferBatch } from './onesig-transfer';\nimport { resolveCantonOneSigTransferInstructionContext } from './onesig-transfer-instruction';\nimport {\n type CantonActiveContractRefresh,\n type CantonActiveContractSelection,\n type CantonActiveContractValue,\n type CantonActiveContractValueRefresh,\n type CantonAmuletContextRefresh,\n type CantonArgumentRefreshTarget,\n type CantonContractSelector,\n cantonFinalizeCallbackRefreshSchema,\n cantonOneSigConfigContextRefreshSchema,\n cantonOneSigDiscoveryContextRefreshSchema,\n cantonOneSigRequestContextRefreshSchema,\n cantonOneSigScopeContextRefreshSchema,\n cantonOneSigTransferBatchRefreshSchema,\n cantonOneSigTransferInstructionContextRefreshSchema,\n type CantonRefresh,\n type CantonRefreshPath,\n type CantonRefreshPlan,\n cantonRefreshPlanSchema,\n type CantonRefreshTarget,\n type CantonTimestampRefresh,\n cantonTransferInstructionAcceptContextRefreshSchema,\n} from './plan';\nimport { parseDamlDecimal, selectContractAmounts } from './select-contracts';\n\nconst CANTON_TIME_PATTERN = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,9})?Z$/;\n\nconst resolveParty = (\n partyRef: CantonRefreshPartyFilter,\n senderParty: string | undefined,\n label: string,\n): string => {\n if (!isCantonDeferredSender(partyRef)) return partyRef.party;\n if (!senderParty) {\n throw new Error(`${label} requires a resolved sender party`);\n }\n return senderParty;\n};\n\nconst getContractNumericField = (contract: JsActiveContract, field: string): bigint => {\n const raw = getCreateArgumentField(contract.createdEvent.createArgument, field);\n const value =\n raw !== null && typeof raw === 'object' && 'initialAmount' in raw\n ? (raw as { initialAmount?: unknown }).initialAmount\n : raw;\n return parseDamlDecimal(\n value,\n `Contract ${contract.createdEvent.contractId} numeric field ${field}`,\n );\n};\n\nexport const selectContractsByGte = (\n contracts: JsActiveContract[],\n field: string,\n requestedValue: string,\n): JsActiveContract[] =>\n selectContractAmounts(contracts, field, requestedValue, (contract) =>\n getContractNumericField(contract, field),\n );\n\nconst makeActiveContractRef = (selector: CantonContractSelector): ActiveContractRef => ({\n type: 'activeContractIds',\n partyToFilter: selector.queryAs,\n expectedSignatories: selector.expectedSignatories,\n templateId: selector.templateId ?? selector.interfaceId,\n interfaceId: selector.interfaceId,\n contractStateFilter: selector.stateFilter,\n});\n\nconst resolveSelectorContracts = async (\n resolver: ReturnType<typeof createContractAddressResolver>,\n selector: CantonContractSelector,\n): Promise<JsActiveContract[]> => {\n const contracts = await resolver.resolveActiveContracts(makeActiveContractRef(selector));\n if (!selector.contractId) return contracts;\n const source = await resolver.resolveActiveContracts(\n makeActiveContractRef(selector.contractId.selector),\n );\n if (source.length !== 1)\n throw new Error(\n `Contract ID source matched ${source.length} contracts, expected exactly one`,\n );\n const contractId = getCreateArgumentField(\n source[0]!.createdEvent.createArgument,\n selector.contractId.field,\n );\n if (typeof contractId !== 'string' || !contractId)\n throw new Error('Contract ID source must contain a nonempty contract ID');\n return contracts.filter((contract) => contract.createdEvent.contractId === contractId);\n};\n\nconst resolveContractValue = async (\n resolver: ReturnType<typeof createContractAddressResolver>,\n source: CantonActiveContractValue,\n): Promise<string> => {\n const contracts = await resolveSelectorContracts(resolver, source.selector);\n if (contracts.length !== 1) {\n throw new Error(\n `Active contract value matched ${contracts.length} contracts, expected exactly one`,\n );\n }\n const value = getCreateArgumentField(contracts[0]!.createdEvent.createArgument, source.field);\n if (parseDamlDecimal(value, `Contract value ${source.field}`) <= 0n) {\n throw new Error(`Contract value ${source.field} must be positive`);\n }\n return value as string;\n};\n\nconst selectActiveContracts = async (\n contracts: JsActiveContract[],\n selection: CantonActiveContractSelection,\n resolver: ReturnType<typeof createContractAddressResolver>,\n): Promise<JsActiveContract[]> => {\n switch (selection.kind) {\n case 'exactlyOne':\n if (contracts.length !== 1) {\n throw new Error(\n `Active contract selection matched ${contracts.length} contracts, expected exactly one`,\n );\n }\n return contracts;\n case 'all':\n return contracts;\n case 'gte':\n return selectContractsByGte(\n contracts,\n selection.field,\n typeof selection.value === 'string'\n ? selection.value\n : await resolveContractValue(resolver, selection.value),\n );\n }\n};\n\nexport const resolveCantonActiveContracts = async (args: {\n client: ICantonClient;\n selector: CantonContractSelector;\n selection: CantonActiveContractSelection;\n senderParty?: string;\n}): Promise<{ contractIds: string[] }> => {\n const queryParty = resolveParty(\n args.selector.queryAs,\n args.senderParty,\n 'Active contract selection',\n );\n const resolver = createContractAddressResolver({\n client: args.client,\n senderParty: args.senderParty,\n signingParties: [queryParty],\n appendDisclosures: () => undefined,\n });\n const selected = await selectActiveContracts(\n await resolveSelectorContracts(resolver, args.selector),\n args.selection,\n resolver,\n );\n return {\n contractIds: selected.map(({ createdEvent }) => createdEvent.contractId),\n };\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n value !== null && typeof value === 'object' && !Array.isArray(value);\n\nconst isCantonTime = (value: unknown): value is string =>\n typeof value === 'string' &&\n CANTON_TIME_PATTERN.test(value) &&\n Number.isFinite(Date.parse(value));\n\nconst isActiveContractRefresh = (refresh: CantonRefresh): refresh is CantonActiveContractRefresh =>\n refresh.resolver.type === 'activeContract';\n\nconst isActiveContractValueRefresh = (\n refresh: CantonRefresh,\n): refresh is CantonActiveContractValueRefresh => refresh.resolver.type === 'activeContractValue';\n\nconst isAmuletContextRefresh = (refresh: CantonRefresh): refresh is CantonAmuletContextRefresh =>\n refresh.resolver.type === 'amuletContext';\n\nconst isTimestampRefresh = (refresh: CantonRefresh): refresh is CantonTimestampRefresh =>\n refresh.resolver.type === 'timestamp';\n\nconst replaceAtPath = (root: unknown, path: CantonRefreshPath, value: unknown): unknown => {\n if (path.length === 0) return value;\n\n let current = root;\n for (const [position, segment] of path.entries()) {\n const isLast = position === path.length - 1;\n if ('field' in segment) {\n if (!isRecord(current) || !(segment.field in current)) {\n throw new Error(`Refresh target field \"${segment.field}\" does not exist`);\n }\n if (isLast) {\n current[segment.field] = value;\n return root;\n }\n current = current[segment.field];\n continue;\n }\n if ('index' in segment) {\n if (!Array.isArray(current) || segment.index >= current.length) {\n throw new Error(`Refresh target array index ${segment.index} does not exist`);\n }\n if (isLast) {\n current[segment.index] = value;\n return root;\n }\n current = current[segment.index];\n continue;\n }\n\n if (!Array.isArray(current)) {\n throw new Error(`Refresh target DAML map \"${segment.damlMapKey}\" is not an array`);\n }\n const matches = current.filter(\n (entry): entry is [string, unknown] =>\n Array.isArray(entry) && entry.length === 2 && entry[0] === segment.damlMapKey,\n );\n if (matches.length !== 1) {\n throw new Error(\n `Refresh target DAML map key \"${segment.damlMapKey}\" matched ${matches.length} entries`,\n );\n }\n if (isLast) {\n matches[0]![1] = value;\n return root;\n }\n current = matches[0]![1];\n }\n return root;\n};\n\nconst readAtPath = (root: unknown, path: CantonRefreshPath): unknown => {\n let current = root;\n for (const segment of path) {\n if ('field' in segment) {\n if (!isRecord(current) || !(segment.field in current)) {\n throw new Error(`Refresh target field \"${segment.field}\" does not exist`);\n }\n current = current[segment.field];\n continue;\n }\n if ('index' in segment) {\n if (!Array.isArray(current) || segment.index >= current.length) {\n throw new Error(`Refresh target array index ${segment.index} does not exist`);\n }\n current = current[segment.index];\n continue;\n }\n\n if (!Array.isArray(current)) {\n throw new Error(`Refresh target DAML map \"${segment.damlMapKey}\" is not an array`);\n }\n const matches = current.filter(\n (entry): entry is [string, unknown] =>\n Array.isArray(entry) && entry.length === 2 && entry[0] === segment.damlMapKey,\n );\n if (matches.length !== 1) {\n throw new Error(\n `Refresh target DAML map key \"${segment.damlMapKey}\" matched ${matches.length} entries`,\n );\n }\n current = matches[0]![1];\n }\n return current;\n};\n\nconst readTarget = (\n commands: CantonUnresolvedCommand[],\n target: CantonArgumentRefreshTarget,\n path: CantonRefreshPath,\n): unknown => {\n const command = commands[target.commandIndex];\n if (!command) {\n throw new Error(`Refresh command index ${target.commandIndex} does not exist`);\n }\n\n if (target.command === 'exercise') {\n if (!('exerciseCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not an exercise`);\n }\n if (command.exerciseCommand.choice !== target.choice) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected choice ${target.choice}, found ${command.exerciseCommand.choice}`,\n );\n }\n return readAtPath(command.exerciseCommand.choiceArgument, path);\n }\n\n if (!('createCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not a create`);\n }\n if (command.createCommand.templateId !== target.template) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected template ${target.template}, found ${command.createCommand.templateId}`,\n );\n }\n return readAtPath(command.createCommand.createArguments, path);\n};\n\nconst applyPatch = (\n commands: CantonUnresolvedCommand[],\n target: CantonArgumentRefreshTarget,\n path: CantonRefreshPath,\n value: unknown,\n): void => {\n const command = commands[target.commandIndex];\n if (!command) {\n throw new Error(`Refresh command index ${target.commandIndex} does not exist`);\n }\n\n if (target.command === 'exercise') {\n if (!('exerciseCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not an exercise`);\n }\n if (command.exerciseCommand.choice !== target.choice) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected choice ${target.choice}, found ${command.exerciseCommand.choice}`,\n );\n }\n command.exerciseCommand.choiceArgument = replaceAtPath(\n command.exerciseCommand.choiceArgument,\n path,\n value,\n );\n return;\n }\n\n if (!('createCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not a create`);\n }\n if (command.createCommand.templateId !== target.template) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected template ${target.template}, found ${command.createCommand.templateId}`,\n );\n }\n command.createCommand.createArguments = replaceAtPath(\n command.createCommand.createArguments,\n path,\n value,\n );\n};\n\nconst applyTarget = (\n commands: CantonUnresolvedCommand[],\n target: CantonRefreshTarget,\n value: unknown,\n): void => {\n if ('field' in target) {\n const command = commands[target.commandIndex];\n if (!command) {\n throw new Error(`Refresh command index ${target.commandIndex} does not exist`);\n }\n if (!('exerciseCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not an exercise`);\n }\n if (target.choice !== undefined && command.exerciseCommand.choice !== target.choice) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected choice ${target.choice}, found ${command.exerciseCommand.choice}`,\n );\n }\n if (typeof value !== 'string') {\n throw new Error('Exercise contract ID refresh must resolve to a string');\n }\n command.exerciseCommand.contractId = value;\n return;\n }\n\n for (const argument of target.arguments) {\n applyPatch(commands, target, argument.path, value);\n }\n};\n\nconst containsDeferredSentinel = (value: unknown): boolean => {\n if (isCantonDeferredSentinel(value)) return true;\n if (Array.isArray(value)) return value.some((item) => containsDeferredSentinel(item));\n if (!isRecord(value)) return false;\n return Object.values(value).some((child) => containsDeferredSentinel(child));\n};\n\nconst disclosuresEqual = (left: CantonDisclosedContract, right: CantonDisclosedContract): boolean =>\n left.contractId === right.contractId &&\n left.templateId === right.templateId &&\n left.createdEventBlob === right.createdEventBlob &&\n left.synchronizerId === right.synchronizerId;\n\nexport const resolveCantonRefreshPlan = async (args: {\n unresolvedCommands: CantonUnresolvedCommand[];\n unresolvedDisclosedContracts: CantonDisclosedContract[];\n refreshPlan: CantonRefreshPlan;\n senderParty?: string;\n signingParties: string[];\n client: ICantonClient;\n}): Promise<{ commands: CantonCommand[]; disclosedContracts: CantonDisclosedContract[] }> => {\n const replacements = cantonRefreshPlanSchema.shape.replaceSentinels.parse(\n args.refreshPlan.replaceSentinels,\n );\n const commands = structuredClone(args.unresolvedCommands);\n if (replacements) {\n if (\n typeof args.senderParty !== 'string' ||\n !args.senderParty.trim() ||\n isCantonDeferredSentinel(args.senderParty)\n ) {\n throw new Error('Sender binding requires a resolved sender party');\n }\n for (const replacement of replacements) {\n for (const target of replacement.targets) {\n for (const { path } of target.arguments) {\n if (readTarget(commands, target, path) !== cantonSenderPartyRef()) {\n throw new Error(\n 'Sender binding target must contain cantonSenderPartyRef()',\n );\n }\n applyPatch(commands, target, path, args.senderParty);\n }\n }\n }\n }\n if (containsDeferredSentinel(commands)) {\n throw new Error('Canton refreshPlan cannot be combined with deferred sentinels');\n }\n\n for (const entry of args.refreshPlan.commands) {\n if (entry.resolver.type !== 'finalizeCallback') continue;\n const callback = cantonFinalizeCallbackRefreshSchema.parse(entry);\n const contextIndices = callback.targets.map((target) => target.commandIndex).sort();\n const cidIndices = callback.callbackCidTargets.map((target) => target.commandIndex).sort();\n if (JSON.stringify(contextIndices) !== JSON.stringify(cidIndices)) {\n throw new Error(\n 'Callback context and contract ID targets must address the same commands',\n );\n }\n for (const target of [...callback.targets, ...callback.callbackCidTargets]) {\n readTarget(commands, target, target.arguments[0].path);\n const command = commands[target.commandIndex]!;\n if (\n !('exerciseCommand' in command) ||\n !isRecord(command.exerciseCommand.choiceArgument) ||\n command.exerciseCommand.choiceArgument.pendingCallbackCid !==\n callback.resolver.pendingCallbackCid\n ) {\n throw new Error('Callback target must match the pinned PendingCallback');\n }\n }\n }\n\n const disclosureMap = new Map<string, CantonDisclosedContract>();\n const appendDisclosures = (disclosures: CantonDisclosedContract[]): void => {\n for (const disclosure of disclosures) {\n const existing = disclosureMap.get(disclosure.contractId);\n if (existing && !disclosuresEqual(existing, disclosure)) {\n throw new Error(`Conflicting disclosures for contract ${disclosure.contractId}`);\n }\n disclosureMap.set(disclosure.contractId, disclosure);\n }\n };\n appendDisclosures(args.unresolvedDisclosedContracts);\n\n const resolver = createContractAddressResolver({\n client: args.client,\n senderParty: args.senderParty,\n signingParties: args.signingParties,\n appendDisclosures,\n });\n\n for (const refresh of args.refreshPlan.commands) {\n if (isActiveContractRefresh(refresh)) {\n const ref = makeActiveContractRef(refresh.resolver.selector);\n const selected = await selectActiveContracts(\n await resolveSelectorContracts(resolver, refresh.resolver.selector),\n refresh.resolver.selection,\n resolver,\n );\n await resolver.discloseActiveContracts(ref, selected);\n const contractIds = selected.map(({ createdEvent }) => createdEvent.contractId);\n const resolved =\n refresh.resolver.selection.kind === 'exactlyOne' ? contractIds[0]! : contractIds;\n for (const target of refresh.targets) applyTarget(commands, target, resolved);\n continue;\n }\n\n if (isActiveContractValueRefresh(refresh)) {\n const value = await resolveContractValue(resolver, refresh.resolver);\n for (const target of refresh.targets) applyTarget(commands, target, value);\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigTransferBatch') {\n const transfer = cantonOneSigTransferBatchRefreshSchema.parse(refresh);\n const firstTarget = transfer.targets[0]!;\n const commandIndex = firstTarget.commandIndex;\n const calls = readTarget(commands, firstTarget, [\n { field: 'transaction' },\n { field: 'calls' },\n ]);\n if (!Array.isArray(calls)) throw new Error('OneSig transfer target requires calls');\n const transferIndices = calls.flatMap((entry, index) =>\n isRecord(entry) && isRecord(entry.call) && entry.call.tag === 'OpTransfer'\n ? [index]\n : [],\n );\n const indices = transfer.targets.map((target) => target.arguments[0].path[2].index);\n if (\n transfer.targets.some((target) => target.commandIndex !== commandIndex) ||\n indices.length !== transferIndices.length ||\n new Set(indices).size !== indices.length ||\n transferIndices.some((index) => !indices.includes(index)) ||\n args.refreshPlan.commands.filter(\n (entry) =>\n entry.resolver.type === 'oneSigTransferBatch' &&\n entry.targets.some((target) => target.commandIndex === commandIndex),\n ).length !== 1\n ) {\n throw new Error(\n 'OneSig transfer targets must cover every Transfer context exactly once',\n );\n }\n for (const target of transfer.targets) {\n const current = readTarget(commands, target, target.arguments[0].path);\n if (\n !isRecord(current) ||\n current.tag !== 'TransferFactoryContext' ||\n !isRecord(current.value)\n )\n throw new Error('OneSig transfer target context mismatch');\n }\n const bundle = await resolveCantonOneSigTransferBatch(\n new CantonSdk(args.client),\n transfer.resolver,\n indices.map((index) => calls[index].call),\n args.client,\n );\n appendDisclosures(bundle.disclosedContracts);\n transfer.targets.forEach((target, index) =>\n applyTarget(commands, target, bundle.contexts[index]),\n );\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigTransferInstructionContext') {\n const instruction = cantonOneSigTransferInstructionContextRefreshSchema.parse(refresh);\n const target = instruction.targets[0]!;\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [...path.slice(0, -1), { field: 'call' }]);\n if (\n !isRecord(current) ||\n current.tag !== 'TransferInstructionContext' ||\n !isRecord(current.value) ||\n current.value.transferInstructionCid !== instruction.resolver.transferInstructionCid\n ) {\n throw new Error(\n 'OneSig instruction target must match the pinned transfer instruction',\n );\n }\n const bundle = await resolveCantonOneSigTransferInstructionContext(\n new CantonSdk(args.client),\n instruction.resolver,\n call,\n args.client,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigConfigContext') {\n const config = cantonOneSigConfigContextRefreshSchema.parse(refresh);\n for (const target of config.targets) {\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [\n ...path.slice(0, -1),\n { field: 'call' },\n ]);\n const expected = config.resolver;\n if (\n !isRecord(call) ||\n !isRecord(call.value) ||\n call.tag !== expected.operation ||\n !isRecord(call.value.oappId) ||\n call.value.oappId.admin !== expected.oappId.admin ||\n call.value.oappId.id !== expected.oappId.id ||\n !isRecord(current) ||\n current.tag !== 'ConfigContext' ||\n !isRecord(current.value) ||\n (expected.operation === 'OpSetRequestFactory' &&\n call.value.expectedHandler !== expected.expectedHandler)\n ) {\n throw new Error('OneSig config target does not match signed call identity');\n }\n const bundle = await resolveCantonOneSigConfigContext(\n new CantonSdk(args.client),\n expected,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n }\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigScopeContext') {\n const scope = cantonOneSigScopeContextRefreshSchema.parse(refresh);\n for (const target of scope.targets) {\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [\n ...path.slice(0, -1),\n { field: 'call' },\n ]);\n const expected = scope.resolver;\n const contextTag =\n expected.operation === 'OpSetMinFee'\n ? 'MinFeeContext'\n : expected.operation === 'OpSetMinPayoutValue'\n ? 'MinPayoutValueContext'\n : expected.operation === 'OpSetProtocolLedgerTimeValidityPeriod'\n ? 'LedgerTimeValidityContext'\n : 'AccessControlContext';\n if (\n !isRecord(call) ||\n !isRecord(call.value) ||\n call.tag !== expected.operation ||\n !isRecord(call.value.scope) ||\n call.value.scope.category !== expected.scope.category ||\n call.value.scope.admin !== expected.scope.admin ||\n call.value.scope.id !== expected.scope.id ||\n (expected.operation === 'OpAcceptDefaultAdmin' &&\n expected.scope.category === 'oapp') ||\n !isRecord(current) ||\n current.tag !== contextTag ||\n !isRecord(current.value)\n ) {\n throw new Error('OneSig scope target does not match signed call identity');\n }\n const bundle = await resolveCantonOneSigScopeContext(\n new CantonSdk(args.client),\n expected,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n }\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigDiscoveryContext') {\n const discovery = cantonOneSigDiscoveryContextRefreshSchema.parse(refresh);\n for (const target of discovery.targets) {\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [\n ...path.slice(0, -1),\n { field: 'call' },\n ]);\n const expected = discovery.resolver;\n if (\n !isRecord(call) ||\n call.tag !== 'OpSetDiscoveryUrl' ||\n !isRecord(call.value) ||\n !isRecord(call.value.oappId) ||\n call.value.oappId.admin !== expected.oappId.admin ||\n call.value.oappId.id !== expected.oappId.id ||\n !isRecord(current) ||\n current.tag !== 'OAppDiscoveryContext' ||\n !isRecord(current.value) ||\n !isCantonTime(current.value.timestamp) ||\n (parseDamlDecimal(call.value.feeAmount, 'Discovery fee') > 0n\n ? expected.feeDsoParty !== call.value.dso\n : expected.feeDsoParty !== undefined)\n ) {\n throw new Error('OneSig discovery target does not match signed call identity');\n }\n const bundle = await resolveCantonOneSigDiscoveryContext(\n new CantonSdk(args.client),\n expected,\n current.value.timestamp,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n }\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigRequestContext') {\n const request = cantonOneSigRequestContextRefreshSchema.parse(refresh);\n for (const target of request.targets) {\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [\n ...path.slice(0, -1),\n { field: 'call' },\n ]);\n const expected = request.resolver.request;\n const requestTags = [\n 'OpCreateOAppRequest',\n 'OpSkip',\n 'OpBurn',\n 'OpClear',\n 'OpNilify',\n ];\n if (\n !isRecord(call) ||\n !isRecord(call.value) ||\n call.value.dso !== request.resolver.dsoParty ||\n !isRecord(current) ||\n !isRecord(current.value) ||\n !isCantonTime(current.value.timestamp) ||\n (expected.kind === 'request'\n ? call.tag !== 'OpCreateRequest' || current.tag !== 'RequestContext'\n : expected.kind === 'oappAccept'\n ? call.tag !== 'OpAcceptDefaultAdmin' ||\n current.tag !== 'OAppRequestContext' ||\n !isRecord(call.value.scope) ||\n call.value.scope.category !== 'oapp' ||\n call.value.scope.admin !== expected.oappId.admin ||\n call.value.scope.id !== expected.oappId.id ||\n parseDamlDecimal(call.value.feeAmount, 'OApp Accept fee') <= 0n\n : !requestTags.includes(String(call.tag)) ||\n current.tag !== 'OAppRequestContext' ||\n !isRecord(call.value.oappId) ||\n call.value.oappId.admin !== expected.oappId.admin ||\n call.value.oappId.id !== expected.oappId.id)\n ) {\n throw new Error('OneSig request target does not match signed call identity');\n }\n const bundle = await resolveCantonOneSigRequestContext(\n new CantonSdk(args.client),\n request.resolver,\n current.value.timestamp,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n }\n continue;\n }\n\n if (refresh.resolver.type === 'finalizeCallback') {\n const callback = cantonFinalizeCallbackRefreshSchema.parse(refresh);\n const bundle = await resolveCantonFinalizeCallback(\n new CantonSdk(args.client),\n callback.resolver,\n );\n appendDisclosures(bundle.disclosedContracts);\n for (const target of callback.targets)\n applyTarget(commands, target, bundle.executeContext);\n for (const target of callback.callbackCidTargets)\n applyTarget(commands, target, bundle.callbackCid);\n continue;\n }\n\n if (refresh.resolver.type === 'transferInstructionAcceptContext') {\n const acceptance = cantonTransferInstructionAcceptContextRefreshSchema.parse(refresh);\n for (const target of acceptance.targets) {\n readTarget(commands, target, target.arguments[0]!.path);\n const command = commands[target.commandIndex]!;\n if (\n !('exerciseCommand' in command) ||\n command.exerciseCommand.contractId !== acceptance.resolver.contractId\n ) {\n throw new Error(\n 'Accept context target must match the pinned transfer instruction',\n );\n }\n }\n const bundle = await args.client.getTransferInstructionAcceptContext({\n contractId: acceptance.resolver.contractId,\n });\n appendDisclosures(bundle.disclosedContracts);\n for (const target of acceptance.targets) {\n applyTarget(commands, target, bundle.choiceContext);\n }\n continue;\n }\n\n if (isAmuletContextRefresh(refresh)) {\n const bundle = await args.client.getAmuletContextWithExternalRules({\n admin: refresh.resolver.dsoParty,\n id: 'Amulet',\n });\n appendDisclosures(bundle.disclosedContracts);\n for (const target of refresh.targets) {\n applyTarget(commands, target, bundle.amuletContext);\n }\n for (const target of refresh.contractIdTargets ?? []) {\n applyTarget(commands, target, bundle.externalPartyAmuletRulesCid);\n }\n }\n }\n\n // Timestamp refreshes run after all external reads so their shared instant is\n // as close as possible to prepareForSigning, regardless of declaration order.\n const now = new Date();\n for (const refresh of args.refreshPlan.commands) {\n if (!isTimestampRefresh(refresh)) continue;\n\n for (const target of refresh.targets) {\n for (const { path, offsetMs = 0 } of target.arguments) {\n const iso = new Date(now.getTime() + offsetMs).toISOString();\n const current = readTarget(commands, target, path);\n let value: unknown;\n if (isCantonTime(current)) {\n value = iso;\n } else if (\n isRecord(current) &&\n current.tag === 'AV_Time' &&\n isCantonTime(current.value)\n ) {\n value = { ...current, value: iso };\n } else {\n throw new Error('Timestamp refresh target must contain a Canton Time value');\n }\n applyPatch(commands, target, path, value);\n }\n }\n }\n\n for (const refresh of args.refreshPlan.commands) {\n if (refresh.resolver.type !== 'transferInstructionAcceptContext') continue;\n for (const target of refresh.targets) {\n const command = commands[target.commandIndex]!;\n if (\n !('exerciseCommand' in command) ||\n command.exerciseCommand.contractId !== refresh.resolver.contractId\n ) {\n throw new Error('Accept context target must match the pinned transfer instruction');\n }\n }\n }\n\n for (const refresh of args.refreshPlan.commands) {\n if (refresh.resolver.type !== 'finalizeCallback') continue;\n const callback = cantonFinalizeCallbackRefreshSchema.parse(refresh);\n for (const target of [...callback.targets, ...callback.callbackCidTargets]) {\n const command = commands[target.commandIndex]!;\n if (\n !('exerciseCommand' in command) ||\n !isRecord(command.exerciseCommand.choiceArgument) ||\n command.exerciseCommand.choiceArgument.pendingCallbackCid !==\n callback.resolver.pendingCallbackCid\n ) {\n throw new Error('Callback target must match the pinned PendingCallback');\n }\n }\n }\n\n for (const replacement of replacements ?? []) {\n for (const target of replacement.targets) {\n for (const { path } of target.arguments) {\n if (readTarget(commands, target, path) !== args.senderParty) {\n throw new Error('Refresh cannot change the bound sender party');\n }\n }\n }\n }\n const disclosedContracts = [...disclosureMap.values()];\n if (containsDeferredSentinel(commands)) {\n throw new Error('Canton refreshPlan cannot return deferred sentinels');\n }\n\n return {\n commands: commands as CantonCommand[],\n disclosedContracts,\n };\n};\n"]}
1
+ {"version":3,"sources":["../src/refresh/resolve-plan.ts"],"names":["CANTON_TIME_PATTERN","resolveParty","partyRef","senderParty","label","isCantonDeferredSender","party","Error","getContractNumericField","contract","field","raw","getCreateArgumentField","createdEvent","createArgument","value","initialAmount","parseDamlDecimal","contractId","selectContractsByGte","contracts","requestedValue","selectContractAmounts","makeActiveContractRef","selector","type","partyToFilter","queryAs","expectedSignatories","templateId","interfaceId","contractStateFilter","stateFilter","resolveSelectorContracts","resolver","resolveActiveContracts","source","length","filter","resolveContractValue","selectActiveContracts","selection","kind","resolveCantonActiveContracts","args","queryParty","createContractAddressResolver","client","signingParties","appendDisclosures","undefined","selected","contractIds","map","isRecord","Array","isArray","isCantonTime","test","Number","isFinite","Date","parse","isActiveContractRefresh","refresh","isActiveContractValueRefresh","isAmuletContextRefresh","isTimestampRefresh","replaceAtPath","root","path","current","position","segment","entries","isLast","index","damlMapKey","matches","entry","readAtPath","readTarget","commands","target","command","commandIndex","exerciseCommand","choice","choiceArgument","createCommand","template","createArguments","applyPatch","applyTarget","argument","arguments","containsDeferredSentinel","isCantonDeferredSentinel","some","item","Object","values","child","disclosuresEqual","left","right","createdEventBlob","synchronizerId","resolveCantonRefreshPlan","replacements","cantonRefreshPlanSchema","shape","replaceSentinels","refreshPlan","structuredClone","unresolvedCommands","trim","replacement","targets","cantonSenderPartyRef","callback","cantonFinalizeCallbackRefreshSchema","contextIndices","sort","cidIndices","callbackCidTargets","JSON","stringify","pendingCallbackCid","disclosureMap","Map","disclosures","disclosure","existing","get","set","unresolvedDisclosedContracts","ref","discloseActiveContracts","resolved","transfer","cantonOneSigTransferBatchRefreshSchema","firstTarget","calls","transferIndices","flatMap","call","tag","indices","Set","size","includes","bundle","resolveCantonOneSigTransferBatch","CantonSdk","disclosedContracts","forEach","contexts","instruction","cantonOneSigTransferInstructionContextRefreshSchema","slice","transferInstructionCid","resolveCantonOneSigTransferInstructionContext","context","config","cantonOneSigConfigContextRefreshSchema","expected","operation","oappId","admin","id","expectedHandler","resolveCantonOneSigConfigContext","scope","cantonOneSigScopeContextRefreshSchema","contextTag","category","resolveCantonOneSigScopeContext","discovery","cantonOneSigDiscoveryContextRefreshSchema","timestamp","feeAmount","feeDsoParty","dso","resolveCantonOneSigDiscoveryContext","request","cantonOneSigRequestContextRefreshSchema","requestTags","dsoParty","String","resolveCantonOneSigRequestContext","resolveCantonFinalizeCallback","executeContext","callbackCid","acceptance","cantonTransferInstructionAcceptContextRefreshSchema","getTransferInstructionAcceptContext","choiceContext","getAmuletContextWithExternalRules","amuletContext","contractIdTargets","externalPartyAmuletRulesCid","now","offsetMs","iso","getTime","toISOString"],"mappings":"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","file":"DZCJJOBK.js","sourcesContent":["import type { ICantonClient } from '../client/interface';\nimport {\n type CantonRefreshPartyFilter,\n cantonSenderPartyRef,\n isCantonDeferredSender,\n isCantonDeferredSentinel,\n} from '../deferredValue';\nimport type { JsActiveContract } from '../open-api/models';\nimport { CantonSdk } from '../sdk/canton-sdk';\nimport type {\n CantonCommand,\n CantonDisclosedContract,\n CantonUnresolvedCommand,\n} from '../transaction';\nimport { getCreateArgumentField } from '../trusted-origin';\nimport { type ActiveContractRef, createContractAddressResolver } from './address-resolver';\nimport { resolveCantonFinalizeCallback } from './callback';\nimport { resolveCantonOneSigConfigContext } from './onesig-config';\nimport { resolveCantonOneSigDiscoveryContext } from './onesig-discovery';\nimport { resolveCantonOneSigRequestContext } from './onesig-request';\nimport { resolveCantonOneSigScopeContext } from './onesig-scope';\nimport { resolveCantonOneSigTransferBatch } from './onesig-transfer';\nimport { resolveCantonOneSigTransferInstructionContext } from './onesig-transfer-instruction';\nimport {\n type CantonActiveContractRefresh,\n type CantonActiveContractSelection,\n type CantonActiveContractValue,\n type CantonActiveContractValueRefresh,\n type CantonAmuletContextRefresh,\n type CantonArgumentRefreshTarget,\n type CantonContractSelector,\n cantonFinalizeCallbackRefreshSchema,\n cantonOneSigConfigContextRefreshSchema,\n cantonOneSigDiscoveryContextRefreshSchema,\n cantonOneSigRequestContextRefreshSchema,\n cantonOneSigScopeContextRefreshSchema,\n cantonOneSigTransferBatchRefreshSchema,\n cantonOneSigTransferInstructionContextRefreshSchema,\n type CantonRefresh,\n type CantonRefreshPath,\n type CantonRefreshPlan,\n cantonRefreshPlanSchema,\n type CantonRefreshTarget,\n type CantonTimestampRefresh,\n cantonTransferInstructionAcceptContextRefreshSchema,\n} from './plan';\nimport { parseDamlDecimal, selectContractAmounts } from './select-contracts';\n\nconst CANTON_TIME_PATTERN = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,9})?Z$/;\n\nconst resolveParty = (\n partyRef: CantonRefreshPartyFilter,\n senderParty: string | undefined,\n label: string,\n): string => {\n if (!isCantonDeferredSender(partyRef)) return partyRef.party;\n if (!senderParty) {\n throw new Error(`${label} requires a resolved sender party`);\n }\n return senderParty;\n};\n\nconst getContractNumericField = (contract: JsActiveContract, field: string): bigint => {\n const raw = getCreateArgumentField(contract.createdEvent.createArgument, field);\n const value =\n raw !== null && typeof raw === 'object' && 'initialAmount' in raw\n ? (raw as { initialAmount?: unknown }).initialAmount\n : raw;\n return parseDamlDecimal(\n value,\n `Contract ${contract.createdEvent.contractId} numeric field ${field}`,\n );\n};\n\nexport const selectContractsByGte = (\n contracts: JsActiveContract[],\n field: string,\n requestedValue: string,\n): JsActiveContract[] =>\n selectContractAmounts(contracts, field, requestedValue, (contract) =>\n getContractNumericField(contract, field),\n );\n\nconst makeActiveContractRef = (selector: CantonContractSelector): ActiveContractRef => ({\n type: 'activeContractIds',\n partyToFilter: selector.queryAs,\n expectedSignatories: selector.expectedSignatories,\n templateId: selector.templateId ?? selector.interfaceId,\n interfaceId: selector.interfaceId,\n contractStateFilter: selector.stateFilter,\n});\n\nconst resolveSelectorContracts = async (\n resolver: ReturnType<typeof createContractAddressResolver>,\n selector: CantonContractSelector,\n): Promise<JsActiveContract[]> => {\n const contracts = await resolver.resolveActiveContracts(makeActiveContractRef(selector));\n if (!selector.contractId) return contracts;\n const source = await resolver.resolveActiveContracts(\n makeActiveContractRef(selector.contractId.selector),\n );\n if (source.length !== 1)\n throw new Error(\n `Contract ID source matched ${source.length} contracts, expected exactly one`,\n );\n const contractId = getCreateArgumentField(\n source[0]!.createdEvent.createArgument,\n selector.contractId.field,\n );\n if (typeof contractId !== 'string' || !contractId)\n throw new Error('Contract ID source must contain a nonempty contract ID');\n return contracts.filter((contract) => contract.createdEvent.contractId === contractId);\n};\n\nconst resolveContractValue = async (\n resolver: ReturnType<typeof createContractAddressResolver>,\n source: CantonActiveContractValue,\n): Promise<string> => {\n const contracts = await resolveSelectorContracts(resolver, source.selector);\n if (contracts.length !== 1) {\n throw new Error(\n `Active contract value matched ${contracts.length} contracts, expected exactly one`,\n );\n }\n const value = getCreateArgumentField(contracts[0]!.createdEvent.createArgument, source.field);\n if (parseDamlDecimal(value, `Contract value ${source.field}`) <= 0n) {\n throw new Error(`Contract value ${source.field} must be positive`);\n }\n return value as string;\n};\n\nconst selectActiveContracts = async (\n contracts: JsActiveContract[],\n selection: CantonActiveContractSelection,\n resolver: ReturnType<typeof createContractAddressResolver>,\n): Promise<JsActiveContract[]> => {\n switch (selection.kind) {\n case 'exactlyOne':\n if (contracts.length !== 1) {\n throw new Error(\n `Active contract selection matched ${contracts.length} contracts, expected exactly one`,\n );\n }\n return contracts;\n case 'all':\n return contracts;\n case 'gte':\n return selectContractsByGte(\n contracts,\n selection.field,\n typeof selection.value === 'string'\n ? selection.value\n : await resolveContractValue(resolver, selection.value),\n );\n }\n};\n\nexport const resolveCantonActiveContracts = async (args: {\n client: ICantonClient;\n selector: CantonContractSelector;\n selection: CantonActiveContractSelection;\n senderParty?: string;\n}): Promise<{ contractIds: string[] }> => {\n const queryParty = resolveParty(\n args.selector.queryAs,\n args.senderParty,\n 'Active contract selection',\n );\n const resolver = createContractAddressResolver({\n client: args.client,\n senderParty: args.senderParty,\n signingParties: [queryParty],\n appendDisclosures: () => undefined,\n });\n const selected = await selectActiveContracts(\n await resolveSelectorContracts(resolver, args.selector),\n args.selection,\n resolver,\n );\n return {\n contractIds: selected.map(({ createdEvent }) => createdEvent.contractId),\n };\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n value !== null && typeof value === 'object' && !Array.isArray(value);\n\nconst isCantonTime = (value: unknown): value is string =>\n typeof value === 'string' &&\n CANTON_TIME_PATTERN.test(value) &&\n Number.isFinite(Date.parse(value));\n\nconst isActiveContractRefresh = (refresh: CantonRefresh): refresh is CantonActiveContractRefresh =>\n refresh.resolver.type === 'activeContract';\n\nconst isActiveContractValueRefresh = (\n refresh: CantonRefresh,\n): refresh is CantonActiveContractValueRefresh => refresh.resolver.type === 'activeContractValue';\n\nconst isAmuletContextRefresh = (refresh: CantonRefresh): refresh is CantonAmuletContextRefresh =>\n refresh.resolver.type === 'amuletContext';\n\nconst isTimestampRefresh = (refresh: CantonRefresh): refresh is CantonTimestampRefresh =>\n refresh.resolver.type === 'timestamp';\n\nconst replaceAtPath = (root: unknown, path: CantonRefreshPath, value: unknown): unknown => {\n if (path.length === 0) return value;\n\n let current = root;\n for (const [position, segment] of path.entries()) {\n const isLast = position === path.length - 1;\n if ('field' in segment) {\n if (!isRecord(current) || !(segment.field in current)) {\n throw new Error(`Refresh target field \"${segment.field}\" does not exist`);\n }\n if (isLast) {\n current[segment.field] = value;\n return root;\n }\n current = current[segment.field];\n continue;\n }\n if ('index' in segment) {\n if (!Array.isArray(current) || segment.index >= current.length) {\n throw new Error(`Refresh target array index ${segment.index} does not exist`);\n }\n if (isLast) {\n current[segment.index] = value;\n return root;\n }\n current = current[segment.index];\n continue;\n }\n\n if (!Array.isArray(current)) {\n throw new Error(`Refresh target DAML map \"${segment.damlMapKey}\" is not an array`);\n }\n const matches = current.filter(\n (entry): entry is [string, unknown] =>\n Array.isArray(entry) && entry.length === 2 && entry[0] === segment.damlMapKey,\n );\n if (matches.length !== 1) {\n throw new Error(\n `Refresh target DAML map key \"${segment.damlMapKey}\" matched ${matches.length} entries`,\n );\n }\n if (isLast) {\n matches[0]![1] = value;\n return root;\n }\n current = matches[0]![1];\n }\n return root;\n};\n\nconst readAtPath = (root: unknown, path: CantonRefreshPath): unknown => {\n let current = root;\n for (const segment of path) {\n if ('field' in segment) {\n if (!isRecord(current) || !(segment.field in current)) {\n throw new Error(`Refresh target field \"${segment.field}\" does not exist`);\n }\n current = current[segment.field];\n continue;\n }\n if ('index' in segment) {\n if (!Array.isArray(current) || segment.index >= current.length) {\n throw new Error(`Refresh target array index ${segment.index} does not exist`);\n }\n current = current[segment.index];\n continue;\n }\n\n if (!Array.isArray(current)) {\n throw new Error(`Refresh target DAML map \"${segment.damlMapKey}\" is not an array`);\n }\n const matches = current.filter(\n (entry): entry is [string, unknown] =>\n Array.isArray(entry) && entry.length === 2 && entry[0] === segment.damlMapKey,\n );\n if (matches.length !== 1) {\n throw new Error(\n `Refresh target DAML map key \"${segment.damlMapKey}\" matched ${matches.length} entries`,\n );\n }\n current = matches[0]![1];\n }\n return current;\n};\n\nconst readTarget = (\n commands: CantonUnresolvedCommand[],\n target: CantonArgumentRefreshTarget,\n path: CantonRefreshPath,\n): unknown => {\n const command = commands[target.commandIndex];\n if (!command) {\n throw new Error(`Refresh command index ${target.commandIndex} does not exist`);\n }\n\n if (target.command === 'exercise') {\n if (!('exerciseCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not an exercise`);\n }\n if (command.exerciseCommand.choice !== target.choice) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected choice ${target.choice}, found ${command.exerciseCommand.choice}`,\n );\n }\n return readAtPath(command.exerciseCommand.choiceArgument, path);\n }\n\n if (!('createCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not a create`);\n }\n if (command.createCommand.templateId !== target.template) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected template ${target.template}, found ${command.createCommand.templateId}`,\n );\n }\n return readAtPath(command.createCommand.createArguments, path);\n};\n\nconst applyPatch = (\n commands: CantonUnresolvedCommand[],\n target: CantonArgumentRefreshTarget,\n path: CantonRefreshPath,\n value: unknown,\n): void => {\n const command = commands[target.commandIndex];\n if (!command) {\n throw new Error(`Refresh command index ${target.commandIndex} does not exist`);\n }\n\n if (target.command === 'exercise') {\n if (!('exerciseCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not an exercise`);\n }\n if (command.exerciseCommand.choice !== target.choice) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected choice ${target.choice}, found ${command.exerciseCommand.choice}`,\n );\n }\n command.exerciseCommand.choiceArgument = replaceAtPath(\n command.exerciseCommand.choiceArgument,\n path,\n value,\n );\n return;\n }\n\n if (!('createCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not a create`);\n }\n if (command.createCommand.templateId !== target.template) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected template ${target.template}, found ${command.createCommand.templateId}`,\n );\n }\n command.createCommand.createArguments = replaceAtPath(\n command.createCommand.createArguments,\n path,\n value,\n );\n};\n\nconst applyTarget = (\n commands: CantonUnresolvedCommand[],\n target: CantonRefreshTarget,\n value: unknown,\n): void => {\n if ('field' in target) {\n const command = commands[target.commandIndex];\n if (!command) {\n throw new Error(`Refresh command index ${target.commandIndex} does not exist`);\n }\n if (!('exerciseCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not an exercise`);\n }\n if (target.choice !== undefined && command.exerciseCommand.choice !== target.choice) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected choice ${target.choice}, found ${command.exerciseCommand.choice}`,\n );\n }\n if (typeof value !== 'string') {\n throw new Error('Exercise contract ID refresh must resolve to a string');\n }\n command.exerciseCommand.contractId = value;\n return;\n }\n\n for (const argument of target.arguments) {\n applyPatch(commands, target, argument.path, value);\n }\n};\n\nconst containsDeferredSentinel = (value: unknown): boolean => {\n if (isCantonDeferredSentinel(value)) return true;\n if (Array.isArray(value)) return value.some((item) => containsDeferredSentinel(item));\n if (!isRecord(value)) return false;\n return Object.values(value).some((child) => containsDeferredSentinel(child));\n};\n\nconst disclosuresEqual = (left: CantonDisclosedContract, right: CantonDisclosedContract): boolean =>\n left.contractId === right.contractId &&\n left.templateId === right.templateId &&\n left.createdEventBlob === right.createdEventBlob &&\n left.synchronizerId === right.synchronizerId;\n\nexport const resolveCantonRefreshPlan = async (args: {\n unresolvedCommands: CantonUnresolvedCommand[];\n unresolvedDisclosedContracts: CantonDisclosedContract[];\n refreshPlan: CantonRefreshPlan;\n senderParty?: string;\n signingParties: string[];\n client: ICantonClient;\n}): Promise<{ commands: CantonCommand[]; disclosedContracts: CantonDisclosedContract[] }> => {\n const replacements = cantonRefreshPlanSchema.shape.replaceSentinels.parse(\n args.refreshPlan.replaceSentinels,\n );\n const commands = structuredClone(args.unresolvedCommands);\n if (replacements) {\n if (\n typeof args.senderParty !== 'string' ||\n !args.senderParty.trim() ||\n isCantonDeferredSentinel(args.senderParty)\n ) {\n throw new Error('Sender binding requires a resolved sender party');\n }\n for (const replacement of replacements) {\n for (const target of replacement.targets) {\n for (const { path } of target.arguments) {\n if (readTarget(commands, target, path) !== cantonSenderPartyRef()) {\n throw new Error(\n 'Sender binding target must contain cantonSenderPartyRef()',\n );\n }\n applyPatch(commands, target, path, args.senderParty);\n }\n }\n }\n }\n if (containsDeferredSentinel(commands)) {\n throw new Error('Canton refreshPlan cannot be combined with deferred sentinels');\n }\n\n for (const entry of args.refreshPlan.commands) {\n if (entry.resolver.type !== 'finalizeCallback') continue;\n const callback = cantonFinalizeCallbackRefreshSchema.parse(entry);\n const contextIndices = callback.targets.map((target) => target.commandIndex).sort();\n const cidIndices = callback.callbackCidTargets.map((target) => target.commandIndex).sort();\n if (JSON.stringify(contextIndices) !== JSON.stringify(cidIndices)) {\n throw new Error(\n 'Callback context and contract ID targets must address the same commands',\n );\n }\n for (const target of [...callback.targets, ...callback.callbackCidTargets]) {\n readTarget(commands, target, target.arguments[0].path);\n const command = commands[target.commandIndex]!;\n if (\n !('exerciseCommand' in command) ||\n !isRecord(command.exerciseCommand.choiceArgument) ||\n command.exerciseCommand.choiceArgument.pendingCallbackCid !==\n callback.resolver.pendingCallbackCid\n ) {\n throw new Error('Callback target must match the pinned PendingCallback');\n }\n }\n }\n\n const disclosureMap = new Map<string, CantonDisclosedContract>();\n const appendDisclosures = (disclosures: CantonDisclosedContract[]): void => {\n for (const disclosure of disclosures) {\n const existing = disclosureMap.get(disclosure.contractId);\n if (existing && !disclosuresEqual(existing, disclosure)) {\n throw new Error(`Conflicting disclosures for contract ${disclosure.contractId}`);\n }\n disclosureMap.set(disclosure.contractId, disclosure);\n }\n };\n appendDisclosures(args.unresolvedDisclosedContracts);\n\n const resolver = createContractAddressResolver({\n client: args.client,\n senderParty: args.senderParty,\n signingParties: args.signingParties,\n appendDisclosures,\n });\n\n for (const refresh of args.refreshPlan.commands) {\n if (isActiveContractRefresh(refresh)) {\n const ref = makeActiveContractRef(refresh.resolver.selector);\n const selected = await selectActiveContracts(\n await resolveSelectorContracts(resolver, refresh.resolver.selector),\n refresh.resolver.selection,\n resolver,\n );\n await resolver.discloseActiveContracts(ref, selected);\n const contractIds = selected.map(({ createdEvent }) => createdEvent.contractId);\n const resolved =\n refresh.resolver.selection.kind === 'exactlyOne' ? contractIds[0]! : contractIds;\n for (const target of refresh.targets) applyTarget(commands, target, resolved);\n continue;\n }\n\n if (isActiveContractValueRefresh(refresh)) {\n const value = await resolveContractValue(resolver, refresh.resolver);\n for (const target of refresh.targets) applyTarget(commands, target, value);\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigTransferBatch') {\n const transfer = cantonOneSigTransferBatchRefreshSchema.parse(refresh);\n const firstTarget = transfer.targets[0]!;\n const commandIndex = firstTarget.commandIndex;\n const calls = readTarget(commands, firstTarget, [\n { field: 'transaction' },\n { field: 'calls' },\n ]);\n if (!Array.isArray(calls)) throw new Error('OneSig transfer target requires calls');\n const transferIndices = calls.flatMap((entry, index) =>\n isRecord(entry) && isRecord(entry.call) && entry.call.tag === 'OpTransfer'\n ? [index]\n : [],\n );\n const indices = transfer.targets.map((target) => target.arguments[0].path[2].index);\n if (\n transfer.targets.some((target) => target.commandIndex !== commandIndex) ||\n indices.length !== transferIndices.length ||\n new Set(indices).size !== indices.length ||\n transferIndices.some((index) => !indices.includes(index)) ||\n args.refreshPlan.commands.filter(\n (entry) =>\n entry.resolver.type === 'oneSigTransferBatch' &&\n entry.targets.some((target) => target.commandIndex === commandIndex),\n ).length !== 1\n ) {\n throw new Error(\n 'OneSig transfer targets must cover every Transfer context exactly once',\n );\n }\n for (const target of transfer.targets) {\n const current = readTarget(commands, target, target.arguments[0].path);\n if (\n !isRecord(current) ||\n current.tag !== 'TransferFactoryContext' ||\n !isRecord(current.value)\n )\n throw new Error('OneSig transfer target context mismatch');\n }\n const bundle = await resolveCantonOneSigTransferBatch(\n new CantonSdk(args.client),\n transfer.resolver,\n indices.map((index) => calls[index].call),\n args.client,\n );\n appendDisclosures(bundle.disclosedContracts);\n transfer.targets.forEach((target, index) =>\n applyTarget(commands, target, bundle.contexts[index]),\n );\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigTransferInstructionContext') {\n const instruction = cantonOneSigTransferInstructionContextRefreshSchema.parse(refresh);\n const target = instruction.targets[0]!;\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [...path.slice(0, -1), { field: 'call' }]);\n if (\n !isRecord(current) ||\n current.tag !== 'TransferInstructionContext' ||\n !isRecord(current.value) ||\n current.value.transferInstructionCid !== instruction.resolver.transferInstructionCid\n ) {\n throw new Error(\n 'OneSig instruction target must match the pinned transfer instruction',\n );\n }\n const bundle = await resolveCantonOneSigTransferInstructionContext(\n new CantonSdk(args.client),\n instruction.resolver,\n call,\n args.client,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigConfigContext') {\n const config = cantonOneSigConfigContextRefreshSchema.parse(refresh);\n for (const target of config.targets) {\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [\n ...path.slice(0, -1),\n { field: 'call' },\n ]);\n const expected = config.resolver;\n if (\n !isRecord(call) ||\n !isRecord(call.value) ||\n call.tag !== expected.operation ||\n !isRecord(call.value.oappId) ||\n call.value.oappId.admin !== expected.oappId.admin ||\n call.value.oappId.id !== expected.oappId.id ||\n !isRecord(current) ||\n current.tag !== 'ConfigContext' ||\n !isRecord(current.value) ||\n (expected.operation === 'OpSetRequestFactory' &&\n call.value.expectedHandler !== expected.expectedHandler)\n ) {\n throw new Error('OneSig config target does not match signed call identity');\n }\n const bundle = await resolveCantonOneSigConfigContext(\n new CantonSdk(args.client),\n expected,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n }\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigScopeContext') {\n const scope = cantonOneSigScopeContextRefreshSchema.parse(refresh);\n for (const target of scope.targets) {\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [\n ...path.slice(0, -1),\n { field: 'call' },\n ]);\n const expected = scope.resolver;\n const contextTag =\n expected.operation === 'OpSetMinFee'\n ? 'MinFeeContext'\n : expected.operation === 'OpSetMinPayoutValue'\n ? 'MinPayoutValueContext'\n : expected.operation === 'OpSetProtocolLedgerTimeValidityPeriod'\n ? 'LedgerTimeValidityContext'\n : 'AccessControlContext';\n if (\n !isRecord(call) ||\n !isRecord(call.value) ||\n call.tag !== expected.operation ||\n !isRecord(call.value.scope) ||\n call.value.scope.category !== expected.scope.category ||\n call.value.scope.admin !== expected.scope.admin ||\n call.value.scope.id !== expected.scope.id ||\n (expected.operation === 'OpAcceptDefaultAdmin' &&\n expected.scope.category === 'oapp') ||\n !isRecord(current) ||\n current.tag !== contextTag ||\n !isRecord(current.value)\n ) {\n throw new Error('OneSig scope target does not match signed call identity');\n }\n const bundle = await resolveCantonOneSigScopeContext(\n new CantonSdk(args.client),\n expected,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n }\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigDiscoveryContext') {\n const discovery = cantonOneSigDiscoveryContextRefreshSchema.parse(refresh);\n for (const target of discovery.targets) {\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [\n ...path.slice(0, -1),\n { field: 'call' },\n ]);\n const expected = discovery.resolver;\n if (\n !isRecord(call) ||\n call.tag !== 'OpSetDiscoveryUrl' ||\n !isRecord(call.value) ||\n !isRecord(call.value.oappId) ||\n call.value.oappId.admin !== expected.oappId.admin ||\n call.value.oappId.id !== expected.oappId.id ||\n !isRecord(current) ||\n current.tag !== 'OAppDiscoveryContext' ||\n !isRecord(current.value) ||\n !isCantonTime(current.value.timestamp) ||\n (parseDamlDecimal(call.value.feeAmount, 'Discovery fee') > 0n\n ? expected.feeDsoParty !== call.value.dso\n : expected.feeDsoParty !== undefined)\n ) {\n throw new Error('OneSig discovery target does not match signed call identity');\n }\n const bundle = await resolveCantonOneSigDiscoveryContext(\n new CantonSdk(args.client),\n expected,\n current.value.timestamp,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n }\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigRequestContext') {\n const request = cantonOneSigRequestContextRefreshSchema.parse(refresh);\n for (const target of request.targets) {\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [\n ...path.slice(0, -1),\n { field: 'call' },\n ]);\n const expected = request.resolver.request;\n const requestTags = [\n 'OpCreateOAppRequest',\n 'OpSkip',\n 'OpBurn',\n 'OpClear',\n 'OpNilify',\n ];\n if (\n !isRecord(call) ||\n !isRecord(call.value) ||\n call.value.dso !== request.resolver.dsoParty ||\n !isRecord(current) ||\n !isRecord(current.value) ||\n !isCantonTime(current.value.timestamp) ||\n (expected.kind === 'request'\n ? call.tag !== 'OpCreateRequest' || current.tag !== 'RequestContext'\n : expected.kind === 'oappAccept'\n ? call.tag !== 'OpAcceptDefaultAdmin' ||\n current.tag !== 'OAppRequestContext' ||\n !isRecord(call.value.scope) ||\n call.value.scope.category !== 'oapp' ||\n call.value.scope.admin !== expected.oappId.admin ||\n call.value.scope.id !== expected.oappId.id ||\n parseDamlDecimal(call.value.feeAmount, 'OApp Accept fee') <= 0n\n : !requestTags.includes(String(call.tag)) ||\n current.tag !== 'OAppRequestContext' ||\n !isRecord(call.value.oappId) ||\n call.value.oappId.admin !== expected.oappId.admin ||\n call.value.oappId.id !== expected.oappId.id)\n ) {\n throw new Error('OneSig request target does not match signed call identity');\n }\n const bundle = await resolveCantonOneSigRequestContext(\n new CantonSdk(args.client),\n request.resolver,\n current.value.timestamp,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n }\n continue;\n }\n\n if (refresh.resolver.type === 'finalizeCallback') {\n const callback = cantonFinalizeCallbackRefreshSchema.parse(refresh);\n const bundle = await resolveCantonFinalizeCallback(\n new CantonSdk(args.client),\n callback.resolver,\n );\n appendDisclosures(bundle.disclosedContracts);\n for (const target of callback.targets)\n applyTarget(commands, target, bundle.executeContext);\n for (const target of callback.callbackCidTargets)\n applyTarget(commands, target, bundle.callbackCid);\n continue;\n }\n\n if (refresh.resolver.type === 'transferInstructionAcceptContext') {\n const acceptance = cantonTransferInstructionAcceptContextRefreshSchema.parse(refresh);\n for (const target of acceptance.targets) {\n readTarget(commands, target, target.arguments[0]!.path);\n const command = commands[target.commandIndex]!;\n if (\n !('exerciseCommand' in command) ||\n command.exerciseCommand.contractId !== acceptance.resolver.contractId\n ) {\n throw new Error(\n 'Accept context target must match the pinned transfer instruction',\n );\n }\n }\n const bundle = await args.client.getTransferInstructionAcceptContext({\n contractId: acceptance.resolver.contractId,\n });\n appendDisclosures(bundle.disclosedContracts);\n for (const target of acceptance.targets) {\n applyTarget(commands, target, bundle.choiceContext);\n }\n continue;\n }\n\n if (isAmuletContextRefresh(refresh)) {\n const bundle = await args.client.getAmuletContextWithExternalRules({\n admin: refresh.resolver.dsoParty,\n id: 'Amulet',\n });\n appendDisclosures(bundle.disclosedContracts);\n for (const target of refresh.targets) {\n applyTarget(commands, target, bundle.amuletContext);\n }\n for (const target of refresh.contractIdTargets ?? []) {\n applyTarget(commands, target, bundle.externalPartyAmuletRulesCid);\n }\n }\n }\n\n // Timestamp refreshes run after all external reads so their shared instant is\n // as close as possible to prepareForSigning, regardless of declaration order.\n const now = new Date();\n for (const refresh of args.refreshPlan.commands) {\n if (!isTimestampRefresh(refresh)) continue;\n\n for (const target of refresh.targets) {\n for (const { path, offsetMs = 0 } of target.arguments) {\n const iso = new Date(now.getTime() + offsetMs).toISOString();\n const current = readTarget(commands, target, path);\n let value: unknown;\n if (isCantonTime(current)) {\n value = iso;\n } else if (\n isRecord(current) &&\n current.tag === 'AV_Time' &&\n isCantonTime(current.value)\n ) {\n value = { ...current, value: iso };\n } else {\n throw new Error('Timestamp refresh target must contain a Canton Time value');\n }\n applyPatch(commands, target, path, value);\n }\n }\n }\n\n for (const refresh of args.refreshPlan.commands) {\n if (refresh.resolver.type !== 'transferInstructionAcceptContext') continue;\n for (const target of refresh.targets) {\n const command = commands[target.commandIndex]!;\n if (\n !('exerciseCommand' in command) ||\n command.exerciseCommand.contractId !== refresh.resolver.contractId\n ) {\n throw new Error('Accept context target must match the pinned transfer instruction');\n }\n }\n }\n\n for (const refresh of args.refreshPlan.commands) {\n if (refresh.resolver.type !== 'finalizeCallback') continue;\n const callback = cantonFinalizeCallbackRefreshSchema.parse(refresh);\n for (const target of [...callback.targets, ...callback.callbackCidTargets]) {\n const command = commands[target.commandIndex]!;\n if (\n !('exerciseCommand' in command) ||\n !isRecord(command.exerciseCommand.choiceArgument) ||\n command.exerciseCommand.choiceArgument.pendingCallbackCid !==\n callback.resolver.pendingCallbackCid\n ) {\n throw new Error('Callback target must match the pinned PendingCallback');\n }\n }\n }\n\n for (const replacement of replacements ?? []) {\n for (const target of replacement.targets) {\n for (const { path } of target.arguments) {\n if (readTarget(commands, target, path) !== args.senderParty) {\n throw new Error('Refresh cannot change the bound sender party');\n }\n }\n }\n }\n const disclosedContracts = [...disclosureMap.values()];\n if (containsDeferredSentinel(commands)) {\n throw new Error('Canton refreshPlan cannot return deferred sentinels');\n }\n\n return {\n commands: commands as CantonCommand[],\n disclosedContracts,\n };\n};\n"]}
@@ -1,9 +1,9 @@
1
- import { resolveBurnMintCallbackContext } from './E6T5VFT3.js';
2
- import { resolveLockUnlockCallbackContext } from './GZJQMFWY.js';
1
+ import { resolveBurnMintCallbackContext } from './HQMIA66Y.js';
2
+ import { resolveLockUnlockCallbackContext } from './CMFVLC7C.js';
3
3
  import { partyIdFromRegistryFingerprint } from './TLQX4ZQW.js';
4
4
  import { callbackDisclosure } from './YMXOSAU4.js';
5
- import { IOAppResolutionError } from './NYEJEKEY.js';
6
5
  import { isTrustedOrigin, areExpectedSignatories } from './SWY4QT4I.js';
6
+ import { IOAppResolutionError } from './NYEJEKEY.js';
7
7
  import { __name } from './VUOMXK5T.js';
8
8
  import { keccak_256 } from '@noble/hashes/sha3';
9
9
  import { bytesToHex } from '@layerzerolabs/common-encoding-utils';
@@ -420,5 +420,5 @@ var cantonBurnMintCallbackEntries = /* @__PURE__ */ __name((args) => {
420
420
  }, "cantonBurnMintCallbackEntries");
421
421
 
422
422
  export { cantonAdapterCallbackReceivers, cantonBurnMintCallbackEntries, cantonCallbackAppUid, cantonFinalizeCallbackBaseEntries, cantonLockUnlockCallbackEntries, getCantonCallbackFnArgs, hasPositiveCantonCallbackOutflow, resolveCantonFinalizeCallback, shouldIncludeCantonCallbackRateLimiter };
423
- //# sourceMappingURL=FRIE5Q6G.js.map
424
- //# sourceMappingURL=FRIE5Q6G.js.map
423
+ //# sourceMappingURL=E6W3YWXU.js.map
424
+ //# sourceMappingURL=E6W3YWXU.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/refresh/callback.ts"],"names":["IOAPP","CONFIG","REGISTRY","LIMITER","PENDING","OFT_SELF","OFT_CONFIG","LOCK_UNLOCK","LOCK_UNLOCK_CONFIG","BURN_MINT","BURN_MINT_CONFIG","cantonCallbackAppUid","admin","id","bytesToHex","keccak_256","TextEncoder","encode","getCantonCallbackFnArgs","context","appUid","fnName","current","key","Array","isArray","undefined","find","candidate","value","hasPositiveCantonCallbackOutflow","callbackContext","outbound","frozen","amount","Number","NaN","isFinite","shouldIncludeCantonCallbackRateLimiter","args","isGloballyDisabled","isAccept","cantonFinalizeCallbackBaseEntries","entries","cid","push","tag","matchesId","matchesTemplate","event","template","templateId","packageName","slice","indexOf","endsWith","exactlyOne","contracts","label","length","Error","requireDisclosure","sdk","informee","created","archived","fetchEventsByContractId","createDisclosure","decimalSetting","test","resolveCantonFinalizeCallback","input","pendingCallbackCid","contractId","isTrustedOrigin","pending","createArgument","oappId","offset","getLedgerEndOffset","query","interfaceId","gateway","moduleName","entityName","split","packageId","getPackageId","resolvedInterfaceId","queryActiveContractsByInterface","includeCreatedEventBlob","filter","contract","views","createdEvent","interfaceViews","view","viewValue","viewStatus","code","areExpectedSignatories","oappGateway","callbacks","configs","Promise","all","callback","config","error","IOAppResolutionError","wrap","kind","payload","instrumentId","assetInstrumentId","decimals","localDecimals","sharedDecimals","rateLimiterScaleDecimals","rateLimiterConfig","scaleDecimals","treasury","mintEscrow","identity","pendingDisclosure","disclosedContracts","callbackDisclosure","registryCid","lzReceiveParty","receiveArgs","message","fingerprint","registries","registry","hints","fingerprintToHint","some","partyIdFromRegistryFingerprint","rateLimiterStateCid","limiter","adapterContext","burnMintContext","sendArgs","name","resolveLockUnlockCallbackContext","environment","receivers","cantonAdapterCallbackReceivers","pendingCallback","resolveBurnMintCallbackContext","oappAdmin","address","configCid","cantonLockUnlockCallbackEntries","cantonBurnMintCallbackEntries","executeContext","callbackCid","lzSendArgs","parties","Set","parseIndexedPayoutParties","sender","lzReceiveArgs","count","index","party","treasuryAssetCids","map","transferFactoryCid","assetTransferContext","burnMintFactoryCid"],"mappings":"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","file":"FRIE5Q6G.js","sourcesContent":["import type { ContractId } from '@daml/types';\nimport { keccak_256 } from '@noble/hashes/sha3';\n\nimport { bytesToHex } from '@layerzerolabs/common-encoding-utils';\n\nimport { IOAppResolutionError } from '../errors';\nimport type { CreatedEvent, JsActiveContract } from '../open-api/models';\nimport type { CantonSdk } from '../sdk/canton-sdk';\nimport type { CantonDisclosedContract } from '../transaction';\nimport { areExpectedSignatories, isTrustedOrigin } from '../trusted-origin';\nimport { resolveBurnMintCallbackContext } from './callback-burn-mint';\nimport { callbackDisclosure } from './callback-contracts';\nimport { resolveLockUnlockCallbackContext } from './callback-lock-unlock';\nimport type { CantonFinalizeCallbackRefresh } from './plan';\nimport { partyIdFromRegistryFingerprint } from './registry-context';\nexport { callbackDisclosure, callbackInterfaceView } from './callback-contracts';\n\nconst IOAPP = '#layerzero-ioapp:IOApp:IOApp';\nconst CONFIG = '#layerzero-ioapp-config:IOAppConfig:IOAppConfig';\nconst REGISTRY = '#layerzero-iregistry:IRegistry:IRegistry';\nconst LIMITER = '#layerzero-irate-limiter:IRateLimitState:IRateLimitState';\nconst PENDING = '#layerzero-request:PendingCallback:PendingCallback';\nconst OFT_SELF = '#layerzero-oft:OftSelf:OftSelf';\nconst OFT_CONFIG = '#layerzero-oft:OftSelfConfig:OftSelfConfig';\nconst LOCK_UNLOCK = '#layerzero-lock-unlock-adapter:LockUnlockAdapter:LockUnlockAdapter';\nconst LOCK_UNLOCK_CONFIG = '#layerzero-lock-unlock-adapter:AdapterConfig:AdapterConfig';\n\nconst BURN_MINT = '#layerzero-burn-mint-adapter:BurnMintAdapter:BurnMintAdapter';\nconst BURN_MINT_CONFIG = '#layerzero-burn-mint-adapter:AdapterConfig:AdapterConfig';\n\nexport type CantonCallbackOAppId = { admin: string; id: string };\ntype CallbackArgs = Array<[string, { tag: string; value: unknown }]>;\ntype CallbackInput = CantonFinalizeCallbackRefresh['resolver'];\ntype CallbackContext = Array<\n [\n string,\n Array<\n [\n { tag: 'Addr_Text'; value: string },\n Array<\n [\n string,\n Array<[{ tag: 'Addr_Text'; value: string }, Array<[string, CallbackArgs]>]>,\n ]\n >,\n ]\n >,\n ]\n>;\ntype CallbackIdentity = CallbackInput['identity'];\ntype PendingCallback = {\n handler: string;\n sender: string;\n oappId: CantonCallbackOAppId;\n callbackContext: unknown;\n isAccept: boolean;\n};\n\nexport const cantonCallbackAppUid = (admin: string, id: string): string =>\n bytesToHex(keccak_256(new TextEncoder().encode(`${admin}|${id}`)));\n\nexport const getCantonCallbackFnArgs = (\n context: unknown,\n appUid: string,\n fnName: string,\n): CallbackArgs | undefined => {\n let current = context;\n for (const key of ['OApp', appUid, 'OApp', appUid, fnName]) {\n if (!Array.isArray(current)) return undefined;\n current = current.find(\n ([candidate]: [unknown]) =>\n candidate === key ||\n (candidate !== null &&\n typeof candidate === 'object' &&\n 'value' in candidate &&\n candidate.value === key),\n )?.[1];\n }\n return current as CallbackArgs | undefined;\n};\n\nexport const hasPositiveCantonCallbackOutflow = (\n callbackContext: unknown,\n appUid: string,\n): boolean => {\n const outbound = getCantonCallbackFnArgs(callbackContext, appUid, 'LzSend_callback');\n const frozen = outbound?.find(([key]) => key === 'rlScaledAmount')?.[1].value;\n const amount =\n typeof frozen === 'number' || typeof frozen === 'string' || typeof frozen === 'bigint'\n ? Number(frozen)\n : NaN;\n return Number.isFinite(amount) && amount > 0;\n};\n\nexport const shouldIncludeCantonCallbackRateLimiter = (args: {\n callbackContext: unknown;\n appUid: string;\n isGloballyDisabled: boolean;\n isAccept: boolean;\n}): boolean => {\n if (hasPositiveCantonCallbackOutflow(args.callbackContext, args.appUid)) return true;\n return (\n !args.isGloballyDisabled &&\n args.isAccept &&\n getCantonCallbackFnArgs(args.callbackContext, args.appUid, 'LzReceive_callback') !==\n undefined\n );\n};\n\nexport const cantonFinalizeCallbackBaseEntries = (args: {\n configCid: string;\n registryCid?: string;\n rateLimiterStateCid?: string;\n}): Array<[string, Array<[string, { tag: 'AV_ContractId'; value: string }]>]> => {\n const entries: Array<[string, Array<[string, { tag: 'AV_ContractId'; value: string }]>]> = [];\n for (const key of ['configCid', 'registryCid', 'rateLimiterStateCid'] as const) {\n const cid = args[key];\n if (cid) entries.push([key, [[key, { tag: 'AV_ContractId', value: cid }]]]);\n }\n return entries;\n};\n\nconst matchesId = (candidate: unknown, id: CantonCallbackOAppId): boolean => {\n const value = candidate as CantonCallbackOAppId | undefined;\n return value?.admin === id.admin && value.id === id.id;\n};\nconst matchesTemplate = (event: CreatedEvent, template: string): boolean =>\n event.templateId === template ||\n (event.packageName === template.slice(1, template.indexOf(':')) &&\n event.templateId.endsWith(template.slice(template.indexOf(':'))));\nconst exactlyOne = (contracts: JsActiveContract[], label: string): JsActiveContract => {\n if (contracts.length !== 1)\n throw new Error(`Expected exactly one ${label}, found ${contracts.length}`);\n return contracts[0]!;\n};\nconst requireDisclosure = async (\n sdk: CantonSdk,\n informee: string,\n cid: string,\n): Promise<CantonDisclosedContract> => {\n const { created, archived } = await sdk.fetchEventsByContractId(cid, [informee]);\n if (!created || archived) throw new Error(`Callback dependency ${cid} is missing or archived`);\n const value = await sdk.createDisclosure(cid as ContractId<object>, [informee]);\n if (!value) throw new Error(`Missing disclosure for ${cid}`);\n return value;\n};\nconst decimalSetting = (value: unknown): string => {\n if (typeof value !== 'string' || !/^\\d+$/.test(value)) {\n throw new Error('Callback decimal settings must be Daml Int strings');\n }\n return value;\n};\n\nexport const resolveCantonFinalizeCallback = async (\n sdk: CantonSdk,\n input: Omit<CallbackInput, 'type' | 'oappId' | 'identity'> & {\n oappId?: CantonCallbackOAppId;\n identity?: CallbackIdentity;\n },\n) => {\n const { created, archived } = await sdk.fetchEventsByContractId(input.pendingCallbackCid, [\n input.informee,\n ]);\n if (\n !created ||\n archived ||\n created.contractId !== input.pendingCallbackCid ||\n !matchesTemplate(created, PENDING) ||\n !isTrustedOrigin(created, input.informee, 'handler')\n ) {\n throw new Error(\n 'PendingCallback is missing, archived, or not from the expected handler/template',\n );\n }\n const pending = created.createArgument as PendingCallback;\n if (\n !pending.oappId?.admin ||\n !pending.oappId.id ||\n (input.oappId && !matchesId(pending.oappId, input.oappId))\n ) {\n throw new Error('PendingCallback OApp identity mismatch');\n }\n const oappId = pending.oappId;\n const offset = await sdk.getLedgerEndOffset();\n const query = async (interfaceId: string, gateway?: string) => {\n const [packageName, moduleName, entityName] = interfaceId.slice(1).split(':');\n const packageId = await sdk.getPackageId(packageName!, [input.informee]);\n const resolvedInterfaceId = `${packageId}:${moduleName}:${entityName}`;\n return (\n await sdk.queryActiveContractsByInterface([input.informee], offset, [interfaceId], {\n includeCreatedEventBlob: true,\n })\n ).filter((contract) => {\n const views =\n contract.createdEvent.interfaceViews?.filter(\n (view) => view.interfaceId === resolvedInterfaceId,\n ) ?? [];\n const view = views[0]?.viewValue as Record<string, unknown> | undefined;\n return (\n views.length === 1 &&\n views[0]?.viewStatus?.code === 0 &&\n view != null &&\n areExpectedSignatories(contract.createdEvent, [oappId.admin]) &&\n matchesId(view.oappId, oappId) &&\n (gateway === undefined || view.oappGateway === gateway)\n );\n });\n };\n const [callbacks, configs] = await Promise.all([query(IOAPP, input.informee), query(CONFIG)]);\n let callback: JsActiveContract;\n let config: JsActiveContract;\n try {\n callback = exactlyOne(callbacks, 'callback for OApp/gateway');\n config = exactlyOne(configs, 'callback config for OApp');\n } catch (error) {\n throw IOAppResolutionError.wrap(error, 'Could not resolve callback contracts');\n }\n const kind =\n matchesTemplate(callback.createdEvent, OFT_SELF) &&\n matchesTemplate(config.createdEvent, OFT_CONFIG)\n ? 'oft-self'\n : matchesTemplate(callback.createdEvent, LOCK_UNLOCK) &&\n matchesTemplate(config.createdEvent, LOCK_UNLOCK_CONFIG)\n ? 'lock-unlock-adapter'\n : matchesTemplate(callback.createdEvent, BURN_MINT) &&\n matchesTemplate(config.createdEvent, BURN_MINT_CONFIG)\n ? 'burn-mint-adapter'\n : undefined;\n if (!kind)\n throw new Error('Callback kind changed or is unsupported; repopulate the transaction');\n const payload = config.createdEvent.createArgument as {\n instrumentId?: CantonCallbackOAppId;\n assetInstrumentId?: CantonCallbackOAppId;\n localDecimals: string;\n sharedDecimals: string;\n rateLimiterConfig: { scaleDecimals: string; isGloballyDisabled: boolean };\n };\n const instrumentId = kind === 'oft-self' ? payload.instrumentId : payload.assetInstrumentId;\n if (\n !instrumentId?.admin ||\n !instrumentId.id ||\n (kind === 'oft-self' && !matchesId(instrumentId, oappId))\n ) {\n throw new Error('Callback instrument changed; repopulate the transaction');\n }\n const decimals = {\n instrumentId: { ...instrumentId },\n localDecimals: decimalSetting(payload.localDecimals),\n sharedDecimals: decimalSetting(payload.sharedDecimals),\n rateLimiterScaleDecimals: decimalSetting(payload.rateLimiterConfig.scaleDecimals),\n };\n const treasury = (callback.createdEvent.createArgument as { treasury?: unknown }).treasury;\n if (kind === 'lock-unlock-adapter' && (typeof treasury !== 'string' || !treasury)) {\n throw new Error('Lock/unlock callback treasury is required');\n }\n const mintEscrow = (callback.createdEvent.createArgument as { mintEscrow?: unknown })\n .mintEscrow;\n if (kind === 'burn-mint-adapter' && (typeof mintEscrow !== 'string' || !mintEscrow)) {\n throw new Error('Burn/mint callback mintEscrow is required');\n }\n const identity: CallbackIdentity =\n kind === 'oft-self'\n ? { kind, ...decimals }\n : kind === 'lock-unlock-adapter'\n ? { kind, ...decimals, treasury: treasury as string }\n : { kind, ...decimals, mintEscrow: mintEscrow as string };\n if (\n input.identity &&\n (input.identity.kind !== identity.kind ||\n !matchesId(input.identity.instrumentId, identity.instrumentId) ||\n input.identity.localDecimals !== identity.localDecimals ||\n input.identity.sharedDecimals !== identity.sharedDecimals ||\n input.identity.rateLimiterScaleDecimals !== identity.rateLimiterScaleDecimals ||\n (input.identity.kind === 'lock-unlock-adapter' &&\n identity.kind === 'lock-unlock-adapter' &&\n input.identity.treasury !== identity.treasury) ||\n (input.identity.kind === 'burn-mint-adapter' &&\n identity.kind === 'burn-mint-adapter' &&\n input.identity.mintEscrow !== identity.mintEscrow))\n ) {\n throw new Error('Callback economic identity changed; repopulate the transaction');\n }\n const pendingDisclosure = await sdk.createDisclosure(\n input.pendingCallbackCid as ContractId<object>,\n [input.informee],\n );\n if (!pendingDisclosure) throw new Error(`Missing disclosure for ${input.pendingCallbackCid}`);\n const disclosedContracts = [\n pendingDisclosure,\n callbackDisclosure(callback),\n callbackDisclosure(config),\n ];\n const appUid = cantonCallbackAppUid(oappId.admin, oappId.id);\n let registryCid: string | undefined;\n let lzReceiveParty: string | undefined;\n const receiveArgs = getCantonCallbackFnArgs(\n pending.callbackContext,\n appUid,\n 'LzReceive_callback',\n );\n if (pending.isAccept && receiveArgs) {\n const message = receiveArgs.find(([key]) => key === 'lzMessage')?.[1].value;\n if (typeof message !== 'string') throw new Error('lzMessage not found in callbackContext');\n const fingerprint = message.slice(0, 64);\n const registries = (await query(REGISTRY)).filter((registry) => {\n const hints = (registry.createdEvent.createArgument as { fingerprintToHint: unknown })\n .fingerprintToHint;\n return Array.isArray(hints)\n ? hints.some(([key]) => key === fingerprint)\n : hints !== null && typeof hints === 'object' && fingerprint in hints;\n });\n const registry = exactlyOne(registries, `Registry for fingerprint ${fingerprint}`);\n registryCid = registry.createdEvent.contractId;\n if (identity.kind !== 'oft-self') {\n lzReceiveParty = partyIdFromRegistryFingerprint(\n registry.createdEvent.createArgument as { fingerprintToHint: unknown },\n fingerprint,\n );\n }\n disclosedContracts.push(callbackDisclosure(registry));\n }\n let rateLimiterStateCid: string | undefined;\n if (\n shouldIncludeCantonCallbackRateLimiter({\n callbackContext: pending.callbackContext,\n appUid,\n isGloballyDisabled: payload.rateLimiterConfig.isGloballyDisabled,\n isAccept: pending.isAccept,\n })\n ) {\n const limiter = exactlyOne(await query(LIMITER), 'callback rate limiter');\n rateLimiterStateCid = limiter.createdEvent.contractId;\n disclosedContracts.push(callbackDisclosure(limiter));\n }\n let adapterContext: Awaited<ReturnType<typeof resolveLockUnlockCallbackContext>> | undefined;\n let burnMintContext: Awaited<ReturnType<typeof resolveBurnMintCallbackContext>> | undefined;\n if (identity.kind === 'oft-self') {\n const sendArgs = getCantonCallbackFnArgs(\n pending.callbackContext,\n appUid,\n 'LzSend_callback',\n );\n for (const key of ['oftHoldingCid', 'payoutHoldingCid']) {\n const cid = sendArgs?.find(([name]) => name === key)?.[1].value;\n if (typeof cid === 'string' && cid)\n disclosedContracts.push(await requireDisclosure(sdk, input.informee, cid));\n }\n } else if (identity.kind === 'lock-unlock-adapter') {\n adapterContext = await resolveLockUnlockCallbackContext({\n sdk,\n informee: input.informee,\n appUid,\n treasury: identity.treasury,\n instrumentId: identity.instrumentId,\n offset,\n environment: input.environment,\n receivers: cantonAdapterCallbackReceivers({\n pendingCallback: pending,\n appUid,\n lzReceiveParty,\n treasury: identity.treasury,\n }),\n });\n disclosedContracts.push(...adapterContext.disclosedContracts);\n } else {\n burnMintContext = await resolveBurnMintCallbackContext({\n sdk,\n informee: input.informee,\n appUid,\n oappAdmin: oappId.admin,\n mintEscrow: identity.mintEscrow,\n instrumentId: identity.instrumentId,\n offset,\n environment: input.environment,\n receivers: cantonAdapterCallbackReceivers({\n pendingCallback: pending,\n appUid,\n lzReceiveParty,\n }),\n });\n disclosedContracts.push(...burnMintContext.disclosedContracts);\n }\n const address = { tag: 'Addr_Text' as const, value: appUid };\n const entries: Array<[string, CallbackArgs]> = cantonFinalizeCallbackBaseEntries({\n configCid: config.createdEvent.contractId,\n registryCid,\n rateLimiterStateCid,\n });\n if (adapterContext) entries.push(...cantonLockUnlockCallbackEntries(adapterContext));\n if (burnMintContext)\n entries.push(\n ...cantonLockUnlockCallbackEntries(burnMintContext),\n ...cantonBurnMintCallbackEntries(burnMintContext),\n );\n const executeContext: CallbackContext = [\n ['OApp', [[address, [['OApp', [[address, entries]]]]]]],\n ];\n return {\n callbackCid: callback.createdEvent.contractId,\n executeContext,\n disclosedContracts,\n oappId,\n identity,\n };\n};\n\nexport type CantonAdapterReceiversInput = {\n pendingCallback: {\n isAccept: boolean;\n sender: string;\n callbackContext: unknown;\n };\n appUid: string;\n lzReceiveParty?: string;\n treasury?: string;\n};\n\nexport const cantonAdapterCallbackReceivers = ({\n pendingCallback,\n appUid,\n lzReceiveParty,\n treasury,\n}: CantonAdapterReceiversInput): string[] => {\n const lzSendArgs = getCantonCallbackFnArgs(\n pendingCallback.callbackContext,\n appUid,\n 'LzSend_callback',\n );\n if (lzSendArgs) {\n if (pendingCallback.isAccept) {\n const parties = [...new Set(parseIndexedPayoutParties(lzSendArgs))];\n return parties.length > 0 ? parties : treasury ? [treasury] : [];\n }\n return [pendingCallback.sender];\n }\n\n const lzReceiveArgs = getCantonCallbackFnArgs(\n pendingCallback.callbackContext,\n appUid,\n 'LzReceive_callback',\n );\n if (lzReceiveArgs) {\n if (!pendingCallback.isAccept) {\n return [];\n }\n if (!lzReceiveParty) {\n throw new Error('lzReceiveParty is required for LzReceive accept');\n }\n return [lzReceiveParty];\n }\n\n throw new Error('callbackContext is neither LzSend nor LzReceive');\n};\n\nconst parseIndexedPayoutParties = (\n args: NonNullable<ReturnType<typeof getCantonCallbackFnArgs>>,\n): string[] => {\n const count = Number(args.find(([key]) => key === 'receiverCount')?.[1].value ?? 0);\n\n const parties: string[] = [];\n for (let index = 0; index < count; index += 1) {\n const party = args.find(([key]) => key === `receiver_${index}`)?.[1].value;\n if (typeof party !== 'string' || party === '') {\n throw new Error(`LzSend callback missing receiver_${index}`);\n }\n parties.push(party);\n }\n return parties;\n};\n\nexport const cantonLockUnlockCallbackEntries = (args: {\n treasuryAssetCids?: string[];\n transferFactoryCid?: string;\n assetTransferContext?: Record<string, unknown>;\n}): Array<[string, CallbackArgs]> => {\n const entries: Array<[string, CallbackArgs]> = [];\n if (args.treasuryAssetCids)\n entries.push([\n 'treasuryAssetCids',\n [\n [\n 'treasuryAssetCids',\n {\n tag: 'AV_List',\n value: args.treasuryAssetCids.map((value) => ({\n tag: 'AV_ContractId',\n value,\n })),\n },\n ],\n ],\n ]);\n if (args.transferFactoryCid)\n entries.push([\n 'transferFactoryCid',\n [\n [\n 'transferFactoryCid',\n {\n tag: 'AV_ContractId',\n value: args.transferFactoryCid,\n },\n ],\n ],\n ]);\n if (args.assetTransferContext)\n entries.push([\n 'assetTransferContext',\n [\n [\n 'assetTransferContext',\n {\n tag: 'AV_Map',\n value: args.assetTransferContext,\n },\n ],\n ],\n ]);\n return entries;\n};\n\nexport const cantonBurnMintCallbackEntries = (args: {\n burnMintFactoryCid?: string;\n burnMintExtraArgs?: Record<string, unknown>;\n burnMintOutputContext?: Record<string, unknown>;\n}): Array<[string, CallbackArgs]> => {\n const entries: Array<[string, CallbackArgs]> = [];\n if (args.burnMintFactoryCid)\n entries.push([\n 'burnMintFactoryCid',\n [['burnMintFactoryCid', { tag: 'AV_ContractId', value: args.burnMintFactoryCid }]],\n ]);\n for (const key of ['burnMintExtraArgs', 'burnMintOutputContext'] as const) {\n if (args[key]) entries.push([key, [[key, { tag: 'AV_Map', value: args[key] }]]]);\n }\n return entries;\n};\n"]}
1
+ {"version":3,"sources":["../src/refresh/callback.ts"],"names":["IOAPP","CONFIG","REGISTRY","LIMITER","PENDING","OFT_SELF","OFT_CONFIG","LOCK_UNLOCK","LOCK_UNLOCK_CONFIG","BURN_MINT","BURN_MINT_CONFIG","cantonCallbackAppUid","admin","id","bytesToHex","keccak_256","TextEncoder","encode","getCantonCallbackFnArgs","context","appUid","fnName","current","key","Array","isArray","undefined","find","candidate","value","hasPositiveCantonCallbackOutflow","callbackContext","outbound","frozen","amount","Number","NaN","isFinite","shouldIncludeCantonCallbackRateLimiter","args","isGloballyDisabled","isAccept","cantonFinalizeCallbackBaseEntries","entries","cid","push","tag","matchesId","matchesTemplate","event","template","templateId","packageName","slice","indexOf","endsWith","exactlyOne","contracts","label","length","Error","requireDisclosure","sdk","informee","created","archived","fetchEventsByContractId","createDisclosure","decimalSetting","test","resolveCantonFinalizeCallback","input","pendingCallbackCid","contractId","isTrustedOrigin","pending","createArgument","oappId","offset","getLedgerEndOffset","query","interfaceId","gateway","moduleName","entityName","split","packageId","getPackageId","resolvedInterfaceId","queryActiveContractsByInterface","includeCreatedEventBlob","filter","contract","views","createdEvent","interfaceViews","view","viewValue","viewStatus","code","areExpectedSignatories","oappGateway","callbacks","configs","Promise","all","callback","config","error","IOAppResolutionError","wrap","kind","payload","instrumentId","assetInstrumentId","decimals","localDecimals","sharedDecimals","rateLimiterScaleDecimals","rateLimiterConfig","scaleDecimals","treasury","mintEscrow","identity","pendingDisclosure","disclosedContracts","callbackDisclosure","registryCid","lzReceiveParty","receiveArgs","message","fingerprint","registries","registry","hints","fingerprintToHint","some","partyIdFromRegistryFingerprint","rateLimiterStateCid","limiter","adapterContext","burnMintContext","sendArgs","name","resolveLockUnlockCallbackContext","environment","receivers","cantonAdapterCallbackReceivers","pendingCallback","resolveBurnMintCallbackContext","oappAdmin","address","configCid","cantonLockUnlockCallbackEntries","cantonBurnMintCallbackEntries","executeContext","callbackCid","lzSendArgs","parties","Set","parseIndexedPayoutParties","sender","lzReceiveArgs","count","index","party","treasuryAssetCids","map","transferFactoryCid","assetTransferContext","burnMintFactoryCid"],"mappings":";;;;;;;;;;AAiBA,IAAMA,KAAAA,GAAQ,8BAAA;AACd,IAAMC,MAAAA,GAAS,iDAAA;AACf,IAAMC,QAAAA,GAAW,0CAAA;AACjB,IAAMC,OAAAA,GAAU,0DAAA;AAChB,IAAMC,OAAAA,GAAU,oDAAA;AAChB,IAAMC,QAAAA,GAAW,gCAAA;AACjB,IAAMC,UAAAA,GAAa,4CAAA;AACnB,IAAMC,WAAAA,GAAc,oEAAA;AACpB,IAAMC,kBAAAA,GAAqB,4DAAA;AAE3B,IAAMC,SAAAA,GAAY,8DAAA;AAClB,IAAMC,gBAAAA,GAAmB,0DAAA;AA8BlB,IAAMC,uCAAuB,MAAA,CAAA,CAACC,KAAAA,EAAeC,EAAAA,KAChDC,UAAAA,CAAWC,WAAW,IAAIC,WAAAA,EAAAA,CAAcC,MAAAA,CAAO,GAAGL,KAAAA,CAAAA,CAAAA,EAASC,EAAAA,CAAAA,CAAI,CAAA,CAAA,CAAA,EAD/B,sBAAA;AAG7B,IAAMK,uBAAAA,mBAA0B,MAAA,CAAA,CACnCC,OAAAA,EACAC,MAAAA,EACAC,MAAAA,KAAAA;AAEA,EAAA,IAAIC,OAAAA,GAAUH,OAAAA;AACd,EAAA,KAAA,MAAWI,GAAAA,IAAO;AAAC,IAAA,MAAA;AAAQH,IAAAA,MAAAA;AAAQ,IAAA,MAAA;AAAQA,IAAAA,MAAAA;AAAQC,IAAAA;AAAS,GAAA,EAAA;AACxD,IAAA,IAAI,CAACG,KAAAA,CAAMC,OAAAA,CAAQH,OAAAA,GAAU,OAAOI,MAAAA;AACpCJ,IAAAA,OAAAA,GAAUA,QAAQK,IAAAA,CACd,CAAC,CAACC,SAAAA,CAAAA,KACEA,cAAcL,GAAAA,IACbK,SAAAA,KAAc,QACX,OAAOA,SAAAA,KAAc,YACrB,OAAA,IAAWA,SAAAA,IACXA,UAAUC,KAAAA,KAAUN,GAAAA,IAC5B,CAAA,CAAA;AACR,EAAA;AACA,EAAA,OAAOD,OAAAA;AACX,CAAA,EAlBuC,yBAAA;AAoBhC,IAAMQ,gCAAAA,mBAAmC,MAAA,CAAA,CAC5CC,eAAAA,EACAX,MAAAA,KAAAA;AAEA,EAAA,MAAMY,QAAAA,GAAWd,uBAAAA,CAAwBa,eAAAA,EAAiBX,MAAAA,EAAQ,iBAAA,CAAA;AAClE,EAAA,MAAMa,MAAAA,GAASD,QAAAA,EAAUL,IAAAA,CAAK,CAAC,CAACJ,GAAAA,CAAAA,KAASA,GAAAA,KAAQ,gBAAA,CAAA,GAAoB,CAAA,CAAA,CAAGM,KAAAA;AACxE,EAAA,MAAMK,MAAAA,GACF,OAAOD,MAAAA,KAAW,QAAA,IAAY,OAAOA,MAAAA,KAAW,QAAA,IAAY,OAAOA,MAAAA,KAAW,QAAA,GACxEE,MAAAA,CAAOF,MAAAA,CAAAA,GACPG,GAAAA;AACV,EAAA,OAAOD,MAAAA,CAAOE,QAAAA,CAASH,MAAAA,CAAAA,IAAWA,MAAAA,GAAS,CAAA;AAC/C,CAAA,EAXgD,kCAAA;AAazC,IAAMI,sCAAAA,2BAA0CC,IAAAA,KAAAA;AAMnD,EAAA,IAAIT,iCAAiCS,IAAAA,CAAKR,eAAAA,EAAiBQ,IAAAA,CAAKnB,MAAM,GAAG,OAAO,IAAA;AAChF,EAAA,OACI,CAACmB,IAAAA,CAAKC,kBAAAA,IACND,IAAAA,CAAKE,QAAAA,IACLvB,uBAAAA,CAAwBqB,IAAAA,CAAKR,eAAAA,EAAiBQ,IAAAA,CAAKnB,MAAAA,EAAQ,oBAAA,CAAA,KACvDM,MAAAA;AAEZ,CAAA,EAbsD,wCAAA;AAe/C,IAAMgB,iCAAAA,2BAAqCH,IAAAA,KAAAA;AAK9C,EAAA,MAAMI,UAAqF,EAAA;AAC3F,EAAA,KAAA,MAAWpB,GAAAA,IAAO;AAAC,IAAA,WAAA;AAAa,IAAA,aAAA;AAAe,IAAA;AAAiC,GAAA,EAAA;AAC5E,IAAA,MAAMqB,GAAAA,GAAML,KAAKhB,GAAAA,CAAAA;AACjB,IAAA,IAAIqB,GAAAA,UAAaC,IAAAA,CAAK;AAACtB,MAAAA,GAAAA;AAAK,MAAA;AAAC,QAAA;AAACA,UAAAA,GAAAA;AAAK,UAAA;YAAEuB,GAAAA,EAAK,eAAA;YAAiBjB,KAAAA,EAAOe;AAAI;;;AAAI,KAAA,CAAA;AAC9E,EAAA;AACA,EAAA,OAAOD,OAAAA;AACX,CAAA,EAXiD,mCAAA;AAajD,IAAMI,SAAAA,mBAAY,MAAA,CAAA,CAACnB,SAAAA,EAAoBf,EAAAA,KAAAA;AACnC,EAAA,MAAMgB,KAAAA,GAAQD,SAAAA;AACd,EAAA,OAAOC,OAAOjB,KAAAA,KAAUC,EAAAA,CAAGD,KAAAA,IAASiB,KAAAA,CAAMhB,OAAOA,EAAAA,CAAGA,EAAAA;AACxD,CAAA,EAHkB,WAAA,CAAA;AAIlB,IAAMmC,eAAAA,mBAAkB,MAAA,CAAA,CAACC,KAAAA,EAAqBC,QAAAA,KAC1CD,KAAAA,CAAME,UAAAA,KAAeD,QAAAA,IACpBD,KAAAA,CAAMG,WAAAA,KAAgBF,QAAAA,CAASG,KAAAA,CAAM,CAAA,EAAGH,QAAAA,CAASI,OAAAA,CAAQ,GAAA,CAAA,CAAA,IACtDL,KAAAA,CAAME,UAAAA,CAAWI,QAAAA,CAASL,QAAAA,CAASG,KAAAA,CAAMH,QAAAA,CAASI,OAAAA,CAAQ,GAAA,CAAA,CAAA,CAAA,EAH1C,iBAAA,CAAA;AAIxB,IAAME,UAAAA,mBAAa,MAAA,CAAA,CAACC,SAAAA,EAA+BC,KAAAA,KAAAA;AAC/C,EAAA,IAAID,SAAAA,CAAUE,MAAAA,KAAW,CAAA,EACrB,MAAM,IAAIC,KAAAA,CAAM,CAAA,qBAAA,EAAwBF,KAAAA,CAAAA,QAAAA,EAAgBD,SAAAA,CAAUE,MAAM,CAAA,CAAE,CAAA;AAC9E,EAAA,OAAOF,UAAU,CAAA,CAAA;AACrB,CAAA,EAJmB,YAAA,CAAA;AAKnB,IAAMI,iBAAAA,mBAAoB,MAAA,CAAA,OACtBC,GAAAA,EACAC,QAAAA,EACAnB,GAAAA,KAAAA;AAEA,EAAA,MAAM,EAAEoB,OAAAA,EAASC,QAAAA,KAAa,MAAMH,GAAAA,CAAII,wBAAwBtB,GAAAA,EAAK;AAACmB,IAAAA;AAAS,GAAA,CAAA;AAC/E,EAAA,IAAI,CAACC,WAAWC,QAAAA,EAAU,MAAM,IAAIL,KAAAA,CAAM,CAAA,oBAAA,EAAuBhB,GAAAA,CAAAA,uBAAAA,CAA4B,CAAA;AAC7F,EAAA,MAAMf,KAAAA,GAAQ,MAAMiC,GAAAA,CAAIK,gBAAAA,CAAiBvB,GAAAA,EAA2B;AAACmB,IAAAA;AAAS,GAAA,CAAA;AAC9E,EAAA,IAAI,CAAClC,KAAAA,EAAO,MAAM,IAAI+B,KAAAA,CAAM,CAAA,uBAAA,EAA0BhB,GAAAA,CAAAA,CAAK,CAAA;AAC3D,EAAA,OAAOf,KAAAA;AACX,CAAA,EAV0B,mBAAA,CAAA;AAW1B,IAAMuC,cAAAA,2BAAkBvC,KAAAA,KAAAA;AACpB,EAAA,IAAI,OAAOA,KAAAA,KAAU,QAAA,IAAY,CAAC,OAAA,CAAQwC,IAAAA,CAAKxC,KAAAA,CAAAA,EAAQ;AACnD,IAAA,MAAM,IAAI+B,MAAM,oDAAA,CAAA;AACpB,EAAA;AACA,EAAA,OAAO/B,KAAAA;AACX,CAAA,EALuB,gBAAA,CAAA;AAOhB,IAAMyC,6BAAAA,mBAAgC,MAAA,CAAA,OACzCR,GAAAA,EACAS,KAAAA,KAAAA;AAKA,EAAA,MAAM,EAAEP,SAASC,QAAAA,EAAQ,GAAK,MAAMH,GAAAA,CAAII,uBAAAA,CAAwBK,MAAMC,kBAAAA,EAAoB;IACtFD,KAAAA,CAAMR;AACT,GAAA,CAAA;AACD,EAAA,IACI,CAACC,OAAAA,IACDC,QAAAA,IACAD,QAAQS,UAAAA,KAAeF,KAAAA,CAAMC,sBAC7B,CAACxB,eAAAA,CAAgBgB,OAAAA,EAAS5D,OAAAA,KAC1B,CAACsE,eAAAA,CAAgBV,SAASO,KAAAA,CAAMR,QAAAA,EAAU,SAAA,CAAA,EAC5C;AACE,IAAA,MAAM,IAAIH,MACN,iFAAA,CAAA;AAER,EAAA;AACA,EAAA,MAAMe,UAAUX,OAAAA,CAAQY,cAAAA;AACxB,EAAA,IACI,CAACD,OAAAA,CAAQE,MAAAA,EAAQjE,KAAAA,IACjB,CAAC+D,QAAQE,MAAAA,CAAOhE,EAAAA,IACf0D,KAAAA,CAAMM,MAAAA,IAAU,CAAC9B,SAAAA,CAAU4B,OAAAA,CAAQE,MAAAA,EAAQN,KAAAA,CAAMM,MAAM,CAAA,EAC1D;AACE,IAAA,MAAM,IAAIjB,MAAM,wCAAA,CAAA;AACpB,EAAA;AACA,EAAA,MAAMiB,SAASF,OAAAA,CAAQE,MAAAA;AACvB,EAAA,MAAMC,MAAAA,GAAS,MAAMhB,GAAAA,CAAIiB,kBAAAA,EAAkB;AAC3C,EAAA,MAAMC,KAAAA,mBAAQ,MAAA,CAAA,OAAOC,WAAAA,EAAqBC,OAAAA,KAAAA;AACtC,IAAA,MAAM,CAAC9B,WAAAA,EAAa+B,UAAAA,EAAYC,UAAAA,CAAAA,GAAcH,YAAY5B,KAAAA,CAAM,CAAA,CAAA,CAAGgC,KAAAA,CAAM,GAAA,CAAA;AACzE,IAAA,MAAMC,SAAAA,GAAY,MAAMxB,GAAAA,CAAIyB,YAAAA,CAAanC,WAAAA,EAAc;MAACmB,KAAAA,CAAMR;AAAS,KAAA,CAAA;AACvE,IAAA,MAAMyB,sBAAsB,CAAA,EAAGF,SAAAA,CAAAA,CAAAA,EAAaH,UAAAA,IAAcC,UAAAA,CAAAA,CAAAA;AAC1D,IAAA,OAAA,CACI,MAAMtB,IAAI2B,+BAAAA,CAAgC;MAAClB,KAAAA,CAAMR;OAAWe,MAAAA,EAAQ;AAACG,MAAAA;AAAc,KAAA,EAAA;MAC/ES,uBAAAA,EAAyB;KAC7B,CAAA,EACFC,MAAAA,CAAO,CAACC,QAAAA,KAAAA;AACN,MAAA,MAAMC,KAAAA,GACFD,QAAAA,CAASE,YAAAA,CAAaC,cAAAA,EAAgBJ,MAAAA,CAClC,CAACK,KAAAA,KAASA,KAAAA,CAAKf,WAAAA,KAAgBO,mBAAAA,CAAAA,IAC9B,EAAA;AACT,MAAA,MAAMQ,IAAAA,GAAOH,KAAAA,CAAM,CAAA,CAAA,EAAII,SAAAA;AACvB,MAAA,OACIJ,KAAAA,CAAMlC,MAAAA,KAAW,CAAA,IACjBkC,KAAAA,CAAM,CAAA,CAAA,EAAIK,UAAAA,EAAYC,IAAAA,KAAS,CAAA,IAC/BH,IAAAA,IAAQ,IAAA,IACRI,sBAAAA,CAAuBR,SAASE,YAAAA,EAAc;QAACjB,MAAAA,CAAOjE;OAAM,CAAA,IAC5DmC,SAAAA,CAAUiD,KAAKnB,MAAAA,EAAQA,MAAAA,MACtBK,OAAAA,KAAYxD,MAAAA,IAAasE,KAAKK,WAAAA,KAAgBnB,OAAAA,CAAAA;IAEvD,CAAA,CAAA;EACJ,CAAA,EAvBc,OAAA,CAAA;AAwBd,EAAA,MAAM,CAACoB,SAAAA,EAAWC,OAAAA,CAAAA,GAAW,MAAMC,QAAQC,GAAAA,CAAI;IAACzB,KAAAA,CAAMhF,KAAAA,EAAOuE,MAAMR,QAAQ,CAAA;AAAGiB,IAAAA,KAAAA,CAAM/E,MAAAA;AAAQ,GAAA,CAAA;AAC5F,EAAA,IAAIyG,QAAAA;AACJ,EAAA,IAAIC,MAAAA;AACJ,EAAA,IAAI;AACAD,IAAAA,QAAAA,GAAWlD,UAAAA,CAAW8C,WAAW,2BAAA,CAAA;AACjCK,IAAAA,MAAAA,GAASnD,UAAAA,CAAW+C,SAAS,0BAAA,CAAA;AACjC,EAAA,CAAA,CAAA,OAASK,KAAAA,EAAO;AACZ,IAAA,MAAMC,oBAAAA,CAAqBC,IAAAA,CAAKF,KAAAA,EAAO,sCAAA,CAAA;AAC3C,EAAA;AACA,EAAA,MAAMG,IAAAA,GACF/D,eAAAA,CAAgB0D,QAAAA,CAASZ,YAAAA,EAAczF,QAAAA,CAAAA,IACvC2C,eAAAA,CAAgB2D,MAAAA,CAAOb,YAAAA,EAAcxF,UAAAA,CAAAA,GAC/B,UAAA,GACA0C,eAAAA,CAAgB0D,SAASZ,YAAAA,EAAcvF,WAAAA,CAAAA,IACrCyC,eAAAA,CAAgB2D,MAAAA,CAAOb,YAAAA,EAActF,kBAAAA,CAAAA,GACrC,wBACAwC,eAAAA,CAAgB0D,QAAAA,CAASZ,YAAAA,EAAcrF,SAAAA,KACrCuC,eAAAA,CAAgB2D,MAAAA,CAAOb,YAAAA,EAAcpF,gBAAAA,IACrC,mBAAA,GACAgB,MAAAA;AACd,EAAA,IAAI,CAACqF,IAAAA,EACD,MAAM,IAAInD,MAAM,qEAAA,CAAA;AACpB,EAAA,MAAMoD,OAAAA,GAAUL,OAAOb,YAAAA,CAAalB,cAAAA;AAOpC,EAAA,MAAMqC,YAAAA,GAAeF,IAAAA,KAAS,UAAA,GAAaC,OAAAA,CAAQC,eAAeD,OAAAA,CAAQE,iBAAAA;AAC1E,EAAA,IACI,CAACD,YAAAA,EAAcrG,KAAAA,IACf,CAACqG,YAAAA,CAAapG,EAAAA,IACbkG,IAAAA,KAAS,UAAA,IAAc,CAAChE,SAAAA,CAAUkE,YAAAA,EAAcpC,MAAAA,CAAAA,EACnD;AACE,IAAA,MAAM,IAAIjB,MAAM,yDAAA,CAAA;AACpB,EAAA;AACA,EAAA,MAAMuD,QAAAA,GAAW;IACbF,YAAAA,EAAc;MAAE,GAAGA;AAAa,KAAA;IAChCG,aAAAA,EAAehD,cAAAA,CAAe4C,QAAQI,aAAa,CAAA;IACnDC,cAAAA,EAAgBjD,cAAAA,CAAe4C,QAAQK,cAAc,CAAA;IACrDC,wBAAAA,EAA0BlD,cAAAA,CAAe4C,OAAAA,CAAQO,iBAAAA,CAAkBC,aAAa;AACpF,GAAA;AACA,EAAA,MAAMC,QAAAA,GAAYf,QAAAA,CAASZ,YAAAA,CAAalB,cAAAA,CAA0C6C,QAAAA;AAClF,EAAA,IAAIV,SAAS,qBAAA,KAA0B,OAAOU,QAAAA,KAAa,QAAA,IAAY,CAACA,QAAAA,CAAAA,EAAW;AAC/E,IAAA,MAAM,IAAI7D,MAAM,2CAAA,CAAA;AACpB,EAAA;AACA,EAAA,MAAM8D,UAAAA,GAAchB,QAAAA,CAASZ,YAAAA,CAAalB,cAAAA,CACrC8C,UAAAA;AACL,EAAA,IAAIX,SAAS,mBAAA,KAAwB,OAAOW,UAAAA,KAAe,QAAA,IAAY,CAACA,UAAAA,CAAAA,EAAa;AACjF,IAAA,MAAM,IAAI9D,MAAM,2CAAA,CAAA;AACpB,EAAA;AACA,EAAA,MAAM+D,QAAAA,GACFZ,SAAS,UAAA,GACH;AAAEA,IAAAA,IAAAA;IAAM,GAAGI;AAAS,GAAA,GACpBJ,SAAS,qBAAA,GACP;AAAEA,IAAAA,IAAAA;IAAM,GAAGI,QAAAA;AAAUM,IAAAA;GAA6B,GAClD;AAAEV,IAAAA,IAAAA;IAAM,GAAGI,QAAAA;AAAUO,IAAAA;AAAiC,GAAA;AAClE,EAAA,IACInD,KAAAA,CAAMoD,QAAAA,KACLpD,KAAAA,CAAMoD,QAAAA,CAASZ,IAAAA,KAASY,SAASZ,IAAAA,IAC9B,CAAChE,SAAAA,CAAUwB,KAAAA,CAAMoD,QAAAA,CAASV,YAAAA,EAAcU,SAASV,YAAY,CAAA,IAC7D1C,KAAAA,CAAMoD,QAAAA,CAASP,aAAAA,KAAkBO,QAAAA,CAASP,iBAC1C7C,KAAAA,CAAMoD,QAAAA,CAASN,cAAAA,KAAmBM,QAAAA,CAASN,cAAAA,IAC3C9C,KAAAA,CAAMoD,SAASL,wBAAAA,KAA6BK,QAAAA,CAASL,wBAAAA,IACpD/C,KAAAA,CAAMoD,QAAAA,CAASZ,IAAAA,KAAS,yBACrBY,QAAAA,CAASZ,IAAAA,KAAS,qBAAA,IAClBxC,KAAAA,CAAMoD,QAAAA,CAASF,QAAAA,KAAaE,SAASF,QAAAA,IACxClD,KAAAA,CAAMoD,QAAAA,CAASZ,IAAAA,KAAS,mBAAA,IACrBY,QAAAA,CAASZ,IAAAA,KAAS,mBAAA,IAClBxC,KAAAA,CAAMoD,QAAAA,CAASD,UAAAA,KAAeC,QAAAA,CAASD,UAAAA,CAAAA,EACjD;AACE,IAAA,MAAM,IAAI9D,MAAM,gEAAA,CAAA;AACpB,EAAA;AACA,EAAA,MAAMgE,iBAAAA,GAAoB,MAAM9D,GAAAA,CAAIK,gBAAAA,CAChCI,MAAMC,kBAAAA,EACN;IAACD,KAAAA,CAAMR;AAAS,GAAA,CAAA;AAEpB,EAAA,IAAI,CAAC6D,mBAAmB,MAAM,IAAIhE,MAAM,CAAA,uBAAA,EAA0BW,KAAAA,CAAMC,kBAAkB,CAAA,CAAE,CAAA;AAC5F,EAAA,MAAMqD,kBAAAA,GAAqB;AACvBD,IAAAA,iBAAAA;AACAE,IAAAA,kBAAAA,CAAmBpB,QAAAA,CAAAA;AACnBoB,IAAAA,kBAAAA,CAAmBnB,MAAAA;;AAEvB,EAAA,MAAMvF,MAAAA,GAAST,oBAAAA,CAAqBkE,MAAAA,CAAOjE,KAAAA,EAAOiE,OAAOhE,EAAE,CAAA;AAC3D,EAAA,IAAIkH,WAAAA;AACJ,EAAA,IAAIC,cAAAA;AACJ,EAAA,MAAMC,WAAAA,GAAc/G,uBAAAA,CAChByD,OAAAA,CAAQ5C,eAAAA,EACRX,QACA,oBAAA,CAAA;AAEJ,EAAA,IAAIuD,OAAAA,CAAQlC,YAAYwF,WAAAA,EAAa;AACjC,IAAA,MAAMC,OAAAA,GAAUD,WAAAA,CAAYtG,IAAAA,CAAK,CAAC,CAACJ,GAAAA,CAAAA,KAASA,GAAAA,KAAQ,WAAA,CAAA,GAAe,CAAA,CAAA,CAAGM,KAAAA;AACtE,IAAA,IAAI,OAAOqG,OAAAA,KAAY,QAAA,EAAU,MAAM,IAAItE,MAAM,wCAAA,CAAA;AACjD,IAAA,MAAMuE,WAAAA,GAAcD,OAAAA,CAAQ7E,KAAAA,CAAM,CAAA,EAAG,EAAA,CAAA;AACrC,IAAA,MAAM+E,cAAc,MAAMpD,KAAAA,CAAM9E,QAAAA,CAAAA,EAAWyF,MAAAA,CAAO,CAAC0C,SAAAA,KAAAA;AAC/C,MAAA,MAAMC,KAAAA,GAASD,SAAAA,CAASvC,YAAAA,CAAalB,cAAAA,CAChC2D,iBAAAA;AACL,MAAA,OAAO/G,MAAMC,OAAAA,CAAQ6G,KAAAA,IACfA,KAAAA,CAAME,IAAAA,CAAK,CAAC,CAACjH,GAAAA,CAAAA,KAASA,GAAAA,KAAQ4G,WAAAA,CAAAA,GAC9BG,KAAAA,KAAU,QAAQ,OAAOA,KAAAA,KAAU,YAAYH,WAAAA,IAAeG,KAAAA;IACxE,CAAA,CAAA;AACA,IAAA,MAAMD,QAAAA,GAAW7E,UAAAA,CAAW4E,UAAAA,EAAY,CAAA,yBAAA,EAA4BD,WAAAA,CAAAA,CAAa,CAAA;AACjFJ,IAAAA,WAAAA,GAAcM,SAASvC,YAAAA,CAAarB,UAAAA;AACpC,IAAA,IAAIkD,QAAAA,CAASZ,SAAS,UAAA,EAAY;AAC9BiB,MAAAA,cAAAA,GAAiBS,8BAAAA,CACbJ,QAAAA,CAASvC,YAAAA,CAAalB,cAAAA,EACtBuD,WAAAA,CAAAA;AAER,IAAA;AACAN,IAAAA,kBAAAA,CAAmBhF,IAAAA,CAAKiF,kBAAAA,CAAmBO,QAAAA,CAAAA,CAAAA;AAC/C,EAAA;AACA,EAAA,IAAIK,mBAAAA;AACJ,EAAA,IACIpG,sCAAAA,CAAuC;AACnCP,IAAAA,eAAAA,EAAiB4C,OAAAA,CAAQ5C,eAAAA;AACzBX,IAAAA,MAAAA;AACAoB,IAAAA,kBAAAA,EAAoBwE,QAAQO,iBAAAA,CAAkB/E,kBAAAA;AAC9CC,IAAAA,QAAAA,EAAUkC,OAAAA,CAAQlC;AACtB,GAAA,CAAA,EACF;AACE,IAAA,MAAMkG,UAAUnF,UAAAA,CAAW,MAAMwB,KAAAA,CAAM7E,OAAAA,GAAU,uBAAA,CAAA;AACjDuI,IAAAA,mBAAAA,GAAsBC,QAAQ7C,YAAAA,CAAarB,UAAAA;AAC3CoD,IAAAA,kBAAAA,CAAmBhF,IAAAA,CAAKiF,kBAAAA,CAAmBa,OAAAA,CAAAA,CAAAA;AAC/C,EAAA;AACA,EAAA,IAAIC,cAAAA;AACJ,EAAA,IAAIC,eAAAA;AACJ,EAAA,IAAIlB,QAAAA,CAASZ,SAAS,UAAA,EAAY;AAC9B,IAAA,MAAM+B,QAAAA,GAAW5H,uBAAAA,CACbyD,OAAAA,CAAQ5C,eAAAA,EACRX,QACA,iBAAA,CAAA;AAEJ,IAAA,KAAA,MAAWG,GAAAA,IAAO;AAAC,MAAA,eAAA;AAAiB,MAAA;AAAqB,KAAA,EAAA;AACrD,MAAA,MAAMqB,GAAAA,GAAMkG,QAAAA,EAAUnH,IAAAA,CAAK,CAAC,CAACoH,IAAAA,CAAAA,KAAUA,IAAAA,KAASxH,GAAAA,CAAAA,GAAO,CAAA,CAAA,CAAGM,KAAAA;AAC1D,MAAA,IAAI,OAAOe,GAAAA,KAAQ,QAAA,IAAYA,GAAAA,EAC3BiF,kBAAAA,CAAmBhF,IAAAA,CAAK,MAAMgB,iBAAAA,CAAkBC,GAAAA,EAAKS,KAAAA,CAAMR,QAAAA,EAAUnB,GAAAA,CAAAA,CAAAA;AAC7E,IAAA;EACJ,CAAA,MAAA,IAAW+E,QAAAA,CAASZ,SAAS,qBAAA,EAAuB;AAChD6B,IAAAA,cAAAA,GAAiB,MAAMI,gCAAAA,CAAiC;AACpDlF,MAAAA,GAAAA;AACAC,MAAAA,QAAAA,EAAUQ,KAAAA,CAAMR,QAAAA;AAChB3C,MAAAA,MAAAA;AACAqG,MAAAA,QAAAA,EAAUE,QAAAA,CAASF,QAAAA;AACnBR,MAAAA,YAAAA,EAAcU,QAAAA,CAASV,YAAAA;AACvBnC,MAAAA,MAAAA;AACAmE,MAAAA,WAAAA,EAAa1E,KAAAA,CAAM0E,WAAAA;AACnBC,MAAAA,SAAAA,EAAWC,8BAAAA,CAA+B;QACtCC,eAAAA,EAAiBzE,OAAAA;AACjBvD,QAAAA,MAAAA;AACA4G,QAAAA,cAAAA;AACAP,QAAAA,QAAAA,EAAUE,QAAAA,CAASF;OACvB;KACJ,CAAA;AACAI,IAAAA,kBAAAA,CAAmBhF,IAAAA,CAAI,GAAI+F,cAAAA,CAAef,kBAAkB,CAAA;EAChE,CAAA,MAAO;AACHgB,IAAAA,eAAAA,GAAkB,MAAMQ,8BAAAA,CAA+B;AACnDvF,MAAAA,GAAAA;AACAC,MAAAA,QAAAA,EAAUQ,KAAAA,CAAMR,QAAAA;AAChB3C,MAAAA,MAAAA;AACAkI,MAAAA,SAAAA,EAAWzE,MAAAA,CAAOjE,KAAAA;AAClB8G,MAAAA,UAAAA,EAAYC,QAAAA,CAASD,UAAAA;AACrBT,MAAAA,YAAAA,EAAcU,QAAAA,CAASV,YAAAA;AACvBnC,MAAAA,MAAAA;AACAmE,MAAAA,WAAAA,EAAa1E,KAAAA,CAAM0E,WAAAA;AACnBC,MAAAA,SAAAA,EAAWC,8BAAAA,CAA+B;QACtCC,eAAAA,EAAiBzE,OAAAA;AACjBvD,QAAAA,MAAAA;AACA4G,QAAAA;OACJ;KACJ,CAAA;AACAH,IAAAA,kBAAAA,CAAmBhF,IAAAA,CAAI,GAAIgG,eAAAA,CAAgBhB,kBAAkB,CAAA;AACjE,EAAA;AACA,EAAA,MAAM0B,OAAAA,GAAU;IAAEzG,GAAAA,EAAK,WAAA;IAAsBjB,KAAAA,EAAOT;AAAO,GAAA;AAC3D,EAAA,MAAMuB,UAAyCD,iCAAAA,CAAkC;AAC7E8G,IAAAA,SAAAA,EAAW7C,OAAOb,YAAAA,CAAarB,UAAAA;AAC/BsD,IAAAA,WAAAA;AACAW,IAAAA;GACJ,CAAA;AACA,EAAA,IAAIE,gBAAgBjG,OAAAA,CAAQE,IAAAA,CAAI,GAAI4G,+BAAAA,CAAgCb,cAAAA,CAAAA,CAAAA;AACpE,EAAA,IAAIC,eAAAA,EACAlG,OAAAA,CAAQE,IAAAA,CAAI,GACL4G,+BAAAA,CAAgCZ,eAAAA,CAAAA,EAAAA,GAChCa,6BAAAA,CAA8Bb,eAAAA,CAAAA,CAAAA;AAEzC,EAAA,MAAMc,cAAAA,GAAkC;AACpC,IAAA;AAAC,MAAA,MAAA;AAAQ,MAAA;AAAC,QAAA;AAACJ,UAAAA,OAAAA;AAAS,UAAA;AAAC,YAAA;AAAC,cAAA,MAAA;AAAQ,cAAA;AAAC,gBAAA;AAACA,kBAAAA,OAAAA;AAAS5G,kBAAAA;;;;;;;;;AAE7C,EAAA,OAAO;AACHiH,IAAAA,WAAAA,EAAalD,SAASZ,YAAAA,CAAarB,UAAAA;AACnCkF,IAAAA,cAAAA;AACA9B,IAAAA,kBAAAA;AACAhD,IAAAA,MAAAA;AACA8C,IAAAA;AACJ,GAAA;AACJ,CAAA,EA3P6C,+BAAA;AAwQtC,IAAMwB,iDAAiC,MAAA,CAAA,CAAC,EAC3CC,iBACAhI,MAAAA,EACA4G,cAAAA,EACAP,UAAQ,KACkB;AAC1B,EAAA,MAAMoC,UAAAA,GAAa3I,uBAAAA,CACfkI,eAAAA,CAAgBrH,eAAAA,EAChBX,QACA,iBAAA,CAAA;AAEJ,EAAA,IAAIyI,UAAAA,EAAY;AACZ,IAAA,IAAIT,gBAAgB3G,QAAAA,EAAU;AAC1B,MAAA,MAAMqH,OAAAA,GAAU;WAAI,IAAIC,GAAAA,CAAIC,yBAAAA,CAA0BH,UAAAA,CAAAA;;AACtD,MAAA,OAAOC,OAAAA,CAAQnG,MAAAA,GAAS,CAAA,GAAImG,OAAAA,GAAUrC,QAAAA,GAAW;AAACA,QAAAA;UAAY,EAAA;AAClE,IAAA;AACA,IAAA,OAAO;MAAC2B,eAAAA,CAAgBa;;AAC5B,EAAA;AAEA,EAAA,MAAMC,aAAAA,GAAgBhJ,uBAAAA,CAClBkI,eAAAA,CAAgBrH,eAAAA,EAChBX,QACA,oBAAA,CAAA;AAEJ,EAAA,IAAI8I,aAAAA,EAAe;AACf,IAAA,IAAI,CAACd,gBAAgB3G,QAAAA,EAAU;AAC3B,MAAA,OAAO,EAAA;AACX,IAAA;AACA,IAAA,IAAI,CAACuF,cAAAA,EAAgB;AACjB,MAAA,MAAM,IAAIpE,MAAM,iDAAA,CAAA;AACpB,IAAA;AACA,IAAA,OAAO;AAACoE,MAAAA;;AACZ,EAAA;AAEA,EAAA,MAAM,IAAIpE,MAAM,iDAAA,CAAA;AACpB,CAAA,EAnC8C,gCAAA;AAqC9C,IAAMoG,yBAAAA,2BACFzH,IAAAA,KAAAA;AAEA,EAAA,MAAM4H,KAAAA,GAAQhI,MAAAA,CAAOI,IAAAA,CAAKZ,IAAAA,CAAK,CAAC,CAACJ,GAAAA,CAAAA,KAASA,GAAAA,KAAQ,eAAA,CAAA,GAAmB,CAAA,CAAA,CAAGM,SAAS,CAAA,CAAA;AAEjF,EAAA,MAAMiI,UAAoB,EAAA;AAC1B,EAAA,KAAA,IAASM,KAAAA,GAAQ,CAAA,EAAGA,KAAAA,GAAQD,KAAAA,EAAOC,SAAS,CAAA,EAAG;AAC3C,IAAA,MAAMC,KAAAA,GAAQ9H,IAAAA,CAAKZ,IAAAA,CAAK,CAAC,CAACJ,GAAAA,CAAAA,KAASA,GAAAA,KAAQ,CAAA,SAAA,EAAY6I,KAAAA,CAAAA,CAAO,CAAA,GAAI,CAAA,CAAA,CAAGvI,KAAAA;AACrE,IAAA,IAAI,OAAOwI,KAAAA,KAAU,QAAA,IAAYA,KAAAA,KAAU,EAAA,EAAI;AAC3C,MAAA,MAAM,IAAIzG,KAAAA,CAAM,CAAA,iCAAA,EAAoCwG,KAAAA,CAAAA,CAAO,CAAA;AAC/D,IAAA;AACAN,IAAAA,OAAAA,CAAQjH,KAAKwH,KAAAA,CAAAA;AACjB,EAAA;AACA,EAAA,OAAOP,OAAAA;AACX,CAAA,EAdkC,2BAAA,CAAA;AAgB3B,IAAML,+BAAAA,2BAAmClH,IAAAA,KAAAA;AAK5C,EAAA,MAAMI,UAAyC,EAAA;AAC/C,EAAA,IAAIJ,IAAAA,CAAK+H,iBAAAA,EACL3H,OAAAA,CAAQE,IAAAA,CAAK;AACT,IAAA,mBAAA;AACA,IAAA;AACI,MAAA;AACI,QAAA,mBAAA;AACA,QAAA;UACIC,GAAAA,EAAK,SAAA;AACLjB,UAAAA,KAAAA,EAAOU,IAAAA,CAAK+H,iBAAAA,CAAkBC,GAAAA,CAAI,CAAC1I,KAAAA,MAAW;YAC1CiB,GAAAA,EAAK,eAAA;AACLjB,YAAAA;WACJ,CAAA;AACJ;;;AAGX,GAAA,CAAA;AACL,EAAA,IAAIU,IAAAA,CAAKiI,kBAAAA,EACL7H,OAAAA,CAAQE,IAAAA,CAAK;AACT,IAAA,oBAAA;AACA,IAAA;AACI,MAAA;AACI,QAAA,oBAAA;AACA,QAAA;UACIC,GAAAA,EAAK,eAAA;AACLjB,UAAAA,KAAAA,EAAOU,IAAAA,CAAKiI;AAChB;;;AAGX,GAAA,CAAA;AACL,EAAA,IAAIjI,IAAAA,CAAKkI,oBAAAA,EACL9H,OAAAA,CAAQE,IAAAA,CAAK;AACT,IAAA,sBAAA;AACA,IAAA;AACI,MAAA;AACI,QAAA,sBAAA;AACA,QAAA;UACIC,GAAAA,EAAK,QAAA;AACLjB,UAAAA,KAAAA,EAAOU,IAAAA,CAAKkI;AAChB;;;AAGX,GAAA,CAAA;AACL,EAAA,OAAO9H,OAAAA;AACX,CAAA,EAjD+C,iCAAA;AAmDxC,IAAM+G,6BAAAA,2BAAiCnH,IAAAA,KAAAA;AAK1C,EAAA,MAAMI,UAAyC,EAAA;AAC/C,EAAA,IAAIJ,IAAAA,CAAKmI,kBAAAA,EACL/H,OAAAA,CAAQE,IAAAA,CAAK;AACT,IAAA,oBAAA;AACA,IAAA;AAAC,MAAA;AAAC,QAAA,oBAAA;AAAsB,QAAA;UAAEC,GAAAA,EAAK,eAAA;AAAiBjB,UAAAA,KAAAA,EAAOU,IAAAA,CAAKmI;AAAmB;;;AAClF,GAAA,CAAA;AACL,EAAA,KAAA,MAAWnJ,GAAAA,IAAO;AAAC,IAAA,mBAAA;AAAqB,IAAA;AAAmC,GAAA,EAAA;AACvE,IAAA,IAAIgB,IAAAA,CAAKhB,GAAAA,CAAAA,EAAMoB,OAAAA,CAAQE,IAAAA,CAAK;AAACtB,MAAAA,GAAAA;AAAK,MAAA;AAAC,QAAA;AAACA,UAAAA,GAAAA;AAAK,UAAA;YAAEuB,GAAAA,EAAK,QAAA;AAAUjB,YAAAA,KAAAA,EAAOU,KAAKhB,GAAAA;AAAK;;;AAAI,KAAA,CAAA;AACnF,EAAA;AACA,EAAA,OAAOoB,OAAAA;AACX,CAAA,EAf6C,+BAAA","file":"E6W3YWXU.js","sourcesContent":["import type { ContractId } from '@daml/types';\nimport { keccak_256 } from '@noble/hashes/sha3';\n\nimport { bytesToHex } from '@layerzerolabs/common-encoding-utils';\n\nimport { IOAppResolutionError } from '../errors';\nimport type { CreatedEvent, JsActiveContract } from '../open-api/models';\nimport type { CantonSdk } from '../sdk/canton-sdk';\nimport type { CantonDisclosedContract } from '../transaction';\nimport { areExpectedSignatories, isTrustedOrigin } from '../trusted-origin';\nimport { resolveBurnMintCallbackContext } from './callback-burn-mint';\nimport { callbackDisclosure } from './callback-contracts';\nimport { resolveLockUnlockCallbackContext } from './callback-lock-unlock';\nimport type { CantonFinalizeCallbackRefresh } from './plan';\nimport { partyIdFromRegistryFingerprint } from './registry-context';\nexport { callbackDisclosure, callbackInterfaceView } from './callback-contracts';\n\nconst IOAPP = '#layerzero-ioapp:IOApp:IOApp';\nconst CONFIG = '#layerzero-ioapp-config:IOAppConfig:IOAppConfig';\nconst REGISTRY = '#layerzero-iregistry:IRegistry:IRegistry';\nconst LIMITER = '#layerzero-irate-limiter:IRateLimitState:IRateLimitState';\nconst PENDING = '#layerzero-request:PendingCallback:PendingCallback';\nconst OFT_SELF = '#layerzero-oft:OftSelf:OftSelf';\nconst OFT_CONFIG = '#layerzero-oft:OftSelfConfig:OftSelfConfig';\nconst LOCK_UNLOCK = '#layerzero-lock-unlock-adapter:LockUnlockAdapter:LockUnlockAdapter';\nconst LOCK_UNLOCK_CONFIG = '#layerzero-lock-unlock-adapter:AdapterConfig:AdapterConfig';\n\nconst BURN_MINT = '#layerzero-burn-mint-adapter:BurnMintAdapter:BurnMintAdapter';\nconst BURN_MINT_CONFIG = '#layerzero-burn-mint-adapter:AdapterConfig:AdapterConfig';\n\nexport type CantonCallbackOAppId = { admin: string; id: string };\ntype CallbackArgs = Array<[string, { tag: string; value: unknown }]>;\ntype CallbackInput = CantonFinalizeCallbackRefresh['resolver'];\ntype CallbackContext = Array<\n [\n string,\n Array<\n [\n { tag: 'Addr_Text'; value: string },\n Array<\n [\n string,\n Array<[{ tag: 'Addr_Text'; value: string }, Array<[string, CallbackArgs]>]>,\n ]\n >,\n ]\n >,\n ]\n>;\ntype CallbackIdentity = CallbackInput['identity'];\ntype PendingCallback = {\n handler: string;\n sender: string;\n oappId: CantonCallbackOAppId;\n callbackContext: unknown;\n isAccept: boolean;\n};\n\nexport const cantonCallbackAppUid = (admin: string, id: string): string =>\n bytesToHex(keccak_256(new TextEncoder().encode(`${admin}|${id}`)));\n\nexport const getCantonCallbackFnArgs = (\n context: unknown,\n appUid: string,\n fnName: string,\n): CallbackArgs | undefined => {\n let current = context;\n for (const key of ['OApp', appUid, 'OApp', appUid, fnName]) {\n if (!Array.isArray(current)) return undefined;\n current = current.find(\n ([candidate]: [unknown]) =>\n candidate === key ||\n (candidate !== null &&\n typeof candidate === 'object' &&\n 'value' in candidate &&\n candidate.value === key),\n )?.[1];\n }\n return current as CallbackArgs | undefined;\n};\n\nexport const hasPositiveCantonCallbackOutflow = (\n callbackContext: unknown,\n appUid: string,\n): boolean => {\n const outbound = getCantonCallbackFnArgs(callbackContext, appUid, 'LzSend_callback');\n const frozen = outbound?.find(([key]) => key === 'rlScaledAmount')?.[1].value;\n const amount =\n typeof frozen === 'number' || typeof frozen === 'string' || typeof frozen === 'bigint'\n ? Number(frozen)\n : NaN;\n return Number.isFinite(amount) && amount > 0;\n};\n\nexport const shouldIncludeCantonCallbackRateLimiter = (args: {\n callbackContext: unknown;\n appUid: string;\n isGloballyDisabled: boolean;\n isAccept: boolean;\n}): boolean => {\n if (hasPositiveCantonCallbackOutflow(args.callbackContext, args.appUid)) return true;\n return (\n !args.isGloballyDisabled &&\n args.isAccept &&\n getCantonCallbackFnArgs(args.callbackContext, args.appUid, 'LzReceive_callback') !==\n undefined\n );\n};\n\nexport const cantonFinalizeCallbackBaseEntries = (args: {\n configCid: string;\n registryCid?: string;\n rateLimiterStateCid?: string;\n}): Array<[string, Array<[string, { tag: 'AV_ContractId'; value: string }]>]> => {\n const entries: Array<[string, Array<[string, { tag: 'AV_ContractId'; value: string }]>]> = [];\n for (const key of ['configCid', 'registryCid', 'rateLimiterStateCid'] as const) {\n const cid = args[key];\n if (cid) entries.push([key, [[key, { tag: 'AV_ContractId', value: cid }]]]);\n }\n return entries;\n};\n\nconst matchesId = (candidate: unknown, id: CantonCallbackOAppId): boolean => {\n const value = candidate as CantonCallbackOAppId | undefined;\n return value?.admin === id.admin && value.id === id.id;\n};\nconst matchesTemplate = (event: CreatedEvent, template: string): boolean =>\n event.templateId === template ||\n (event.packageName === template.slice(1, template.indexOf(':')) &&\n event.templateId.endsWith(template.slice(template.indexOf(':'))));\nconst exactlyOne = (contracts: JsActiveContract[], label: string): JsActiveContract => {\n if (contracts.length !== 1)\n throw new Error(`Expected exactly one ${label}, found ${contracts.length}`);\n return contracts[0]!;\n};\nconst requireDisclosure = async (\n sdk: CantonSdk,\n informee: string,\n cid: string,\n): Promise<CantonDisclosedContract> => {\n const { created, archived } = await sdk.fetchEventsByContractId(cid, [informee]);\n if (!created || archived) throw new Error(`Callback dependency ${cid} is missing or archived`);\n const value = await sdk.createDisclosure(cid as ContractId<object>, [informee]);\n if (!value) throw new Error(`Missing disclosure for ${cid}`);\n return value;\n};\nconst decimalSetting = (value: unknown): string => {\n if (typeof value !== 'string' || !/^\\d+$/.test(value)) {\n throw new Error('Callback decimal settings must be Daml Int strings');\n }\n return value;\n};\n\nexport const resolveCantonFinalizeCallback = async (\n sdk: CantonSdk,\n input: Omit<CallbackInput, 'type' | 'oappId' | 'identity'> & {\n oappId?: CantonCallbackOAppId;\n identity?: CallbackIdentity;\n },\n) => {\n const { created, archived } = await sdk.fetchEventsByContractId(input.pendingCallbackCid, [\n input.informee,\n ]);\n if (\n !created ||\n archived ||\n created.contractId !== input.pendingCallbackCid ||\n !matchesTemplate(created, PENDING) ||\n !isTrustedOrigin(created, input.informee, 'handler')\n ) {\n throw new Error(\n 'PendingCallback is missing, archived, or not from the expected handler/template',\n );\n }\n const pending = created.createArgument as PendingCallback;\n if (\n !pending.oappId?.admin ||\n !pending.oappId.id ||\n (input.oappId && !matchesId(pending.oappId, input.oappId))\n ) {\n throw new Error('PendingCallback OApp identity mismatch');\n }\n const oappId = pending.oappId;\n const offset = await sdk.getLedgerEndOffset();\n const query = async (interfaceId: string, gateway?: string) => {\n const [packageName, moduleName, entityName] = interfaceId.slice(1).split(':');\n const packageId = await sdk.getPackageId(packageName!, [input.informee]);\n const resolvedInterfaceId = `${packageId}:${moduleName}:${entityName}`;\n return (\n await sdk.queryActiveContractsByInterface([input.informee], offset, [interfaceId], {\n includeCreatedEventBlob: true,\n })\n ).filter((contract) => {\n const views =\n contract.createdEvent.interfaceViews?.filter(\n (view) => view.interfaceId === resolvedInterfaceId,\n ) ?? [];\n const view = views[0]?.viewValue as Record<string, unknown> | undefined;\n return (\n views.length === 1 &&\n views[0]?.viewStatus?.code === 0 &&\n view != null &&\n areExpectedSignatories(contract.createdEvent, [oappId.admin]) &&\n matchesId(view.oappId, oappId) &&\n (gateway === undefined || view.oappGateway === gateway)\n );\n });\n };\n const [callbacks, configs] = await Promise.all([query(IOAPP, input.informee), query(CONFIG)]);\n let callback: JsActiveContract;\n let config: JsActiveContract;\n try {\n callback = exactlyOne(callbacks, 'callback for OApp/gateway');\n config = exactlyOne(configs, 'callback config for OApp');\n } catch (error) {\n throw IOAppResolutionError.wrap(error, 'Could not resolve callback contracts');\n }\n const kind =\n matchesTemplate(callback.createdEvent, OFT_SELF) &&\n matchesTemplate(config.createdEvent, OFT_CONFIG)\n ? 'oft-self'\n : matchesTemplate(callback.createdEvent, LOCK_UNLOCK) &&\n matchesTemplate(config.createdEvent, LOCK_UNLOCK_CONFIG)\n ? 'lock-unlock-adapter'\n : matchesTemplate(callback.createdEvent, BURN_MINT) &&\n matchesTemplate(config.createdEvent, BURN_MINT_CONFIG)\n ? 'burn-mint-adapter'\n : undefined;\n if (!kind)\n throw new Error('Callback kind changed or is unsupported; repopulate the transaction');\n const payload = config.createdEvent.createArgument as {\n instrumentId?: CantonCallbackOAppId;\n assetInstrumentId?: CantonCallbackOAppId;\n localDecimals: string;\n sharedDecimals: string;\n rateLimiterConfig: { scaleDecimals: string; isGloballyDisabled: boolean };\n };\n const instrumentId = kind === 'oft-self' ? payload.instrumentId : payload.assetInstrumentId;\n if (\n !instrumentId?.admin ||\n !instrumentId.id ||\n (kind === 'oft-self' && !matchesId(instrumentId, oappId))\n ) {\n throw new Error('Callback instrument changed; repopulate the transaction');\n }\n const decimals = {\n instrumentId: { ...instrumentId },\n localDecimals: decimalSetting(payload.localDecimals),\n sharedDecimals: decimalSetting(payload.sharedDecimals),\n rateLimiterScaleDecimals: decimalSetting(payload.rateLimiterConfig.scaleDecimals),\n };\n const treasury = (callback.createdEvent.createArgument as { treasury?: unknown }).treasury;\n if (kind === 'lock-unlock-adapter' && (typeof treasury !== 'string' || !treasury)) {\n throw new Error('Lock/unlock callback treasury is required');\n }\n const mintEscrow = (callback.createdEvent.createArgument as { mintEscrow?: unknown })\n .mintEscrow;\n if (kind === 'burn-mint-adapter' && (typeof mintEscrow !== 'string' || !mintEscrow)) {\n throw new Error('Burn/mint callback mintEscrow is required');\n }\n const identity: CallbackIdentity =\n kind === 'oft-self'\n ? { kind, ...decimals }\n : kind === 'lock-unlock-adapter'\n ? { kind, ...decimals, treasury: treasury as string }\n : { kind, ...decimals, mintEscrow: mintEscrow as string };\n if (\n input.identity &&\n (input.identity.kind !== identity.kind ||\n !matchesId(input.identity.instrumentId, identity.instrumentId) ||\n input.identity.localDecimals !== identity.localDecimals ||\n input.identity.sharedDecimals !== identity.sharedDecimals ||\n input.identity.rateLimiterScaleDecimals !== identity.rateLimiterScaleDecimals ||\n (input.identity.kind === 'lock-unlock-adapter' &&\n identity.kind === 'lock-unlock-adapter' &&\n input.identity.treasury !== identity.treasury) ||\n (input.identity.kind === 'burn-mint-adapter' &&\n identity.kind === 'burn-mint-adapter' &&\n input.identity.mintEscrow !== identity.mintEscrow))\n ) {\n throw new Error('Callback economic identity changed; repopulate the transaction');\n }\n const pendingDisclosure = await sdk.createDisclosure(\n input.pendingCallbackCid as ContractId<object>,\n [input.informee],\n );\n if (!pendingDisclosure) throw new Error(`Missing disclosure for ${input.pendingCallbackCid}`);\n const disclosedContracts = [\n pendingDisclosure,\n callbackDisclosure(callback),\n callbackDisclosure(config),\n ];\n const appUid = cantonCallbackAppUid(oappId.admin, oappId.id);\n let registryCid: string | undefined;\n let lzReceiveParty: string | undefined;\n const receiveArgs = getCantonCallbackFnArgs(\n pending.callbackContext,\n appUid,\n 'LzReceive_callback',\n );\n if (pending.isAccept && receiveArgs) {\n const message = receiveArgs.find(([key]) => key === 'lzMessage')?.[1].value;\n if (typeof message !== 'string') throw new Error('lzMessage not found in callbackContext');\n const fingerprint = message.slice(0, 64);\n const registries = (await query(REGISTRY)).filter((registry) => {\n const hints = (registry.createdEvent.createArgument as { fingerprintToHint: unknown })\n .fingerprintToHint;\n return Array.isArray(hints)\n ? hints.some(([key]) => key === fingerprint)\n : hints !== null && typeof hints === 'object' && fingerprint in hints;\n });\n const registry = exactlyOne(registries, `Registry for fingerprint ${fingerprint}`);\n registryCid = registry.createdEvent.contractId;\n if (identity.kind !== 'oft-self') {\n lzReceiveParty = partyIdFromRegistryFingerprint(\n registry.createdEvent.createArgument as { fingerprintToHint: unknown },\n fingerprint,\n );\n }\n disclosedContracts.push(callbackDisclosure(registry));\n }\n let rateLimiterStateCid: string | undefined;\n if (\n shouldIncludeCantonCallbackRateLimiter({\n callbackContext: pending.callbackContext,\n appUid,\n isGloballyDisabled: payload.rateLimiterConfig.isGloballyDisabled,\n isAccept: pending.isAccept,\n })\n ) {\n const limiter = exactlyOne(await query(LIMITER), 'callback rate limiter');\n rateLimiterStateCid = limiter.createdEvent.contractId;\n disclosedContracts.push(callbackDisclosure(limiter));\n }\n let adapterContext: Awaited<ReturnType<typeof resolveLockUnlockCallbackContext>> | undefined;\n let burnMintContext: Awaited<ReturnType<typeof resolveBurnMintCallbackContext>> | undefined;\n if (identity.kind === 'oft-self') {\n const sendArgs = getCantonCallbackFnArgs(\n pending.callbackContext,\n appUid,\n 'LzSend_callback',\n );\n for (const key of ['oftHoldingCid', 'payoutHoldingCid']) {\n const cid = sendArgs?.find(([name]) => name === key)?.[1].value;\n if (typeof cid === 'string' && cid)\n disclosedContracts.push(await requireDisclosure(sdk, input.informee, cid));\n }\n } else if (identity.kind === 'lock-unlock-adapter') {\n adapterContext = await resolveLockUnlockCallbackContext({\n sdk,\n informee: input.informee,\n appUid,\n treasury: identity.treasury,\n instrumentId: identity.instrumentId,\n offset,\n environment: input.environment,\n receivers: cantonAdapterCallbackReceivers({\n pendingCallback: pending,\n appUid,\n lzReceiveParty,\n treasury: identity.treasury,\n }),\n });\n disclosedContracts.push(...adapterContext.disclosedContracts);\n } else {\n burnMintContext = await resolveBurnMintCallbackContext({\n sdk,\n informee: input.informee,\n appUid,\n oappAdmin: oappId.admin,\n mintEscrow: identity.mintEscrow,\n instrumentId: identity.instrumentId,\n offset,\n environment: input.environment,\n receivers: cantonAdapterCallbackReceivers({\n pendingCallback: pending,\n appUid,\n lzReceiveParty,\n }),\n });\n disclosedContracts.push(...burnMintContext.disclosedContracts);\n }\n const address = { tag: 'Addr_Text' as const, value: appUid };\n const entries: Array<[string, CallbackArgs]> = cantonFinalizeCallbackBaseEntries({\n configCid: config.createdEvent.contractId,\n registryCid,\n rateLimiterStateCid,\n });\n if (adapterContext) entries.push(...cantonLockUnlockCallbackEntries(adapterContext));\n if (burnMintContext)\n entries.push(\n ...cantonLockUnlockCallbackEntries(burnMintContext),\n ...cantonBurnMintCallbackEntries(burnMintContext),\n );\n const executeContext: CallbackContext = [\n ['OApp', [[address, [['OApp', [[address, entries]]]]]]],\n ];\n return {\n callbackCid: callback.createdEvent.contractId,\n executeContext,\n disclosedContracts,\n oappId,\n identity,\n };\n};\n\nexport type CantonAdapterReceiversInput = {\n pendingCallback: {\n isAccept: boolean;\n sender: string;\n callbackContext: unknown;\n };\n appUid: string;\n lzReceiveParty?: string;\n treasury?: string;\n};\n\nexport const cantonAdapterCallbackReceivers = ({\n pendingCallback,\n appUid,\n lzReceiveParty,\n treasury,\n}: CantonAdapterReceiversInput): string[] => {\n const lzSendArgs = getCantonCallbackFnArgs(\n pendingCallback.callbackContext,\n appUid,\n 'LzSend_callback',\n );\n if (lzSendArgs) {\n if (pendingCallback.isAccept) {\n const parties = [...new Set(parseIndexedPayoutParties(lzSendArgs))];\n return parties.length > 0 ? parties : treasury ? [treasury] : [];\n }\n return [pendingCallback.sender];\n }\n\n const lzReceiveArgs = getCantonCallbackFnArgs(\n pendingCallback.callbackContext,\n appUid,\n 'LzReceive_callback',\n );\n if (lzReceiveArgs) {\n if (!pendingCallback.isAccept) {\n return [];\n }\n if (!lzReceiveParty) {\n throw new Error('lzReceiveParty is required for LzReceive accept');\n }\n return [lzReceiveParty];\n }\n\n throw new Error('callbackContext is neither LzSend nor LzReceive');\n};\n\nconst parseIndexedPayoutParties = (\n args: NonNullable<ReturnType<typeof getCantonCallbackFnArgs>>,\n): string[] => {\n const count = Number(args.find(([key]) => key === 'receiverCount')?.[1].value ?? 0);\n\n const parties: string[] = [];\n for (let index = 0; index < count; index += 1) {\n const party = args.find(([key]) => key === `receiver_${index}`)?.[1].value;\n if (typeof party !== 'string' || party === '') {\n throw new Error(`LzSend callback missing receiver_${index}`);\n }\n parties.push(party);\n }\n return parties;\n};\n\nexport const cantonLockUnlockCallbackEntries = (args: {\n treasuryAssetCids?: string[];\n transferFactoryCid?: string;\n assetTransferContext?: Record<string, unknown>;\n}): Array<[string, CallbackArgs]> => {\n const entries: Array<[string, CallbackArgs]> = [];\n if (args.treasuryAssetCids)\n entries.push([\n 'treasuryAssetCids',\n [\n [\n 'treasuryAssetCids',\n {\n tag: 'AV_List',\n value: args.treasuryAssetCids.map((value) => ({\n tag: 'AV_ContractId',\n value,\n })),\n },\n ],\n ],\n ]);\n if (args.transferFactoryCid)\n entries.push([\n 'transferFactoryCid',\n [\n [\n 'transferFactoryCid',\n {\n tag: 'AV_ContractId',\n value: args.transferFactoryCid,\n },\n ],\n ],\n ]);\n if (args.assetTransferContext)\n entries.push([\n 'assetTransferContext',\n [\n [\n 'assetTransferContext',\n {\n tag: 'AV_Map',\n value: args.assetTransferContext,\n },\n ],\n ],\n ]);\n return entries;\n};\n\nexport const cantonBurnMintCallbackEntries = (args: {\n burnMintFactoryCid?: string;\n burnMintExtraArgs?: Record<string, unknown>;\n burnMintOutputContext?: Record<string, unknown>;\n}): Array<[string, CallbackArgs]> => {\n const entries: Array<[string, CallbackArgs]> = [];\n if (args.burnMintFactoryCid)\n entries.push([\n 'burnMintFactoryCid',\n [['burnMintFactoryCid', { tag: 'AV_ContractId', value: args.burnMintFactoryCid }]],\n ]);\n for (const key of ['burnMintExtraArgs', 'burnMintOutputContext'] as const) {\n if (args[key]) entries.push([key, [[key, { tag: 'AV_Map', value: args[key] }]]]);\n }\n return entries;\n};\n"]}