@layerzerolabs/common-canton 0.2.120 → 0.2.122
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/.turbo/turbo-build.log +800 -783
- package/.turbo/turbo-test.log +19 -50
- package/dist/{MFVQ6EHM.js → 22ZNNS3H.js} +3 -3
- package/dist/{MFVQ6EHM.js.map → 22ZNNS3H.js.map} +1 -1
- package/dist/{Q3RL6UXD.js → 2UWZKS5E.js} +4 -4
- package/dist/{Q3RL6UXD.js.map → 2UWZKS5E.js.map} +1 -1
- package/dist/{CAJCIAM3.js → 333Q6X6C.js} +3 -3
- package/dist/{CAJCIAM3.js.map → 333Q6X6C.js.map} +1 -1
- package/dist/{HRZTWWO4.js → 3ESWXEO3.js} +3 -3
- package/dist/{HRZTWWO4.js.map → 3ESWXEO3.js.map} +1 -1
- package/dist/{AYF4OAKH.js → 4G6A7TFX.js} +4 -4
- package/dist/4G6A7TFX.js.map +1 -0
- package/dist/{5OA7RJHH.js → 4PEF77PU.js} +3 -3
- package/dist/{5OA7RJHH.js.map → 4PEF77PU.js.map} +1 -1
- package/dist/{M5WKPPPH.js → 4SOUDUP7.js} +3 -3
- package/dist/{M5WKPPPH.js.map → 4SOUDUP7.js.map} +1 -1
- package/dist/4WZTQJXP.js +30 -0
- package/dist/4WZTQJXP.js.map +1 -0
- package/dist/{QYQWHMQM.js → 5KFMHJZB.js} +3 -3
- package/dist/{QYQWHMQM.js.map → 5KFMHJZB.js.map} +1 -1
- package/dist/7JX6NIYS.js +3 -0
- package/dist/7JX6NIYS.js.map +1 -0
- package/dist/{BL22CZFA.js → A2ZXPTGE.js} +4 -4
- package/dist/{BL22CZFA.js.map → A2ZXPTGE.js.map} +1 -1
- package/dist/{3T46OKQU.js → AVC5GQFU.js} +3 -3
- package/dist/{3T46OKQU.js.map → AVC5GQFU.js.map} +1 -1
- package/dist/{45YQNHS2.js → BHESIRKK.js} +3 -3
- package/dist/{45YQNHS2.js.map → BHESIRKK.js.map} +1 -1
- package/dist/CXQSVBVW.js +67 -0
- package/dist/CXQSVBVW.js.map +1 -0
- package/dist/{WXYN3MFC.js → CYZU3DTJ.js} +3 -3
- package/dist/{WXYN3MFC.js.map → CYZU3DTJ.js.map} +1 -1
- package/dist/{LL7Z56UN.js → D3AV6J7R.js} +3 -3
- package/dist/{LL7Z56UN.js.map → D3AV6J7R.js.map} +1 -1
- package/dist/{EWDK2D2A.js → DDAINXFD.js} +3 -3
- package/dist/{EWDK2D2A.js.map → DDAINXFD.js.map} +1 -1
- package/dist/{JSG7MGHH.js → EPHLTMJZ.js} +3 -3
- package/dist/{JSG7MGHH.js.map → EPHLTMJZ.js.map} +1 -1
- package/dist/{ZPOY5WJ2.js → FZGCL63V.js} +3 -3
- package/dist/{ZPOY5WJ2.js.map → FZGCL63V.js.map} +1 -1
- package/dist/{KBZ6YXX4.js → GHWJBJNB.js} +3 -3
- package/dist/{KBZ6YXX4.js.map → GHWJBJNB.js.map} +1 -1
- package/dist/{7GI6QGS6.js → H3BWRDYY.js} +3 -3
- package/dist/{7GI6QGS6.js.map → H3BWRDYY.js.map} +1 -1
- package/dist/{WSLU3JGO.js → HU7X7G5L.js} +3 -3
- package/dist/{WSLU3JGO.js.map → HU7X7G5L.js.map} +1 -1
- package/dist/{7IWE7Y2N.js → JA7BSC7C.js} +4 -4
- package/dist/{7IWE7Y2N.js.map → JA7BSC7C.js.map} +1 -1
- package/dist/{JXKVPYCE.js → JH2I4JGJ.js} +3 -3
- package/dist/{JXKVPYCE.js.map → JH2I4JGJ.js.map} +1 -1
- package/dist/{WHTAP4A3.js → JJKMXRP7.js} +9 -7
- package/dist/JJKMXRP7.js.map +1 -0
- package/dist/{7STDATVZ.js → JUZKQC2G.js} +3 -3
- package/dist/{7STDATVZ.js.map → JUZKQC2G.js.map} +1 -1
- package/dist/{QZJONP6W.js → KCFOSGPU.js} +3 -3
- package/dist/{QZJONP6W.js.map → KCFOSGPU.js.map} +1 -1
- package/dist/{4GYCD3G4.js → KIQAFHKC.js} +3 -3
- package/dist/{4GYCD3G4.js.map → KIQAFHKC.js.map} +1 -1
- package/dist/{FXR2Z54G.js → KJRFPBY4.js} +3 -3
- package/dist/{FXR2Z54G.js.map → KJRFPBY4.js.map} +1 -1
- package/dist/M3GPMXME.js +12 -0
- package/dist/M3GPMXME.js.map +1 -0
- package/dist/{AMLJTQWB.js → N3INXXRG.js} +3 -3
- package/dist/{AMLJTQWB.js.map → N3INXXRG.js.map} +1 -1
- package/dist/{GSEDMLUC.js → NJW7UX2A.js} +3 -3
- package/dist/{GSEDMLUC.js.map → NJW7UX2A.js.map} +1 -1
- package/dist/{KTNEUXUI.js → NRGCZ4DG.js} +5 -5
- package/dist/{KTNEUXUI.js.map → NRGCZ4DG.js.map} +1 -1
- package/dist/NRSV2VHQ.js +335 -0
- package/dist/NRSV2VHQ.js.map +1 -0
- package/dist/{DAP5XJGH.js → NX67V54F.js} +3 -3
- package/dist/{DAP5XJGH.js.map → NX67V54F.js.map} +1 -1
- package/dist/{UBHUOSK3.js → OIFJOKIO.js} +3 -3
- package/dist/{UBHUOSK3.js.map → OIFJOKIO.js.map} +1 -1
- package/dist/{NKXEPWZV.js → OO73Z5K6.js} +4 -4
- package/dist/{NKXEPWZV.js.map → OO73Z5K6.js.map} +1 -1
- package/dist/{2UKHG3HM.js → OUEL7K27.js} +3 -3
- package/dist/{2UKHG3HM.js.map → OUEL7K27.js.map} +1 -1
- package/dist/{KH7RP6Q4.js → OWXOYIMA.js} +3 -3
- package/dist/{KH7RP6Q4.js.map → OWXOYIMA.js.map} +1 -1
- package/dist/{CLAE73FR.js → OZZHAISY.js} +3 -3
- package/dist/{CLAE73FR.js.map → OZZHAISY.js.map} +1 -1
- package/dist/{IIQYRITU.js → PDIG5OUV.js} +3 -3
- package/dist/{IIQYRITU.js.map → PDIG5OUV.js.map} +1 -1
- package/dist/QAKOQQ7E.js +71 -0
- package/dist/QAKOQQ7E.js.map +1 -0
- package/dist/{NS763D57.js → QJMVWOLL.js} +3 -3
- package/dist/{NS763D57.js.map → QJMVWOLL.js.map} +1 -1
- package/dist/{KVXEYMWG.js → QNO3456Y.js} +3 -3
- package/dist/{KVXEYMWG.js.map → QNO3456Y.js.map} +1 -1
- package/dist/{TDLALQCM.js → R5PCNLRD.js} +3 -3
- package/dist/{TDLALQCM.js.map → R5PCNLRD.js.map} +1 -1
- package/dist/{K2SFNQJC.js → RHNMCG3C.js} +4 -4
- package/dist/{K2SFNQJC.js.map → RHNMCG3C.js.map} +1 -1
- package/dist/RVQWP4JU.js +76 -0
- package/dist/RVQWP4JU.js.map +1 -0
- package/dist/{73I7CBP3.js → SNDN7G42.js} +3 -3
- package/dist/{73I7CBP3.js.map → SNDN7G42.js.map} +1 -1
- package/dist/{ALC4M7WK.js → T4AL4FJH.js} +3 -3
- package/dist/{ALC4M7WK.js.map → T4AL4FJH.js.map} +1 -1
- package/dist/{5HH7PZW3.js → TZTIULG5.js} +29 -29
- package/dist/{5HH7PZW3.js.map → TZTIULG5.js.map} +1 -1
- package/dist/{5E77SJL7.js → VT3WUH5Q.js} +8 -7
- package/dist/VT3WUH5Q.js.map +1 -0
- package/dist/WKC6X2E3.js +27 -0
- package/dist/WKC6X2E3.js.map +1 -0
- package/dist/WLV6EHDB.js +60 -0
- package/dist/WLV6EHDB.js.map +1 -0
- package/dist/{HLWLB4AY.js → WUXXJWII.js} +3 -3
- package/dist/{HLWLB4AY.js.map → WUXXJWII.js.map} +1 -1
- package/dist/client/amulet.d.ts.map +1 -1
- package/dist/client/amulet.js +1 -1
- package/dist/client/canton-client.js +125 -125
- package/dist/client/grpc.d.ts +104 -18
- package/dist/client/grpc.d.ts.map +1 -1
- package/dist/client/grpc.js +7 -1
- package/dist/client/index.d.ts +5 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +132 -128
- package/dist/client/topology/mappings.d.ts +53 -0
- package/dist/client/topology/mappings.d.ts.map +1 -0
- package/dist/client/topology/mappings.js +6 -0
- package/dist/client/topology/mappings.js.map +1 -0
- package/dist/client/topology/signing.d.ts +23 -0
- package/dist/client/topology/signing.d.ts.map +1 -0
- package/dist/client/topology/signing.js +4 -0
- package/dist/client/topology/signing.js.map +1 -0
- package/dist/client/topology/synchronizer-connectivity.d.ts +26 -0
- package/dist/client/topology/synchronizer-connectivity.d.ts.map +1 -0
- package/dist/client/topology/synchronizer-connectivity.js +4 -0
- package/dist/client/topology/synchronizer-connectivity.js.map +1 -0
- package/dist/client/topology/types.d.ts +120 -0
- package/dist/client/topology/types.d.ts.map +1 -0
- package/dist/client/topology/types.js +3 -0
- package/dist/client/topology/types.js.map +1 -0
- package/dist/client/topology/utils.d.ts +38 -0
- package/dist/client/topology/utils.d.ts.map +1 -0
- package/dist/client/topology/utils.js +6 -0
- package/dist/client/topology/utils.js.map +1 -0
- package/dist/client/utils.d.ts +17 -0
- package/dist/client/utils.d.ts.map +1 -1
- package/dist/client/utils.js +1 -1
- package/dist/events.js +2 -2
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +141 -136
- package/dist/minFee.d.ts +6 -0
- package/dist/minFee.d.ts.map +1 -0
- package/dist/minFee.js +5 -0
- package/dist/minFee.js.map +1 -0
- package/dist/open-api/apis/DefaultApi.js +123 -123
- package/dist/open-api/apis/index.js +123 -123
- package/dist/open-api/index.js +123 -123
- package/dist/open-api/models/Command.js +3 -3
- package/dist/open-api/models/Completion.js +1 -1
- package/dist/open-api/models/Completion1.js +1 -1
- package/dist/open-api/models/CompletionResponse.js +5 -5
- package/dist/open-api/models/CompletionResponseOneOf.js +1 -1
- package/dist/open-api/models/CompletionStreamResponse.js +5 -5
- package/dist/open-api/models/CreateUserRequest.js +7 -7
- package/dist/open-api/models/CumulativeFilter.js +2 -2
- 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 +2 -2
- package/dist/open-api/models/EventFormat.js +2 -2
- package/dist/open-api/models/FeaturesDescriptor.js +2 -2
- package/dist/open-api/models/Filters.js +2 -2
- package/dist/open-api/models/GetActiveContractsRequest.js +2 -2
- package/dist/open-api/models/GetEventsByContractIdRequest.js +2 -2
- package/dist/open-api/models/GetLedgerApiVersionResponse.js +3 -3
- package/dist/open-api/models/GetTransactionByIdRequest.js +2 -2
- package/dist/open-api/models/GetTransactionByOffsetRequest.js +2 -2
- package/dist/open-api/models/GetUpdateByIdRequest.js +2 -2
- package/dist/open-api/models/GetUpdateByOffsetRequest.js +2 -2
- package/dist/open-api/models/GetUpdatesRequest.js +2 -2
- 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 +2 -2
- package/dist/open-api/models/JsCommands.js +5 -5
- package/dist/open-api/models/JsExecuteSubmissionAndWaitForTransactionRequest.js +5 -5
- package/dist/open-api/models/JsExecuteSubmissionAndWaitRequest.js +3 -3
- package/dist/open-api/models/JsExecuteSubmissionRequest.js +3 -3
- package/dist/open-api/models/JsGetUpdateResponse.js +19 -19
- package/dist/open-api/models/JsGetUpdateTreesResponse.js +10 -10
- package/dist/open-api/models/JsGetUpdatesResponse.js +19 -19
- package/dist/open-api/models/JsPrepareSubmissionRequest.js +5 -5
- package/dist/open-api/models/JsReassignment.js +4 -4
- package/dist/open-api/models/JsReassignmentEvent.js +3 -3
- package/dist/open-api/models/JsSubmitAndWaitForReassignmentResponse.js +5 -5
- package/dist/open-api/models/JsSubmitAndWaitForTransactionRequest.js +8 -8
- package/dist/open-api/models/JsTopologyTransaction.js +7 -7
- package/dist/open-api/models/Kind.js +5 -5
- package/dist/open-api/models/ListUserRightsResponse.js +7 -7
- package/dist/open-api/models/Operation.js +4 -4
- package/dist/open-api/models/Reassignment.js +5 -5
- package/dist/open-api/models/Reassignment1.js +5 -5
- 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/SubmitAndWaitForReassignmentRequest.js +2 -2
- package/dist/open-api/models/TopologyEvent.js +6 -6
- package/dist/open-api/models/TopologyEventEvent.js +5 -5
- package/dist/open-api/models/TopologyTransaction.js +8 -8
- package/dist/open-api/models/TransactionFilter.js +2 -2
- package/dist/open-api/models/TransactionFormat.js +2 -2
- package/dist/open-api/models/Update.js +18 -18
- package/dist/open-api/models/Update1.js +9 -9
- package/dist/open-api/models/Update1OneOf1.js +6 -6
- package/dist/open-api/models/UpdateFormat.js +2 -2
- package/dist/open-api/models/UpdateOneOf1.js +6 -6
- package/dist/open-api/models/UpdateOneOf2.js +9 -9
- package/dist/open-api/models/UpdateVettedPackagesRequest.js +6 -6
- package/dist/open-api/models/VettedPackagesChange.js +5 -5
- package/dist/open-api/models/index.js +122 -122
- package/dist/provider.d.ts +3 -0
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +132 -127
- package/dist/refresh/index.js +2 -2
- package/dist/refresh/resolve.js +2 -2
- package/dist/sdk/index.d.ts +0 -1
- package/dist/sdk/index.d.ts.map +1 -1
- package/dist/transaction.d.ts +353 -144
- package/dist/transaction.d.ts.map +1 -1
- package/dist/transaction.js +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/package.json +12 -10
- package/src/client/amulet.ts +5 -2
- package/src/client/grpc.ts +396 -39
- package/src/client/index.ts +20 -0
- package/src/client/topology/mappings.ts +152 -0
- package/src/client/topology/signing.ts +56 -0
- package/src/client/topology/synchronizer-connectivity.ts +110 -0
- package/src/client/topology/types.ts +133 -0
- package/src/client/topology/utils.ts +93 -0
- package/src/client/utils.ts +47 -9
- package/src/index.ts +5 -29
- package/src/minFee.ts +12 -0
- package/src/provider.ts +11 -3
- package/src/sdk/index.ts +0 -1
- package/src/transaction.ts +25 -4
- package/src/types.ts +15 -0
- package/test/client/amulet.test.ts +64 -0
- package/test/provider.test.ts +22 -0
- package/dist/5E77SJL7.js.map +0 -1
- package/dist/AYF4OAKH.js.map +0 -1
- package/dist/F42TZTWJ.js +0 -33
- package/dist/F42TZTWJ.js.map +0 -1
- package/dist/PQI7CWCR.js +0 -19
- package/dist/PQI7CWCR.js.map +0 -1
- package/dist/WHTAP4A3.js.map +0 -1
- package/dist/XE6H2SH4.js +0 -3
- package/dist/XE6H2SH4.js.map +0 -1
- package/dist/YHW7AKHX.js +0 -62
- package/dist/YHW7AKHX.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client/canton-client.ts"],"names":["CantonClient","config","userId","wallet","DefaultApi","CantonProtocolError","getDsoParty","walletUrl","tokenProvider","fetchDsoParty","getToken","getAmuletContextWithExternalRules","instrumentId","amuletContext","disclosedContracts","fetchAmuletContext","contextWithRules","externalPartyAmuletRulesCid","injectExternalPartyAmuletRules","obj","key","undefined","pascal","charAt","toUpperCase","slice","camel","toLowerCase","err","resp","response","json","catch","context","body","JSON","stringify","parties","includeCreatedEventBlob","Object","fromEntries","map","p","cumulative","identifierFilter","wildcardFilter","value","event","contractId","templateId","createdEventBlob","preparedTransaction","preparedTransactionHash","hashingSchemeVersion","connectedSynchronizers","getV2StateConnectedSynchronizers","synchronizers","s","synchronizerId","filter","id","once","CantonTransportError","uploadDar","dar","opts","bytes","byteOffset","byteLength","buffer","Blob","type","request","vetAllPackages","postV2Dars","skipIfVetted","code","skipped","reason","details","validateDar","then","postV2DarsValidate","listParties","getV2Parties","pageSize","pageToken","partyDetails","party","nextPageToken","listUserRights","apiResponse","getV2UsersUserIdRightsRaw","raw","rights","listUserParties","Set","right","kind","CanActAs","CanReadAs","add","allocateParty","partyIdHint","postV2Parties","allocatePartyRequest","identityProviderId","getPackageId","packageName","getPreferredPackagesRequest","packageVettingRequirements","postV2InteractiveSubmissionPreferredPackages","packageRef","packageReferences","find","ref","packageId","submit","actors","commands","commandId","randomUUID","ledgerEndResponse","getV2StateLedgerEnd","completionOffset","offset","jsCommands","actAs","readAs","postV2CommandsAsyncSubmit","waitForCommand","timeoutMs","poll","limit","streamIdleTimeoutMs","initialBackoffMs","backoffMs","initial","maxBackoffMs","max","beginExclusive","currentBackoff","deadline","Date","now","completionStreamRequest","rawResponse","postV2CommandsCompletionsRaw","responseText","text","completions","parse","item","normalized","completionResponse","offsetCheckpoint","checkpoint","checkpointOffset","Math","completionWrapper","completion","completionCommandId","status","updateId","error","message","remainingTime","sleepTime","min","Promise","resolve","setTimeout","lastCheckedOffset","getEventsByContractIdRequest","eventFormat","filtersByParty","verbose","postV2EventsEventsByContractId","archived","created","createdEvent","createDisclosure","validated","fetchContractById","fetchEventsByContractId","archivedEvent","fetchTransactionByUpdateId","postV2UpdatesUpdateByIdRaw","getUpdateByIdRequest","updateFormat","updateResponse","fetchTransactionByOffset","postV2UpdatesUpdateByOffsetRaw","getUpdateByOffsetRequest","prepareForSigning","jsPrepareSubmissionRequest","verboseHashing","packageIdSelectionPreference","postV2InteractiveSubmissionPrepare","submitSigned","prepared","signatures","jsExecuteSubmissionRequest","partySignatures","sig","format","signature","signedBy","signingAlgorithmSpec","deduplicationPeriod","deduplicationDuration","seconds","nanos","submissionId","postV2InteractiveSubmissionExecute","getLedgerEndOffset","queryActiveContracts","queryActiveContractsByParties","templateIds","queryActiveContractsByInterface","interfaceIds","cumulativeFilter","postV2StateActiveContractsRaw","getActiveContractsRequest","activeAtOffset","rawJson","contractEntry","JsActiveContract","contract","JsActiveContractFromJSON","getUpdates","endInclusive","postV2UpdatesRaw","getUpdatesRequest","includeTransactions","transactionShape","updateResponses","update","length","templateFilter","interfaceId","interfaceFilter","includeInterfaceView","notFoundMessage","Transaction"],"mappings":"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","file":"7IWE7Y2N.js","sourcesContent":["import type { ContractId } from '@daml/types';\nimport { once } from 'es-toolkit';\nimport { randomUUID } from 'node:crypto';\n\nimport { CantonProtocolError, CantonTransportError } from '../errors';\nimport {\n DefaultApi,\n type PostV2CommandsAsyncSubmitRequest,\n type PostV2CommandsCompletionsRequest,\n type PostV2DarsRequest,\n type PostV2DarsValidateRequest,\n type PostV2EventsEventsByContractIdRequest,\n type PostV2InteractiveSubmissionExecuteRequest,\n type PostV2InteractiveSubmissionPreferredPackagesRequest,\n type PostV2InteractiveSubmissionPrepareRequest,\n} from '../open-api/apis/DefaultApi';\nimport {\n type ArchivedEvent,\n type Command,\n type CreatedEvent,\n type CumulativeFilter,\n type DisclosedContract,\n type JsActiveContract,\n JsActiveContractFromJSON,\n} from '../open-api/models';\nimport type { Configuration } from '../open-api/runtime';\nimport type {\n ExternalSignature,\n PreparedTransaction,\n SubmitActors,\n SubmitResult,\n UserRight,\n WaitOptions,\n WaitResult,\n} from '../types';\nimport {\n type AmuletContextResult,\n type CantonClientWalletConfig,\n fetchAmuletContext,\n fetchDsoParty,\n injectExternalPartyAmuletRules,\n type InstrumentId,\n} from './amulet';\nimport type {\n CantonTransaction,\n CantonUpdate,\n CantonUpdateResponse,\n ICantonClient,\n} from './interface';\n\n/**\n * CantonClient - The engine layer for Canton ledger operations.\n *\n * Responsibilities:\n * - Synchronizer discovery and caching\n * - Command submission and completion waiting\n * - Disclosed contract building\n * - JSON normalization (temporary workaround)\n *\n * This class uses composition (not inheritance) to wrap the generated API,\n * exposing only the minimal surface needed for ledger app operations.\n */\nexport class CantonClient implements ICantonClient {\n readonly #api: DefaultApi;\n readonly #userId: string;\n readonly #wallet?: CantonClientWalletConfig;\n #dsoParty?: string;\n\n constructor(\n config: Configuration,\n userId: string = 'participant_admin',\n wallet?: CantonClientWalletConfig,\n ) {\n this.#api = new DefaultApi(config);\n this.#userId = userId;\n this.#wallet = wallet;\n }\n\n #requireWallet(): CantonClientWalletConfig {\n if (!this.#wallet) {\n throw new CantonProtocolError(\n 'CantonClient has no wallet config (walletUrl + tokenProvider); amulet endpoints are unavailable',\n );\n }\n return this.#wallet;\n }\n\n async getDsoParty(): Promise<string> {\n const { walletUrl, tokenProvider } = this.#requireWallet();\n if (this.#dsoParty) return this.#dsoParty;\n this.#dsoParty = await fetchDsoParty(walletUrl, await tokenProvider.getToken());\n return this.#dsoParty;\n }\n\n /** Amulet ChoiceContext with ExternalPartyAmuletRules injected — required by every flow hitting FeeUtils.validateContext. */\n async getAmuletContextWithExternalRules(\n instrumentId: InstrumentId,\n ): Promise<AmuletContextResult> {\n const { walletUrl, tokenProvider } = this.#requireWallet();\n const { amuletContext, disclosedContracts } = await fetchAmuletContext(\n walletUrl,\n await tokenProvider.getToken(),\n instrumentId,\n );\n const { amuletContext: contextWithRules, externalPartyAmuletRulesCid } =\n injectExternalPartyAmuletRules(amuletContext, disclosedContracts);\n return { amuletContext: contextWithRules, disclosedContracts, externalPartyAmuletRulesCid };\n }\n\n /**\n * Get a property from an object, trying PascalCase first then camelCase.\n * Canton API returns PascalCase but OpenAPI expects camelCase.\n */\n #getField<T>(obj: Record<string, unknown> | undefined, key: string): T | undefined {\n if (!obj) return undefined;\n const pascal = key.charAt(0).toUpperCase() + key.slice(1);\n const camel = key.charAt(0).toLowerCase() + key.slice(1);\n return (obj[pascal] ?? obj[camel]) as T | undefined;\n }\n\n /**\n * Try to extract error body from API response.\n * Returns the parsed body or null if extraction fails.\n */\n async #extractErrorBody(err: unknown): Promise<Record<string, unknown> | null> {\n if (err && typeof err === 'object' && 'response' in err) {\n const resp = (err as { response: Response }).response;\n if (resp && typeof resp.json === 'function') {\n return (await resp.json().catch(() => null)) as Record<string, unknown> | null;\n }\n }\n return null;\n }\n\n /**\n * Throw a CantonProtocolError with extracted error details from API response.\n * Handles the common pattern of extracting JSON error details from failed requests.\n *\n * @param err - The caught error\n * @param context - Description of the operation (e.g., \"DAR upload\", \"Party allocation\")\n * @throws CantonProtocolError with extracted error details, or re-throws original error\n */\n async #throwApiError(err: unknown, context: string): Promise<never> {\n const body = await this.#extractErrorBody(err);\n if (body) {\n throw new CantonProtocolError(`${context} failed: ${JSON.stringify(body)}`);\n }\n throw err;\n }\n\n /**\n * Build party-based filter object for event queries.\n */\n #buildPartyFilters(parties: string[], includeCreatedEventBlob: boolean) {\n return Object.fromEntries(\n parties.map((p) => [\n p,\n {\n cumulative: [\n {\n identifierFilter: {\n wildcardFilter: { value: { includeCreatedEventBlob } },\n },\n },\n ],\n },\n ]),\n );\n }\n\n /**\n * Validate and extract disclosure fields from a CreatedEvent.\n */\n #validateDisclosureEvent(\n event: { templateId?: string; contractId?: string; createdEventBlob?: string },\n contractId: ContractId<unknown>,\n ): { templateId: string; contractId: string; createdEventBlob: string } {\n if (!event.templateId) {\n throw new CantonProtocolError('Disclosure response missing templateId', {\n contractId,\n });\n }\n if (!event.contractId) {\n throw new CantonProtocolError('Disclosure response missing contractId', {\n contractId,\n });\n }\n if (!event.createdEventBlob) {\n throw new CantonProtocolError('Disclosure response missing createdEventBlob', {\n contractId,\n });\n }\n return {\n templateId: event.templateId,\n contractId: event.contractId,\n createdEventBlob: event.createdEventBlob,\n };\n }\n\n /**\n * Validate and extract prepared transaction fields from a prepare response.\n */\n #validatePrepareResponse(response: {\n preparedTransaction?: string;\n preparedTransactionHash?: string;\n hashingSchemeVersion?: string;\n }): {\n preparedTransaction: string;\n preparedTransactionHash: string;\n hashingSchemeVersion: string;\n } {\n if (!response.preparedTransaction) {\n throw new CantonProtocolError('Prepare response missing preparedTransaction');\n }\n if (!response.preparedTransactionHash) {\n throw new CantonProtocolError('Prepare response missing preparedTransactionHash');\n }\n if (!response.hashingSchemeVersion) {\n throw new CantonProtocolError('Prepare response missing hashingSchemeVersion');\n }\n return {\n preparedTransaction: response.preparedTransaction,\n preparedTransactionHash: response.preparedTransactionHash,\n hashingSchemeVersion: response.hashingSchemeVersion,\n };\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Synchronizer Discovery\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Returns all connected synchronizer IDs.\n */\n async connectedSynchronizers(): Promise<string[]> {\n const response = await this.#api.getV2StateConnectedSynchronizers();\n const synchronizers = response.connectedSynchronizers ?? [];\n return synchronizers.map((s) => s.synchronizerId).filter((id): id is string => !!id);\n }\n\n /**\n * Internal: ensures we have a cached synchronizer ID, fetching if needed.\n */\n #ensureSynchronizerId = once(async (): Promise<string> => {\n const [id] = await this.connectedSynchronizers();\n\n if (!id) {\n throw new CantonTransportError('No connected synchronizers found');\n }\n\n return id;\n });\n\n // ─────────────────────────────────────────────────────────────────────────\n // DAR Upload / Validation\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Upload a DAR (Daml Archive) to the participant node.\n *\n * @param dar - Raw DAR bytes.\n * @param opts.vetAllPackages - Whether to vet all packages in the DAR.\n * @param opts.synchronizerId - Synchronizer to upload to (auto-detected if omitted).\n * @param opts.skipIfVetted - If true, silently succeeds when the DAR is already vetted.\n */\n async uploadDar(\n dar: Uint8Array<ArrayBuffer>,\n opts: { vetAllPackages?: boolean; synchronizerId?: string; skipIfVetted?: boolean } = {},\n ): Promise<object> {\n // Extract the underlying ArrayBuffer, handling views that don't start at offset 0\n const bytes =\n dar.byteOffset === 0 && dar.byteLength === dar.buffer.byteLength\n ? dar.buffer\n : dar.buffer.slice(dar.byteOffset, dar.byteOffset + dar.byteLength);\n const body = new Blob([bytes], { type: 'application/octet-stream' });\n const synchronizerId = opts.synchronizerId ?? (await this.#ensureSynchronizerId());\n const request: PostV2DarsRequest = {\n body,\n vetAllPackages: opts.vetAllPackages,\n synchronizerId,\n };\n\n try {\n return await this.#api.postV2Dars(request);\n } catch (err: unknown) {\n // If skipIfVetted, treat KNOWN_PACKAGE_VERSION as a no-op success\n if (opts.skipIfVetted) {\n const body = await this.#extractErrorBody(err);\n if (body) {\n if (body.code === 'KNOWN_PACKAGE_VERSION') {\n return { skipped: true, reason: 'already_vetted', details: body };\n }\n throw new CantonProtocolError(`DAR upload failed: ${JSON.stringify(body)}`);\n }\n }\n throw await this.#throwApiError(err, 'DAR upload');\n }\n }\n\n /**\n * Validate a DAR against the participant without uploading it.\n *\n * @param dar - Raw DAR bytes.\n * @param opts.synchronizerId - Synchronizer to validate against (auto-detected if omitted).\n */\n async validateDar(\n dar: Uint8Array<ArrayBuffer>,\n opts: { synchronizerId?: string } = {},\n ): Promise<void> {\n const bytes =\n dar.byteOffset === 0 && dar.byteLength === dar.buffer.byteLength\n ? dar.buffer\n : dar.buffer.slice(dar.byteOffset, dar.byteOffset + dar.byteLength);\n const body = new Blob([bytes], { type: 'application/octet-stream' });\n const request: PostV2DarsValidateRequest = {\n body,\n synchronizerId: opts.synchronizerId,\n };\n\n if (!request.synchronizerId) {\n return this.#ensureSynchronizerId().then((synchronizerId) =>\n this.#api.postV2DarsValidate({ ...request, synchronizerId }),\n );\n }\n\n return this.#api.postV2DarsValidate(request);\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Party Management\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * List all known parties on the participant node.\n *\n * @param opts.pageSize - Maximum number of results per page\n * @param opts.pageToken - Pagination token from previous response\n * @returns Array of party IDs and pagination token\n */\n async listParties(\n opts: { pageSize?: number; pageToken?: string } = {},\n ): Promise<{ parties: string[]; nextPageToken: string }> {\n const response = await this.#api.getV2Parties({\n pageSize: opts.pageSize,\n pageToken: opts.pageToken,\n });\n\n return {\n parties: response.partyDetails?.map((p) => p.party) ?? [],\n nextPageToken: response.nextPageToken,\n };\n }\n\n /**\n * Return the rights granted to the current user (this.#userId).\n *\n * Bypasses the OpenAPI generator's typed `Kind` converter, which is\n * broken: `instanceOfKindOneOf` checks lowercase `canActAs in value`, but\n * `KindOneOfFromJSONTyped` reads uppercase `json['CanActAs']`, so the\n * typed client returns every `kind` as `{}`. We parse the raw JSON\n * ourselves to preserve the actual variant payload.\n */\n async listUserRights(): Promise<UserRight[]> {\n const apiResponse = await this.#api.getV2UsersUserIdRightsRaw({\n userId: this.#userId,\n });\n const raw = (await apiResponse.raw.json()) as { rights?: UserRight[] };\n return raw.rights ?? [];\n }\n\n /**\n * Return the parties the current user has CanActAs or CanReadAs rights\n * for. Convenience wrapper over `listUserRights()` for the common case\n * where the caller just needs party-scoped access (e.g. to query events\n * or fetch transactions).\n *\n * Use this instead of `listParties()` when the caller only has scoped\n * rights — `listParties()` returns *all* parties on the participant\n * (including DSO, splice parties), and Canton returns 403 if you query\n * as a party you can't read.\n */\n async listUserParties(): Promise<string[]> {\n const rights = await this.listUserRights();\n const parties = new Set<string>();\n for (const right of rights) {\n // Only `CanActAs` / `CanReadAs` carry a party; the other four\n // variants (ParticipantAdmin, IdentityProviderAdmin,\n // CanReadAsAnyParty, CanExecuteAsAnyParty) have empty payloads.\n const party = right.kind.CanActAs?.value.party ?? right.kind.CanReadAs?.value.party;\n if (party !== undefined) {\n parties.add(party);\n }\n }\n return [...parties];\n }\n\n /**\n * Allocate a new party on the participant node.\n *\n * @param partyIdHint - A hint for the party ID (e.g., \"alice\", \"bob\")\n * @param opts.userId - User who gets actAs rights (empty string = no user)\n * @param opts.synchronizerId - Synchronizer to allocate on (auto-detected if omitted)\n * @param opts.identityProviderId - Identity provider ID (empty string = default)\n * @returns The allocated party ID\n */\n async allocateParty(\n partyIdHint: string,\n opts: { userId?: string; synchronizerId?: string; identityProviderId?: string } = {},\n ): Promise<string> {\n const synchronizerId = opts.synchronizerId ?? (await this.#ensureSynchronizerId());\n\n let response;\n try {\n response = await this.#api.postV2Parties({\n allocatePartyRequest: {\n partyIdHint,\n synchronizerId,\n userId: opts.userId ?? '',\n identityProviderId: opts.identityProviderId ?? '',\n },\n });\n } catch (err: unknown) {\n throw await this.#throwApiError(err, 'Party allocation');\n }\n\n const party = response.partyDetails?.party;\n if (!party) {\n throw new CantonProtocolError('Party allocation response missing party ID');\n }\n\n return party;\n }\n\n /**\n * Get the package ID for a package by name.\n *\n * @param packageName - The package name (e.g., \"layerzero-oft\")\n * @param parties - Parties whose vetting state should be considered\n * @param opts.synchronizerId - Synchronizer to query (auto-detected if omitted)\n * @returns The package ID (hash)\n */\n async getPackageId(\n packageName: string,\n parties: string[],\n opts: { synchronizerId?: string } = {},\n ): Promise<string> {\n const synchronizerId = opts.synchronizerId ?? (await this.#ensureSynchronizerId());\n\n const request: PostV2InteractiveSubmissionPreferredPackagesRequest = {\n getPreferredPackagesRequest: {\n packageVettingRequirements: [\n {\n packageName,\n parties,\n },\n ],\n synchronizerId,\n },\n };\n\n let response;\n try {\n response = await this.#api.postV2InteractiveSubmissionPreferredPackages(request);\n } catch (err: unknown) {\n throw await this.#throwApiError(err, 'Package lookup');\n }\n\n const packageRef = response.packageReferences?.find(\n (ref) => ref.packageName === packageName,\n );\n if (!packageRef?.packageId) {\n throw new CantonProtocolError(\n `Package \"${packageName}\" not found or not vetted for parties`,\n );\n }\n\n return packageRef.packageId;\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Command Submission\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Submit a batch of commands atomically.\n *\n * @returns commandId and completionOffset for use with waitForCommand()\n */\n async submit(\n actors: SubmitActors,\n commands: Command[],\n opts: { disclosedContracts?: DisclosedContract[]; commandId?: string } = {},\n ): Promise<SubmitResult> {\n const synchronizerId = await this.#ensureSynchronizerId();\n const commandId = opts.commandId ?? randomUUID();\n\n // Snapshot ledger end before submission so waitForCommand knows where to start polling\n const ledgerEndResponse = await this.#api.getV2StateLedgerEnd();\n const completionOffset = ledgerEndResponse.offset;\n\n const request: PostV2CommandsAsyncSubmitRequest = {\n jsCommands: {\n commandId,\n actAs: actors.actAs,\n readAs: actors.readAs ?? actors.actAs,\n userId: this.#userId,\n synchronizerId,\n commands,\n disclosedContracts: opts.disclosedContracts,\n },\n };\n\n try {\n await this.#api.postV2CommandsAsyncSubmit(request);\n } catch (err: unknown) {\n throw await this.#throwApiError(err, 'Command submission');\n }\n\n return { commandId, completionOffset };\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Completion Waiting / Reconciliation\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Wait for a command to be accepted or rejected.\n *\n * Uses bounded exponential backoff to avoid hammering the participant.\n */\n async waitForCommand(commandId: string, opts: WaitOptions): Promise<WaitResult> {\n const { parties, timeoutMs = 30_000, poll = {} } = opts;\n\n const limit = poll.limit ?? 50;\n const streamIdleTimeoutMs = poll.streamIdleTimeoutMs ?? 1000;\n const initialBackoffMs = poll.backoffMs?.initial ?? 100;\n const maxBackoffMs = poll.backoffMs?.max ?? 5000;\n\n let beginExclusive = opts.beginExclusive ?? 0;\n let currentBackoff = initialBackoffMs;\n const deadline = Date.now() + timeoutMs;\n\n // Poll the completions stream until we find our commandId or timeout\n while (Date.now() < deadline) {\n const request: PostV2CommandsCompletionsRequest = {\n completionStreamRequest: {\n beginExclusive,\n parties,\n userId: this.#userId,\n },\n limit,\n streamIdleTimeoutMs,\n };\n\n const rawResponse = await this.#api.postV2CommandsCompletionsRaw(request);\n const responseText = await rawResponse.raw.text();\n const completions = JSON.parse(responseText) as unknown[];\n\n // Scan each completion for our commandId\n for (const item of completions) {\n const normalized = item as Record<string, unknown>;\n const completionResponse = this.#getField<Record<string, unknown>>(\n normalized,\n 'completionResponse',\n );\n if (!completionResponse) continue;\n\n // Handle offsetCheckpoint responses (no commandId)\n const offsetCheckpoint = this.#getField<Record<string, unknown>>(\n completionResponse,\n 'offsetCheckpoint',\n );\n if (offsetCheckpoint) {\n const checkpoint =\n this.#getField<Record<string, unknown>>(offsetCheckpoint, 'value') ??\n offsetCheckpoint;\n const checkpointOffset = this.#getField<number>(checkpoint, 'offset');\n if (checkpointOffset !== undefined) {\n beginExclusive = Math.max(beginExclusive, checkpointOffset);\n }\n continue;\n }\n\n // Navigate: completionResponse.completion.value\n const completionWrapper = this.#getField<Record<string, unknown>>(\n completionResponse,\n 'completion',\n );\n const completion =\n this.#getField<Record<string, unknown>>(completionWrapper, 'value') ??\n completionWrapper;\n if (!completion) continue;\n\n const offset = this.#getField<number>(completion, 'offset');\n const completionCommandId = this.#getField<string>(completion, 'commandId');\n\n // Found our command — check gRPC status to determine accept/reject\n if (completionCommandId === commandId) {\n const status = this.#getField<{\n code?: number;\n message?: string;\n details?: unknown;\n }>(completion, 'status');\n\n // code === 0 or status undefined means success (gRPC OK)\n if (!status || status.code === 0) {\n return {\n status: 'accepted',\n commandId,\n updateId: this.#getField<string>(completion, 'updateId') ?? '',\n offset: offset ?? 0,\n };\n } else {\n return {\n status: 'rejected',\n commandId,\n offset: offset ?? 0,\n error: {\n code: status.code,\n message: status.message ?? 'Unknown rejection',\n details: status.details,\n },\n };\n }\n }\n\n // Not our command — advance offset cursor past it\n if (offset !== undefined) {\n beginExclusive = Math.max(beginExclusive, offset);\n }\n }\n\n // Bounded exponential backoff\n const remainingTime = deadline - Date.now();\n const sleepTime = Math.min(currentBackoff, remainingTime, maxBackoffMs);\n if (sleepTime > 0) {\n await new Promise((resolve) => setTimeout(resolve, sleepTime));\n }\n currentBackoff = Math.min(currentBackoff * 2, maxBackoffMs);\n }\n\n return { status: 'timeout', commandId, lastCheckedOffset: beginExclusive };\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Disclosed Contracts\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Fetch active contract's created event by ID.\n * Returns undefined if contract doesn't exist or is archived.\n */\n async #fetchActiveContractEvent(\n contractId: ContractId<unknown>,\n parties: string[],\n includeCreatedEventBlob: boolean,\n ): Promise<CreatedEvent | undefined> {\n const request: PostV2EventsEventsByContractIdRequest = {\n getEventsByContractIdRequest: {\n contractId,\n eventFormat: {\n filtersByParty: this.#buildPartyFilters(parties, includeCreatedEventBlob),\n verbose: false,\n },\n },\n };\n\n const response = await this.#api.postV2EventsEventsByContractId(request);\n\n // If archived, contract is not active\n if (response.archived) return undefined;\n\n return response.created?.createdEvent;\n }\n\n /**\n * Build a disclosure for a contract.\n *\n * @param contractId - The contract ID to create disclosure for\n * @param parties - Parties that have visibility to the contract\n * @returns DisclosedContract if visible, undefined if not found\n * @throws CantonProtocolError if contract visible but blob missing (server/config mismatch)\n */\n async createDisclosure(\n contractId: ContractId<unknown>,\n parties: string[],\n ): Promise<DisclosedContract | undefined> {\n const synchronizerId = await this.#ensureSynchronizerId();\n const created = await this.#fetchActiveContractEvent(contractId, parties, true);\n\n if (!created) return undefined;\n\n const validated = this.#validateDisclosureEvent(created, contractId);\n return {\n ...validated,\n synchronizerId,\n };\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Internal: Active Contract Queries (used by CantonSdk)\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Fetch a single contract by ID.\n *\n * @param contractId The contract ID to fetch\n * @param parties Parties to use for filtering (required for non-admin tokens)\n */\n async fetchContractById(\n contractId: ContractId<unknown>,\n parties: string[],\n ): Promise<CreatedEvent | undefined> {\n return this.#fetchActiveContractEvent(contractId, parties, false);\n }\n\n /**\n * Fetch both the created and archived events for a contract by ID.\n * Unlike fetchContractById, this preserves archival information.\n */\n async fetchEventsByContractId(\n contractId: string,\n parties: string[],\n ): Promise<{ created: CreatedEvent | undefined; archived: ArchivedEvent | undefined }> {\n const request: PostV2EventsEventsByContractIdRequest = {\n getEventsByContractIdRequest: {\n contractId,\n eventFormat: {\n filtersByParty: this.#buildPartyFilters(parties, false),\n verbose: false,\n },\n },\n };\n\n const response = await this.#api.postV2EventsEventsByContractId(request);\n\n return {\n created: response.created?.createdEvent,\n archived: response.archived?.archivedEvent,\n };\n }\n\n /**\n * Fetch an update (transaction) by its ID.\n * @param updateId The update ID from a completion\n * @param parties Parties to use for the query filter\n * @returns The full update response\n */\n async fetchTransactionByUpdateId(\n updateId: string,\n parties: string[],\n ): Promise<CantonTransaction> {\n const response = await this.#api.postV2UpdatesUpdateByIdRaw({\n getUpdateByIdRequest: {\n updateId,\n updateFormat: this.#buildUpdateFormat(parties),\n },\n });\n\n const updateResponse: CantonUpdateResponse = await response.raw.json();\n return this.#parseTransactionFromUpdate(\n updateResponse,\n `Update ${updateId} is not a transaction`,\n );\n }\n\n /**\n * Fetch a transaction by its offset.\n * @param offset - The ledger offset\n * @param parties - Parties to use for the query filter\n * @returns The full transaction including recordTime\n */\n async fetchTransactionByOffset(offset: number, parties: string[]): Promise<CantonTransaction> {\n const response = await this.#api.postV2UpdatesUpdateByOffsetRaw({\n getUpdateByOffsetRequest: {\n offset,\n updateFormat: this.#buildUpdateFormat(parties),\n },\n });\n\n const updateResponse: CantonUpdateResponse = await response.raw.json();\n return this.#parseTransactionFromUpdate(\n updateResponse,\n `Update at offset ${offset} is not a transaction`,\n );\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // External Party / Interactive Submission\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Prepare commands for external party signing.\n *\n * Returns a typed PreparedTransaction that preserves the contract type\n * through the signing flow. After signing, use submitSigned() to submit.\n *\n * @typeparam T The contract payload type (phantom type for type safety)\n *\n * @example\n * ```ts\n * const prepared = await client.prepareForSigning<Oft>({ actAs: [party] }, [cmd]);\n * const signature = await sign(prepared.preparedTransactionHash);\n * await client.submitSigned(prepared, [signature]);\n * ```\n */\n async prepareForSigning(\n actors: SubmitActors,\n commands: Command[],\n opts: { disclosedContracts?: DisclosedContract[]; commandId?: string } = {},\n ): Promise<PreparedTransaction> {\n const synchronizerId = await this.#ensureSynchronizerId();\n const commandId = opts.commandId ?? randomUUID();\n\n const request: PostV2InteractiveSubmissionPrepareRequest = {\n jsPrepareSubmissionRequest: {\n userId: this.#userId,\n commandId,\n commands,\n actAs: actors.actAs,\n readAs: actors.readAs ?? actors.actAs,\n disclosedContracts: opts.disclosedContracts,\n synchronizerId,\n verboseHashing: false,\n packageIdSelectionPreference: [],\n },\n };\n\n let response;\n try {\n response = await this.#api.postV2InteractiveSubmissionPrepare(request);\n } catch (error: unknown) {\n throw await this.#throwApiError(error, 'Interactive submission prepare');\n }\n const validated = this.#validatePrepareResponse(response);\n\n return {\n ...validated,\n hashingSchemeVersion:\n validated.hashingSchemeVersion as PreparedTransaction['hashingSchemeVersion'],\n commandId,\n };\n }\n\n /**\n * Submit a pre-signed transaction.\n *\n * The generic type T flows from prepareForSigning() for type documentation.\n */\n async submitSigned(\n prepared: PreparedTransaction,\n signatures: ExternalSignature[],\n ): Promise<SubmitResult> {\n // Snapshot ledger end so the caller can poll for completion from this point\n const ledgerEndResponse = await this.#api.getV2StateLedgerEnd();\n const completionOffset = ledgerEndResponse.offset;\n\n const request: PostV2InteractiveSubmissionExecuteRequest = {\n jsExecuteSubmissionRequest: {\n preparedTransaction: prepared.preparedTransaction,\n // Map each ExternalSignature into the Canton per-party signature format\n partySignatures: {\n signatures: signatures.map((sig) => ({\n party: sig.party,\n signatures: [\n {\n format: sig.format,\n signature: sig.signature,\n signedBy: sig.signedBy,\n signingAlgorithmSpec: sig.signingAlgorithmSpec,\n },\n ],\n })),\n },\n deduplicationPeriod: {\n deduplicationDuration: {\n value: { seconds: 3600, nanos: 0 }, // 1 hour default\n },\n },\n submissionId: randomUUID(),\n userId: this.#userId,\n hashingSchemeVersion: prepared.hashingSchemeVersion,\n },\n };\n\n try {\n await this.#api.postV2InteractiveSubmissionExecute(request);\n } catch (error: unknown) {\n throw await this.#throwApiError(error, 'Interactive submission execute');\n }\n\n return { commandId: prepared.commandId, completionOffset };\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Active Contracts Query\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Get the current ledger end offset.\n */\n async getLedgerEndOffset(): Promise<number> {\n const response = await this.#api.getV2StateLedgerEnd();\n return response.offset;\n }\n\n /**\n * Query active contracts at a given offset with optional template filtering.\n *\n * @param party - Party to query as\n * @param offset - Ledger offset for the snapshot\n * @param opts.templateIds - Optional template IDs to filter by\n * @param opts.limit - Maximum number of contracts to return\n */\n async queryActiveContracts(\n party: string,\n offset: number,\n opts?: { templateIds?: string[]; limit?: number },\n ): Promise<JsActiveContract[]> {\n return this.queryActiveContractsByParties([party], offset, opts?.templateIds ?? [], {\n limit: opts?.limit,\n });\n }\n\n /**\n * Query active contracts visible to any of the given parties.\n *\n * Single API call with all parties in filtersByParty.\n *\n * @param parties - Parties to query as (for visibility)\n * @param offset - Ledger offset for the snapshot\n * @param templateIds - Template IDs to filter by\n * @param opts.limit - Maximum number of contracts to return\n */\n async queryActiveContractsByParties(\n parties: string[],\n offset: number,\n templateIds: string[],\n opts?: { limit?: number },\n ): Promise<JsActiveContract[]> {\n return this.#fetchActiveContracts(\n parties,\n offset,\n this.#buildCumulativeFilters(templateIds),\n opts,\n );\n }\n\n /**\n * Query active contracts visible to any of the given parties that implement\n * the given interfaces.\n *\n * @param parties - Parties to query as (for visibility)\n * @param offset - Ledger offset for the snapshot\n * @param interfaceIds - Interface IDs to filter by (e.g. \"#package:Module:Interface\")\n * @param opts.limit - Maximum number of contracts to return\n */\n async queryActiveContractsByInterface(\n parties: string[],\n offset: number,\n interfaceIds: string[],\n opts?: { limit?: number },\n ): Promise<JsActiveContract[]> {\n return this.#fetchActiveContracts(\n parties,\n offset,\n this.#buildInterfaceCumulativeFilters(interfaceIds),\n opts,\n );\n }\n\n async #fetchActiveContracts(\n parties: string[],\n offset: number,\n cumulativeFilter: CumulativeFilter[],\n opts?: { limit?: number },\n ): Promise<JsActiveContract[]> {\n const filtersByParty = Object.fromEntries(\n parties.map((party) => [party, { cumulative: cumulativeFilter }]),\n );\n\n const rawResponse = await this.#api.postV2StateActiveContractsRaw({\n getActiveContractsRequest: {\n filter: { filtersByParty },\n verbose: true,\n activeAtOffset: offset,\n },\n limit: opts?.limit,\n });\n\n // Raw response is an array of streamed entries; extract and deserialize contracts\n type RawActiveContractsResponse = Array<{\n contractEntry?: { JsActiveContract?: Record<string, unknown> };\n }>;\n const rawJson: RawActiveContractsResponse = await rawResponse.raw.json();\n\n return rawJson\n .map((item) => item.contractEntry?.JsActiveContract)\n .filter((contract): contract is Record<string, unknown> => contract != null)\n .map((contract) => JsActiveContractFromJSON(contract));\n }\n\n /**\n * Stream transactions from a given offset.\n *\n * Uses `updateFormat` with `TRANSACTION_SHAPE_LEDGER_EFFECTS` so consumers\n * receive `ExercisedEvent`s (e.g. the request-poller depends on\n * `Request_Create` exercise results). The deprecated legacy `filter`\n * shape would default to `ACS_DELTA`, which only emits Created/Archived\n * events and silently drops every exercise on the wire.\n *\n * @param party - Party to query as\n * @param beginExclusive - Start offset (exclusive)\n * @param endInclusive - End offset (inclusive)\n * @param opts.templateIds - Optional template IDs to filter by\n * @param opts.limit - Maximum number of transactions to return\n */\n async getUpdates(\n party: string,\n beginExclusive: number,\n endInclusive: number,\n opts?: { templateIds?: string[]; limit?: number },\n ): Promise<CantonUpdate[]> {\n const eventFormat = {\n filtersByParty: {\n [party]: { cumulative: this.#buildCumulativeFilters(opts?.templateIds) },\n },\n verbose: false,\n };\n const rawResponse = await this.#api.postV2UpdatesRaw({\n getUpdatesRequest: {\n beginExclusive,\n endInclusive,\n verbose: false,\n updateFormat: {\n includeTransactions: {\n eventFormat,\n transactionShape: 'TRANSACTION_SHAPE_LEDGER_EFFECTS' as const,\n },\n },\n },\n limit: opts?.limit,\n });\n\n const updateResponses: CantonUpdateResponse[] = await rawResponse.raw.json();\n\n return updateResponses.map((response) => response.update);\n }\n\n /**\n * Build cumulative filters for party-based queries.\n * If templateIds provided, filters by those templates; otherwise uses wildcard.\n */\n #buildCumulativeFilters(templateIds?: string[]): CumulativeFilter[] {\n if (templateIds?.length) {\n return templateIds.map((templateId) => ({\n identifierFilter: {\n templateFilter: { value: { templateId, includeCreatedEventBlob: false } },\n },\n }));\n }\n return [\n { identifierFilter: { wildcardFilter: { value: { includeCreatedEventBlob: false } } } },\n ];\n }\n\n /**\n * Build cumulative filters for interface-based ACS queries.\n * If interfaceIds provided, filters by those interfaces; otherwise uses wildcard.\n */\n #buildInterfaceCumulativeFilters(interfaceIds?: string[]): CumulativeFilter[] {\n if (interfaceIds?.length) {\n return interfaceIds.map((interfaceId) => ({\n identifierFilter: {\n interfaceFilter: {\n value: {\n interfaceId,\n includeInterfaceView: true,\n includeCreatedEventBlob: false,\n },\n },\n },\n }));\n }\n return [\n { identifierFilter: { wildcardFilter: { value: { includeCreatedEventBlob: false } } } },\n ];\n }\n\n /**\n * Build the standard update format for fetching transactions.\n */\n #buildUpdateFormat(parties: string[]) {\n return {\n includeTransactions: {\n eventFormat: {\n filtersByParty: this.#buildPartyFilters(parties, false),\n verbose: false,\n },\n transactionShape: 'TRANSACTION_SHAPE_LEDGER_EFFECTS' as const,\n },\n };\n }\n\n /**\n * Parse an update response and extract the transaction.\n * The response structure is: { update: { Transaction: { value: CantonTransaction } } }\n */\n #parseTransactionFromUpdate(\n json: CantonUpdateResponse,\n notFoundMessage: string,\n ): CantonTransaction {\n // Update can be a Transaction, Reassignment, TopologyTransaction, or OffsetCheckpoint\n if (!('Transaction' in json.update)) {\n throw new CantonProtocolError(notFoundMessage);\n }\n\n return json.update.Transaction.value;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/client/canton-client.ts"],"names":["CantonClient","config","userId","wallet","DefaultApi","CantonProtocolError","getDsoParty","walletUrl","tokenProvider","fetchDsoParty","getToken","getAmuletContextWithExternalRules","instrumentId","amuletContext","disclosedContracts","fetchAmuletContext","contextWithRules","externalPartyAmuletRulesCid","injectExternalPartyAmuletRules","obj","key","undefined","pascal","charAt","toUpperCase","slice","camel","toLowerCase","err","resp","response","json","catch","context","body","JSON","stringify","parties","includeCreatedEventBlob","Object","fromEntries","map","p","cumulative","identifierFilter","wildcardFilter","value","event","contractId","templateId","createdEventBlob","preparedTransaction","preparedTransactionHash","hashingSchemeVersion","connectedSynchronizers","getV2StateConnectedSynchronizers","synchronizers","s","synchronizerId","filter","id","once","CantonTransportError","uploadDar","dar","opts","bytes","byteOffset","byteLength","buffer","Blob","type","request","vetAllPackages","postV2Dars","skipIfVetted","code","skipped","reason","details","validateDar","then","postV2DarsValidate","listParties","getV2Parties","pageSize","pageToken","partyDetails","party","nextPageToken","listUserRights","apiResponse","getV2UsersUserIdRightsRaw","raw","rights","listUserParties","Set","right","kind","CanActAs","CanReadAs","add","allocateParty","partyIdHint","postV2Parties","allocatePartyRequest","identityProviderId","getPackageId","packageName","getPreferredPackagesRequest","packageVettingRequirements","postV2InteractiveSubmissionPreferredPackages","packageRef","packageReferences","find","ref","packageId","submit","actors","commands","commandId","randomUUID","ledgerEndResponse","getV2StateLedgerEnd","completionOffset","offset","jsCommands","actAs","readAs","postV2CommandsAsyncSubmit","waitForCommand","timeoutMs","poll","limit","streamIdleTimeoutMs","initialBackoffMs","backoffMs","initial","maxBackoffMs","max","beginExclusive","currentBackoff","deadline","Date","now","completionStreamRequest","rawResponse","postV2CommandsCompletionsRaw","responseText","text","completions","parse","item","normalized","completionResponse","offsetCheckpoint","checkpoint","checkpointOffset","Math","completionWrapper","completion","completionCommandId","status","updateId","error","message","remainingTime","sleepTime","min","Promise","resolve","setTimeout","lastCheckedOffset","getEventsByContractIdRequest","eventFormat","filtersByParty","verbose","postV2EventsEventsByContractId","archived","created","createdEvent","createDisclosure","validated","fetchContractById","fetchEventsByContractId","archivedEvent","fetchTransactionByUpdateId","postV2UpdatesUpdateByIdRaw","getUpdateByIdRequest","updateFormat","updateResponse","fetchTransactionByOffset","postV2UpdatesUpdateByOffsetRaw","getUpdateByOffsetRequest","prepareForSigning","jsPrepareSubmissionRequest","verboseHashing","packageIdSelectionPreference","postV2InteractiveSubmissionPrepare","submitSigned","prepared","signatures","jsExecuteSubmissionRequest","partySignatures","sig","format","signature","signedBy","signingAlgorithmSpec","deduplicationPeriod","deduplicationDuration","seconds","nanos","submissionId","postV2InteractiveSubmissionExecute","getLedgerEndOffset","queryActiveContracts","queryActiveContractsByParties","templateIds","queryActiveContractsByInterface","interfaceIds","cumulativeFilter","postV2StateActiveContractsRaw","getActiveContractsRequest","activeAtOffset","rawJson","contractEntry","JsActiveContract","contract","JsActiveContractFromJSON","getUpdates","endInclusive","postV2UpdatesRaw","getUpdatesRequest","includeTransactions","transactionShape","updateResponses","update","length","templateFilter","interfaceId","interfaceFilter","includeInterfaceView","notFoundMessage","Transaction"],"mappings":"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","file":"JA7BSC7C.js","sourcesContent":["import type { ContractId } from '@daml/types';\nimport { once } from 'es-toolkit';\nimport { randomUUID } from 'node:crypto';\n\nimport { CantonProtocolError, CantonTransportError } from '../errors';\nimport {\n DefaultApi,\n type PostV2CommandsAsyncSubmitRequest,\n type PostV2CommandsCompletionsRequest,\n type PostV2DarsRequest,\n type PostV2DarsValidateRequest,\n type PostV2EventsEventsByContractIdRequest,\n type PostV2InteractiveSubmissionExecuteRequest,\n type PostV2InteractiveSubmissionPreferredPackagesRequest,\n type PostV2InteractiveSubmissionPrepareRequest,\n} from '../open-api/apis/DefaultApi';\nimport {\n type ArchivedEvent,\n type Command,\n type CreatedEvent,\n type CumulativeFilter,\n type DisclosedContract,\n type JsActiveContract,\n JsActiveContractFromJSON,\n} from '../open-api/models';\nimport type { Configuration } from '../open-api/runtime';\nimport type {\n ExternalSignature,\n PreparedTransaction,\n SubmitActors,\n SubmitResult,\n UserRight,\n WaitOptions,\n WaitResult,\n} from '../types';\nimport {\n type AmuletContextResult,\n type CantonClientWalletConfig,\n fetchAmuletContext,\n fetchDsoParty,\n injectExternalPartyAmuletRules,\n type InstrumentId,\n} from './amulet';\nimport type {\n CantonTransaction,\n CantonUpdate,\n CantonUpdateResponse,\n ICantonClient,\n} from './interface';\n\n/**\n * CantonClient - The engine layer for Canton ledger operations.\n *\n * Responsibilities:\n * - Synchronizer discovery and caching\n * - Command submission and completion waiting\n * - Disclosed contract building\n * - JSON normalization (temporary workaround)\n *\n * This class uses composition (not inheritance) to wrap the generated API,\n * exposing only the minimal surface needed for ledger app operations.\n */\nexport class CantonClient implements ICantonClient {\n readonly #api: DefaultApi;\n readonly #userId: string;\n readonly #wallet?: CantonClientWalletConfig;\n #dsoParty?: string;\n\n constructor(\n config: Configuration,\n userId: string = 'participant_admin',\n wallet?: CantonClientWalletConfig,\n ) {\n this.#api = new DefaultApi(config);\n this.#userId = userId;\n this.#wallet = wallet;\n }\n\n #requireWallet(): CantonClientWalletConfig {\n if (!this.#wallet) {\n throw new CantonProtocolError(\n 'CantonClient has no wallet config (walletUrl + tokenProvider); amulet endpoints are unavailable',\n );\n }\n return this.#wallet;\n }\n\n async getDsoParty(): Promise<string> {\n const { walletUrl, tokenProvider } = this.#requireWallet();\n if (this.#dsoParty) return this.#dsoParty;\n this.#dsoParty = await fetchDsoParty(walletUrl, await tokenProvider.getToken());\n return this.#dsoParty;\n }\n\n /** Amulet ChoiceContext with ExternalPartyAmuletRules injected — required by every flow hitting FeeUtils.validateContext. */\n async getAmuletContextWithExternalRules(\n instrumentId: InstrumentId,\n ): Promise<AmuletContextResult> {\n const { walletUrl, tokenProvider } = this.#requireWallet();\n const { amuletContext, disclosedContracts } = await fetchAmuletContext(\n walletUrl,\n await tokenProvider.getToken(),\n instrumentId,\n );\n const { amuletContext: contextWithRules, externalPartyAmuletRulesCid } =\n injectExternalPartyAmuletRules(amuletContext, disclosedContracts);\n return { amuletContext: contextWithRules, disclosedContracts, externalPartyAmuletRulesCid };\n }\n\n /**\n * Get a property from an object, trying PascalCase first then camelCase.\n * Canton API returns PascalCase but OpenAPI expects camelCase.\n */\n #getField<T>(obj: Record<string, unknown> | undefined, key: string): T | undefined {\n if (!obj) return undefined;\n const pascal = key.charAt(0).toUpperCase() + key.slice(1);\n const camel = key.charAt(0).toLowerCase() + key.slice(1);\n return (obj[pascal] ?? obj[camel]) as T | undefined;\n }\n\n /**\n * Try to extract error body from API response.\n * Returns the parsed body or null if extraction fails.\n */\n async #extractErrorBody(err: unknown): Promise<Record<string, unknown> | null> {\n if (err && typeof err === 'object' && 'response' in err) {\n const resp = (err as { response: Response }).response;\n if (resp && typeof resp.json === 'function') {\n return (await resp.json().catch(() => null)) as Record<string, unknown> | null;\n }\n }\n return null;\n }\n\n /**\n * Throw a CantonProtocolError with extracted error details from API response.\n * Handles the common pattern of extracting JSON error details from failed requests.\n *\n * @param err - The caught error\n * @param context - Description of the operation (e.g., \"DAR upload\", \"Party allocation\")\n * @throws CantonProtocolError with extracted error details, or re-throws original error\n */\n async #throwApiError(err: unknown, context: string): Promise<never> {\n const body = await this.#extractErrorBody(err);\n if (body) {\n throw new CantonProtocolError(`${context} failed: ${JSON.stringify(body)}`);\n }\n throw err;\n }\n\n /**\n * Build party-based filter object for event queries.\n */\n #buildPartyFilters(parties: string[], includeCreatedEventBlob: boolean) {\n return Object.fromEntries(\n parties.map((p) => [\n p,\n {\n cumulative: [\n {\n identifierFilter: {\n wildcardFilter: { value: { includeCreatedEventBlob } },\n },\n },\n ],\n },\n ]),\n );\n }\n\n /**\n * Validate and extract disclosure fields from a CreatedEvent.\n */\n #validateDisclosureEvent(\n event: { templateId?: string; contractId?: string; createdEventBlob?: string },\n contractId: ContractId<unknown>,\n ): { templateId: string; contractId: string; createdEventBlob: string } {\n if (!event.templateId) {\n throw new CantonProtocolError('Disclosure response missing templateId', {\n contractId,\n });\n }\n if (!event.contractId) {\n throw new CantonProtocolError('Disclosure response missing contractId', {\n contractId,\n });\n }\n if (!event.createdEventBlob) {\n throw new CantonProtocolError('Disclosure response missing createdEventBlob', {\n contractId,\n });\n }\n return {\n templateId: event.templateId,\n contractId: event.contractId,\n createdEventBlob: event.createdEventBlob,\n };\n }\n\n /**\n * Validate and extract prepared transaction fields from a prepare response.\n */\n #validatePrepareResponse(response: {\n preparedTransaction?: string;\n preparedTransactionHash?: string;\n hashingSchemeVersion?: string;\n }): {\n preparedTransaction: string;\n preparedTransactionHash: string;\n hashingSchemeVersion: string;\n } {\n if (!response.preparedTransaction) {\n throw new CantonProtocolError('Prepare response missing preparedTransaction');\n }\n if (!response.preparedTransactionHash) {\n throw new CantonProtocolError('Prepare response missing preparedTransactionHash');\n }\n if (!response.hashingSchemeVersion) {\n throw new CantonProtocolError('Prepare response missing hashingSchemeVersion');\n }\n return {\n preparedTransaction: response.preparedTransaction,\n preparedTransactionHash: response.preparedTransactionHash,\n hashingSchemeVersion: response.hashingSchemeVersion,\n };\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Synchronizer Discovery\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Returns all connected synchronizer IDs.\n */\n async connectedSynchronizers(): Promise<string[]> {\n const response = await this.#api.getV2StateConnectedSynchronizers();\n const synchronizers = response.connectedSynchronizers ?? [];\n return synchronizers.map((s) => s.synchronizerId).filter((id): id is string => !!id);\n }\n\n /**\n * Internal: ensures we have a cached synchronizer ID, fetching if needed.\n */\n #ensureSynchronizerId = once(async (): Promise<string> => {\n const [id] = await this.connectedSynchronizers();\n\n if (!id) {\n throw new CantonTransportError('No connected synchronizers found');\n }\n\n return id;\n });\n\n // ─────────────────────────────────────────────────────────────────────────\n // DAR Upload / Validation\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Upload a DAR (Daml Archive) to the participant node.\n *\n * @param dar - Raw DAR bytes.\n * @param opts.vetAllPackages - Whether to vet all packages in the DAR.\n * @param opts.synchronizerId - Synchronizer to upload to (auto-detected if omitted).\n * @param opts.skipIfVetted - If true, silently succeeds when the DAR is already vetted.\n */\n async uploadDar(\n dar: Uint8Array<ArrayBuffer>,\n opts: { vetAllPackages?: boolean; synchronizerId?: string; skipIfVetted?: boolean } = {},\n ): Promise<object> {\n // Extract the underlying ArrayBuffer, handling views that don't start at offset 0\n const bytes =\n dar.byteOffset === 0 && dar.byteLength === dar.buffer.byteLength\n ? dar.buffer\n : dar.buffer.slice(dar.byteOffset, dar.byteOffset + dar.byteLength);\n const body = new Blob([bytes], { type: 'application/octet-stream' });\n const synchronizerId = opts.synchronizerId ?? (await this.#ensureSynchronizerId());\n const request: PostV2DarsRequest = {\n body,\n vetAllPackages: opts.vetAllPackages,\n synchronizerId,\n };\n\n try {\n return await this.#api.postV2Dars(request);\n } catch (err: unknown) {\n // If skipIfVetted, treat KNOWN_PACKAGE_VERSION as a no-op success\n if (opts.skipIfVetted) {\n const body = await this.#extractErrorBody(err);\n if (body) {\n if (body.code === 'KNOWN_PACKAGE_VERSION') {\n return { skipped: true, reason: 'already_vetted', details: body };\n }\n throw new CantonProtocolError(`DAR upload failed: ${JSON.stringify(body)}`);\n }\n }\n throw await this.#throwApiError(err, 'DAR upload');\n }\n }\n\n /**\n * Validate a DAR against the participant without uploading it.\n *\n * @param dar - Raw DAR bytes.\n * @param opts.synchronizerId - Synchronizer to validate against (auto-detected if omitted).\n */\n async validateDar(\n dar: Uint8Array<ArrayBuffer>,\n opts: { synchronizerId?: string } = {},\n ): Promise<void> {\n const bytes =\n dar.byteOffset === 0 && dar.byteLength === dar.buffer.byteLength\n ? dar.buffer\n : dar.buffer.slice(dar.byteOffset, dar.byteOffset + dar.byteLength);\n const body = new Blob([bytes], { type: 'application/octet-stream' });\n const request: PostV2DarsValidateRequest = {\n body,\n synchronizerId: opts.synchronizerId,\n };\n\n if (!request.synchronizerId) {\n return this.#ensureSynchronizerId().then((synchronizerId) =>\n this.#api.postV2DarsValidate({ ...request, synchronizerId }),\n );\n }\n\n return this.#api.postV2DarsValidate(request);\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Party Management\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * List all known parties on the participant node.\n *\n * @param opts.pageSize - Maximum number of results per page\n * @param opts.pageToken - Pagination token from previous response\n * @returns Array of party IDs and pagination token\n */\n async listParties(\n opts: { pageSize?: number; pageToken?: string } = {},\n ): Promise<{ parties: string[]; nextPageToken: string }> {\n const response = await this.#api.getV2Parties({\n pageSize: opts.pageSize,\n pageToken: opts.pageToken,\n });\n\n return {\n parties: response.partyDetails?.map((p) => p.party) ?? [],\n nextPageToken: response.nextPageToken,\n };\n }\n\n /**\n * Return the rights granted to the current user (this.#userId).\n *\n * Bypasses the OpenAPI generator's typed `Kind` converter, which is\n * broken: `instanceOfKindOneOf` checks lowercase `canActAs in value`, but\n * `KindOneOfFromJSONTyped` reads uppercase `json['CanActAs']`, so the\n * typed client returns every `kind` as `{}`. We parse the raw JSON\n * ourselves to preserve the actual variant payload.\n */\n async listUserRights(): Promise<UserRight[]> {\n const apiResponse = await this.#api.getV2UsersUserIdRightsRaw({\n userId: this.#userId,\n });\n const raw = (await apiResponse.raw.json()) as { rights?: UserRight[] };\n return raw.rights ?? [];\n }\n\n /**\n * Return the parties the current user has CanActAs or CanReadAs rights\n * for. Convenience wrapper over `listUserRights()` for the common case\n * where the caller just needs party-scoped access (e.g. to query events\n * or fetch transactions).\n *\n * Use this instead of `listParties()` when the caller only has scoped\n * rights — `listParties()` returns *all* parties on the participant\n * (including DSO, splice parties), and Canton returns 403 if you query\n * as a party you can't read.\n */\n async listUserParties(): Promise<string[]> {\n const rights = await this.listUserRights();\n const parties = new Set<string>();\n for (const right of rights) {\n // Only `CanActAs` / `CanReadAs` carry a party; the other four\n // variants (ParticipantAdmin, IdentityProviderAdmin,\n // CanReadAsAnyParty, CanExecuteAsAnyParty) have empty payloads.\n const party = right.kind.CanActAs?.value.party ?? right.kind.CanReadAs?.value.party;\n if (party !== undefined) {\n parties.add(party);\n }\n }\n return [...parties];\n }\n\n /**\n * Allocate a new party on the participant node.\n *\n * @param partyIdHint - A hint for the party ID (e.g., \"alice\", \"bob\")\n * @param opts.userId - User who gets actAs rights (empty string = no user)\n * @param opts.synchronizerId - Synchronizer to allocate on (auto-detected if omitted)\n * @param opts.identityProviderId - Identity provider ID (empty string = default)\n * @returns The allocated party ID\n */\n async allocateParty(\n partyIdHint: string,\n opts: { userId?: string; synchronizerId?: string; identityProviderId?: string } = {},\n ): Promise<string> {\n const synchronizerId = opts.synchronizerId ?? (await this.#ensureSynchronizerId());\n\n let response;\n try {\n response = await this.#api.postV2Parties({\n allocatePartyRequest: {\n partyIdHint,\n synchronizerId,\n userId: opts.userId ?? '',\n identityProviderId: opts.identityProviderId ?? '',\n },\n });\n } catch (err: unknown) {\n throw await this.#throwApiError(err, 'Party allocation');\n }\n\n const party = response.partyDetails?.party;\n if (!party) {\n throw new CantonProtocolError('Party allocation response missing party ID');\n }\n\n return party;\n }\n\n /**\n * Get the package ID for a package by name.\n *\n * @param packageName - The package name (e.g., \"layerzero-oft\")\n * @param parties - Parties whose vetting state should be considered\n * @param opts.synchronizerId - Synchronizer to query (auto-detected if omitted)\n * @returns The package ID (hash)\n */\n async getPackageId(\n packageName: string,\n parties: string[],\n opts: { synchronizerId?: string } = {},\n ): Promise<string> {\n const synchronizerId = opts.synchronizerId ?? (await this.#ensureSynchronizerId());\n\n const request: PostV2InteractiveSubmissionPreferredPackagesRequest = {\n getPreferredPackagesRequest: {\n packageVettingRequirements: [\n {\n packageName,\n parties,\n },\n ],\n synchronizerId,\n },\n };\n\n let response;\n try {\n response = await this.#api.postV2InteractiveSubmissionPreferredPackages(request);\n } catch (err: unknown) {\n throw await this.#throwApiError(err, 'Package lookup');\n }\n\n const packageRef = response.packageReferences?.find(\n (ref) => ref.packageName === packageName,\n );\n if (!packageRef?.packageId) {\n throw new CantonProtocolError(\n `Package \"${packageName}\" not found or not vetted for parties`,\n );\n }\n\n return packageRef.packageId;\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Command Submission\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Submit a batch of commands atomically.\n *\n * @returns commandId and completionOffset for use with waitForCommand()\n */\n async submit(\n actors: SubmitActors,\n commands: Command[],\n opts: { disclosedContracts?: DisclosedContract[]; commandId?: string } = {},\n ): Promise<SubmitResult> {\n const synchronizerId = await this.#ensureSynchronizerId();\n const commandId = opts.commandId ?? randomUUID();\n\n // Snapshot ledger end before submission so waitForCommand knows where to start polling\n const ledgerEndResponse = await this.#api.getV2StateLedgerEnd();\n const completionOffset = ledgerEndResponse.offset;\n\n const request: PostV2CommandsAsyncSubmitRequest = {\n jsCommands: {\n commandId,\n actAs: actors.actAs,\n readAs: actors.readAs ?? actors.actAs,\n userId: this.#userId,\n synchronizerId,\n commands,\n disclosedContracts: opts.disclosedContracts,\n },\n };\n\n try {\n await this.#api.postV2CommandsAsyncSubmit(request);\n } catch (err: unknown) {\n throw await this.#throwApiError(err, 'Command submission');\n }\n\n return { commandId, completionOffset };\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Completion Waiting / Reconciliation\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Wait for a command to be accepted or rejected.\n *\n * Uses bounded exponential backoff to avoid hammering the participant.\n */\n async waitForCommand(commandId: string, opts: WaitOptions): Promise<WaitResult> {\n const { parties, timeoutMs = 30_000, poll = {} } = opts;\n\n const limit = poll.limit ?? 50;\n const streamIdleTimeoutMs = poll.streamIdleTimeoutMs ?? 1000;\n const initialBackoffMs = poll.backoffMs?.initial ?? 100;\n const maxBackoffMs = poll.backoffMs?.max ?? 5000;\n\n let beginExclusive = opts.beginExclusive ?? 0;\n let currentBackoff = initialBackoffMs;\n const deadline = Date.now() + timeoutMs;\n\n // Poll the completions stream until we find our commandId or timeout\n while (Date.now() < deadline) {\n const request: PostV2CommandsCompletionsRequest = {\n completionStreamRequest: {\n beginExclusive,\n parties,\n userId: this.#userId,\n },\n limit,\n streamIdleTimeoutMs,\n };\n\n const rawResponse = await this.#api.postV2CommandsCompletionsRaw(request);\n const responseText = await rawResponse.raw.text();\n const completions = JSON.parse(responseText) as unknown[];\n\n // Scan each completion for our commandId\n for (const item of completions) {\n const normalized = item as Record<string, unknown>;\n const completionResponse = this.#getField<Record<string, unknown>>(\n normalized,\n 'completionResponse',\n );\n if (!completionResponse) continue;\n\n // Handle offsetCheckpoint responses (no commandId)\n const offsetCheckpoint = this.#getField<Record<string, unknown>>(\n completionResponse,\n 'offsetCheckpoint',\n );\n if (offsetCheckpoint) {\n const checkpoint =\n this.#getField<Record<string, unknown>>(offsetCheckpoint, 'value') ??\n offsetCheckpoint;\n const checkpointOffset = this.#getField<number>(checkpoint, 'offset');\n if (checkpointOffset !== undefined) {\n beginExclusive = Math.max(beginExclusive, checkpointOffset);\n }\n continue;\n }\n\n // Navigate: completionResponse.completion.value\n const completionWrapper = this.#getField<Record<string, unknown>>(\n completionResponse,\n 'completion',\n );\n const completion =\n this.#getField<Record<string, unknown>>(completionWrapper, 'value') ??\n completionWrapper;\n if (!completion) continue;\n\n const offset = this.#getField<number>(completion, 'offset');\n const completionCommandId = this.#getField<string>(completion, 'commandId');\n\n // Found our command — check gRPC status to determine accept/reject\n if (completionCommandId === commandId) {\n const status = this.#getField<{\n code?: number;\n message?: string;\n details?: unknown;\n }>(completion, 'status');\n\n // code === 0 or status undefined means success (gRPC OK)\n if (!status || status.code === 0) {\n return {\n status: 'accepted',\n commandId,\n updateId: this.#getField<string>(completion, 'updateId') ?? '',\n offset: offset ?? 0,\n };\n } else {\n return {\n status: 'rejected',\n commandId,\n offset: offset ?? 0,\n error: {\n code: status.code,\n message: status.message ?? 'Unknown rejection',\n details: status.details,\n },\n };\n }\n }\n\n // Not our command — advance offset cursor past it\n if (offset !== undefined) {\n beginExclusive = Math.max(beginExclusive, offset);\n }\n }\n\n // Bounded exponential backoff\n const remainingTime = deadline - Date.now();\n const sleepTime = Math.min(currentBackoff, remainingTime, maxBackoffMs);\n if (sleepTime > 0) {\n await new Promise((resolve) => setTimeout(resolve, sleepTime));\n }\n currentBackoff = Math.min(currentBackoff * 2, maxBackoffMs);\n }\n\n return { status: 'timeout', commandId, lastCheckedOffset: beginExclusive };\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Disclosed Contracts\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Fetch active contract's created event by ID.\n * Returns undefined if contract doesn't exist or is archived.\n */\n async #fetchActiveContractEvent(\n contractId: ContractId<unknown>,\n parties: string[],\n includeCreatedEventBlob: boolean,\n ): Promise<CreatedEvent | undefined> {\n const request: PostV2EventsEventsByContractIdRequest = {\n getEventsByContractIdRequest: {\n contractId,\n eventFormat: {\n filtersByParty: this.#buildPartyFilters(parties, includeCreatedEventBlob),\n verbose: false,\n },\n },\n };\n\n const response = await this.#api.postV2EventsEventsByContractId(request);\n\n // If archived, contract is not active\n if (response.archived) return undefined;\n\n return response.created?.createdEvent;\n }\n\n /**\n * Build a disclosure for a contract.\n *\n * @param contractId - The contract ID to create disclosure for\n * @param parties - Parties that have visibility to the contract\n * @returns DisclosedContract if visible, undefined if not found\n * @throws CantonProtocolError if contract visible but blob missing (server/config mismatch)\n */\n async createDisclosure(\n contractId: ContractId<unknown>,\n parties: string[],\n ): Promise<DisclosedContract | undefined> {\n const synchronizerId = await this.#ensureSynchronizerId();\n const created = await this.#fetchActiveContractEvent(contractId, parties, true);\n\n if (!created) return undefined;\n\n const validated = this.#validateDisclosureEvent(created, contractId);\n return {\n ...validated,\n synchronizerId,\n };\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Internal: Active Contract Queries (used by CantonSdk)\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Fetch a single contract by ID.\n *\n * @param contractId The contract ID to fetch\n * @param parties Parties to use for filtering (required for non-admin tokens)\n */\n async fetchContractById(\n contractId: ContractId<unknown>,\n parties: string[],\n ): Promise<CreatedEvent | undefined> {\n return this.#fetchActiveContractEvent(contractId, parties, false);\n }\n\n /**\n * Fetch both the created and archived events for a contract by ID.\n * Unlike fetchContractById, this preserves archival information.\n */\n async fetchEventsByContractId(\n contractId: string,\n parties: string[],\n ): Promise<{ created: CreatedEvent | undefined; archived: ArchivedEvent | undefined }> {\n const request: PostV2EventsEventsByContractIdRequest = {\n getEventsByContractIdRequest: {\n contractId,\n eventFormat: {\n filtersByParty: this.#buildPartyFilters(parties, false),\n verbose: false,\n },\n },\n };\n\n const response = await this.#api.postV2EventsEventsByContractId(request);\n\n return {\n created: response.created?.createdEvent,\n archived: response.archived?.archivedEvent,\n };\n }\n\n /**\n * Fetch an update (transaction) by its ID.\n * @param updateId The update ID from a completion\n * @param parties Parties to use for the query filter\n * @returns The full update response\n */\n async fetchTransactionByUpdateId(\n updateId: string,\n parties: string[],\n ): Promise<CantonTransaction> {\n const response = await this.#api.postV2UpdatesUpdateByIdRaw({\n getUpdateByIdRequest: {\n updateId,\n updateFormat: this.#buildUpdateFormat(parties),\n },\n });\n\n const updateResponse: CantonUpdateResponse = await response.raw.json();\n return this.#parseTransactionFromUpdate(\n updateResponse,\n `Update ${updateId} is not a transaction`,\n );\n }\n\n /**\n * Fetch a transaction by its offset.\n * @param offset - The ledger offset\n * @param parties - Parties to use for the query filter\n * @returns The full transaction including recordTime\n */\n async fetchTransactionByOffset(offset: number, parties: string[]): Promise<CantonTransaction> {\n const response = await this.#api.postV2UpdatesUpdateByOffsetRaw({\n getUpdateByOffsetRequest: {\n offset,\n updateFormat: this.#buildUpdateFormat(parties),\n },\n });\n\n const updateResponse: CantonUpdateResponse = await response.raw.json();\n return this.#parseTransactionFromUpdate(\n updateResponse,\n `Update at offset ${offset} is not a transaction`,\n );\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // External Party / Interactive Submission\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Prepare commands for external party signing.\n *\n * Returns a typed PreparedTransaction that preserves the contract type\n * through the signing flow. After signing, use submitSigned() to submit.\n *\n * @typeparam T The contract payload type (phantom type for type safety)\n *\n * @example\n * ```ts\n * const prepared = await client.prepareForSigning<Oft>({ actAs: [party] }, [cmd]);\n * const signature = await sign(prepared.preparedTransactionHash);\n * await client.submitSigned(prepared, [signature]);\n * ```\n */\n async prepareForSigning(\n actors: SubmitActors,\n commands: Command[],\n opts: { disclosedContracts?: DisclosedContract[]; commandId?: string } = {},\n ): Promise<PreparedTransaction> {\n const synchronizerId = await this.#ensureSynchronizerId();\n const commandId = opts.commandId ?? randomUUID();\n\n const request: PostV2InteractiveSubmissionPrepareRequest = {\n jsPrepareSubmissionRequest: {\n userId: this.#userId,\n commandId,\n commands,\n actAs: actors.actAs,\n readAs: actors.readAs ?? actors.actAs,\n disclosedContracts: opts.disclosedContracts,\n synchronizerId,\n verboseHashing: false,\n packageIdSelectionPreference: [],\n },\n };\n\n let response;\n try {\n response = await this.#api.postV2InteractiveSubmissionPrepare(request);\n } catch (error: unknown) {\n throw await this.#throwApiError(error, 'Interactive submission prepare');\n }\n const validated = this.#validatePrepareResponse(response);\n\n return {\n ...validated,\n hashingSchemeVersion:\n validated.hashingSchemeVersion as PreparedTransaction['hashingSchemeVersion'],\n commandId,\n };\n }\n\n /**\n * Submit a pre-signed transaction.\n *\n * The generic type T flows from prepareForSigning() for type documentation.\n */\n async submitSigned(\n prepared: PreparedTransaction,\n signatures: ExternalSignature[],\n ): Promise<SubmitResult> {\n // Snapshot ledger end so the caller can poll for completion from this point\n const ledgerEndResponse = await this.#api.getV2StateLedgerEnd();\n const completionOffset = ledgerEndResponse.offset;\n\n const request: PostV2InteractiveSubmissionExecuteRequest = {\n jsExecuteSubmissionRequest: {\n preparedTransaction: prepared.preparedTransaction,\n // Map each ExternalSignature into the Canton per-party signature format\n partySignatures: {\n signatures: signatures.map((sig) => ({\n party: sig.party,\n signatures: [\n {\n format: sig.format,\n signature: sig.signature,\n signedBy: sig.signedBy,\n signingAlgorithmSpec: sig.signingAlgorithmSpec,\n },\n ],\n })),\n },\n deduplicationPeriod: {\n deduplicationDuration: {\n value: { seconds: 3600, nanos: 0 }, // 1 hour default\n },\n },\n submissionId: randomUUID(),\n userId: this.#userId,\n hashingSchemeVersion: prepared.hashingSchemeVersion,\n },\n };\n\n try {\n await this.#api.postV2InteractiveSubmissionExecute(request);\n } catch (error: unknown) {\n throw await this.#throwApiError(error, 'Interactive submission execute');\n }\n\n return { commandId: prepared.commandId, completionOffset };\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Active Contracts Query\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Get the current ledger end offset.\n */\n async getLedgerEndOffset(): Promise<number> {\n const response = await this.#api.getV2StateLedgerEnd();\n return response.offset;\n }\n\n /**\n * Query active contracts at a given offset with optional template filtering.\n *\n * @param party - Party to query as\n * @param offset - Ledger offset for the snapshot\n * @param opts.templateIds - Optional template IDs to filter by\n * @param opts.limit - Maximum number of contracts to return\n */\n async queryActiveContracts(\n party: string,\n offset: number,\n opts?: { templateIds?: string[]; limit?: number },\n ): Promise<JsActiveContract[]> {\n return this.queryActiveContractsByParties([party], offset, opts?.templateIds ?? [], {\n limit: opts?.limit,\n });\n }\n\n /**\n * Query active contracts visible to any of the given parties.\n *\n * Single API call with all parties in filtersByParty.\n *\n * @param parties - Parties to query as (for visibility)\n * @param offset - Ledger offset for the snapshot\n * @param templateIds - Template IDs to filter by\n * @param opts.limit - Maximum number of contracts to return\n */\n async queryActiveContractsByParties(\n parties: string[],\n offset: number,\n templateIds: string[],\n opts?: { limit?: number },\n ): Promise<JsActiveContract[]> {\n return this.#fetchActiveContracts(\n parties,\n offset,\n this.#buildCumulativeFilters(templateIds),\n opts,\n );\n }\n\n /**\n * Query active contracts visible to any of the given parties that implement\n * the given interfaces.\n *\n * @param parties - Parties to query as (for visibility)\n * @param offset - Ledger offset for the snapshot\n * @param interfaceIds - Interface IDs to filter by (e.g. \"#package:Module:Interface\")\n * @param opts.limit - Maximum number of contracts to return\n */\n async queryActiveContractsByInterface(\n parties: string[],\n offset: number,\n interfaceIds: string[],\n opts?: { limit?: number },\n ): Promise<JsActiveContract[]> {\n return this.#fetchActiveContracts(\n parties,\n offset,\n this.#buildInterfaceCumulativeFilters(interfaceIds),\n opts,\n );\n }\n\n async #fetchActiveContracts(\n parties: string[],\n offset: number,\n cumulativeFilter: CumulativeFilter[],\n opts?: { limit?: number },\n ): Promise<JsActiveContract[]> {\n const filtersByParty = Object.fromEntries(\n parties.map((party) => [party, { cumulative: cumulativeFilter }]),\n );\n\n const rawResponse = await this.#api.postV2StateActiveContractsRaw({\n getActiveContractsRequest: {\n filter: { filtersByParty },\n verbose: true,\n activeAtOffset: offset,\n },\n limit: opts?.limit,\n });\n\n // Raw response is an array of streamed entries; extract and deserialize contracts\n type RawActiveContractsResponse = Array<{\n contractEntry?: { JsActiveContract?: Record<string, unknown> };\n }>;\n const rawJson: RawActiveContractsResponse = await rawResponse.raw.json();\n\n return rawJson\n .map((item) => item.contractEntry?.JsActiveContract)\n .filter((contract): contract is Record<string, unknown> => contract != null)\n .map((contract) => JsActiveContractFromJSON(contract));\n }\n\n /**\n * Stream transactions from a given offset.\n *\n * Uses `updateFormat` with `TRANSACTION_SHAPE_LEDGER_EFFECTS` so consumers\n * receive `ExercisedEvent`s (e.g. the request-poller depends on\n * `Request_Create` exercise results). The deprecated legacy `filter`\n * shape would default to `ACS_DELTA`, which only emits Created/Archived\n * events and silently drops every exercise on the wire.\n *\n * @param party - Party to query as\n * @param beginExclusive - Start offset (exclusive)\n * @param endInclusive - End offset (inclusive)\n * @param opts.templateIds - Optional template IDs to filter by\n * @param opts.limit - Maximum number of transactions to return\n */\n async getUpdates(\n party: string,\n beginExclusive: number,\n endInclusive: number,\n opts?: { templateIds?: string[]; limit?: number },\n ): Promise<CantonUpdate[]> {\n const eventFormat = {\n filtersByParty: {\n [party]: { cumulative: this.#buildCumulativeFilters(opts?.templateIds) },\n },\n verbose: false,\n };\n const rawResponse = await this.#api.postV2UpdatesRaw({\n getUpdatesRequest: {\n beginExclusive,\n endInclusive,\n verbose: false,\n updateFormat: {\n includeTransactions: {\n eventFormat,\n transactionShape: 'TRANSACTION_SHAPE_LEDGER_EFFECTS' as const,\n },\n },\n },\n limit: opts?.limit,\n });\n\n const updateResponses: CantonUpdateResponse[] = await rawResponse.raw.json();\n\n return updateResponses.map((response) => response.update);\n }\n\n /**\n * Build cumulative filters for party-based queries.\n * If templateIds provided, filters by those templates; otherwise uses wildcard.\n */\n #buildCumulativeFilters(templateIds?: string[]): CumulativeFilter[] {\n if (templateIds?.length) {\n return templateIds.map((templateId) => ({\n identifierFilter: {\n templateFilter: { value: { templateId, includeCreatedEventBlob: false } },\n },\n }));\n }\n return [\n { identifierFilter: { wildcardFilter: { value: { includeCreatedEventBlob: false } } } },\n ];\n }\n\n /**\n * Build cumulative filters for interface-based ACS queries.\n * If interfaceIds provided, filters by those interfaces; otherwise uses wildcard.\n */\n #buildInterfaceCumulativeFilters(interfaceIds?: string[]): CumulativeFilter[] {\n if (interfaceIds?.length) {\n return interfaceIds.map((interfaceId) => ({\n identifierFilter: {\n interfaceFilter: {\n value: {\n interfaceId,\n includeInterfaceView: true,\n includeCreatedEventBlob: false,\n },\n },\n },\n }));\n }\n return [\n { identifierFilter: { wildcardFilter: { value: { includeCreatedEventBlob: false } } } },\n ];\n }\n\n /**\n * Build the standard update format for fetching transactions.\n */\n #buildUpdateFormat(parties: string[]) {\n return {\n includeTransactions: {\n eventFormat: {\n filtersByParty: this.#buildPartyFilters(parties, false),\n verbose: false,\n },\n transactionShape: 'TRANSACTION_SHAPE_LEDGER_EFFECTS' as const,\n },\n };\n }\n\n /**\n * Parse an update response and extract the transaction.\n * The response structure is: { update: { Transaction: { value: CantonTransaction } } }\n */\n #parseTransactionFromUpdate(\n json: CantonUpdateResponse,\n notFoundMessage: string,\n ): CantonTransaction {\n // Update can be a Transaction, Reassignment, TopologyTransaction, or OffsetCheckpoint\n if (!('Transaction' in json.update)) {\n throw new CantonProtocolError(notFoundMessage);\n }\n\n return json.update.Transaction.value;\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { instanceOfOperationOneOf2, OperationOneOf2FromJSONTyped, OperationOneOf2ToJSON } from './T6UKLW2J.js';
|
|
2
1
|
import { instanceOfOperationOneOf, OperationOneOfFromJSONTyped, OperationOneOfToJSON } from './FEAZ4ULP.js';
|
|
3
2
|
import { instanceOfOperationOneOf1, OperationOneOf1FromJSONTyped, OperationOneOf1ToJSON } from './SZLSOCSR.js';
|
|
3
|
+
import { instanceOfOperationOneOf2, OperationOneOf2FromJSONTyped, OperationOneOf2ToJSON } from './T6UKLW2J.js';
|
|
4
4
|
import { __name } from './VUOMXK5T.js';
|
|
5
5
|
|
|
6
6
|
// src/open-api/models/Operation.ts
|
|
@@ -52,5 +52,5 @@ function OperationToJSONTyped(value, ignoreDiscriminator = false) {
|
|
|
52
52
|
__name(OperationToJSONTyped, "OperationToJSONTyped");
|
|
53
53
|
|
|
54
54
|
export { OperationFromJSON, OperationFromJSONTyped, OperationToJSON, OperationToJSONTyped };
|
|
55
|
-
//# sourceMappingURL=
|
|
56
|
-
//# sourceMappingURL=
|
|
55
|
+
//# sourceMappingURL=JH2I4JGJ.js.map
|
|
56
|
+
//# sourceMappingURL=JH2I4JGJ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/open-api/models/Operation.ts"],"names":["OperationFromJSON","json","OperationFromJSONTyped","ignoreDiscriminator","instanceOfOperationOneOf","OperationOneOfFromJSONTyped","instanceOfOperationOneOf1","OperationOneOf1FromJSONTyped","instanceOfOperationOneOf2","OperationOneOf2FromJSONTyped","OperationToJSON","OperationToJSONTyped","value","OperationOneOfToJSON","OperationOneOf1ToJSON","OperationOneOf2ToJSON"],"mappings":";;;;;;AA2CO,SAASA,kBAAkBC,IAAAA,EAAS;AACvC,EAAA,OAAOC,sBAAAA,CAAuBD,IAAM,CAAA;AACxC;AAFgBD,MAAAA,CAAAA,iBAAAA,EAAAA,mBAAAA,CAAAA;AAIT,SAASE,sBAAAA,CAAuBD,MAAWE,mBAAAA,EAA4B;AAC1E,EAAA,IAAIF,QAAQ,IAAA,EAAM;AACd,IAAA,OAAOA,IAAAA;AACX,EAAA;AACA,EAAA,IAAI,OAAOA,SAAS,QAAA,EAAU;AAC1B,IAAA,OAAOA,IAAAA;AACX,EAAA;AACA,EAAA,IAAIG,wBAAAA,CAAyBH,IAAAA,CAAAA,EAAO;AAChC,IAAA,OAAOI,2BAAAA,CAA4BJ,MAAM,IAAA,CAAA;AAC7C,EAAA;AACA,EAAA,IAAIK,yBAAAA,CAA0BL,IAAAA,CAAAA,EAAO;AACjC,IAAA,OAAOM,4BAAAA,CAA6BN,MAAM,IAAA,CAAA;AAC9C,EAAA;AACA,EAAA,IAAIO,yBAAAA,CAA0BP,IAAAA,CAAAA,EAAO;AACjC,IAAA,OAAOQ,4BAAAA,CAA6BR,MAAM,IAAA,CAAA;AAC9C,EAAA;AACA,EAAA,OAAO,EAAC;AACZ;AAjBgBC,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;AAmBT,SAASQ,gBAAgBT,IAAAA,EAAS;AACrC,EAAA,OAAOU,oBAAAA,CAAqBV,MAAM,KAAA,CAAA;AACtC;AAFgBS,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA;AAIT,SAASC,oBAAAA,CAAqBC,KAAAA,EAA0BT,mBAAAA,GAA+B,KAAA,EAAK;AAC/F,EAAA,IAAIS,SAAS,IAAA,EAAM;AACf,IAAA,OAAOA,KAAAA;AACX,EAAA;AACA,EAAA,IAAI,OAAOA,UAAU,QAAA,EAAU;AAC3B,IAAA,OAAOA,KAAAA;AACX,EAAA;AACA,EAAA,IAAIR,wBAAAA,CAAyBQ,KAAAA,CAAAA,EAAQ;AACjC,IAAA,OAAOC,qBAAqBD,KAAAA,CAAAA;AAChC,EAAA;AACA,EAAA,IAAIN,yBAAAA,CAA0BM,KAAAA,CAAAA,EAAQ;AAClC,IAAA,OAAOE,sBAAsBF,KAAAA,CAAAA;AACjC,EAAA;AACA,EAAA,IAAIJ,yBAAAA,CAA0BI,KAAAA,CAAAA,EAAQ;AAClC,IAAA,OAAOG,sBAAsBH,KAAAA,CAAAA;AACjC,EAAA;AACA,EAAA,OAAO,EAAC;AACZ;AAjBgBD,MAAAA,CAAAA,oBAAAA,EAAAA,sBAAAA,CAAAA","file":"
|
|
1
|
+
{"version":3,"sources":["../src/open-api/models/Operation.ts"],"names":["OperationFromJSON","json","OperationFromJSONTyped","ignoreDiscriminator","instanceOfOperationOneOf","OperationOneOfFromJSONTyped","instanceOfOperationOneOf1","OperationOneOf1FromJSONTyped","instanceOfOperationOneOf2","OperationOneOf2FromJSONTyped","OperationToJSON","OperationToJSONTyped","value","OperationOneOfToJSON","OperationOneOf1ToJSON","OperationOneOf2ToJSON"],"mappings":";;;;;;AA2CO,SAASA,kBAAkBC,IAAAA,EAAS;AACvC,EAAA,OAAOC,sBAAAA,CAAuBD,IAAM,CAAA;AACxC;AAFgBD,MAAAA,CAAAA,iBAAAA,EAAAA,mBAAAA,CAAAA;AAIT,SAASE,sBAAAA,CAAuBD,MAAWE,mBAAAA,EAA4B;AAC1E,EAAA,IAAIF,QAAQ,IAAA,EAAM;AACd,IAAA,OAAOA,IAAAA;AACX,EAAA;AACA,EAAA,IAAI,OAAOA,SAAS,QAAA,EAAU;AAC1B,IAAA,OAAOA,IAAAA;AACX,EAAA;AACA,EAAA,IAAIG,wBAAAA,CAAyBH,IAAAA,CAAAA,EAAO;AAChC,IAAA,OAAOI,2BAAAA,CAA4BJ,MAAM,IAAA,CAAA;AAC7C,EAAA;AACA,EAAA,IAAIK,yBAAAA,CAA0BL,IAAAA,CAAAA,EAAO;AACjC,IAAA,OAAOM,4BAAAA,CAA6BN,MAAM,IAAA,CAAA;AAC9C,EAAA;AACA,EAAA,IAAIO,yBAAAA,CAA0BP,IAAAA,CAAAA,EAAO;AACjC,IAAA,OAAOQ,4BAAAA,CAA6BR,MAAM,IAAA,CAAA;AAC9C,EAAA;AACA,EAAA,OAAO,EAAC;AACZ;AAjBgBC,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;AAmBT,SAASQ,gBAAgBT,IAAAA,EAAS;AACrC,EAAA,OAAOU,oBAAAA,CAAqBV,MAAM,KAAA,CAAA;AACtC;AAFgBS,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA;AAIT,SAASC,oBAAAA,CAAqBC,KAAAA,EAA0BT,mBAAAA,GAA+B,KAAA,EAAK;AAC/F,EAAA,IAAIS,SAAS,IAAA,EAAM;AACf,IAAA,OAAOA,KAAAA;AACX,EAAA;AACA,EAAA,IAAI,OAAOA,UAAU,QAAA,EAAU;AAC3B,IAAA,OAAOA,KAAAA;AACX,EAAA;AACA,EAAA,IAAIR,wBAAAA,CAAyBQ,KAAAA,CAAAA,EAAQ;AACjC,IAAA,OAAOC,qBAAqBD,KAAAA,CAAAA;AAChC,EAAA;AACA,EAAA,IAAIN,yBAAAA,CAA0BM,KAAAA,CAAAA,EAAQ;AAClC,IAAA,OAAOE,sBAAsBF,KAAAA,CAAAA;AACjC,EAAA;AACA,EAAA,IAAIJ,yBAAAA,CAA0BI,KAAAA,CAAAA,EAAQ;AAClC,IAAA,OAAOG,sBAAsBH,KAAAA,CAAAA;AACjC,EAAA;AACA,EAAA,OAAO,EAAC;AACZ;AAjBgBD,MAAAA,CAAAA,oBAAAA,EAAAA,sBAAAA,CAAAA","file":"JH2I4JGJ.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.4.3-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 type { OperationOneOf } from './OperationOneOf.js';\nimport {\n instanceOfOperationOneOf,\n OperationOneOfFromJSON,\n OperationOneOfFromJSONTyped,\n OperationOneOfToJSON,\n} from './OperationOneOf.js';\nimport type { OperationOneOf1 } from './OperationOneOf1.js';\nimport {\n instanceOfOperationOneOf1,\n OperationOneOf1FromJSON,\n OperationOneOf1FromJSONTyped,\n OperationOneOf1ToJSON,\n} from './OperationOneOf1.js';\nimport type { OperationOneOf2 } from './OperationOneOf2.js';\nimport {\n instanceOfOperationOneOf2,\n OperationOneOf2FromJSON,\n OperationOneOf2FromJSONTyped,\n OperationOneOf2ToJSON,\n} from './OperationOneOf2.js';\n\n/**\n * @type Operation\n * \n * @export\n */\nexport type Operation = OperationOneOf | OperationOneOf1 | OperationOneOf2;\n\nexport function OperationFromJSON(json: any): Operation {\n return OperationFromJSONTyped(json, false);\n}\n\nexport function OperationFromJSONTyped(json: any, ignoreDiscriminator: boolean): Operation {\n if (json == null) {\n return json;\n }\n if (typeof json !== 'object') {\n return json;\n }\n if (instanceOfOperationOneOf(json)) {\n return OperationOneOfFromJSONTyped(json, true);\n }\n if (instanceOfOperationOneOf1(json)) {\n return OperationOneOf1FromJSONTyped(json, true);\n }\n if (instanceOfOperationOneOf2(json)) {\n return OperationOneOf2FromJSONTyped(json, true);\n }\n return {} as any;\n}\n\nexport function OperationToJSON(json: any): any {\n return OperationToJSONTyped(json, false);\n}\n\nexport function OperationToJSONTyped(value?: Operation | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n if (typeof value !== 'object') {\n return value;\n }\n if (instanceOfOperationOneOf(value)) {\n return OperationOneOfToJSON(value as OperationOneOf);\n }\n if (instanceOfOperationOneOf1(value)) {\n return OperationOneOf1ToJSON(value as OperationOneOf1);\n }\n if (instanceOfOperationOneOf2(value)) {\n return OperationOneOf2ToJSON(value as OperationOneOf2);\n }\n return {};\n}\n\n"]}
|
|
@@ -34,6 +34,7 @@ var cantonCommandSchema = z.union([
|
|
|
34
34
|
})
|
|
35
35
|
})
|
|
36
36
|
]);
|
|
37
|
+
var unresolvedCantonCommandSchema = cantonCommandSchema;
|
|
37
38
|
var cantonDisclosedContractSchema = z.object({
|
|
38
39
|
templateId: z.string().optional(),
|
|
39
40
|
contractId: z.string(),
|
|
@@ -42,15 +43,16 @@ var cantonDisclosedContractSchema = z.object({
|
|
|
42
43
|
});
|
|
43
44
|
var cantonTransactionSchema = transactionSchema.extend({
|
|
44
45
|
populatedTransaction: z.object({
|
|
45
|
-
unresolvedCommands: z.array(
|
|
46
|
+
unresolvedCommands: z.array(unresolvedCantonCommandSchema),
|
|
46
47
|
unresolvedDisclosedContracts: z.array(cantonDisclosedContractSchema),
|
|
47
48
|
/** Parties submitting the command (actAs) */
|
|
48
49
|
actAs: z.array(z.string()),
|
|
49
50
|
/** Maps each actAs party → the senderEntityName(s) controlling its signing
|
|
50
51
|
* key(s), always as an array. `.optional()` only so deferred-sender create-time
|
|
51
|
-
* payloads parse
|
|
52
|
-
*
|
|
53
|
-
*
|
|
52
|
+
* payloads parse. At sign time: multi-party transactions must map every actAs
|
|
53
|
+
* party or signing throws; single-party transactions may omit the map and sign()
|
|
54
|
+
* falls back to the queue's senderEntityName. Multiple entries = a multisig party
|
|
55
|
+
* (decentralized namespace) whose keys must all sign. */
|
|
54
56
|
partyToSenderEntity: z.record(z.string(), z.array(z.string())).optional(),
|
|
55
57
|
/** Deployment spec set at prepare time; the deployment activity resolves the live address ref from this + the createCommand. */
|
|
56
58
|
deploymentSpec: z.object({
|
|
@@ -114,6 +116,6 @@ var buildCantonTransaction = /* @__PURE__ */ __name(async (chainName, tx) => {
|
|
|
114
116
|
};
|
|
115
117
|
}, "buildCantonTransaction");
|
|
116
118
|
|
|
117
|
-
export { buildCantonTransaction, cantonAssignedTransactionSchema, cantonCommandSchema, cantonDisclosedContractSchema, cantonMinedTransactionSchema, cantonSignedTransactionSchema, cantonTransactionSchema, cantonTransactionWithResultSchema };
|
|
118
|
-
//# sourceMappingURL=
|
|
119
|
-
//# sourceMappingURL=
|
|
119
|
+
export { buildCantonTransaction, cantonAssignedTransactionSchema, cantonCommandSchema, cantonDisclosedContractSchema, cantonMinedTransactionSchema, cantonSignedTransactionSchema, cantonTransactionSchema, cantonTransactionWithResultSchema, unresolvedCantonCommandSchema };
|
|
120
|
+
//# sourceMappingURL=JJKMXRP7.js.map
|
|
121
|
+
//# sourceMappingURL=JJKMXRP7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/transaction.ts"],"names":["cantonCommandSchema","z","union","object","createCommand","templateId","string","createArguments","any","exerciseCommand","contractId","choice","choiceArgument","createAndExerciseCommand","exerciseByKeyCommand","contractKey","unresolvedCantonCommandSchema","cantonDisclosedContractSchema","optional","createdEventBlob","synchronizerId","cantonTransactionSchema","transactionSchema","extend","populatedTransaction","unresolvedCommands","array","unresolvedDisclosedContracts","actAs","partyToSenderEntity","record","deploymentSpec","packageName","ownerField","identityKeys","cantonTransactionWithResultSchema","buildTransactionWithResultSchema","cantonInflightTransactionSchema","preparedTransaction","preparedTransactionHash","hashingSchemeVersion","enum","commandId","completionOffset","number","cantonAssignedTransactionSchema","assignedTransactionSchema","shape","inflightTransaction","cantonSignedTransactionSchema","signedTransactionSchema","commands","disclosedContracts","signedTransaction","signatures","party","format","signature","signedBy","signingAlgorithmSpec","cantonMinedTransactionSchema","minedTransactionSchema","buildCantonTransaction","chainName","tx","timestamps","created","Date","now"],"mappings":"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","file":"JJKMXRP7.js","sourcesContent":["import { z } from 'zod';\n\nimport {\n assignedTransactionSchema,\n buildTransactionWithResultSchema,\n minedTransactionSchema,\n signedTransactionSchema,\n transactionSchema,\n} from '@layerzerolabs/common-chain-model';\nimport type { PartialBy } from '@layerzerolabs/typescript-utils';\n\nimport type { CantonDeferredRef } from './deferredValue';\n\n// === Component schemas ===\n\nexport const cantonCommandSchema = z.union([\n z.object({\n createCommand: z.object({\n templateId: z.string(),\n createArguments: z.any(),\n }),\n }),\n z.object({\n exerciseCommand: z.object({\n templateId: z.string(),\n contractId: z.string(),\n choice: z.string(),\n choiceArgument: z.any(),\n }),\n }),\n z.object({\n createAndExerciseCommand: z.object({\n templateId: z.string(),\n createArguments: z.any(),\n choice: z.string(),\n choiceArgument: z.any(),\n }),\n }),\n z.object({\n exerciseByKeyCommand: z.object({\n templateId: z.string(),\n contractKey: z.any(),\n choice: z.string(),\n choiceArgument: z.any(),\n }),\n }),\n]);\n\n/**\n * Like cantonCommandSchema but with contractId typed as CantonDeferredRef | string.\n * Used for unresolvedCommands where exercise contractIds are deferred sentinels.\n * At runtime the validation is identical (z.string()); only the TypeScript type differs.\n */\nexport const unresolvedCantonCommandSchema = cantonCommandSchema as unknown as z.ZodType<\n | z.infer<typeof cantonCommandSchema>\n | {\n exerciseCommand: {\n templateId: string;\n contractId: CantonDeferredRef | string;\n choice: string;\n choiceArgument: unknown;\n };\n }\n>;\n\nexport const cantonDisclosedContractSchema = z.object({\n templateId: z.string().optional(),\n contractId: z.string(),\n createdEventBlob: z.string(),\n synchronizerId: z.string(),\n});\n\n// === Lifecycle schemas ===\n\n/**\n * Canton transaction schema for Daml Ledger API commands.\n */\nexport const cantonTransactionSchema = transactionSchema.extend({\n populatedTransaction: z.object({\n unresolvedCommands: z.array(unresolvedCantonCommandSchema),\n unresolvedDisclosedContracts: z.array(cantonDisclosedContractSchema),\n\n /** Parties submitting the command (actAs) */\n actAs: z.array(z.string()),\n /** Maps each actAs party → the senderEntityName(s) controlling its signing\n * key(s), always as an array. `.optional()` only so deferred-sender create-time\n * payloads parse. At sign time: multi-party transactions must map every actAs\n * party or signing throws; single-party transactions may omit the map and sign()\n * falls back to the queue's senderEntityName. Multiple entries = a multisig party\n * (decentralized namespace) whose keys must all sign. */\n partyToSenderEntity: z.record(z.string(), z.array(z.string())).optional(),\n /** Deployment spec set at prepare time; the deployment activity resolves the live address ref from this + the createCommand. */\n deploymentSpec: z\n .object({\n packageName: z.string(),\n ownerField: z.string(),\n identityKeys: z.array(z.string()),\n })\n .optional(),\n }),\n});\n\nexport const cantonTransactionWithResultSchema =\n buildTransactionWithResultSchema(cantonTransactionSchema);\n\nconst cantonInflightTransactionSchema = z.object({\n /** The prepared transaction blob */\n preparedTransaction: z.string(),\n /** Hash of the prepared transaction (what was signed) */\n preparedTransactionHash: z.string(),\n /** Hashing scheme version used */\n hashingSchemeVersion: z.enum([\n 'HASHING_SCHEME_VERSION_UNSPECIFIED',\n 'HASHING_SCHEME_VERSION_V2',\n ]),\n /** Command ID for tracking */\n commandId: z.string(),\n // Ledger offset at which the submission landed — used as `beginExclusive`\n // for waitForCommand to avoid polling from the start of the ledger.\n // Optional: only present after send(); absent for old/retry scenarios.\n completionOffset: z.number().optional(),\n});\n\n/**\n * Assigned transaction includes the inflight transaction data.\n */\nexport const cantonAssignedTransactionSchema = assignedTransactionSchema.extend({\n ...cantonTransactionSchema.shape,\n inflightTransaction: cantonInflightTransactionSchema.optional(),\n});\n\n/**\n * Signed transaction includes the DER-encoded ECDSA signature.\n */\nexport const cantonSignedTransactionSchema = signedTransactionSchema.extend({\n ...cantonAssignedTransactionSchema.shape,\n // Resolved commands and contracts\n commands: z.array(cantonCommandSchema),\n disclosedContracts: z.array(cantonDisclosedContractSchema),\n signedTransaction: z.object({\n /** Per-party signatures in the format expected by Canton's submitSigned */\n signatures: z.array(\n z.object({\n party: z.string(),\n signatures: z.array(\n z.object({\n format: z.string(),\n signature: z.string(),\n signedBy: z.string(),\n signingAlgorithmSpec: z.string(),\n }),\n ),\n }),\n ),\n }),\n});\n\n/**\n * Mined transaction with confirmation result.\n */\nexport const cantonMinedTransactionSchema = minedTransactionSchema.extend({\n ...cantonSignedTransactionSchema.shape,\n inflightTransaction: cantonInflightTransactionSchema,\n});\n\n/** Identifies a contract by data so its live cid can be re-resolved at sign time. */\nexport interface ContractDataIdentifier {\n cid: string;\n templateId: string;\n party: string;\n contractStateFilter?: Record<string, unknown>;\n}\n\nexport type CantonTx = z.infer<typeof cantonTransactionSchema>;\nexport type CantonPopulatedTransaction = CantonTx['populatedTransaction'];\nexport type CantonCommands = z.infer<typeof cantonCommandSchema>[];\nexport type CantonUnresolvedCommands = z.infer<typeof unresolvedCantonCommandSchema>[];\nexport type CantonDisclosedContracts = z.infer<typeof cantonDisclosedContractSchema>[];\nexport type CantonAssignedTx = z.infer<typeof cantonAssignedTransactionSchema>;\nexport type CantonSignedTx = z.infer<typeof cantonSignedTransactionSchema>;\nexport type CantonMinedTx = z.infer<typeof cantonMinedTransactionSchema>;\n\n// === Builder ===\n\nexport type BuildCantonTransactionInput = PartialBy<CantonTx, 'chainName' | 'timestamps'>;\n\nexport const buildCantonTransaction = async (\n chainName: string,\n tx: BuildCantonTransactionInput,\n): Promise<CantonTx> => {\n return {\n ...tx,\n chainName,\n timestamps: {\n created: tx.timestamps?.created ?? Date.now(),\n },\n };\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PartySignaturesFromJSON, PartySignaturesToJSON } from './LQ3LPE4G.js';
|
|
2
2
|
import { MinLedgerTimeFromJSON, MinLedgerTimeToJSON } from './A7U4VVQK.js';
|
|
3
|
-
import { DeduplicationPeriod2FromJSON, DeduplicationPeriod2ToJSON } from './
|
|
3
|
+
import { DeduplicationPeriod2FromJSON, DeduplicationPeriod2ToJSON } from './N3INXXRG.js';
|
|
4
4
|
import { __name } from './VUOMXK5T.js';
|
|
5
5
|
|
|
6
6
|
// src/open-api/models/JsExecuteSubmissionRequest.ts
|
|
@@ -56,5 +56,5 @@ function JsExecuteSubmissionRequestToJSONTyped(value, ignoreDiscriminator = fals
|
|
|
56
56
|
__name(JsExecuteSubmissionRequestToJSONTyped, "JsExecuteSubmissionRequestToJSONTyped");
|
|
57
57
|
|
|
58
58
|
export { JsExecuteSubmissionRequestFromJSON, JsExecuteSubmissionRequestFromJSONTyped, JsExecuteSubmissionRequestHashingSchemeVersionEnum, JsExecuteSubmissionRequestToJSON, JsExecuteSubmissionRequestToJSONTyped, instanceOfJsExecuteSubmissionRequest };
|
|
59
|
-
//# sourceMappingURL=
|
|
60
|
-
//# sourceMappingURL=
|
|
59
|
+
//# sourceMappingURL=JUZKQC2G.js.map
|
|
60
|
+
//# sourceMappingURL=JUZKQC2G.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/open-api/models/JsExecuteSubmissionRequest.ts"],"names":["JsExecuteSubmissionRequestHashingSchemeVersionEnum","HashingSchemeVersionUnspecified","HashingSchemeVersionV2","instanceOfJsExecuteSubmissionRequest","value","undefined","JsExecuteSubmissionRequestFromJSON","json","JsExecuteSubmissionRequestFromJSONTyped","ignoreDiscriminator","PartySignaturesFromJSON","DeduplicationPeriod2FromJSON","MinLedgerTimeFromJSON","JsExecuteSubmissionRequestToJSON","JsExecuteSubmissionRequestToJSONTyped","PartySignaturesToJSON","DeduplicationPeriod2ToJSON","MinLedgerTimeToJSON"],"mappings":";;;;;;AAqGO,IAAMA,kDAAAA,GAAqD;EAC9DC,+BAAAA,EAAiC,oCAAA;EACjCC,sBAAAA,EAAwB;AAC5B;AAOO,SAASC,qCAAqCC,KAAAA,EAAa;AAC9D,EAAA,IAAI,EAAE,qBAAA,IAAyBA,KAAAA,CAAAA,IAAUA,MAAM,qBAAA,CAAA,KAA2BC,QAAW,OAAO,KAAA;AAC5F,EAAA,IAAI,EAAE,cAAA,IAAkBD,KAAAA,CAAAA,IAAUA,MAAM,cAAA,CAAA,KAAoBC,QAAW,OAAO,KAAA;AAC9E,EAAA,IAAI,EAAE,QAAA,IAAYD,KAAAA,CAAAA,IAAUA,MAAM,QAAA,CAAA,KAAcC,QAAW,OAAO,KAAA;AAClE,EAAA,IAAI,EAAE,sBAAA,IAA0BD,KAAAA,CAAAA,IAAUA,MAAM,sBAAA,CAAA,KAA4BC,QAAW,OAAO,KAAA;AAC9F,EAAA,OAAO,IAAA;AACX;AANgBF,MAAAA,CAAAA,oCAAAA,EAAAA,sCAAAA,CAAAA;AAQT,SAASG,mCAAmCC,IAAAA,EAAS;AACxD,EAAA,OAAOC,uCAAAA,CAAwCD,IAAM,CAAA;AACzD;AAFgBD,MAAAA,CAAAA,kCAAAA,EAAAA,oCAAAA,CAAAA;AAIT,SAASE,uCAAAA,CAAwCD,MAAWE,mBAAAA,EAA4B;AAC3F,EAAA,IAAIF,QAAQ,IAAA,EAAM;AACd,IAAA,OAAOA,IAAAA;AACX,EAAA;AACA,EAAA,OAAO;AAEH,IAAA,qBAAA,EAAuBA,KAAK,qBAAA,CAAA,IAA0B,IAAA,GAAOF,MAAAA,GAAYE,KAAK,qBAAA,CAAA;IAC9E,iBAAA,EAAmBA,IAAAA,CAAK,iBAAA,CAAA,IAAsB,IAAA,GAAOF,SAAYK,uBAAAA,CAAwBH,IAAAA,CAAK,iBAAA,CAAkB,CAAA;IAChH,qBAAA,EAAuBI,4BAAAA,CAA6BJ,IAAAA,CAAK,qBAAA,CAAsB,CAAA;AAC/E,IAAA,cAAA,EAAgBA,KAAK,cAAA,CAAA;AACrB,IAAA,QAAA,EAAUA,KAAK,QAAA,CAAA;AACf,IAAA,sBAAA,EAAwBA,KAAK,sBAAA,CAAA;IAC7B,eAAA,EAAiBA,IAAAA,CAAK,eAAA,CAAA,IAAoB,IAAA,GAAOF,SAAYO,qBAAAA,CAAsBL,IAAAA,CAAK,eAAA,CAAgB;AAC5G,GAAA;AACJ;AAdgBC,MAAAA,CAAAA,uCAAAA,EAAAA,yCAAAA,CAAAA;AAgBT,SAASK,iCAAiCN,IAAAA,EAAS;AACtD,EAAA,OAAOO,qCAAAA,CAAsCP,MAAM,KAAA,CAAA;AACvD;AAFgBM,MAAAA,CAAAA,gCAAAA,EAAAA,kCAAAA,CAAAA;AAIT,SAASC,qCAAAA,CAAsCV,KAAAA,EAA2CK,mBAAAA,GAA+B,KAAA,EAAK;AACjI,EAAA,IAAIL,SAAS,IAAA,EAAM;AACf,IAAA,OAAOA,KAAAA;AACX,EAAA;AAEA,EAAA,OAAO;AAEH,IAAA,qBAAA,EAAuBA,MAAM,qBAAA,CAAA;IAC7B,iBAAA,EAAmBW,qBAAAA,CAAsBX,KAAAA,CAAM,iBAAA,CAAkB,CAAA;IACjE,qBAAA,EAAuBY,0BAAAA,CAA2BZ,KAAAA,CAAM,qBAAA,CAAsB,CAAA;AAC9E,IAAA,cAAA,EAAgBA,MAAM,cAAA,CAAA;AACtB,IAAA,QAAA,EAAUA,MAAM,QAAA,CAAA;AAChB,IAAA,sBAAA,EAAwBA,MAAM,sBAAA,CAAA;IAC9B,eAAA,EAAiBa,mBAAAA,CAAoBb,KAAAA,CAAM,eAAA,CAAgB;AAC/D,GAAA;AACJ;AAfgBU,MAAAA,CAAAA,qCAAAA,EAAAA,uCAAAA,CAAAA","file":"
|
|
1
|
+
{"version":3,"sources":["../src/open-api/models/JsExecuteSubmissionRequest.ts"],"names":["JsExecuteSubmissionRequestHashingSchemeVersionEnum","HashingSchemeVersionUnspecified","HashingSchemeVersionV2","instanceOfJsExecuteSubmissionRequest","value","undefined","JsExecuteSubmissionRequestFromJSON","json","JsExecuteSubmissionRequestFromJSONTyped","ignoreDiscriminator","PartySignaturesFromJSON","DeduplicationPeriod2FromJSON","MinLedgerTimeFromJSON","JsExecuteSubmissionRequestToJSON","JsExecuteSubmissionRequestToJSONTyped","PartySignaturesToJSON","DeduplicationPeriod2ToJSON","MinLedgerTimeToJSON"],"mappings":";;;;;;AAqGO,IAAMA,kDAAAA,GAAqD;EAC9DC,+BAAAA,EAAiC,oCAAA;EACjCC,sBAAAA,EAAwB;AAC5B;AAOO,SAASC,qCAAqCC,KAAAA,EAAa;AAC9D,EAAA,IAAI,EAAE,qBAAA,IAAyBA,KAAAA,CAAAA,IAAUA,MAAM,qBAAA,CAAA,KAA2BC,QAAW,OAAO,KAAA;AAC5F,EAAA,IAAI,EAAE,cAAA,IAAkBD,KAAAA,CAAAA,IAAUA,MAAM,cAAA,CAAA,KAAoBC,QAAW,OAAO,KAAA;AAC9E,EAAA,IAAI,EAAE,QAAA,IAAYD,KAAAA,CAAAA,IAAUA,MAAM,QAAA,CAAA,KAAcC,QAAW,OAAO,KAAA;AAClE,EAAA,IAAI,EAAE,sBAAA,IAA0BD,KAAAA,CAAAA,IAAUA,MAAM,sBAAA,CAAA,KAA4BC,QAAW,OAAO,KAAA;AAC9F,EAAA,OAAO,IAAA;AACX;AANgBF,MAAAA,CAAAA,oCAAAA,EAAAA,sCAAAA,CAAAA;AAQT,SAASG,mCAAmCC,IAAAA,EAAS;AACxD,EAAA,OAAOC,uCAAAA,CAAwCD,IAAM,CAAA;AACzD;AAFgBD,MAAAA,CAAAA,kCAAAA,EAAAA,oCAAAA,CAAAA;AAIT,SAASE,uCAAAA,CAAwCD,MAAWE,mBAAAA,EAA4B;AAC3F,EAAA,IAAIF,QAAQ,IAAA,EAAM;AACd,IAAA,OAAOA,IAAAA;AACX,EAAA;AACA,EAAA,OAAO;AAEH,IAAA,qBAAA,EAAuBA,KAAK,qBAAA,CAAA,IAA0B,IAAA,GAAOF,MAAAA,GAAYE,KAAK,qBAAA,CAAA;IAC9E,iBAAA,EAAmBA,IAAAA,CAAK,iBAAA,CAAA,IAAsB,IAAA,GAAOF,SAAYK,uBAAAA,CAAwBH,IAAAA,CAAK,iBAAA,CAAkB,CAAA;IAChH,qBAAA,EAAuBI,4BAAAA,CAA6BJ,IAAAA,CAAK,qBAAA,CAAsB,CAAA;AAC/E,IAAA,cAAA,EAAgBA,KAAK,cAAA,CAAA;AACrB,IAAA,QAAA,EAAUA,KAAK,QAAA,CAAA;AACf,IAAA,sBAAA,EAAwBA,KAAK,sBAAA,CAAA;IAC7B,eAAA,EAAiBA,IAAAA,CAAK,eAAA,CAAA,IAAoB,IAAA,GAAOF,SAAYO,qBAAAA,CAAsBL,IAAAA,CAAK,eAAA,CAAgB;AAC5G,GAAA;AACJ;AAdgBC,MAAAA,CAAAA,uCAAAA,EAAAA,yCAAAA,CAAAA;AAgBT,SAASK,iCAAiCN,IAAAA,EAAS;AACtD,EAAA,OAAOO,qCAAAA,CAAsCP,MAAM,KAAA,CAAA;AACvD;AAFgBM,MAAAA,CAAAA,gCAAAA,EAAAA,kCAAAA,CAAAA;AAIT,SAASC,qCAAAA,CAAsCV,KAAAA,EAA2CK,mBAAAA,GAA+B,KAAA,EAAK;AACjI,EAAA,IAAIL,SAAS,IAAA,EAAM;AACf,IAAA,OAAOA,KAAAA;AACX,EAAA;AAEA,EAAA,OAAO;AAEH,IAAA,qBAAA,EAAuBA,MAAM,qBAAA,CAAA;IAC7B,iBAAA,EAAmBW,qBAAAA,CAAsBX,KAAAA,CAAM,iBAAA,CAAkB,CAAA;IACjE,qBAAA,EAAuBY,0BAAAA,CAA2BZ,KAAAA,CAAM,qBAAA,CAAsB,CAAA;AAC9E,IAAA,cAAA,EAAgBA,MAAM,cAAA,CAAA;AACtB,IAAA,QAAA,EAAUA,MAAM,QAAA,CAAA;AAChB,IAAA,sBAAA,EAAwBA,MAAM,sBAAA,CAAA;IAC9B,eAAA,EAAiBa,mBAAAA,CAAoBb,KAAAA,CAAM,eAAA,CAAgB;AAC/D,GAAA;AACJ;AAfgBU,MAAAA,CAAAA,qCAAAA,EAAAA,uCAAAA,CAAAA","file":"JUZKQC2G.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.4.3-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 { PartySignatures } from './PartySignatures.js';\nimport {\n PartySignaturesFromJSON,\n PartySignaturesFromJSONTyped,\n PartySignaturesToJSON,\n PartySignaturesToJSONTyped,\n} from './PartySignatures.js';\nimport type { DeduplicationPeriod2 } from './DeduplicationPeriod2.js';\nimport {\n DeduplicationPeriod2FromJSON,\n DeduplicationPeriod2FromJSONTyped,\n DeduplicationPeriod2ToJSON,\n DeduplicationPeriod2ToJSONTyped,\n} from './DeduplicationPeriod2.js';\nimport type { MinLedgerTime } from './MinLedgerTime.js';\nimport {\n MinLedgerTimeFromJSON,\n MinLedgerTimeFromJSONTyped,\n MinLedgerTimeToJSON,\n MinLedgerTimeToJSONTyped,\n} from './MinLedgerTime.js';\n\n/**\n * \n * @export\n * @interface JsExecuteSubmissionRequest\n */\nexport interface JsExecuteSubmissionRequest {\n /**\n * the prepared transaction\n * Typically this is the value of the `prepared_transaction` field in `PrepareSubmissionResponse`\n * obtained from calling `prepareSubmission`.\n * Required\n * @type {string}\n * @memberof JsExecuteSubmissionRequest\n */\n preparedTransaction?: string;\n /**\n * \n * @type {PartySignatures}\n * @memberof JsExecuteSubmissionRequest\n */\n partySignatures?: PartySignatures;\n /**\n * \n * @type {DeduplicationPeriod2}\n * @memberof JsExecuteSubmissionRequest\n */\n deduplicationPeriod: DeduplicationPeriod2;\n /**\n * A unique identifier to distinguish completions for different submissions with the same change ID.\n * Typically a random UUID. Applications are expected to use a different UUID for each retry of a submission\n * with the same change ID.\n * Must be a valid LedgerString (as described in ``value.proto``).\n * \n * Required\n * @type {string}\n * @memberof JsExecuteSubmissionRequest\n */\n submissionId: string;\n /**\n * See [PrepareSubmissionRequest.user_id]\n * Optional\n * @type {string}\n * @memberof JsExecuteSubmissionRequest\n */\n userId: string;\n /**\n * The hashing scheme version used when building the hash\n * Required\n * @type {JsExecuteSubmissionRequestHashingSchemeVersionEnum}\n * @memberof JsExecuteSubmissionRequest\n */\n hashingSchemeVersion: JsExecuteSubmissionRequestHashingSchemeVersionEnum;\n /**\n * \n * @type {MinLedgerTime}\n * @memberof JsExecuteSubmissionRequest\n */\n minLedgerTime?: MinLedgerTime;\n}\n\n\n/**\n * @export\n */\nexport const JsExecuteSubmissionRequestHashingSchemeVersionEnum = {\n HashingSchemeVersionUnspecified: 'HASHING_SCHEME_VERSION_UNSPECIFIED',\n HashingSchemeVersionV2: 'HASHING_SCHEME_VERSION_V2'\n} as const;\nexport type JsExecuteSubmissionRequestHashingSchemeVersionEnum = typeof JsExecuteSubmissionRequestHashingSchemeVersionEnum[keyof typeof JsExecuteSubmissionRequestHashingSchemeVersionEnum];\n\n\n/**\n * Check if a given object implements the JsExecuteSubmissionRequest interface.\n */\nexport function instanceOfJsExecuteSubmissionRequest(value: object): value is JsExecuteSubmissionRequest {\n if (!('deduplicationPeriod' in value) || value['deduplicationPeriod'] === undefined) return false;\n if (!('submissionId' in value) || value['submissionId'] === undefined) return false;\n if (!('userId' in value) || value['userId'] === undefined) return false;\n if (!('hashingSchemeVersion' in value) || value['hashingSchemeVersion'] === undefined) return false;\n return true;\n}\n\nexport function JsExecuteSubmissionRequestFromJSON(json: any): JsExecuteSubmissionRequest {\n return JsExecuteSubmissionRequestFromJSONTyped(json, false);\n}\n\nexport function JsExecuteSubmissionRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): JsExecuteSubmissionRequest {\n if (json == null) {\n return json;\n }\n return {\n \n 'preparedTransaction': json['preparedTransaction'] == null ? undefined : json['preparedTransaction'],\n 'partySignatures': json['partySignatures'] == null ? undefined : PartySignaturesFromJSON(json['partySignatures']),\n 'deduplicationPeriod': DeduplicationPeriod2FromJSON(json['deduplicationPeriod']),\n 'submissionId': json['submissionId'],\n 'userId': json['userId'],\n 'hashingSchemeVersion': json['hashingSchemeVersion'],\n 'minLedgerTime': json['minLedgerTime'] == null ? undefined : MinLedgerTimeFromJSON(json['minLedgerTime']),\n };\n}\n\nexport function JsExecuteSubmissionRequestToJSON(json: any): JsExecuteSubmissionRequest {\n return JsExecuteSubmissionRequestToJSONTyped(json, false);\n}\n\nexport function JsExecuteSubmissionRequestToJSONTyped(value?: JsExecuteSubmissionRequest | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'preparedTransaction': value['preparedTransaction'],\n 'partySignatures': PartySignaturesToJSON(value['partySignatures']),\n 'deduplicationPeriod': DeduplicationPeriod2ToJSON(value['deduplicationPeriod']),\n 'submissionId': value['submissionId'],\n 'userId': value['userId'],\n 'hashingSchemeVersion': value['hashingSchemeVersion'],\n 'minLedgerTime': MinLedgerTimeToJSON(value['minLedgerTime']),\n };\n}\n\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PartySignaturesFromJSON, PartySignaturesToJSON } from './LQ3LPE4G.js';
|
|
2
2
|
import { MinLedgerTimeFromJSON, MinLedgerTimeToJSON } from './A7U4VVQK.js';
|
|
3
|
-
import { DeduplicationPeriod2FromJSON, DeduplicationPeriod2ToJSON } from './
|
|
3
|
+
import { DeduplicationPeriod2FromJSON, DeduplicationPeriod2ToJSON } from './N3INXXRG.js';
|
|
4
4
|
import { __name } from './VUOMXK5T.js';
|
|
5
5
|
|
|
6
6
|
// src/open-api/models/JsExecuteSubmissionAndWaitRequest.ts
|
|
@@ -56,5 +56,5 @@ function JsExecuteSubmissionAndWaitRequestToJSONTyped(value, ignoreDiscriminator
|
|
|
56
56
|
__name(JsExecuteSubmissionAndWaitRequestToJSONTyped, "JsExecuteSubmissionAndWaitRequestToJSONTyped");
|
|
57
57
|
|
|
58
58
|
export { JsExecuteSubmissionAndWaitRequestFromJSON, JsExecuteSubmissionAndWaitRequestFromJSONTyped, JsExecuteSubmissionAndWaitRequestHashingSchemeVersionEnum, JsExecuteSubmissionAndWaitRequestToJSON, JsExecuteSubmissionAndWaitRequestToJSONTyped, instanceOfJsExecuteSubmissionAndWaitRequest };
|
|
59
|
-
//# sourceMappingURL=
|
|
60
|
-
//# sourceMappingURL=
|
|
59
|
+
//# sourceMappingURL=KCFOSGPU.js.map
|
|
60
|
+
//# sourceMappingURL=KCFOSGPU.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/open-api/models/JsExecuteSubmissionAndWaitRequest.ts"],"names":["JsExecuteSubmissionAndWaitRequestHashingSchemeVersionEnum","HashingSchemeVersionUnspecified","HashingSchemeVersionV2","instanceOfJsExecuteSubmissionAndWaitRequest","value","undefined","JsExecuteSubmissionAndWaitRequestFromJSON","json","JsExecuteSubmissionAndWaitRequestFromJSONTyped","ignoreDiscriminator","PartySignaturesFromJSON","DeduplicationPeriod2FromJSON","MinLedgerTimeFromJSON","JsExecuteSubmissionAndWaitRequestToJSON","JsExecuteSubmissionAndWaitRequestToJSONTyped","PartySignaturesToJSON","DeduplicationPeriod2ToJSON","MinLedgerTimeToJSON"],"mappings":";;;;;;AAqGO,IAAMA,yDAAAA,GAA4D;EACrEC,+BAAAA,EAAiC,oCAAA;EACjCC,sBAAAA,EAAwB;AAC5B;AAOO,SAASC,4CAA4CC,KAAAA,EAAa;AACrE,EAAA,IAAI,EAAE,qBAAA,IAAyBA,KAAAA,CAAAA,IAAUA,MAAM,qBAAA,CAAA,KAA2BC,QAAW,OAAO,KAAA;AAC5F,EAAA,IAAI,EAAE,cAAA,IAAkBD,KAAAA,CAAAA,IAAUA,MAAM,cAAA,CAAA,KAAoBC,QAAW,OAAO,KAAA;AAC9E,EAAA,IAAI,EAAE,QAAA,IAAYD,KAAAA,CAAAA,IAAUA,MAAM,QAAA,CAAA,KAAcC,QAAW,OAAO,KAAA;AAClE,EAAA,IAAI,EAAE,sBAAA,IAA0BD,KAAAA,CAAAA,IAAUA,MAAM,sBAAA,CAAA,KAA4BC,QAAW,OAAO,KAAA;AAC9F,EAAA,OAAO,IAAA;AACX;AANgBF,MAAAA,CAAAA,2CAAAA,EAAAA,6CAAAA,CAAAA;AAQT,SAASG,0CAA0CC,IAAAA,EAAS;AAC/D,EAAA,OAAOC,8CAAAA,CAA+CD,IAAM,CAAA;AAChE;AAFgBD,MAAAA,CAAAA,yCAAAA,EAAAA,2CAAAA,CAAAA;AAIT,SAASE,8CAAAA,CAA+CD,MAAWE,mBAAAA,EAA4B;AAClG,EAAA,IAAIF,QAAQ,IAAA,EAAM;AACd,IAAA,OAAOA,IAAAA;AACX,EAAA;AACA,EAAA,OAAO;AAEH,IAAA,qBAAA,EAAuBA,KAAK,qBAAA,CAAA,IAA0B,IAAA,GAAOF,MAAAA,GAAYE,KAAK,qBAAA,CAAA;IAC9E,iBAAA,EAAmBA,IAAAA,CAAK,iBAAA,CAAA,IAAsB,IAAA,GAAOF,SAAYK,uBAAAA,CAAwBH,IAAAA,CAAK,iBAAA,CAAkB,CAAA;IAChH,qBAAA,EAAuBI,4BAAAA,CAA6BJ,IAAAA,CAAK,qBAAA,CAAsB,CAAA;AAC/E,IAAA,cAAA,EAAgBA,KAAK,cAAA,CAAA;AACrB,IAAA,QAAA,EAAUA,KAAK,QAAA,CAAA;AACf,IAAA,sBAAA,EAAwBA,KAAK,sBAAA,CAAA;IAC7B,eAAA,EAAiBA,IAAAA,CAAK,eAAA,CAAA,IAAoB,IAAA,GAAOF,SAAYO,qBAAAA,CAAsBL,IAAAA,CAAK,eAAA,CAAgB;AAC5G,GAAA;AACJ;AAdgBC,MAAAA,CAAAA,8CAAAA,EAAAA,gDAAAA,CAAAA;AAgBT,SAASK,wCAAwCN,IAAAA,EAAS;AAC7D,EAAA,OAAOO,4CAAAA,CAA6CP,MAAM,KAAA,CAAA;AAC9D;AAFgBM,MAAAA,CAAAA,uCAAAA,EAAAA,yCAAAA,CAAAA;AAIT,SAASC,4CAAAA,CAA6CV,KAAAA,EAAkDK,mBAAAA,GAA+B,KAAA,EAAK;AAC/I,EAAA,IAAIL,SAAS,IAAA,EAAM;AACf,IAAA,OAAOA,KAAAA;AACX,EAAA;AAEA,EAAA,OAAO;AAEH,IAAA,qBAAA,EAAuBA,MAAM,qBAAA,CAAA;IAC7B,iBAAA,EAAmBW,qBAAAA,CAAsBX,KAAAA,CAAM,iBAAA,CAAkB,CAAA;IACjE,qBAAA,EAAuBY,0BAAAA,CAA2BZ,KAAAA,CAAM,qBAAA,CAAsB,CAAA;AAC9E,IAAA,cAAA,EAAgBA,MAAM,cAAA,CAAA;AACtB,IAAA,QAAA,EAAUA,MAAM,QAAA,CAAA;AAChB,IAAA,sBAAA,EAAwBA,MAAM,sBAAA,CAAA;IAC9B,eAAA,EAAiBa,mBAAAA,CAAoBb,KAAAA,CAAM,eAAA,CAAgB;AAC/D,GAAA;AACJ;AAfgBU,MAAAA,CAAAA,4CAAAA,EAAAA,8CAAAA,CAAAA","file":"
|
|
1
|
+
{"version":3,"sources":["../src/open-api/models/JsExecuteSubmissionAndWaitRequest.ts"],"names":["JsExecuteSubmissionAndWaitRequestHashingSchemeVersionEnum","HashingSchemeVersionUnspecified","HashingSchemeVersionV2","instanceOfJsExecuteSubmissionAndWaitRequest","value","undefined","JsExecuteSubmissionAndWaitRequestFromJSON","json","JsExecuteSubmissionAndWaitRequestFromJSONTyped","ignoreDiscriminator","PartySignaturesFromJSON","DeduplicationPeriod2FromJSON","MinLedgerTimeFromJSON","JsExecuteSubmissionAndWaitRequestToJSON","JsExecuteSubmissionAndWaitRequestToJSONTyped","PartySignaturesToJSON","DeduplicationPeriod2ToJSON","MinLedgerTimeToJSON"],"mappings":";;;;;;AAqGO,IAAMA,yDAAAA,GAA4D;EACrEC,+BAAAA,EAAiC,oCAAA;EACjCC,sBAAAA,EAAwB;AAC5B;AAOO,SAASC,4CAA4CC,KAAAA,EAAa;AACrE,EAAA,IAAI,EAAE,qBAAA,IAAyBA,KAAAA,CAAAA,IAAUA,MAAM,qBAAA,CAAA,KAA2BC,QAAW,OAAO,KAAA;AAC5F,EAAA,IAAI,EAAE,cAAA,IAAkBD,KAAAA,CAAAA,IAAUA,MAAM,cAAA,CAAA,KAAoBC,QAAW,OAAO,KAAA;AAC9E,EAAA,IAAI,EAAE,QAAA,IAAYD,KAAAA,CAAAA,IAAUA,MAAM,QAAA,CAAA,KAAcC,QAAW,OAAO,KAAA;AAClE,EAAA,IAAI,EAAE,sBAAA,IAA0BD,KAAAA,CAAAA,IAAUA,MAAM,sBAAA,CAAA,KAA4BC,QAAW,OAAO,KAAA;AAC9F,EAAA,OAAO,IAAA;AACX;AANgBF,MAAAA,CAAAA,2CAAAA,EAAAA,6CAAAA,CAAAA;AAQT,SAASG,0CAA0CC,IAAAA,EAAS;AAC/D,EAAA,OAAOC,8CAAAA,CAA+CD,IAAM,CAAA;AAChE;AAFgBD,MAAAA,CAAAA,yCAAAA,EAAAA,2CAAAA,CAAAA;AAIT,SAASE,8CAAAA,CAA+CD,MAAWE,mBAAAA,EAA4B;AAClG,EAAA,IAAIF,QAAQ,IAAA,EAAM;AACd,IAAA,OAAOA,IAAAA;AACX,EAAA;AACA,EAAA,OAAO;AAEH,IAAA,qBAAA,EAAuBA,KAAK,qBAAA,CAAA,IAA0B,IAAA,GAAOF,MAAAA,GAAYE,KAAK,qBAAA,CAAA;IAC9E,iBAAA,EAAmBA,IAAAA,CAAK,iBAAA,CAAA,IAAsB,IAAA,GAAOF,SAAYK,uBAAAA,CAAwBH,IAAAA,CAAK,iBAAA,CAAkB,CAAA;IAChH,qBAAA,EAAuBI,4BAAAA,CAA6BJ,IAAAA,CAAK,qBAAA,CAAsB,CAAA;AAC/E,IAAA,cAAA,EAAgBA,KAAK,cAAA,CAAA;AACrB,IAAA,QAAA,EAAUA,KAAK,QAAA,CAAA;AACf,IAAA,sBAAA,EAAwBA,KAAK,sBAAA,CAAA;IAC7B,eAAA,EAAiBA,IAAAA,CAAK,eAAA,CAAA,IAAoB,IAAA,GAAOF,SAAYO,qBAAAA,CAAsBL,IAAAA,CAAK,eAAA,CAAgB;AAC5G,GAAA;AACJ;AAdgBC,MAAAA,CAAAA,8CAAAA,EAAAA,gDAAAA,CAAAA;AAgBT,SAASK,wCAAwCN,IAAAA,EAAS;AAC7D,EAAA,OAAOO,4CAAAA,CAA6CP,MAAM,KAAA,CAAA;AAC9D;AAFgBM,MAAAA,CAAAA,uCAAAA,EAAAA,yCAAAA,CAAAA;AAIT,SAASC,4CAAAA,CAA6CV,KAAAA,EAAkDK,mBAAAA,GAA+B,KAAA,EAAK;AAC/I,EAAA,IAAIL,SAAS,IAAA,EAAM;AACf,IAAA,OAAOA,KAAAA;AACX,EAAA;AAEA,EAAA,OAAO;AAEH,IAAA,qBAAA,EAAuBA,MAAM,qBAAA,CAAA;IAC7B,iBAAA,EAAmBW,qBAAAA,CAAsBX,KAAAA,CAAM,iBAAA,CAAkB,CAAA;IACjE,qBAAA,EAAuBY,0BAAAA,CAA2BZ,KAAAA,CAAM,qBAAA,CAAsB,CAAA;AAC9E,IAAA,cAAA,EAAgBA,MAAM,cAAA,CAAA;AACtB,IAAA,QAAA,EAAUA,MAAM,QAAA,CAAA;AAChB,IAAA,sBAAA,EAAwBA,MAAM,sBAAA,CAAA;IAC9B,eAAA,EAAiBa,mBAAAA,CAAoBb,KAAAA,CAAM,eAAA,CAAgB;AAC/D,GAAA;AACJ;AAfgBU,MAAAA,CAAAA,4CAAAA,EAAAA,8CAAAA,CAAAA","file":"KCFOSGPU.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.4.3-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 { PartySignatures } from './PartySignatures.js';\nimport {\n PartySignaturesFromJSON,\n PartySignaturesFromJSONTyped,\n PartySignaturesToJSON,\n PartySignaturesToJSONTyped,\n} from './PartySignatures.js';\nimport type { DeduplicationPeriod2 } from './DeduplicationPeriod2.js';\nimport {\n DeduplicationPeriod2FromJSON,\n DeduplicationPeriod2FromJSONTyped,\n DeduplicationPeriod2ToJSON,\n DeduplicationPeriod2ToJSONTyped,\n} from './DeduplicationPeriod2.js';\nimport type { MinLedgerTime } from './MinLedgerTime.js';\nimport {\n MinLedgerTimeFromJSON,\n MinLedgerTimeFromJSONTyped,\n MinLedgerTimeToJSON,\n MinLedgerTimeToJSONTyped,\n} from './MinLedgerTime.js';\n\n/**\n * \n * @export\n * @interface JsExecuteSubmissionAndWaitRequest\n */\nexport interface JsExecuteSubmissionAndWaitRequest {\n /**\n * the prepared transaction\n * Typically this is the value of the `prepared_transaction` field in `PrepareSubmissionResponse`\n * obtained from calling `prepareSubmission`.\n * Required\n * @type {string}\n * @memberof JsExecuteSubmissionAndWaitRequest\n */\n preparedTransaction?: string;\n /**\n * \n * @type {PartySignatures}\n * @memberof JsExecuteSubmissionAndWaitRequest\n */\n partySignatures?: PartySignatures;\n /**\n * \n * @type {DeduplicationPeriod2}\n * @memberof JsExecuteSubmissionAndWaitRequest\n */\n deduplicationPeriod: DeduplicationPeriod2;\n /**\n * A unique identifier to distinguish completions for different submissions with the same change ID.\n * Typically a random UUID. Applications are expected to use a different UUID for each retry of a submission\n * with the same change ID.\n * Must be a valid LedgerString (as described in ``value.proto``).\n * \n * Required\n * @type {string}\n * @memberof JsExecuteSubmissionAndWaitRequest\n */\n submissionId: string;\n /**\n * See [PrepareSubmissionRequest.user_id]\n * Optional\n * @type {string}\n * @memberof JsExecuteSubmissionAndWaitRequest\n */\n userId: string;\n /**\n * The hashing scheme version used when building the hash\n * Required\n * @type {JsExecuteSubmissionAndWaitRequestHashingSchemeVersionEnum}\n * @memberof JsExecuteSubmissionAndWaitRequest\n */\n hashingSchemeVersion: JsExecuteSubmissionAndWaitRequestHashingSchemeVersionEnum;\n /**\n * \n * @type {MinLedgerTime}\n * @memberof JsExecuteSubmissionAndWaitRequest\n */\n minLedgerTime?: MinLedgerTime;\n}\n\n\n/**\n * @export\n */\nexport const JsExecuteSubmissionAndWaitRequestHashingSchemeVersionEnum = {\n HashingSchemeVersionUnspecified: 'HASHING_SCHEME_VERSION_UNSPECIFIED',\n HashingSchemeVersionV2: 'HASHING_SCHEME_VERSION_V2'\n} as const;\nexport type JsExecuteSubmissionAndWaitRequestHashingSchemeVersionEnum = typeof JsExecuteSubmissionAndWaitRequestHashingSchemeVersionEnum[keyof typeof JsExecuteSubmissionAndWaitRequestHashingSchemeVersionEnum];\n\n\n/**\n * Check if a given object implements the JsExecuteSubmissionAndWaitRequest interface.\n */\nexport function instanceOfJsExecuteSubmissionAndWaitRequest(value: object): value is JsExecuteSubmissionAndWaitRequest {\n if (!('deduplicationPeriod' in value) || value['deduplicationPeriod'] === undefined) return false;\n if (!('submissionId' in value) || value['submissionId'] === undefined) return false;\n if (!('userId' in value) || value['userId'] === undefined) return false;\n if (!('hashingSchemeVersion' in value) || value['hashingSchemeVersion'] === undefined) return false;\n return true;\n}\n\nexport function JsExecuteSubmissionAndWaitRequestFromJSON(json: any): JsExecuteSubmissionAndWaitRequest {\n return JsExecuteSubmissionAndWaitRequestFromJSONTyped(json, false);\n}\n\nexport function JsExecuteSubmissionAndWaitRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): JsExecuteSubmissionAndWaitRequest {\n if (json == null) {\n return json;\n }\n return {\n \n 'preparedTransaction': json['preparedTransaction'] == null ? undefined : json['preparedTransaction'],\n 'partySignatures': json['partySignatures'] == null ? undefined : PartySignaturesFromJSON(json['partySignatures']),\n 'deduplicationPeriod': DeduplicationPeriod2FromJSON(json['deduplicationPeriod']),\n 'submissionId': json['submissionId'],\n 'userId': json['userId'],\n 'hashingSchemeVersion': json['hashingSchemeVersion'],\n 'minLedgerTime': json['minLedgerTime'] == null ? undefined : MinLedgerTimeFromJSON(json['minLedgerTime']),\n };\n}\n\nexport function JsExecuteSubmissionAndWaitRequestToJSON(json: any): JsExecuteSubmissionAndWaitRequest {\n return JsExecuteSubmissionAndWaitRequestToJSONTyped(json, false);\n}\n\nexport function JsExecuteSubmissionAndWaitRequestToJSONTyped(value?: JsExecuteSubmissionAndWaitRequest | null, ignoreDiscriminator: boolean = false): any {\n if (value == null) {\n return value;\n }\n\n return {\n \n 'preparedTransaction': value['preparedTransaction'],\n 'partySignatures': PartySignaturesToJSON(value['partySignatures']),\n 'deduplicationPeriod': DeduplicationPeriod2ToJSON(value['deduplicationPeriod']),\n 'submissionId': value['submissionId'],\n 'userId': value['userId'],\n 'hashingSchemeVersion': value['hashingSchemeVersion'],\n 'minLedgerTime': MinLedgerTimeToJSON(value['minLedgerTime']),\n };\n}\n\n"]}
|