@layerzerolabs/common-canton 1.2.80 → 1.2.81
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.
- package/dist/{3NNZDKUQ.js → 25ZZZGNN.js} +3 -3
- package/dist/{3NNZDKUQ.js.map → 25ZZZGNN.js.map} +1 -1
- package/dist/{6AK25YSE.js → 3HAVU6NI.js} +4 -4
- package/dist/{6AK25YSE.js.map → 3HAVU6NI.js.map} +1 -1
- package/dist/{4O355BG7.js → 3I23YKYV.js} +3 -3
- package/dist/{4O355BG7.js.map → 3I23YKYV.js.map} +1 -1
- package/dist/{IDBCBX2F.js → 3TPQEBCC.js} +4 -4
- package/dist/{IDBCBX2F.js.map → 3TPQEBCC.js.map} +1 -1
- package/dist/43KGTQUU.js +99 -0
- package/dist/43KGTQUU.js.map +1 -0
- package/dist/{7RS76HLN.js → 44EVBXCG.js} +4 -4
- package/dist/{7RS76HLN.js.map → 44EVBXCG.js.map} +1 -1
- package/dist/{GSQGAMYI.js → 4P5QC3JV.js} +4 -4
- package/dist/{GSQGAMYI.js.map → 4P5QC3JV.js.map} +1 -1
- package/dist/5CADV7BB.js +67 -0
- package/dist/5CADV7BB.js.map +1 -0
- package/dist/{7KCG6XNJ.js → 5KN65GJK.js} +3 -3
- package/dist/{7KCG6XNJ.js.map → 5KN65GJK.js.map} +1 -1
- package/dist/{ZBLS2HTS.js → 5W44RCVL.js} +3 -3
- package/dist/{ZBLS2HTS.js.map → 5W44RCVL.js.map} +1 -1
- package/dist/{ULT5A5TC.js → 6SVME57P.js} +3 -3
- package/dist/{ULT5A5TC.js.map → 6SVME57P.js.map} +1 -1
- package/dist/{TM3DTBXT.js → 6TNI5YY3.js} +3 -3
- package/dist/{TM3DTBXT.js.map → 6TNI5YY3.js.map} +1 -1
- package/dist/{3JL644IZ.js → 75BEFQTY.js} +3 -3
- package/dist/{3JL644IZ.js.map → 75BEFQTY.js.map} +1 -1
- package/dist/{M6FSENHW.js → 75TAXYGR.js} +3 -3
- package/dist/{M6FSENHW.js.map → 75TAXYGR.js.map} +1 -1
- package/dist/{37KTIK6O.js → 75VVMQKH.js} +4 -4
- package/dist/{37KTIK6O.js.map → 75VVMQKH.js.map} +1 -1
- package/dist/{O4AMCIVA.js → 7IMQETOY.js} +3 -3
- package/dist/{O4AMCIVA.js.map → 7IMQETOY.js.map} +1 -1
- package/dist/7JEW4NHI.js +40 -0
- package/dist/7JEW4NHI.js.map +1 -0
- package/dist/{N6YQSSHF.js → 7MEBFPGZ.js} +4 -4
- package/dist/{N6YQSSHF.js.map → 7MEBFPGZ.js.map} +1 -1
- package/dist/ABHGT5DF.js +557 -0
- package/dist/ABHGT5DF.js.map +1 -0
- package/dist/{NNB44CLI.js → B3E3Z2XP.js} +4 -4
- package/dist/{NNB44CLI.js.map → B3E3Z2XP.js.map} +1 -1
- package/dist/{B5WQLYXA.js → B7MBM6I4.js} +3 -3
- package/dist/{B5WQLYXA.js.map → B7MBM6I4.js.map} +1 -1
- package/dist/{7MCSZFDW.js → BH24MB7Z.js} +3 -3
- package/dist/{7MCSZFDW.js.map → BH24MB7Z.js.map} +1 -1
- package/dist/{W5JSNM4P.js → BQ2SFPGS.js} +5 -5
- package/dist/{W5JSNM4P.js.map → BQ2SFPGS.js.map} +1 -1
- package/dist/{CQBWBXEP.js → BWPOOFYL.js} +3 -3
- package/dist/{CQBWBXEP.js.map → BWPOOFYL.js.map} +1 -1
- package/dist/BZXMNRDO.js +105 -0
- package/dist/BZXMNRDO.js.map +1 -0
- package/dist/{7AX6ETEC.js → CLHFF2NZ.js} +3 -3
- package/dist/{7AX6ETEC.js.map → CLHFF2NZ.js.map} +1 -1
- package/dist/{CRVXAMIK.js → DFCC26G3.js} +4 -4
- package/dist/{CRVXAMIK.js.map → DFCC26G3.js.map} +1 -1
- package/dist/{YIP3DFVS.js → FGQEPZNL.js} +3 -3
- package/dist/{YIP3DFVS.js.map → FGQEPZNL.js.map} +1 -1
- package/dist/G4IAVHVV.js +69 -0
- package/dist/G4IAVHVV.js.map +1 -0
- package/dist/{FVMFTILS.js → HB636AF5.js} +3 -3
- package/dist/{FVMFTILS.js.map → HB636AF5.js.map} +1 -1
- package/dist/{CMN4A3XH.js → HCNXHOIJ.js} +3 -3
- package/dist/{CMN4A3XH.js.map → HCNXHOIJ.js.map} +1 -1
- package/dist/{X5KMH3AN.js → ISTGNQEF.js} +3 -3
- package/dist/{X5KMH3AN.js.map → ISTGNQEF.js.map} +1 -1
- package/dist/IUQEDBC6.js +102 -0
- package/dist/IUQEDBC6.js.map +1 -0
- package/dist/{BIHZXZGJ.js → JAONRVNE.js} +3 -3
- package/dist/{BIHZXZGJ.js.map → JAONRVNE.js.map} +1 -1
- package/dist/{Q7L2ADEU.js → JBO4ZQNH.js} +3 -3
- package/dist/{Q7L2ADEU.js.map → JBO4ZQNH.js.map} +1 -1
- package/dist/{PL4H5XEA.js → K7FRAGGM.js} +3 -3
- package/dist/{PL4H5XEA.js.map → K7FRAGGM.js.map} +1 -1
- package/dist/L64D74BZ.js +332 -0
- package/dist/L64D74BZ.js.map +1 -0
- package/dist/{DYK7UQLE.js → LMKFC7LV.js} +43 -43
- package/dist/{DYK7UQLE.js.map → LMKFC7LV.js.map} +1 -1
- package/dist/{ICIMAW3A.js → LSKYLA4P.js} +4 -4
- package/dist/{ICIMAW3A.js.map → LSKYLA4P.js.map} +1 -1
- package/dist/MO6W6SKU.js +412 -0
- package/dist/MO6W6SKU.js.map +1 -0
- package/dist/MV4DFHZP.js +424 -0
- package/dist/MV4DFHZP.js.map +1 -0
- package/dist/{XCOCX2NQ.js → MW2R4OL5.js} +3 -3
- package/dist/{XCOCX2NQ.js.map → MW2R4OL5.js.map} +1 -1
- package/dist/{TP2SKXF6.js → N3QRG2AK.js} +25 -5
- package/dist/N3QRG2AK.js.map +1 -0
- package/dist/NGED2YCU.js +75 -0
- package/dist/NGED2YCU.js.map +1 -0
- package/dist/NQWAH7C4.js +3 -0
- package/dist/NQWAH7C4.js.map +1 -0
- package/dist/{3K5JL2TP.js → NYEJEKEY.js} +12 -3
- package/dist/NYEJEKEY.js.map +1 -0
- package/dist/{DX46ASEP.js → OU543BQK.js} +4 -4
- package/dist/{DX46ASEP.js.map → OU543BQK.js.map} +1 -1
- package/dist/{YCF6SVF6.js → P7PG4R5T.js} +62 -9
- package/dist/P7PG4R5T.js.map +1 -0
- package/dist/{RIREEIYO.js → PLCXYLPU.js} +3 -3
- package/dist/{RIREEIYO.js.map → PLCXYLPU.js.map} +1 -1
- package/dist/{Q4D2T7BS.js → PTJBIMSS.js} +3 -3
- package/dist/{Q4D2T7BS.js.map → PTJBIMSS.js.map} +1 -1
- package/dist/Q3BYU6GJ.js +46 -0
- package/dist/Q3BYU6GJ.js.map +1 -0
- package/dist/{DR3COIEJ.js → QIYRAOGU.js} +3 -3
- package/dist/{DR3COIEJ.js.map → QIYRAOGU.js.map} +1 -1
- package/dist/{O25T2HOW.js → QRPS2ZRD.js} +3 -3
- package/dist/{O25T2HOW.js.map → QRPS2ZRD.js.map} +1 -1
- package/dist/{3EY5Z4BX.js → RDG3GOWQ.js} +3 -3
- package/dist/{3EY5Z4BX.js.map → RDG3GOWQ.js.map} +1 -1
- package/dist/{AFZOQGRN.js → RH6PBMPO.js} +3 -3
- package/dist/{AFZOQGRN.js.map → RH6PBMPO.js.map} +1 -1
- package/dist/{U3XCZGRR.js → RLUQWVZ6.js} +5 -5
- package/dist/{U3XCZGRR.js.map → RLUQWVZ6.js.map} +1 -1
- package/dist/SA63DYLV.js +121 -0
- package/dist/SA63DYLV.js.map +1 -0
- package/dist/{BWU4MCVK.js → TB5OSYHO.js} +4 -4
- package/dist/{BWU4MCVK.js.map → TB5OSYHO.js.map} +1 -1
- package/dist/{65JBI4D3.js → TDVOFX7N.js} +3 -3
- package/dist/{65JBI4D3.js.map → TDVOFX7N.js.map} +1 -1
- package/dist/{ZBM7PUST.js → TQMPIJZW.js} +3 -3
- package/dist/{ZBM7PUST.js.map → TQMPIJZW.js.map} +1 -1
- package/dist/{222UT7H4.js → TYI7PTYG.js} +4 -4
- package/dist/{222UT7H4.js.map → TYI7PTYG.js.map} +1 -1
- package/dist/{F7CLAJVB.js → U2DNZHEJ.js} +3 -3
- package/dist/{F7CLAJVB.js.map → U2DNZHEJ.js.map} +1 -1
- package/dist/{QLSD7CDL.js → UINDAVKP.js} +3 -3
- package/dist/{QLSD7CDL.js.map → UINDAVKP.js.map} +1 -1
- package/dist/{FHI4L73X.js → ULL44NXA.js} +4 -4
- package/dist/{FHI4L73X.js.map → ULL44NXA.js.map} +1 -1
- package/dist/{L26PC3MC.js → UNT3QBTP.js} +3 -3
- package/dist/{L26PC3MC.js.map → UNT3QBTP.js.map} +1 -1
- package/dist/{6HJEM4C3.js → V2TREL3L.js} +3 -3
- package/dist/{6HJEM4C3.js.map → V2TREL3L.js.map} +1 -1
- package/dist/VJKB367I.js +159 -0
- package/dist/VJKB367I.js.map +1 -0
- package/dist/{DRLN6NI7.js → VPGKHXFY.js} +3 -3
- package/dist/{DRLN6NI7.js.map → VPGKHXFY.js.map} +1 -1
- package/dist/{55MRWPLR.js → W7DMST44.js} +3 -3
- package/dist/{55MRWPLR.js.map → W7DMST44.js.map} +1 -1
- package/dist/{Q5QMWEOQ.js → WZ4QCFOE.js} +3 -3
- package/dist/{Q5QMWEOQ.js.map → WZ4QCFOE.js.map} +1 -1
- package/dist/XCOORR26.js +125 -0
- package/dist/XCOORR26.js.map +1 -0
- package/dist/{3NMWQBVE.js → YHT3X6LW.js} +3 -3
- package/dist/{3NMWQBVE.js.map → YHT3X6LW.js.map} +1 -1
- package/dist/YMXOSAU4.js +18 -0
- package/dist/YMXOSAU4.js.map +1 -0
- package/dist/{35HFP3P5.js → ZSOWBGX3.js} +3 -3
- package/dist/{35HFP3P5.js.map → ZSOWBGX3.js.map} +1 -1
- package/dist/client/amulet.d.ts +24 -6
- package/dist/client/amulet.d.ts.map +1 -1
- package/dist/client/amulet.js +8 -2
- package/dist/client/canton-client.d.ts +9 -1
- package/dist/client/canton-client.d.ts.map +1 -1
- package/dist/client/canton-client.js +113 -107
- package/dist/client/grpc.js +3 -3
- package/dist/client/index.js +115 -109
- package/dist/client/interface.d.ts +10 -1
- package/dist/client/interface.d.ts.map +1 -1
- package/dist/client/topology/utils.js +2 -2
- package/dist/errors.d.ts +5 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +1 -1
- package/dist/events.js +3 -3
- package/dist/index.js +133 -119
- package/dist/open-api/apis/DefaultApi.js +104 -104
- package/dist/open-api/apis/index.js +104 -104
- package/dist/open-api/index.js +104 -104
- package/dist/open-api/models/Command.js +5 -5
- package/dist/open-api/models/Completion.js +3 -3
- package/dist/open-api/models/Completion1.js +3 -3
- package/dist/open-api/models/CompletionResponse.js +8 -8
- package/dist/open-api/models/CompletionResponseOneOf.js +3 -3
- package/dist/open-api/models/CompletionStreamResponse.js +9 -9
- package/dist/open-api/models/CreateUserRequest.js +7 -7
- package/dist/open-api/models/CumulativeFilter.js +7 -7
- package/dist/open-api/models/DeduplicationPeriod.js +1 -1
- package/dist/open-api/models/DeduplicationPeriod1.js +1 -1
- package/dist/open-api/models/DeduplicationPeriod2.js +3 -3
- package/dist/open-api/models/EventFormat.js +9 -9
- package/dist/open-api/models/ExperimentalFeatures.js +2 -2
- package/dist/open-api/models/FeaturesDescriptor.js +4 -4
- package/dist/open-api/models/Filters.js +8 -8
- package/dist/open-api/models/GetActiveContractsPageRequest.js +10 -10
- package/dist/open-api/models/GetActiveContractsRequest.js +10 -10
- package/dist/open-api/models/GetCompletionByHashResponse.js +3 -3
- package/dist/open-api/models/GetEventsByContractIdRequest.js +10 -10
- package/dist/open-api/models/GetLedgerApiVersionResponse.js +5 -5
- package/dist/open-api/models/GetUpdateByHashRequest.js +12 -12
- package/dist/open-api/models/GetUpdateByIdRequest.js +12 -12
- package/dist/open-api/models/GetUpdateByOffsetRequest.js +12 -12
- package/dist/open-api/models/GetUpdatesPageRequest.js +12 -12
- package/dist/open-api/models/GetUpdatesRequest.js +12 -12
- package/dist/open-api/models/GrantUserRightsRequest.js +7 -7
- package/dist/open-api/models/GrantUserRightsResponse.js +7 -7
- package/dist/open-api/models/IdentifierFilter.js +6 -6
- package/dist/open-api/models/JsCommands.js +7 -7
- package/dist/open-api/models/JsContractEntry.js +4 -4
- package/dist/open-api/models/JsExecuteSubmissionAndWaitForTransactionRequest.js +18 -18
- package/dist/open-api/models/JsExecuteSubmissionAndWaitRequest.js +8 -8
- package/dist/open-api/models/JsExecuteSubmissionRequest.js +8 -8
- package/dist/open-api/models/JsGetActiveContractsPageResponse.js +6 -6
- package/dist/open-api/models/JsGetActiveContractsResponse.js +5 -5
- package/dist/open-api/models/JsGetUpdateResponse.js +4 -4
- package/dist/open-api/models/JsGetUpdatesPageResponse.js +4 -4
- package/dist/open-api/models/JsGetUpdatesResponse.js +4 -4
- package/dist/open-api/models/JsPrepareSubmissionRequest.js +10 -10
- package/dist/open-api/models/JsSubmitAndWaitForTransactionRequest.js +18 -18
- package/dist/open-api/models/JsTopologyTransaction.js +2 -2
- package/dist/open-api/models/Kind.js +5 -5
- package/dist/open-api/models/ListUserRightsResponse.js +7 -7
- package/dist/open-api/models/MinLedgerTime.js +4 -4
- package/dist/open-api/models/Operation.js +4 -4
- package/dist/open-api/models/PriorTopologySerial.js +3 -3
- package/dist/open-api/models/RevokeUserRightsRequest.js +7 -7
- package/dist/open-api/models/RevokeUserRightsResponse.js +7 -7
- package/dist/open-api/models/Right.js +6 -6
- package/dist/open-api/models/Serial.js +2 -2
- package/dist/open-api/models/SubmitAndWaitForReassignmentRequest.js +10 -10
- package/dist/open-api/models/Time.js +3 -3
- package/dist/open-api/models/TopologyEvent.js +2 -2
- package/dist/open-api/models/TopologyEventEvent.js +2 -2
- package/dist/open-api/models/TopologyTransaction.js +2 -2
- package/dist/open-api/models/TransactionFormat.js +10 -10
- package/dist/open-api/models/Update.js +4 -4
- package/dist/open-api/models/UpdateFormat.js +11 -11
- package/dist/open-api/models/UpdateOneOf2.js +2 -2
- package/dist/open-api/models/UpdateVettedPackagesRequest.js +9 -9
- package/dist/open-api/models/VettedPackagesChange.js +5 -5
- package/dist/open-api/models/index.js +103 -103
- package/dist/provider.js +116 -110
- package/dist/refresh/callback-burn-mint.d.ts +22 -0
- package/dist/refresh/callback-burn-mint.d.ts.map +1 -0
- package/dist/refresh/callback-burn-mint.js +7 -0
- package/dist/refresh/callback-burn-mint.js.map +1 -0
- package/dist/refresh/callback-contracts.d.ts +5 -0
- package/dist/refresh/callback-contracts.d.ts.map +1 -0
- package/dist/refresh/callback-contracts.js +4 -0
- package/dist/refresh/callback-contracts.js.map +1 -0
- package/dist/refresh/callback-lock-unlock.d.ts +19 -0
- package/dist/refresh/callback-lock-unlock.d.ts.map +1 -0
- package/dist/refresh/callback-lock-unlock.js +7 -0
- package/dist/refresh/callback-lock-unlock.js.map +1 -0
- package/dist/refresh/callback.d.ts +112 -0
- package/dist/refresh/callback.d.ts.map +1 -0
- package/dist/refresh/callback.js +10 -0
- package/dist/refresh/callback.js.map +1 -0
- package/dist/refresh/index.d.ts +12 -0
- package/dist/refresh/index.d.ts.map +1 -1
- package/dist/refresh/index.js +25 -7
- package/dist/refresh/onesig-config.d.ts +20 -0
- package/dist/refresh/onesig-config.d.ts.map +1 -0
- package/dist/refresh/onesig-config.js +6 -0
- package/dist/refresh/onesig-config.js.map +1 -0
- package/dist/refresh/onesig-discovery.d.ts +15 -0
- package/dist/refresh/onesig-discovery.d.ts.map +1 -0
- package/dist/refresh/onesig-discovery.js +7 -0
- package/dist/refresh/onesig-discovery.js.map +1 -0
- package/dist/refresh/onesig-request.d.ts +26 -0
- package/dist/refresh/onesig-request.d.ts.map +1 -0
- package/dist/refresh/onesig-request.js +6 -0
- package/dist/refresh/onesig-request.js.map +1 -0
- package/dist/refresh/onesig-scope.d.ts +13 -0
- package/dist/refresh/onesig-scope.d.ts.map +1 -0
- package/dist/refresh/onesig-scope.js +6 -0
- package/dist/refresh/onesig-scope.js.map +1 -0
- package/dist/refresh/onesig-transfer-instruction.d.ts +19 -0
- package/dist/refresh/onesig-transfer-instruction.d.ts.map +1 -0
- package/dist/refresh/onesig-transfer-instruction.js +15 -0
- package/dist/refresh/onesig-transfer-instruction.js.map +1 -0
- package/dist/refresh/onesig-transfer.d.ts +21 -0
- package/dist/refresh/onesig-transfer.d.ts.map +1 -0
- package/dist/refresh/onesig-transfer.js +16 -0
- package/dist/refresh/onesig-transfer.js.map +1 -0
- package/dist/refresh/plan.d.ts +937 -5
- package/dist/refresh/plan.d.ts.map +1 -1
- package/dist/refresh/plan.js +1 -1
- package/dist/refresh/prepare-amulet-transfer.d.ts +9 -0
- package/dist/refresh/prepare-amulet-transfer.d.ts.map +1 -0
- package/dist/refresh/prepare-amulet-transfer.js +12 -0
- package/dist/refresh/prepare-amulet-transfer.js.map +1 -0
- package/dist/refresh/prepare-transfer-instruction-acceptance.d.ts +9 -0
- package/dist/refresh/prepare-transfer-instruction-acceptance.d.ts.map +1 -0
- package/dist/refresh/prepare-transfer-instruction-acceptance.js +4 -0
- package/dist/refresh/prepare-transfer-instruction-acceptance.js.map +1 -0
- package/dist/refresh/registry-context.d.ts +49 -0
- package/dist/refresh/registry-context.d.ts.map +1 -0
- package/dist/refresh/registry-context.js +6 -0
- package/dist/refresh/registry-context.js.map +1 -0
- package/dist/refresh/resolve-plan.d.ts +1 -1
- package/dist/refresh/resolve-plan.d.ts.map +1 -1
- package/dist/refresh/resolve-plan.js +19 -1
- package/dist/refresh/resolve.js +22 -5
- package/dist/refresh/select-contracts.d.ts +4 -0
- package/dist/refresh/select-contracts.d.ts.map +1 -0
- package/dist/refresh/select-contracts.js +4 -0
- package/dist/refresh/select-contracts.js.map +1 -0
- package/dist/sdk/canton-sdk.js +2 -2
- package/dist/sdk/index.js +2 -2
- package/dist/transaction.d.ts +1635 -20
- package/dist/transaction.d.ts.map +1 -1
- package/dist/transaction.js +2 -2
- package/package.json +12 -11
- package/dist/3K5JL2TP.js.map +0 -1
- package/dist/6UDREB6T.js +0 -3
- package/dist/6UDREB6T.js.map +0 -1
- package/dist/TP2SKXF6.js.map +0 -1
- package/dist/UGGRFD54.js +0 -168
- package/dist/UGGRFD54.js.map +0 -1
- package/dist/V3KXSTGZ.js +0 -350
- package/dist/V3KXSTGZ.js.map +0 -1
- package/dist/YCF6SVF6.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EventFormatFromJSON, EventFormatToJSON } from './
|
|
1
|
+
import { EventFormatFromJSON, EventFormatToJSON } from './V2TREL3L.js';
|
|
2
2
|
import { __name } from './VUOMXK5T.js';
|
|
3
3
|
|
|
4
4
|
// src/open-api/models/GetActiveContractsPageRequest.ts
|
|
@@ -41,5 +41,5 @@ function GetActiveContractsPageRequestToJSONTyped(value, ignoreDiscriminator = f
|
|
|
41
41
|
__name(GetActiveContractsPageRequestToJSONTyped, "GetActiveContractsPageRequestToJSONTyped");
|
|
42
42
|
|
|
43
43
|
export { GetActiveContractsPageRequestFromJSON, GetActiveContractsPageRequestFromJSONTyped, GetActiveContractsPageRequestToJSON, GetActiveContractsPageRequestToJSONTyped, instanceOfGetActiveContractsPageRequest };
|
|
44
|
-
//# sourceMappingURL=
|
|
45
|
-
//# sourceMappingURL=
|
|
44
|
+
//# sourceMappingURL=JBO4ZQNH.js.map
|
|
45
|
+
//# sourceMappingURL=JBO4ZQNH.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/open-api/models/GetActiveContractsPageRequest.ts"],"names":["instanceOfGetActiveContractsPageRequest","value","undefined","GetActiveContractsPageRequestFromJSON","json","GetActiveContractsPageRequestFromJSONTyped","ignoreDiscriminator","EventFormatFromJSON","GetActiveContractsPageRequestToJSON","GetActiveContractsPageRequestToJSONTyped","EventFormatToJSON"],"mappings":";;;;AAuEO,SAASA,wCAAwCC,KAAAA,EAAa;AACjE,EAAA,IAAI,EAAE,aAAA,IAAiBA,KAAAA,CAAAA,IAAUA,MAAM,aAAA,CAAA,KAAmBC,QAAW,OAAO,KAAA;AAC5E,EAAA,OAAO,IAAA;AACX;AAHgBF,MAAAA,CAAAA,uCAAAA,EAAAA,yCAAAA,CAAAA;AAKT,SAASG,sCAAsCC,IAAAA,EAAS;AAC3D,EAAA,OAAOC,0CAAAA,CAA2CD,IAAM,CAAA;AAC5D;AAFgBD,MAAAA,CAAAA,qCAAAA,EAAAA,uCAAAA,CAAAA;AAIT,SAASE,0CAAAA,CAA2CD,MAAWE,mBAAAA,EAA4B;AAC9F,EAAA,IAAIF,QAAQ,IAAA,EAAM;AACd,IAAA,OAAOA,IAAAA;AACX,EAAA;AACA,EAAA,OAAO;AAEH,IAAA,gBAAA,EAAkBA,KAAK,gBAAA,CAAA,IAAqB,IAAA,GAAOF,MAAAA,GAAYE,KAAK,gBAAA,CAAA;IACpE,aAAA,EAAeG,mBAAAA,CAAoBH,IAAAA,CAAK,aAAA,CAAc,CAAA;AACtD,IAAA,aAAA,EAAeA,KAAK,aAAA,CAAA,IAAkB,IAAA,GAAOF,MAAAA,GAAYE,KAAK,aAAA,CAAA;AAC9D,IAAA,WAAA,EAAaA,KAAK,WAAA,CAAA,IAAgB,IAAA,GAAOF,MAAAA,GAAYE,KAAK,WAAA;AAC9D,GAAA;AACJ;AAXgBC,MAAAA,CAAAA,0CAAAA,EAAAA,4CAAAA,CAAAA;AAaT,SAASG,oCAAoCJ,IAAAA,EAAS;AACzD,EAAA,OAAOK,wCAAAA,CAAyCL,MAAM,KAAA,CAAA;AAC1D;AAFgBI,MAAAA,CAAAA,mCAAAA,EAAAA,qCAAAA,CAAAA;AAIT,SAASC,wCAAAA,CAAyCR,KAAAA,EAA8CK,mBAAAA,GAA+B,KAAA,EAAK;AACvI,EAAA,IAAIL,SAAS,IAAA,EAAM;AACf,IAAA,OAAOA,KAAAA;AACX,EAAA;AAEA,EAAA,OAAO;AAEH,IAAA,gBAAA,EAAkBA,MAAM,gBAAA,CAAA;IACxB,aAAA,EAAeS,iBAAAA,CAAkBT,KAAAA,CAAM,aAAA,CAAc,CAAA;AACrD,IAAA,aAAA,EAAeA,MAAM,aAAA,CAAA;AACrB,IAAA,WAAA,EAAaA,MAAM,WAAA;AACvB,GAAA;AACJ;AAZgBQ,MAAAA,CAAAA,wCAAAA,EAAAA,0CAAAA,CAAAA","file":"
|
|
1
|
+
{"version":3,"sources":["../src/open-api/models/GetActiveContractsPageRequest.ts"],"names":["instanceOfGetActiveContractsPageRequest","value","undefined","GetActiveContractsPageRequestFromJSON","json","GetActiveContractsPageRequestFromJSONTyped","ignoreDiscriminator","EventFormatFromJSON","GetActiveContractsPageRequestToJSON","GetActiveContractsPageRequestToJSONTyped","EventFormatToJSON"],"mappings":";;;;AAuEO,SAASA,wCAAwCC,KAAAA,EAAa;AACjE,EAAA,IAAI,EAAE,aAAA,IAAiBA,KAAAA,CAAAA,IAAUA,MAAM,aAAA,CAAA,KAAmBC,QAAW,OAAO,KAAA;AAC5E,EAAA,OAAO,IAAA;AACX;AAHgBF,MAAAA,CAAAA,uCAAAA,EAAAA,yCAAAA,CAAAA;AAKT,SAASG,sCAAsCC,IAAAA,EAAS;AAC3D,EAAA,OAAOC,0CAAAA,CAA2CD,IAAM,CAAA;AAC5D;AAFgBD,MAAAA,CAAAA,qCAAAA,EAAAA,uCAAAA,CAAAA;AAIT,SAASE,0CAAAA,CAA2CD,MAAWE,mBAAAA,EAA4B;AAC9F,EAAA,IAAIF,QAAQ,IAAA,EAAM;AACd,IAAA,OAAOA,IAAAA;AACX,EAAA;AACA,EAAA,OAAO;AAEH,IAAA,gBAAA,EAAkBA,KAAK,gBAAA,CAAA,IAAqB,IAAA,GAAOF,MAAAA,GAAYE,KAAK,gBAAA,CAAA;IACpE,aAAA,EAAeG,mBAAAA,CAAoBH,IAAAA,CAAK,aAAA,CAAc,CAAA;AACtD,IAAA,aAAA,EAAeA,KAAK,aAAA,CAAA,IAAkB,IAAA,GAAOF,MAAAA,GAAYE,KAAK,aAAA,CAAA;AAC9D,IAAA,WAAA,EAAaA,KAAK,WAAA,CAAA,IAAgB,IAAA,GAAOF,MAAAA,GAAYE,KAAK,WAAA;AAC9D,GAAA;AACJ;AAXgBC,MAAAA,CAAAA,0CAAAA,EAAAA,4CAAAA,CAAAA;AAaT,SAASG,oCAAoCJ,IAAAA,EAAS;AACzD,EAAA,OAAOK,wCAAAA,CAAyCL,MAAM,KAAA,CAAA;AAC1D;AAFgBI,MAAAA,CAAAA,mCAAAA,EAAAA,qCAAAA,CAAAA;AAIT,SAASC,wCAAAA,CAAyCR,KAAAA,EAA8CK,mBAAAA,GAA+B,KAAA,EAAK;AACvI,EAAA,IAAIL,SAAS,IAAA,EAAM;AACf,IAAA,OAAOA,KAAAA;AACX,EAAA;AAEA,EAAA,OAAO;AAEH,IAAA,gBAAA,EAAkBA,MAAM,gBAAA,CAAA;IACxB,aAAA,EAAeS,iBAAAA,CAAkBT,KAAAA,CAAM,aAAA,CAAc,CAAA;AACrD,IAAA,aAAA,EAAeA,MAAM,aAAA,CAAA;AACrB,IAAA,WAAA,EAAaA,MAAM,WAAA;AACvB,GAAA;AACJ;AAZgBQ,MAAAA,CAAAA,wCAAAA,EAAAA,0CAAAA,CAAAA","file":"JBO4ZQNH.js","sourcesContent":["/* tslint:disable */\n/* eslint-disable */\n/**\n * JSON Ledger API HTTP endpoints\n * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)\n *\n * The version of the OpenAPI document: 3.7.0-SNAPSHOT\n * \n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport { mapValues } from '../runtime.js';\nimport type { EventFormat } from './EventFormat.js';\nimport {\n EventFormatFromJSON,\n EventFormatFromJSONTyped,\n EventFormatToJSON,\n EventFormatToJSONTyped,\n} from './EventFormat.js';\n\n/**\n * \n * @export\n * @interface GetActiveContractsPageRequest\n */\nexport interface GetActiveContractsPageRequest {\n /**\n * The offset at which the snapshot of the active contracts will be computed.\n * Must be no greater than the current ledger end offset.\n * Must be greater than or equal to the last pruning offset.\n * Optional, if defined, it must be a valid absolute offset (positive integer) or ledger begin offset (zero).\n * If zero, the empty set will be returned.\n * If not defined, the current ledger end will be used and it will be populated in the response.\n * \n * Optional\n */\n activeAtOffset?: number;\n /**\n * \n */\n eventFormat: EventFormat;\n /**\n * The result page will contain at most max_page_size entries of the respective active contract snapshot.\n * The server might reject max_page_size breaching the server-specified limit.\n * Optional, if not defined, the default will be determined by the server.\n * \n * Optional\n */\n maxPageSize?: number;\n /**\n * To get the next page of the active contracts snapshot, the ``page_token`` should be set to the\n * ``next_page_token`` of the last ``GetActiveContractsPageResponse``.\n * The page token only works if subsequent requests:\n * \n * - are executed on the same participant,\n * - use the same active_at_offset and event_format,\n * - and the participant's store was not pruned to after the active_at_offset.\n * \n * If not specified, the first page of the active contracts snapshot will be returned.\n * \n * Optional: can be empty\n */\n pageToken?: string;\n}\n\n/**\n * Check if a given object implements the GetActiveContractsPageRequest interface.\n */\nexport function instanceOfGetActiveContractsPageRequest(value: object): value is GetActiveContractsPageRequest {\n if (!('eventFormat' in value) || value['eventFormat'] === undefined) return false;\n return true;\n}\n\nexport function GetActiveContractsPageRequestFromJSON(json: any): GetActiveContractsPageRequest {\n return GetActiveContractsPageRequestFromJSONTyped(json, false);\n}\n\nexport function GetActiveContractsPageRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): GetActiveContractsPageRequest {\n if (json == null) {\n return json;\n }\n return {\n \n 'activeAtOffset': json['activeAtOffset'] == null ? undefined : json['activeAtOffset'],\n 'eventFormat': EventFormatFromJSON(json['eventFormat']),\n 'maxPageSize': json['maxPageSize'] == null ? undefined : json['maxPageSize'],\n 'pageToken': json['pageToken'] == null ? undefined : json['pageToken'],\n };\n}\n\nexport function GetActiveContractsPageRequestToJSON(json: any): GetActiveContractsPageRequest {\n return GetActiveContractsPageRequestToJSONTyped(json, false);\n}\n\nexport function GetActiveContractsPageRequestToJSONTyped(value?: GetActiveContractsPageRequest | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'activeAtOffset': value['activeAtOffset'],\n 'eventFormat': EventFormatToJSON(value['eventFormat']),\n 'maxPageSize': value['maxPageSize'],\n 'pageToken': value['pageToken'],\n };\n}\n\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { cantonMultihash } from './WLV6EHDB.js';
|
|
2
|
-
import { CantonError } from './
|
|
2
|
+
import { CantonError } from './NYEJEKEY.js';
|
|
3
3
|
import { __name } from './VUOMXK5T.js';
|
|
4
4
|
import { StoreId, BaseQuery, Empty } from '@canton-network/core-ledger-proto';
|
|
5
5
|
import { ChannelCredentials } from '@grpc/grpc-js';
|
|
@@ -78,5 +78,5 @@ var buildChannelCredentials = /* @__PURE__ */ __name((host, insecureTransport =
|
|
|
78
78
|
}, "buildChannelCredentials");
|
|
79
79
|
|
|
80
80
|
export { buildChannelCredentials, computeDecentralizedNamespace, computeMultiTransactionHash, headStateBaseQuery, synchronizerStore };
|
|
81
|
-
//# sourceMappingURL=
|
|
82
|
-
//# sourceMappingURL=
|
|
81
|
+
//# sourceMappingURL=K7FRAGGM.js.map
|
|
82
|
+
//# sourceMappingURL=K7FRAGGM.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client/topology/utils.ts"],"names":["HASH_PURPOSE_DECENTRALIZED_NAMESPACE","HASH_PURPOSE_MULTI_TRANSACTION","computeDecentralizedNamespace","owners","sorted","sort","parts","owner","ownerBytes","Buffer","from","lengthPrefix","alloc","writeUInt32BE","length","push","bytesToHex","cantonMultihash","concat","computeMultiTransactionHash","hashes","left","right","compare","countBuffer","hash","lengthBuffer","synchronizerStore","synchronizerId","StoreId","create","store","oneofKind","synchronizer","id","headStateBaseQuery","proposals","BaseQuery","timeQuery","headState","Empty","LOOPBACK_HOSTNAMES","Set","LOOPBACK_IPV4","isLoopbackHost","host","hostname","replace","toLowerCase","has","test","buildChannelCredentials","insecureTransport","ChannelCredentials","createSsl","CantonError","createInsecure"],"mappings":"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","file":"
|
|
1
|
+
{"version":3,"sources":["../src/client/topology/utils.ts"],"names":["HASH_PURPOSE_DECENTRALIZED_NAMESPACE","HASH_PURPOSE_MULTI_TRANSACTION","computeDecentralizedNamespace","owners","sorted","sort","parts","owner","ownerBytes","Buffer","from","lengthPrefix","alloc","writeUInt32BE","length","push","bytesToHex","cantonMultihash","concat","computeMultiTransactionHash","hashes","left","right","compare","countBuffer","hash","lengthBuffer","synchronizerStore","synchronizerId","StoreId","create","store","oneofKind","synchronizer","id","headStateBaseQuery","proposals","BaseQuery","timeQuery","headState","Empty","LOOPBACK_HOSTNAMES","Set","LOOPBACK_IPV4","isLoopbackHost","host","hostname","replace","toLowerCase","has","test","buildChannelCredentials","insecureTransport","ChannelCredentials","createSsl","CantonError","createInsecure"],"mappings":"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","file":"K7FRAGGM.js","sourcesContent":["import { BaseQuery, Empty, StoreId } from '@canton-network/core-ledger-proto';\nimport { ChannelCredentials } from '@grpc/grpc-js';\n\nimport { bytesToHex } from '@layerzerolabs/common-encoding-utils';\n\nimport { CantonError } from '../../errors';\nimport { cantonMultihash } from '../utils';\n\n/** Canton hash purpose for decentralized namespace derivation. */\nconst HASH_PURPOSE_DECENTRALIZED_NAMESPACE = 37;\n\n/** Canton hash purpose for multi-transaction topology signing. */\nconst HASH_PURPOSE_MULTI_TRANSACTION = 55;\n\n/**\n * Computes the decentralized namespace fingerprint from owner key fingerprints.\n *\n * Owners are sorted lexicographically, then hashed as\n * `1220` + SHA256(purpose=37 || for each owner: len(utf8) || utf8).\n */\nexport function computeDecentralizedNamespace(owners: string[]): string {\n const sorted = [...owners].sort();\n const parts: Buffer[] = [];\n for (const owner of sorted) {\n const ownerBytes = Buffer.from(owner, 'utf-8');\n const lengthPrefix = Buffer.alloc(4);\n lengthPrefix.writeUInt32BE(ownerBytes.length);\n parts.push(lengthPrefix, ownerBytes);\n }\n return bytesToHex(cantonMultihash(HASH_PURPOSE_DECENTRALIZED_NAMESPACE, Buffer.concat(parts)));\n}\n\n/**\n * Combines topology transaction hashes into the digest Canton expects signed.\n *\n * Hashes are sorted lexicographically, count-prefixed, each length-prefixed, then\n * hashed with purpose 55. Pass a single hash when signing one transaction —\n * Canton always uses this multi-transaction format for `AddTransactions`.\n */\nexport function computeMultiTransactionHash(hashes: Uint8Array[]): Uint8Array {\n const sorted = [...hashes].sort((left, right) =>\n Buffer.compare(Buffer.from(left), Buffer.from(right)),\n );\n const parts: Buffer[] = [];\n const countBuffer = Buffer.alloc(4);\n countBuffer.writeUInt32BE(sorted.length);\n parts.push(countBuffer);\n for (const hash of sorted) {\n const lengthBuffer = Buffer.alloc(4);\n lengthBuffer.writeUInt32BE(hash.length);\n parts.push(lengthBuffer, Buffer.from(hash));\n }\n return cantonMultihash(HASH_PURPOSE_MULTI_TRANSACTION, Buffer.concat(parts));\n}\n\n/**\n * Builds a topology `StoreId` scoped to a synchronizer.\n *\n * Used as the `store` field on topology read/write RPC requests.\n */\nexport function synchronizerStore(synchronizerId: string): StoreId {\n return StoreId.create({\n store: { oneofKind: 'synchronizer', synchronizer: { id: synchronizerId } },\n });\n}\n\n/**\n * Builds a topology `BaseQuery` at synchronizer head state.\n *\n * Used as the `baseQuery` field on topology list RPC requests.\n */\nexport function headStateBaseQuery(synchronizerId: string, proposals = false): BaseQuery {\n return BaseQuery.create({\n store: synchronizerStore(synchronizerId),\n timeQuery: { oneofKind: 'headState', headState: Empty.create({}) },\n proposals,\n });\n}\n\nconst LOOPBACK_HOSTNAMES = new Set(['localhost', '::1']);\nconst LOOPBACK_IPV4 = /^127(\\.\\d{1,3}){3}$/;\n\n/**\n * Whether a `host:port` target addresses the local machine.\n */\nconst isLoopbackHost = (host: string): boolean => {\n const hostname = host\n .replace(/:\\d+$/, '')\n .replace(/^\\[(.*)\\]$/, '$1')\n .toLowerCase();\n return LOOPBACK_HOSTNAMES.has(hostname) || LOOPBACK_IPV4.test(hostname);\n};\n\n/**\n * Builds gRPC channel credentials for the Canton admin API.\n *\n * Encrypted whatever the port, because every admin call carries a reusable bearer token.\n *\n * @throws {CantonError} If an unencrypted channel is asked for on a remote host.\n */\nexport const buildChannelCredentials = (\n host: string,\n insecureTransport = false,\n): ChannelCredentials => {\n if (!insecureTransport) {\n return ChannelCredentials.createSsl();\n } else if (!isLoopbackHost(host)) {\n throw new CantonError(\n `Canton admin API requires an encrypted channel for a remote host: ${host}`,\n );\n }\n\n return ChannelCredentials.createInsecure();\n};\n"]}
|
package/dist/L64D74BZ.js
ADDED
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
import { callbackInterfaceView } from './YMXOSAU4.js';
|
|
2
|
+
import { isTrustedOrigin } from './SWY4QT4I.js';
|
|
3
|
+
import { __name } from './VUOMXK5T.js';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
|
|
6
|
+
var TEMPLATE_ID_DISCOVERY_REGISTRY = "#layerzero-discovery-registry:DiscoveryRegistry:DiscoveryRegistry";
|
|
7
|
+
var TRANSFER_FACTORY_RELATIVE_PATH = "registry/transfer-instruction/v1/transfer-factory";
|
|
8
|
+
var CONTEXT_PROBE_EXECUTE_BEFORE_WINDOW_MS = 60 * 60 * 1e3;
|
|
9
|
+
var TRANSFER_FACTORY_MAX_SENDER_CREDENTIALS = 8;
|
|
10
|
+
var MAX_RESPONSE_BYTES = 256 * 1024;
|
|
11
|
+
var textMapToRecord = /* @__PURE__ */ __name((map) => {
|
|
12
|
+
const entries = Array.isArray(map) ? map.filter((entry) => Array.isArray(entry) && entry.length >= 2) : map && typeof map === "object" ? Object.entries(map) : map == null ? [] : void 0;
|
|
13
|
+
if (!entries) throw new Error(`Unexpected Daml map shape: ${String(map)}`);
|
|
14
|
+
return Object.fromEntries(entries.map(([key, value]) => [
|
|
15
|
+
String(key),
|
|
16
|
+
String(value)
|
|
17
|
+
]));
|
|
18
|
+
}, "textMapToRecord");
|
|
19
|
+
var nonEmptyString = z.string().min(1);
|
|
20
|
+
var factoryResponseSchema = z.object({
|
|
21
|
+
factoryId: nonEmptyString,
|
|
22
|
+
choiceContext: z.object({
|
|
23
|
+
choiceContextData: z.object({
|
|
24
|
+
values: z.record(z.string(), z.unknown()).optional()
|
|
25
|
+
}).optional(),
|
|
26
|
+
disclosedContracts: z.array(z.object({
|
|
27
|
+
templateId: nonEmptyString,
|
|
28
|
+
contractId: nonEmptyString,
|
|
29
|
+
createdEventBlob: nonEmptyString,
|
|
30
|
+
synchronizerId: nonEmptyString
|
|
31
|
+
})).optional()
|
|
32
|
+
})
|
|
33
|
+
});
|
|
34
|
+
var assertSafeRegistryUrl = /* @__PURE__ */ __name((registryBaseUrl, opts) => {
|
|
35
|
+
let parsed;
|
|
36
|
+
try {
|
|
37
|
+
parsed = new URL(registryBaseUrl);
|
|
38
|
+
} catch {
|
|
39
|
+
throw new Error(`${opts.label} is not a valid URL`);
|
|
40
|
+
}
|
|
41
|
+
if (parsed.username !== "" || parsed.password !== "") {
|
|
42
|
+
throw new Error(`${opts.label} must not include credentials`);
|
|
43
|
+
}
|
|
44
|
+
const protocol = parsed.protocol.toLowerCase();
|
|
45
|
+
if (protocol === "https:") return parsed;
|
|
46
|
+
const host = parsed.hostname.toLowerCase();
|
|
47
|
+
const isLoopback = host === "localhost" || host === "127.0.0.1" || host === "::1";
|
|
48
|
+
if (opts.environment === "sandbox" && protocol === "http:" && isLoopback) return parsed;
|
|
49
|
+
throw new Error(opts.environment === "sandbox" ? `${opts.label} must use https (http only allowed for localhost / 127.0.0.1 / ::1)` : `${opts.label} must use https`);
|
|
50
|
+
}, "assertSafeRegistryUrl");
|
|
51
|
+
var postRegistryJson = /* @__PURE__ */ __name(async (url, body, options) => {
|
|
52
|
+
const signal = AbortSignal.timeout(options.timeoutMs ?? 1e4);
|
|
53
|
+
const response = await fetch(url, {
|
|
54
|
+
method: "POST",
|
|
55
|
+
headers: {
|
|
56
|
+
"Content-Type": "application/json",
|
|
57
|
+
...options.headers
|
|
58
|
+
},
|
|
59
|
+
signal,
|
|
60
|
+
redirect: "error",
|
|
61
|
+
body: JSON.stringify(body)
|
|
62
|
+
});
|
|
63
|
+
const reader = response.body?.getReader();
|
|
64
|
+
const chunks = [];
|
|
65
|
+
let size = 0;
|
|
66
|
+
try {
|
|
67
|
+
while (reader) {
|
|
68
|
+
const { done, value } = await reader.read();
|
|
69
|
+
if (done) break;
|
|
70
|
+
size += value.byteLength;
|
|
71
|
+
if (size > MAX_RESPONSE_BYTES) {
|
|
72
|
+
await reader.cancel();
|
|
73
|
+
throw new Error(`${options.probeName} response from ${url} exceeds ${MAX_RESPONSE_BYTES} bytes`);
|
|
74
|
+
}
|
|
75
|
+
chunks.push(value);
|
|
76
|
+
}
|
|
77
|
+
} finally {
|
|
78
|
+
reader?.releaseLock();
|
|
79
|
+
}
|
|
80
|
+
if (!response.ok) {
|
|
81
|
+
throw new Error(`Failed to fetch ${options.probeName} context from ${url}: HTTP ${response.status}`);
|
|
82
|
+
}
|
|
83
|
+
if (!(response.headers.get("content-type") ?? "").toLowerCase().includes("application/json")) {
|
|
84
|
+
throw new Error(`${options.probeName} response from ${url} must be application/json`);
|
|
85
|
+
}
|
|
86
|
+
const bytes = new Uint8Array(size);
|
|
87
|
+
let offset = 0;
|
|
88
|
+
for (const chunk of chunks) {
|
|
89
|
+
bytes.set(chunk, offset);
|
|
90
|
+
offset += chunk.byteLength;
|
|
91
|
+
}
|
|
92
|
+
let data;
|
|
93
|
+
try {
|
|
94
|
+
data = JSON.parse(new TextDecoder().decode(bytes));
|
|
95
|
+
} catch {
|
|
96
|
+
throw new Error(`${options.probeName} response from ${url} is not valid JSON`);
|
|
97
|
+
}
|
|
98
|
+
return data;
|
|
99
|
+
}, "postRegistryJson");
|
|
100
|
+
var postFactoryContext = /* @__PURE__ */ __name(async (url, body, options) => {
|
|
101
|
+
const parsed = factoryResponseSchema.safeParse(await postRegistryJson(url, body, options));
|
|
102
|
+
if (!parsed.success) throw new Error(`${options.probeName} response from ${url} failed schema validation`);
|
|
103
|
+
return {
|
|
104
|
+
factoryId: parsed.data.factoryId,
|
|
105
|
+
choiceContext: {
|
|
106
|
+
values: parsed.data.choiceContext.choiceContextData?.values ?? {}
|
|
107
|
+
},
|
|
108
|
+
disclosedContracts: parsed.data.choiceContext.disclosedContracts ?? []
|
|
109
|
+
};
|
|
110
|
+
}, "postFactoryContext");
|
|
111
|
+
var fetchTransferInstructionRegistryContext = /* @__PURE__ */ __name(async (registryBaseUrl, contractId, choice, environment) => {
|
|
112
|
+
assertSafeRegistryUrl(registryBaseUrl, {
|
|
113
|
+
environment,
|
|
114
|
+
label: "transfer-instruction discovery URL"
|
|
115
|
+
});
|
|
116
|
+
const base = registryBaseUrl.endsWith("/") ? registryBaseUrl : `${registryBaseUrl}/`;
|
|
117
|
+
const url = new URL(`registry/transfer-instruction/v1/${encodeURIComponent(contractId)}/choice-contexts/${choice}`, base).toString();
|
|
118
|
+
const parsed = factoryResponseSchema.shape.choiceContext.safeParse(await postRegistryJson(url, {
|
|
119
|
+
excludeDebugFields: true
|
|
120
|
+
}, {
|
|
121
|
+
probeName: `transfer-instruction ${choice}`
|
|
122
|
+
}));
|
|
123
|
+
if (!parsed.success) throw new Error(`transfer-instruction ${choice} response failed schema validation`);
|
|
124
|
+
return {
|
|
125
|
+
choiceContext: {
|
|
126
|
+
values: parsed.data.choiceContextData?.values ?? {}
|
|
127
|
+
},
|
|
128
|
+
disclosedContracts: parsed.data.disclosedContracts ?? []
|
|
129
|
+
};
|
|
130
|
+
}, "fetchTransferInstructionRegistryContext");
|
|
131
|
+
var discoveryUrlsForAppUid = /* @__PURE__ */ __name(async (sdk, informee, offset, appUid) => {
|
|
132
|
+
const registries = await sdk.queryActiveContracts(informee, offset, {
|
|
133
|
+
templateIds: [
|
|
134
|
+
TEMPLATE_ID_DISCOVERY_REGISTRY
|
|
135
|
+
]
|
|
136
|
+
});
|
|
137
|
+
return registries.flatMap((registry) => {
|
|
138
|
+
if (!isTrustedOrigin(registry.createdEvent, informee, "handler")) {
|
|
139
|
+
return [];
|
|
140
|
+
}
|
|
141
|
+
const urlMap = textMapToRecord(registry.createdEvent.createArgument.urlMap);
|
|
142
|
+
const url = urlMap[appUid];
|
|
143
|
+
return url ? [
|
|
144
|
+
url
|
|
145
|
+
] : [];
|
|
146
|
+
});
|
|
147
|
+
}, "discoveryUrlsForAppUid");
|
|
148
|
+
var fetchTransferFactoryContext = /* @__PURE__ */ __name(async (registryBaseUrl, instrumentId, options) => {
|
|
149
|
+
assertSafeRegistryUrl(registryBaseUrl, {
|
|
150
|
+
environment: options.environment,
|
|
151
|
+
label: "transfer-factory discovery URL"
|
|
152
|
+
});
|
|
153
|
+
const base = registryBaseUrl.endsWith("/") ? registryBaseUrl : `${registryBaseUrl}/`;
|
|
154
|
+
const url = new URL(TRANSFER_FACTORY_RELATIVE_PATH, base).toString();
|
|
155
|
+
const { sender, receiver, amount, inputHoldingCids } = options;
|
|
156
|
+
const requestedAt = options.requestedAt ?? (/* @__PURE__ */ new Date()).toISOString();
|
|
157
|
+
const executeBefore = options.executeBefore ?? new Date(Date.parse(requestedAt) + CONTEXT_PROBE_EXECUTE_BEFORE_WINDOW_MS).toISOString();
|
|
158
|
+
return postFactoryContext(url, {
|
|
159
|
+
choiceArguments: {
|
|
160
|
+
expectedAdmin: instrumentId.admin,
|
|
161
|
+
transfer: {
|
|
162
|
+
sender,
|
|
163
|
+
receiver,
|
|
164
|
+
amount,
|
|
165
|
+
instrumentId,
|
|
166
|
+
requestedAt,
|
|
167
|
+
executeBefore,
|
|
168
|
+
inputHoldingCids,
|
|
169
|
+
meta: {
|
|
170
|
+
values: {}
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
extraArgs: {
|
|
174
|
+
context: {
|
|
175
|
+
values: {}
|
|
176
|
+
},
|
|
177
|
+
meta: {
|
|
178
|
+
values: {}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}, {
|
|
183
|
+
timeoutMs: options.timeoutMs,
|
|
184
|
+
probeName: "transfer-factory"
|
|
185
|
+
});
|
|
186
|
+
}, "fetchTransferFactoryContext");
|
|
187
|
+
var fetchMergedTransferFactoryContext = /* @__PURE__ */ __name(async (registryBaseUrl, instrumentId, options) => {
|
|
188
|
+
const { receivers, ...probeOptions } = options;
|
|
189
|
+
const uniqueReceivers = [
|
|
190
|
+
...new Set(receivers)
|
|
191
|
+
].sort();
|
|
192
|
+
if (uniqueReceivers.length === 0) {
|
|
193
|
+
throw new Error("fetchMergedTransferFactoryContext requires at least one receiver");
|
|
194
|
+
}
|
|
195
|
+
const contexts = await Promise.all(uniqueReceivers.map((receiver) => fetchTransferFactoryContext(registryBaseUrl, instrumentId, {
|
|
196
|
+
...probeOptions,
|
|
197
|
+
receiver
|
|
198
|
+
})));
|
|
199
|
+
return mergeTransferFactoryContexts(contexts);
|
|
200
|
+
}, "fetchMergedTransferFactoryContext");
|
|
201
|
+
var mergeTransferFactoryContexts = /* @__PURE__ */ __name((contexts) => {
|
|
202
|
+
if (contexts.length === 0) {
|
|
203
|
+
throw new Error("mergeTransferFactoryContexts requires at least one transfer-factory context");
|
|
204
|
+
}
|
|
205
|
+
const factoryId = contexts[0].factoryId;
|
|
206
|
+
for (const context of contexts) {
|
|
207
|
+
if (context.factoryId !== factoryId) {
|
|
208
|
+
throw new Error(`transfer-factory factoryId mismatch: ${factoryId} vs ${context.factoryId}`);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return {
|
|
212
|
+
factoryId,
|
|
213
|
+
choiceContext: {
|
|
214
|
+
values: mergeChoiceContextValues(contexts.map((context) => context.choiceContext.values))
|
|
215
|
+
},
|
|
216
|
+
disclosedContracts: mergeDisclosedContracts(contexts.flatMap((context) => context.disclosedContracts))
|
|
217
|
+
};
|
|
218
|
+
}, "mergeTransferFactoryContexts");
|
|
219
|
+
var isAvList = /* @__PURE__ */ __name((value) => value !== null && typeof value === "object" && "tag" in value && value.tag === "AV_List" && "value" in value && Array.isArray(value.value), "isAvList");
|
|
220
|
+
var contractIdsFromAnyValue = /* @__PURE__ */ __name((value) => {
|
|
221
|
+
if (value == null || typeof value !== "object" || !("tag" in value)) {
|
|
222
|
+
return [];
|
|
223
|
+
}
|
|
224
|
+
if (value.tag === "AV_ContractId" && "value" in value && typeof value.value === "string") {
|
|
225
|
+
return [
|
|
226
|
+
value.value
|
|
227
|
+
];
|
|
228
|
+
}
|
|
229
|
+
if (isAvList(value)) {
|
|
230
|
+
return value.value.flatMap(contractIdsFromAnyValue);
|
|
231
|
+
}
|
|
232
|
+
return [];
|
|
233
|
+
}, "contractIdsFromAnyValue");
|
|
234
|
+
var discloseUtilityCredentials = /* @__PURE__ */ __name(async (sdk, choiceValue, party, kind) => {
|
|
235
|
+
const label = `${kind} credential`;
|
|
236
|
+
const cids = contractIdsFromAnyValue(choiceValue);
|
|
237
|
+
if (cids.length > TRANSFER_FACTORY_MAX_SENDER_CREDENTIALS) {
|
|
238
|
+
throw new Error(`${label} exceeds ${TRANSFER_FACTORY_MAX_SENDER_CREDENTIALS} CIDs`);
|
|
239
|
+
}
|
|
240
|
+
return Promise.all(cids.map(async (cid) => {
|
|
241
|
+
const { created, archived } = await sdk.fetchEventsByContractId(cid, [
|
|
242
|
+
party
|
|
243
|
+
]);
|
|
244
|
+
if (!created || archived) throw new Error(`${label} ${cid} is missing or archived`);
|
|
245
|
+
if (!created.templateId.endsWith(":Utility.Credential.V0.Credential:Credential")) {
|
|
246
|
+
throw new Error(`${label} ${cid} is not the expected template`);
|
|
247
|
+
}
|
|
248
|
+
if (!isTrustedOrigin(created, party, "holder")) {
|
|
249
|
+
throw new Error(`${label} ${cid} is not a trusted holder origin`);
|
|
250
|
+
}
|
|
251
|
+
const disclosure = await sdk.createDisclosure(cid, [
|
|
252
|
+
party
|
|
253
|
+
]);
|
|
254
|
+
if (!disclosure) throw new Error(`Failed to create disclosure for ${label}: ${cid}`);
|
|
255
|
+
return disclosure;
|
|
256
|
+
}));
|
|
257
|
+
}, "discloseUtilityCredentials");
|
|
258
|
+
var mergeChoiceContextValues = /* @__PURE__ */ __name((maps) => {
|
|
259
|
+
const merged = {};
|
|
260
|
+
for (const map of maps) {
|
|
261
|
+
for (const [key, incoming] of Object.entries(map)) {
|
|
262
|
+
const existing = merged[key];
|
|
263
|
+
if (existing === void 0) {
|
|
264
|
+
merged[key] = incoming;
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
if (isAvList(existing) && isAvList(incoming)) {
|
|
268
|
+
const seen = new Set(existing.value.map((element) => JSON.stringify(element)));
|
|
269
|
+
const value = [
|
|
270
|
+
...existing.value
|
|
271
|
+
];
|
|
272
|
+
for (const element of incoming.value) {
|
|
273
|
+
const elementKey = JSON.stringify(element);
|
|
274
|
+
if (seen.has(elementKey)) continue;
|
|
275
|
+
seen.add(elementKey);
|
|
276
|
+
value.push(element);
|
|
277
|
+
}
|
|
278
|
+
merged[key] = {
|
|
279
|
+
tag: "AV_List",
|
|
280
|
+
value
|
|
281
|
+
};
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
284
|
+
if (JSON.stringify(existing) !== JSON.stringify(incoming)) {
|
|
285
|
+
throw new Error(`transfer-factory choice context key "${key}" has conflicting values`);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
return merged;
|
|
290
|
+
}, "mergeChoiceContextValues");
|
|
291
|
+
var mergeDisclosedContracts = /* @__PURE__ */ __name((contracts) => {
|
|
292
|
+
const byId = /* @__PURE__ */ new Map();
|
|
293
|
+
for (const contract of contracts) {
|
|
294
|
+
const existing = byId.get(contract.contractId);
|
|
295
|
+
if (!existing) {
|
|
296
|
+
byId.set(contract.contractId, contract);
|
|
297
|
+
continue;
|
|
298
|
+
}
|
|
299
|
+
if (existing.createdEventBlob !== contract.createdEventBlob || existing.templateId !== contract.templateId || existing.synchronizerId !== contract.synchronizerId) {
|
|
300
|
+
throw new Error(`transfer-factory disclosed contract ${contract.contractId} has conflicting disclosure`);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return [
|
|
304
|
+
...byId.values()
|
|
305
|
+
];
|
|
306
|
+
}, "mergeDisclosedContracts");
|
|
307
|
+
var fetchCallbackHoldings = /* @__PURE__ */ __name(async (sdk, owner, offset, instrumentId) => {
|
|
308
|
+
const interfaceId = "#splice-api-token-holding-v1:Splice.Api.Token.HoldingV1:Holding";
|
|
309
|
+
const contracts = await sdk.queryActiveContractsByInterface([
|
|
310
|
+
owner
|
|
311
|
+
], offset, [
|
|
312
|
+
interfaceId
|
|
313
|
+
], {
|
|
314
|
+
includeCreatedEventBlob: true
|
|
315
|
+
});
|
|
316
|
+
return contracts.filter((contract) => {
|
|
317
|
+
const view = callbackInterfaceView(contract, interfaceId);
|
|
318
|
+
const asset = view?.instrumentId;
|
|
319
|
+
return view?.owner === owner && asset?.admin === instrumentId.admin && asset?.id === instrumentId.id && view.lock == null;
|
|
320
|
+
});
|
|
321
|
+
}, "fetchCallbackHoldings");
|
|
322
|
+
var partyIdFromRegistryFingerprint = /* @__PURE__ */ __name((registry, fingerprint) => {
|
|
323
|
+
const canonical = fingerprint.toLowerCase();
|
|
324
|
+
const hints = textMapToRecord(registry.fingerprintToHint);
|
|
325
|
+
const hint = hints[canonical] ?? hints[fingerprint];
|
|
326
|
+
if (!hint) throw new Error(`Fingerprint ${canonical} not found in registry fingerprintToHint`);
|
|
327
|
+
return `${hint}::1220${canonical}`;
|
|
328
|
+
}, "partyIdFromRegistryFingerprint");
|
|
329
|
+
|
|
330
|
+
export { assertSafeRegistryUrl, contractIdsFromAnyValue, discloseUtilityCredentials, discoveryUrlsForAppUid, fetchCallbackHoldings, fetchMergedTransferFactoryContext, fetchTransferFactoryContext, fetchTransferInstructionRegistryContext, mergeDisclosedContracts, mergeTransferFactoryContexts, partyIdFromRegistryFingerprint, postFactoryContext, postRegistryJson };
|
|
331
|
+
//# sourceMappingURL=L64D74BZ.js.map
|
|
332
|
+
//# sourceMappingURL=L64D74BZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/refresh/registry-context.ts"],"names":["TEMPLATE_ID_DISCOVERY_REGISTRY","TRANSFER_FACTORY_RELATIVE_PATH","CONTEXT_PROBE_EXECUTE_BEFORE_WINDOW_MS","TRANSFER_FACTORY_MAX_SENDER_CREDENTIALS","MAX_RESPONSE_BYTES","textMapToRecord","map","entries","Array","isArray","filter","entry","length","Object","undefined","Error","String","fromEntries","key","value","nonEmptyString","z","string","min","factoryResponseSchema","object","factoryId","choiceContext","choiceContextData","values","record","unknown","optional","disclosedContracts","array","templateId","contractId","createdEventBlob","synchronizerId","assertSafeRegistryUrl","registryBaseUrl","opts","parsed","URL","label","username","password","protocol","toLowerCase","host","hostname","isLoopback","environment","postRegistryJson","url","body","options","signal","AbortSignal","timeout","timeoutMs","response","fetch","method","headers","redirect","JSON","stringify","reader","getReader","chunks","size","done","read","byteLength","cancel","probeName","push","releaseLock","ok","status","get","includes","bytes","Uint8Array","offset","chunk","set","data","parse","TextDecoder","decode","postFactoryContext","safeParse","success","fetchTransferInstructionRegistryContext","choice","base","endsWith","encodeURIComponent","toString","shape","excludeDebugFields","discoveryUrlsForAppUid","sdk","informee","appUid","registries","queryActiveContracts","templateIds","flatMap","registry","isTrustedOrigin","createdEvent","urlMap","createArgument","fetchTransferFactoryContext","instrumentId","sender","receiver","amount","inputHoldingCids","requestedAt","Date","toISOString","executeBefore","choiceArguments","expectedAdmin","admin","transfer","meta","extraArgs","context","fetchMergedTransferFactoryContext","receivers","probeOptions","uniqueReceivers","Set","sort","contexts","Promise","all","mergeTransferFactoryContexts","mergeChoiceContextValues","mergeDisclosedContracts","isAvList","tag","contractIdsFromAnyValue","discloseUtilityCredentials","choiceValue","party","kind","cids","cid","created","archived","fetchEventsByContractId","disclosure","createDisclosure","maps","merged","incoming","existing","seen","element","elementKey","has","add","contracts","byId","Map","contract","fetchCallbackHoldings","owner","interfaceId","queryActiveContractsByInterface","includeCreatedEventBlob","view","callbackInterfaceView","asset","id","lock","partyIdFromRegistryFingerprint","fingerprint","canonical","hints","fingerprintToHint","hint"],"mappings":"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","file":"L64D74BZ.js","sourcesContent":["import type { ContractId } from '@daml/types';\nimport { z } from 'zod';\n\nimport type { ChoiceContext, InstrumentId } from '../client/amulet';\nimport type { JsActiveContract } from '../open-api/models';\nimport type { CantonSdk } from '../sdk';\nimport type { CantonDisclosedContract } from '../transaction';\nimport { isTrustedOrigin } from '../trusted-origin';\nimport { callbackInterfaceView } from './callback-contracts';\n\nconst TEMPLATE_ID_DISCOVERY_REGISTRY =\n '#layerzero-discovery-registry:DiscoveryRegistry:DiscoveryRegistry';\nconst TRANSFER_FACTORY_RELATIVE_PATH = 'registry/transfer-instruction/v1/transfer-factory';\nconst CONTEXT_PROBE_EXECUTE_BEFORE_WINDOW_MS = 60 * 60 * 1000;\nconst TRANSFER_FACTORY_MAX_SENDER_CREDENTIALS = 8;\nconst MAX_RESPONSE_BYTES = 256 * 1024;\n\nexport type TransferFactoryContext = {\n factoryId: string;\n choiceContext: ChoiceContext;\n disclosedContracts: CantonDisclosedContract[];\n};\n\nconst textMapToRecord = (map: unknown): Record<string, string> => {\n const entries = Array.isArray(map)\n ? map.filter(\n (entry): entry is [unknown, unknown] => Array.isArray(entry) && entry.length >= 2,\n )\n : map && typeof map === 'object'\n ? Object.entries(map)\n : map == null\n ? []\n : undefined;\n if (!entries) throw new Error(`Unexpected Daml map shape: ${String(map)}`);\n return Object.fromEntries(entries.map(([key, value]) => [String(key), String(value)]));\n};\n\nconst nonEmptyString = z.string().min(1);\nconst factoryResponseSchema = z.object({\n factoryId: nonEmptyString,\n choiceContext: z.object({\n choiceContextData: z\n .object({ values: z.record(z.string(), z.unknown()).optional() })\n .optional(),\n disclosedContracts: z\n .array(\n z.object({\n templateId: nonEmptyString,\n contractId: nonEmptyString,\n createdEventBlob: nonEmptyString,\n synchronizerId: nonEmptyString,\n }),\n )\n .optional(),\n }),\n});\n\nexport const assertSafeRegistryUrl = (\n registryBaseUrl: string,\n opts: { environment?: string; label: string },\n): URL => {\n let parsed: URL;\n try {\n parsed = new URL(registryBaseUrl);\n } catch {\n throw new Error(`${opts.label} is not a valid URL`);\n }\n if (parsed.username !== '' || parsed.password !== '') {\n throw new Error(`${opts.label} must not include credentials`);\n }\n const protocol = parsed.protocol.toLowerCase();\n if (protocol === 'https:') return parsed;\n const host = parsed.hostname.toLowerCase();\n const isLoopback = host === 'localhost' || host === '127.0.0.1' || host === '::1';\n if (opts.environment === 'sandbox' && protocol === 'http:' && isLoopback) return parsed;\n throw new Error(\n opts.environment === 'sandbox'\n ? `${opts.label} must use https (http only allowed for localhost / 127.0.0.1 / ::1)`\n : `${opts.label} must use https`,\n );\n};\n\nexport const postRegistryJson = async (\n url: string,\n body: unknown,\n options: { timeoutMs?: number; probeName: string; headers?: Record<string, string> },\n): Promise<unknown> => {\n const signal = AbortSignal.timeout(options.timeoutMs ?? 10_000);\n const response = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...options.headers },\n signal,\n redirect: 'error',\n body: JSON.stringify(body),\n });\n const reader = response.body?.getReader();\n const chunks: Uint8Array[] = [];\n let size = 0;\n try {\n while (reader) {\n const { done, value } = await reader.read();\n if (done) break;\n size += value.byteLength;\n if (size > MAX_RESPONSE_BYTES) {\n await reader.cancel();\n throw new Error(\n `${options.probeName} response from ${url} exceeds ${MAX_RESPONSE_BYTES} bytes`,\n );\n }\n chunks.push(value);\n }\n } finally {\n reader?.releaseLock();\n }\n if (!response.ok) {\n throw new Error(\n `Failed to fetch ${options.probeName} context from ${url}: HTTP ${response.status}`,\n );\n }\n if (!(response.headers.get('content-type') ?? '').toLowerCase().includes('application/json')) {\n throw new Error(`${options.probeName} response from ${url} must be application/json`);\n }\n const bytes = new Uint8Array(size);\n let offset = 0;\n for (const chunk of chunks) {\n bytes.set(chunk, offset);\n offset += chunk.byteLength;\n }\n let data: unknown;\n try {\n data = JSON.parse(new TextDecoder().decode(bytes));\n } catch {\n throw new Error(`${options.probeName} response from ${url} is not valid JSON`);\n }\n return data;\n};\n\nexport const postFactoryContext = async (\n url: string,\n body: unknown,\n options: { timeoutMs?: number; probeName: string; headers?: Record<string, string> },\n): Promise<TransferFactoryContext> => {\n const parsed = factoryResponseSchema.safeParse(await postRegistryJson(url, body, options));\n if (!parsed.success)\n throw new Error(`${options.probeName} response from ${url} failed schema validation`);\n return {\n factoryId: parsed.data.factoryId,\n choiceContext: { values: parsed.data.choiceContext.choiceContextData?.values ?? {} },\n disclosedContracts: parsed.data.choiceContext.disclosedContracts ?? [],\n };\n};\n\nexport const fetchTransferInstructionRegistryContext = async (\n registryBaseUrl: string,\n contractId: string,\n choice: 'accept' | 'reject' | 'withdraw',\n environment?: string,\n): Promise<Omit<TransferFactoryContext, 'factoryId'>> => {\n assertSafeRegistryUrl(registryBaseUrl, {\n environment,\n label: 'transfer-instruction discovery URL',\n });\n const base = registryBaseUrl.endsWith('/') ? registryBaseUrl : `${registryBaseUrl}/`;\n const url = new URL(\n `registry/transfer-instruction/v1/${encodeURIComponent(contractId)}/choice-contexts/${choice}`,\n base,\n ).toString();\n const parsed = factoryResponseSchema.shape.choiceContext.safeParse(\n await postRegistryJson(\n url,\n { excludeDebugFields: true },\n { probeName: `transfer-instruction ${choice}` },\n ),\n );\n if (!parsed.success)\n throw new Error(`transfer-instruction ${choice} response failed schema validation`);\n return {\n choiceContext: { values: parsed.data.choiceContextData?.values ?? {} },\n disclosedContracts: parsed.data.disclosedContracts ?? [],\n };\n};\n\nexport const discoveryUrlsForAppUid = async (\n sdk: CantonSdk,\n informee: string,\n offset: number,\n appUid: string,\n): Promise<string[]> => {\n const registries = await sdk.queryActiveContracts(informee, offset, {\n templateIds: [TEMPLATE_ID_DISCOVERY_REGISTRY],\n });\n return registries.flatMap((registry) => {\n if (!isTrustedOrigin(registry.createdEvent, informee, 'handler')) {\n return [];\n }\n const urlMap = textMapToRecord(\n (registry.createdEvent.createArgument as { urlMap: unknown }).urlMap,\n );\n const url = urlMap[appUid];\n return url ? [url] : [];\n });\n};\n\nexport type FetchTransferFactoryContextOptions = {\n environment?: string;\n inputHoldingCids: string[];\n sender: string;\n receiver: string;\n amount: string;\n timeoutMs?: number;\n requestedAt?: string;\n executeBefore?: string;\n};\n\nexport type FetchMergedTransferFactoryContextOptions = Omit<\n FetchTransferFactoryContextOptions,\n 'receiver'\n> & {\n receivers: string[];\n};\n\nexport const fetchTransferFactoryContext = async (\n registryBaseUrl: string,\n instrumentId: InstrumentId,\n options: FetchTransferFactoryContextOptions,\n): Promise<TransferFactoryContext> => {\n assertSafeRegistryUrl(registryBaseUrl, {\n environment: options.environment,\n label: 'transfer-factory discovery URL',\n });\n\n const base = registryBaseUrl.endsWith('/') ? registryBaseUrl : `${registryBaseUrl}/`;\n const url = new URL(TRANSFER_FACTORY_RELATIVE_PATH, base).toString();\n\n const { sender, receiver, amount, inputHoldingCids } = options;\n\n const requestedAt = options.requestedAt ?? new Date().toISOString();\n const executeBefore =\n options.executeBefore ??\n new Date(Date.parse(requestedAt) + CONTEXT_PROBE_EXECUTE_BEFORE_WINDOW_MS).toISOString();\n\n return postFactoryContext(\n url,\n {\n choiceArguments: {\n expectedAdmin: instrumentId.admin,\n transfer: {\n sender,\n receiver,\n amount,\n instrumentId,\n requestedAt,\n executeBefore,\n inputHoldingCids,\n meta: { values: {} },\n },\n extraArgs: { context: { values: {} }, meta: { values: {} } },\n },\n },\n { timeoutMs: options.timeoutMs, probeName: 'transfer-factory' },\n );\n};\n\nexport const fetchMergedTransferFactoryContext = async (\n registryBaseUrl: string,\n instrumentId: InstrumentId,\n options: FetchMergedTransferFactoryContextOptions,\n): Promise<TransferFactoryContext> => {\n const { receivers, ...probeOptions } = options;\n const uniqueReceivers = [...new Set(receivers)].sort();\n if (uniqueReceivers.length === 0) {\n throw new Error('fetchMergedTransferFactoryContext requires at least one receiver');\n }\n\n const contexts = await Promise.all(\n uniqueReceivers.map((receiver) =>\n fetchTransferFactoryContext(registryBaseUrl, instrumentId, {\n ...probeOptions,\n receiver,\n }),\n ),\n );\n return mergeTransferFactoryContexts(contexts);\n};\n\nexport const mergeTransferFactoryContexts = (\n contexts: TransferFactoryContext[],\n): TransferFactoryContext => {\n if (contexts.length === 0) {\n throw new Error(\n 'mergeTransferFactoryContexts requires at least one transfer-factory context',\n );\n }\n\n const factoryId = contexts[0]!.factoryId;\n for (const context of contexts) {\n if (context.factoryId !== factoryId) {\n throw new Error(\n `transfer-factory factoryId mismatch: ${factoryId} vs ${context.factoryId}`,\n );\n }\n }\n\n return {\n factoryId,\n choiceContext: {\n values: mergeChoiceContextValues(\n contexts.map((context) => context.choiceContext.values),\n ),\n },\n disclosedContracts: mergeDisclosedContracts(\n contexts.flatMap((context) => context.disclosedContracts),\n ),\n };\n};\n\nconst isAvList = (value: unknown): value is { tag: 'AV_List'; value: unknown[] } =>\n value !== null &&\n typeof value === 'object' &&\n 'tag' in value &&\n value.tag === 'AV_List' &&\n 'value' in value &&\n Array.isArray(value.value);\n\nexport const contractIdsFromAnyValue = (value: unknown): string[] => {\n if (value == null || typeof value !== 'object' || !('tag' in value)) {\n return [];\n }\n if (value.tag === 'AV_ContractId' && 'value' in value && typeof value.value === 'string') {\n return [value.value];\n }\n if (isAvList(value)) {\n return value.value.flatMap(contractIdsFromAnyValue);\n }\n return [];\n};\n\nexport const discloseUtilityCredentials = async (\n sdk: CantonSdk,\n choiceValue: unknown,\n party: string,\n kind: string,\n): Promise<CantonDisclosedContract[]> => {\n const label = `${kind} credential`;\n const cids = contractIdsFromAnyValue(choiceValue);\n if (cids.length > TRANSFER_FACTORY_MAX_SENDER_CREDENTIALS) {\n throw new Error(`${label} exceeds ${TRANSFER_FACTORY_MAX_SENDER_CREDENTIALS} CIDs`);\n }\n return Promise.all(\n cids.map(async (cid) => {\n const { created, archived } = await sdk.fetchEventsByContractId(cid, [party]);\n if (!created || archived) throw new Error(`${label} ${cid} is missing or archived`);\n if (!created.templateId.endsWith(':Utility.Credential.V0.Credential:Credential')) {\n throw new Error(`${label} ${cid} is not the expected template`);\n }\n if (!isTrustedOrigin(created, party, 'holder')) {\n throw new Error(`${label} ${cid} is not a trusted holder origin`);\n }\n const disclosure = await sdk.createDisclosure(cid as ContractId<object>, [party]);\n if (!disclosure) throw new Error(`Failed to create disclosure for ${label}: ${cid}`);\n return disclosure;\n }),\n );\n};\n\nconst mergeChoiceContextValues = (maps: ChoiceContext['values'][]): ChoiceContext['values'] => {\n const merged: ChoiceContext['values'] = {};\n for (const map of maps) {\n for (const [key, incoming] of Object.entries(map)) {\n const existing = merged[key];\n if (existing === undefined) {\n merged[key] = incoming;\n continue;\n }\n if (isAvList(existing) && isAvList(incoming)) {\n const seen = new Set(existing.value.map((element) => JSON.stringify(element)));\n const value = [...existing.value];\n for (const element of incoming.value) {\n const elementKey = JSON.stringify(element);\n if (seen.has(elementKey)) continue;\n seen.add(elementKey);\n value.push(element);\n }\n merged[key] = { tag: 'AV_List', value };\n continue;\n }\n if (JSON.stringify(existing) !== JSON.stringify(incoming)) {\n throw new Error(\n `transfer-factory choice context key \"${key}\" has conflicting values`,\n );\n }\n }\n }\n return merged;\n};\n\nexport const mergeDisclosedContracts = (\n contracts: CantonDisclosedContract[],\n): CantonDisclosedContract[] => {\n const byId = new Map<string, CantonDisclosedContract>();\n for (const contract of contracts) {\n const existing = byId.get(contract.contractId);\n if (!existing) {\n byId.set(contract.contractId, contract);\n continue;\n }\n if (\n existing.createdEventBlob !== contract.createdEventBlob ||\n existing.templateId !== contract.templateId ||\n existing.synchronizerId !== contract.synchronizerId\n ) {\n throw new Error(\n `transfer-factory disclosed contract ${contract.contractId} has conflicting disclosure`,\n );\n }\n }\n return [...byId.values()];\n};\n\nexport const fetchCallbackHoldings = async (\n sdk: CantonSdk,\n owner: string,\n offset: number,\n instrumentId: InstrumentId,\n): Promise<JsActiveContract[]> => {\n const interfaceId = '#splice-api-token-holding-v1:Splice.Api.Token.HoldingV1:Holding';\n const contracts = await sdk.queryActiveContractsByInterface([owner], offset, [interfaceId], {\n includeCreatedEventBlob: true,\n });\n return contracts.filter((contract) => {\n const view = callbackInterfaceView(contract, interfaceId);\n const asset = view?.instrumentId as { admin?: unknown; id?: unknown } | undefined;\n return (\n view?.owner === owner &&\n asset?.admin === instrumentId.admin &&\n asset?.id === instrumentId.id &&\n view.lock == null\n );\n });\n};\n\nexport const partyIdFromRegistryFingerprint = (\n registry: { fingerprintToHint: unknown },\n fingerprint: string,\n): string => {\n const canonical = fingerprint.toLowerCase();\n const hints = textMapToRecord(registry.fingerprintToHint);\n const hint = hints[canonical] ?? hints[fingerprint];\n if (!hint) throw new Error(`Fingerprint ${canonical} not found in registry fingerprintToHint`);\n return `${hint}::1220${canonical}`;\n};\n"]}
|