@layerzerolabs/common-canton 1.2.100 → 1.2.101

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/dist/{D3KVE5XQ.js → 3H5UAMWJ.js} +12 -9
  2. package/dist/3H5UAMWJ.js.map +1 -0
  3. package/dist/{YBGD26CU.js → 45C3KMUJ.js} +12 -6
  4. package/dist/45C3KMUJ.js.map +1 -0
  5. package/dist/{5BK6GCUD.js → 5VT3BVW6.js} +4 -4
  6. package/dist/{5BK6GCUD.js.map → 5VT3BVW6.js.map} +1 -1
  7. package/dist/{CMFVLC7C.js → 6GIDRO6Y.js} +3 -3
  8. package/dist/{CMFVLC7C.js.map → 6GIDRO6Y.js.map} +1 -1
  9. package/dist/{4SK2ZV46.js → 7DFFQF5Y.js} +37 -14
  10. package/dist/7DFFQF5Y.js.map +1 -0
  11. package/dist/{RFGCLYQN.js → 7Z6L2FXT.js} +3 -3
  12. package/dist/{RFGCLYQN.js.map → 7Z6L2FXT.js.map} +1 -1
  13. package/dist/{NSHNCUWI.js → A4HRBTRS.js} +5 -5
  14. package/dist/{NSHNCUWI.js.map → A4HRBTRS.js.map} +1 -1
  15. package/dist/{HQMIA66Y.js → DELPT7WC.js} +3 -3
  16. package/dist/{HQMIA66Y.js.map → DELPT7WC.js.map} +1 -1
  17. package/dist/{4WZTQJXP.js → KDLPAZ3P.js} +2 -2
  18. package/dist/{4WZTQJXP.js.map → KDLPAZ3P.js.map} +1 -1
  19. package/dist/{YV6LAB6R.js → KGEOWAAR.js} +3 -3
  20. package/dist/{YV6LAB6R.js.map → KGEOWAAR.js.map} +1 -1
  21. package/dist/{K7FRAGGM.js → KLMACWXT.js} +3 -3
  22. package/dist/KLMACWXT.js.map +1 -0
  23. package/dist/{UG2M23HF.js → MM7EIOP4.js} +3 -3
  24. package/dist/{UG2M23HF.js.map → MM7EIOP4.js.map} +1 -1
  25. package/dist/{E6W3YWXU.js → MRAAJXQA.js} +4 -4
  26. package/dist/{E6W3YWXU.js.map → MRAAJXQA.js.map} +1 -1
  27. package/dist/{NGED2YCU.js → OK7GQCQM.js} +9 -5
  28. package/dist/OK7GQCQM.js.map +1 -0
  29. package/dist/{JJDWTXLN.js → QOVYNKLD.js} +3 -3
  30. package/dist/{JJDWTXLN.js.map → QOVYNKLD.js.map} +1 -1
  31. package/dist/{HC2GOOAL.js → QWU4V7O2.js} +138 -24
  32. package/dist/QWU4V7O2.js.map +1 -0
  33. package/dist/{XUXLV3PL.js → SAHSVYH6.js} +2 -2
  34. package/dist/{XUXLV3PL.js.map → SAHSVYH6.js.map} +1 -1
  35. package/dist/{5VKWPQE4.js → SEKZMYNZ.js} +3 -3
  36. package/dist/{5VKWPQE4.js.map → SEKZMYNZ.js.map} +1 -1
  37. package/dist/{DCDLEU2R.js → UUUJS2PY.js} +11 -3
  38. package/dist/UUUJS2PY.js.map +1 -0
  39. package/dist/{M3GPMXME.js → W3ZJSUA6.js} +3 -3
  40. package/dist/{M3GPMXME.js.map → W3ZJSUA6.js.map} +1 -1
  41. package/dist/{IUQEDBC6.js → XKBA43N7.js} +12 -9
  42. package/dist/XKBA43N7.js.map +1 -0
  43. package/dist/{KPFKPA5E.js → XWNGGI4V.js} +6 -6
  44. package/dist/XWNGGI4V.js.map +1 -0
  45. package/dist/{2B3PTIL7.js → ZVEWMW6Q.js} +4 -4
  46. package/dist/{2B3PTIL7.js.map → ZVEWMW6Q.js.map} +1 -1
  47. package/dist/client/amulet.d.ts +11 -1
  48. package/dist/client/amulet.d.ts.map +1 -1
  49. package/dist/client/amulet.js +3 -3
  50. package/dist/client/canton-client.d.ts +13 -4
  51. package/dist/client/canton-client.d.ts.map +1 -1
  52. package/dist/client/canton-client.js +4 -4
  53. package/dist/client/grpc.js +2 -2
  54. package/dist/client/index.d.ts +1 -1
  55. package/dist/client/index.d.ts.map +1 -1
  56. package/dist/client/index.js +6 -6
  57. package/dist/client/interface.d.ts +13 -4
  58. package/dist/client/interface.d.ts.map +1 -1
  59. package/dist/client/topology/utils.d.ts +4 -0
  60. package/dist/client/topology/utils.d.ts.map +1 -1
  61. package/dist/client/topology/utils.js +1 -1
  62. package/dist/events.js +3 -3
  63. package/dist/index.js +23 -23
  64. package/dist/minFee.js +2 -2
  65. package/dist/provider.js +7 -7
  66. package/dist/refresh/callback-burn-mint.js +5 -5
  67. package/dist/refresh/callback-lock-unlock.js +5 -5
  68. package/dist/refresh/callback-registry.js +4 -4
  69. package/dist/refresh/callback.js +7 -7
  70. package/dist/refresh/index.js +17 -17
  71. package/dist/refresh/onesig-config.js +1 -1
  72. package/dist/refresh/onesig-request.js +1 -1
  73. package/dist/refresh/onesig-scope.d.ts.map +1 -1
  74. package/dist/refresh/onesig-scope.js +1 -1
  75. package/dist/refresh/onesig-transfer-instruction.js +8 -8
  76. package/dist/refresh/onesig-transfer.js +9 -9
  77. package/dist/refresh/plan.d.ts +18 -0
  78. package/dist/refresh/plan.d.ts.map +1 -1
  79. package/dist/refresh/plan.js +1 -1
  80. package/dist/refresh/prepare-amulet-transfer.d.ts.map +1 -1
  81. package/dist/refresh/prepare-amulet-transfer.js +4 -4
  82. package/dist/refresh/resolve-plan.d.ts.map +1 -1
  83. package/dist/refresh/resolve-plan.js +15 -15
  84. package/dist/refresh/resolve.js +16 -16
  85. package/dist/sdk/canton-sdk.d.ts +1 -0
  86. package/dist/sdk/canton-sdk.d.ts.map +1 -1
  87. package/dist/sdk/canton-sdk.js +1 -1
  88. package/dist/sdk/index.js +1 -1
  89. package/dist/transaction.d.ts +30 -0
  90. package/dist/transaction.d.ts.map +1 -1
  91. package/dist/transaction.js +2 -2
  92. package/dist/types.d.ts +14 -0
  93. package/dist/types.d.ts.map +1 -1
  94. package/dist/types.js +1 -1
  95. package/package.json +10 -10
  96. package/dist/4SK2ZV46.js.map +0 -1
  97. package/dist/D3KVE5XQ.js.map +0 -1
  98. package/dist/DCDLEU2R.js.map +0 -1
  99. package/dist/HC2GOOAL.js.map +0 -1
  100. package/dist/IUQEDBC6.js.map +0 -1
  101. package/dist/K7FRAGGM.js.map +0 -1
  102. package/dist/KPFKPA5E.js.map +0 -1
  103. package/dist/NGED2YCU.js.map +0 -1
  104. package/dist/YBGD26CU.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/refresh/callback-registry.ts"],"names":["DA_UTILITIES_REGISTRAR_ROOTS","mainnet","testnet","daUtilitiesRegistryUrl","environment","admin","root","undefined","encodeURIComponent","replaceAll","errorMessage","error","Error","message","String","withCantonCallbackRegistry","sdk","informee","offset","appUid","instrumentId","attempt","id","AMULET_INSTRUMENT_ID","getDsoParty","kind","candidates","source","url","urls","discoveryUrlsForAppUid","length","failures","push","join","fetchCallbackTransferFactoryContext","registry","options","fetchMergedTransferFactoryContext","requestedAt","executeBefore","resolveProbeWindow","mergeProbedTransferFactoryContexts","receivers","receiver","getAmuletTransferFactoryContext","sender","amount","inputHoldingCids"],"mappings":"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","file":"RFGCLYQN.js","sourcesContent":["import { AMULET_INSTRUMENT_ID, type InstrumentId } from '../client/amulet';\nimport type { CantonSdk } from '../sdk';\nimport {\n discoveryUrlsForAppUid,\n fetchMergedTransferFactoryContext,\n type FetchMergedTransferFactoryContextOptions,\n mergeProbedTransferFactoryContexts,\n resolveProbeWindow,\n type TransferFactoryContext,\n} from './registry-context';\n\nexport type CantonCallbackRegistry =\n | { kind: 'amulet' }\n | { kind: 'url'; url: string; source: 'discovery-registry' | 'da-utilities' };\n\n// DA's documented off-ledger registrar roots: https://docs.digitalasset.com/registry/apis/token-standard/off-ledger-api\nconst DA_UTILITIES_REGISTRAR_ROOTS: Partial<Record<string, string>> = {\n mainnet: 'https://api.utilities.digitalasset.com/api/token-standard/v0/registrars/',\n testnet: 'https://api.utilities.digitalasset-staging.com/api/token-standard/v0/registrars/',\n};\n\nexport const daUtilitiesRegistryUrl = (\n environment: string | undefined,\n admin: string,\n): string | undefined => {\n const root = environment === undefined ? undefined : DA_UTILITIES_REGISTRAR_ROOTS[environment];\n // Party IDs (`hint::fingerprint`) keep their colons, as in DA's documented paths.\n return root && `${root}${encodeURIComponent(admin).replaceAll('%3A', ':')}`;\n};\n\nconst errorMessage = (error: unknown): string =>\n error instanceof Error ? error.message : String(error);\n\n/**\n * Runs `attempt` against the callback instrument's CIP-56 registry. Canonical Amulet uses\n * only the validator wallet. Otherwise the OApp's DiscoveryRegistry URL is tried, then\n * DA Utilities; any failure moves on to the next registry, and the error lists each reason.\n */\nexport const withCantonCallbackRegistry = async <T>(\n {\n sdk,\n informee,\n offset,\n appUid,\n instrumentId,\n environment,\n }: {\n sdk: CantonSdk;\n informee: string;\n offset: number;\n appUid: string;\n instrumentId: InstrumentId;\n environment?: string;\n },\n attempt: (registry: CantonCallbackRegistry) => Promise<T>,\n): Promise<T> => {\n if (\n instrumentId.id === AMULET_INSTRUMENT_ID &&\n instrumentId.admin === (await sdk.getDsoParty())\n ) {\n return attempt({ kind: 'amulet' });\n }\n const candidates: Array<{\n source: 'discovery-registry' | 'da-utilities';\n url: () => Promise<string>;\n }> = [\n {\n source: 'discovery-registry',\n url: async () => {\n const urls = await discoveryUrlsForAppUid(sdk, informee, offset, appUid);\n if (urls.length !== 1) {\n throw new Error(`expected one discovery URL, found ${urls.length}`);\n }\n return urls[0]!;\n },\n },\n {\n source: 'da-utilities',\n url: async () => {\n const url = daUtilitiesRegistryUrl(environment, instrumentId.admin);\n if (!url)\n throw new Error(`no registrar for environment ${environment ?? '(unset)'}`);\n return url;\n },\n },\n ];\n const failures: string[] = [];\n for (const { source, url } of candidates) {\n try {\n return await attempt({ kind: 'url', url: await url(), source });\n } catch (error) {\n failures.push(`${source}: ${errorMessage(error)}`);\n }\n }\n throw new Error(\n `No registry for appUid ${appUid} instrument ${instrumentId.admin}/${instrumentId.id} ` +\n `(${failures.join('; ')})`,\n );\n};\n\nexport const fetchCallbackTransferFactoryContext = async (\n registry: CantonCallbackRegistry,\n sdk: Pick<CantonSdk, 'getAmuletTransferFactoryContext'>,\n instrumentId: InstrumentId,\n options: FetchMergedTransferFactoryContextOptions,\n): Promise<TransferFactoryContext> => {\n if (registry.kind === 'url') {\n return fetchMergedTransferFactoryContext(registry.url, instrumentId, options);\n }\n const { requestedAt, executeBefore } = resolveProbeWindow(options);\n return mergeProbedTransferFactoryContexts(options.receivers, (receiver) =>\n sdk.getAmuletTransferFactoryContext({\n instrumentId,\n sender: options.sender,\n receiver,\n amount: options.amount,\n inputHoldingCids: options.inputHoldingCids,\n requestedAt,\n executeBefore,\n }),\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/refresh/callback-registry.ts"],"names":["DA_UTILITIES_REGISTRAR_ROOTS","mainnet","testnet","daUtilitiesRegistryUrl","environment","admin","root","undefined","encodeURIComponent","replaceAll","errorMessage","error","Error","message","String","withCantonCallbackRegistry","sdk","informee","offset","appUid","instrumentId","attempt","id","AMULET_INSTRUMENT_ID","getDsoParty","kind","candidates","source","url","urls","discoveryUrlsForAppUid","length","failures","push","join","fetchCallbackTransferFactoryContext","registry","options","fetchMergedTransferFactoryContext","requestedAt","executeBefore","resolveProbeWindow","mergeProbedTransferFactoryContexts","receivers","receiver","getAmuletTransferFactoryContext","sender","amount","inputHoldingCids"],"mappings":"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","file":"7Z6L2FXT.js","sourcesContent":["import { AMULET_INSTRUMENT_ID, type InstrumentId } from '../client/amulet';\nimport type { CantonSdk } from '../sdk';\nimport {\n discoveryUrlsForAppUid,\n fetchMergedTransferFactoryContext,\n type FetchMergedTransferFactoryContextOptions,\n mergeProbedTransferFactoryContexts,\n resolveProbeWindow,\n type TransferFactoryContext,\n} from './registry-context';\n\nexport type CantonCallbackRegistry =\n | { kind: 'amulet' }\n | { kind: 'url'; url: string; source: 'discovery-registry' | 'da-utilities' };\n\n// DA's documented off-ledger registrar roots: https://docs.digitalasset.com/registry/apis/token-standard/off-ledger-api\nconst DA_UTILITIES_REGISTRAR_ROOTS: Partial<Record<string, string>> = {\n mainnet: 'https://api.utilities.digitalasset.com/api/token-standard/v0/registrars/',\n testnet: 'https://api.utilities.digitalasset-staging.com/api/token-standard/v0/registrars/',\n};\n\nexport const daUtilitiesRegistryUrl = (\n environment: string | undefined,\n admin: string,\n): string | undefined => {\n const root = environment === undefined ? undefined : DA_UTILITIES_REGISTRAR_ROOTS[environment];\n // Party IDs (`hint::fingerprint`) keep their colons, as in DA's documented paths.\n return root && `${root}${encodeURIComponent(admin).replaceAll('%3A', ':')}`;\n};\n\nconst errorMessage = (error: unknown): string =>\n error instanceof Error ? error.message : String(error);\n\n/**\n * Runs `attempt` against the callback instrument's CIP-56 registry. Canonical Amulet uses\n * only the validator wallet. Otherwise the OApp's DiscoveryRegistry URL is tried, then\n * DA Utilities; any failure moves on to the next registry, and the error lists each reason.\n */\nexport const withCantonCallbackRegistry = async <T>(\n {\n sdk,\n informee,\n offset,\n appUid,\n instrumentId,\n environment,\n }: {\n sdk: CantonSdk;\n informee: string;\n offset: number;\n appUid: string;\n instrumentId: InstrumentId;\n environment?: string;\n },\n attempt: (registry: CantonCallbackRegistry) => Promise<T>,\n): Promise<T> => {\n if (\n instrumentId.id === AMULET_INSTRUMENT_ID &&\n instrumentId.admin === (await sdk.getDsoParty())\n ) {\n return attempt({ kind: 'amulet' });\n }\n const candidates: Array<{\n source: 'discovery-registry' | 'da-utilities';\n url: () => Promise<string>;\n }> = [\n {\n source: 'discovery-registry',\n url: async () => {\n const urls = await discoveryUrlsForAppUid(sdk, informee, offset, appUid);\n if (urls.length !== 1) {\n throw new Error(`expected one discovery URL, found ${urls.length}`);\n }\n return urls[0]!;\n },\n },\n {\n source: 'da-utilities',\n url: async () => {\n const url = daUtilitiesRegistryUrl(environment, instrumentId.admin);\n if (!url)\n throw new Error(`no registrar for environment ${environment ?? '(unset)'}`);\n return url;\n },\n },\n ];\n const failures: string[] = [];\n for (const { source, url } of candidates) {\n try {\n return await attempt({ kind: 'url', url: await url(), source });\n } catch (error) {\n failures.push(`${source}: ${errorMessage(error)}`);\n }\n }\n throw new Error(\n `No registry for appUid ${appUid} instrument ${instrumentId.admin}/${instrumentId.id} ` +\n `(${failures.join('; ')})`,\n );\n};\n\nexport const fetchCallbackTransferFactoryContext = async (\n registry: CantonCallbackRegistry,\n sdk: Pick<CantonSdk, 'getAmuletTransferFactoryContext'>,\n instrumentId: InstrumentId,\n options: FetchMergedTransferFactoryContextOptions,\n): Promise<TransferFactoryContext> => {\n if (registry.kind === 'url') {\n return fetchMergedTransferFactoryContext(registry.url, instrumentId, options);\n }\n const { requestedAt, executeBefore } = resolveProbeWindow(options);\n return mergeProbedTransferFactoryContexts(options.receivers, (receiver) =>\n sdk.getAmuletTransferFactoryContext({\n instrumentId,\n sender: options.sender,\n receiver,\n amount: options.amount,\n inputHoldingCids: options.inputHoldingCids,\n requestedAt,\n executeBefore,\n }),\n );\n};\n"]}
@@ -1,9 +1,9 @@
1
- import { cantonCallbackAppUid } from './E6W3YWXU.js';
2
- import { smallestUnitsToDamlDecimal } from './4WZTQJXP.js';
1
+ import { cantonCallbackAppUid } from './MRAAJXQA.js';
2
+ import { smallestUnitsToDamlDecimal } from './KDLPAZ3P.js';
3
3
  import { fetchCallbackHoldings, discoveryUrlsForAppUid, fetchTransferFactoryContext, discloseUtilityCredentials, mergeDisclosedContracts } from './TLQX4ZQW.js';
4
4
  import { parseDamlDecimal, selectContractAmounts } from './ZEK5YBPA.js';
5
5
  import { callbackInterfaceView, callbackDisclosure } from './YMXOSAU4.js';
6
- import { cantonDisclosedContractSchema } from './UG2M23HF.js';
6
+ import { cantonDisclosedContractSchema } from './MM7EIOP4.js';
7
7
  import { __name } from './VUOMXK5T.js';
8
8
  import { z } from 'zod';
9
9
 
@@ -101,5 +101,5 @@ var resolveCantonOneSigTransferBatch = /* @__PURE__ */ __name(async (sdk, input,
101
101
  }, "resolveCantonOneSigTransferBatch");
102
102
 
103
103
  export { resolveCantonOneSigTransferBatch };
104
- //# sourceMappingURL=NSHNCUWI.js.map
105
- //# sourceMappingURL=NSHNCUWI.js.map
104
+ //# sourceMappingURL=A4HRBTRS.js.map
105
+ //# sourceMappingURL=A4HRBTRS.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/refresh/onesig-transfer.ts"],"names":["HOLDING","providerDisclosuresSchema","z","array","cantonDisclosedContractSchema","extend","contractId","string","min","createdEventBlob","synchronizerId","transferCallSchema","object","tag","literal","value","receiver","amount","regex","instrumentId","admin","id","instructionExpiry","microseconds","resolveCantonOneSigTransferBatch","sdk","input","signedCalls","client","calls","parse","groups","Map","instrumentKey","instrument","JSON","stringify","key","parseDamlDecimal","Error","group","get","set","inputHoldingCids","offset","getLedgerEndOffset","disclosedContracts","values","holdings","fetchCallbackHoldings","selected","selectContractAmounts","smallestUnitsToDamlDecimal","toString","contract","callbackInterfaceView","createdEvent","map","push","callbackDisclosure","contexts","canonical","getDsoParty","url","urls","discoveryUrlsForAppUid","informee","cantonCallbackAppUid","length","registryUrls","millis","Date","now","requestedAt","toISOString","deadline","BigInt","fraction","executeBefore","Number","replace","padStart","args","sender","bundle","getAmuletTransferFactoryContext","fetchTransferFactoryContext","environment","discloseUtilityCredentials","choiceContext","transferFactoryCid","factoryId","timestamp","extraArgsContext","mergeDisclosedContracts"],"mappings":"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","file":"NSHNCUWI.js","sourcesContent":["import { z } from 'zod';\n\nimport type { ICantonClient } from '../client/interface';\nimport type { CantonSdk } from '../sdk/canton-sdk';\nimport { type CantonDisclosedContract, cantonDisclosedContractSchema } from '../transaction';\nimport { smallestUnitsToDamlDecimal } from '../types';\nimport { cantonCallbackAppUid } from './callback';\nimport { callbackDisclosure, callbackInterfaceView } from './callback-contracts';\nimport type { CantonOneSigTransferBatchRefresh } from './plan';\nimport {\n discloseUtilityCredentials,\n discoveryUrlsForAppUid,\n fetchCallbackHoldings,\n fetchTransferFactoryContext,\n mergeDisclosedContracts,\n} from './registry-context';\nimport { parseDamlDecimal, selectContractAmounts } from './select-contracts';\n\nconst HOLDING = '#splice-api-token-holding-v1:Splice.Api.Token.HoldingV1:Holding';\nconst providerDisclosuresSchema = z.array(\n cantonDisclosedContractSchema.extend({\n contractId: z.string().min(1),\n createdEventBlob: z.string().min(1),\n synchronizerId: z.string().min(1),\n }),\n);\nconst transferCallSchema = z.object({\n tag: z.literal('OpTransfer'),\n value: z.object({\n receiver: z.string().min(1),\n amount: z.string().regex(/^\\d+(?:\\.\\d{1,10})?$/),\n instrumentId: z.object({ admin: z.string().min(1), id: z.string() }),\n instructionExpiry: z.object({ microseconds: z.string().regex(/^-?\\d+$/) }),\n }),\n});\n\nexport const resolveCantonOneSigTransferBatch = async (\n sdk: CantonSdk,\n input: CantonOneSigTransferBatchRefresh['resolver'],\n signedCalls: unknown[],\n client: Pick<ICantonClient, 'getDsoParty' | 'getAmuletTransferFactoryContext'>,\n) => {\n const calls = z.array(transferCallSchema).min(1).parse(signedCalls);\n const groups = new Map<\n string,\n { instrumentId: { admin: string; id: string }; amount: bigint; inputHoldingCids: string[] }\n >();\n const instrumentKey = (instrument: { admin: string; id: string }) =>\n JSON.stringify([instrument.admin, instrument.id]);\n for (const { value } of calls) {\n const key = instrumentKey(value.instrumentId);\n const amount = parseDamlDecimal(value.amount, 'Transfer amount');\n if (amount <= 0n) throw new Error('Transfer amount must be positive');\n const group = groups.get(key);\n if (group) group.amount += amount;\n else groups.set(key, { instrumentId: value.instrumentId, amount, inputHoldingCids: [] });\n }\n const offset = await sdk.getLedgerEndOffset();\n const disclosedContracts: CantonDisclosedContract[] = [];\n for (const group of groups.values()) {\n const holdings = await fetchCallbackHoldings(sdk, input.admin, offset, group.instrumentId);\n const selected = selectContractAmounts(\n holdings,\n 'amount',\n smallestUnitsToDamlDecimal(group.amount.toString()),\n (contract) =>\n parseDamlDecimal(\n callbackInterfaceView(contract, HOLDING)?.amount,\n `Holding ${contract.createdEvent.contractId} amount`,\n ),\n );\n group.inputHoldingCids = selected.map(({ createdEvent }) => createdEvent.contractId);\n disclosedContracts.push(...selected.map(callbackDisclosure));\n }\n const contexts = [];\n for (const { value } of calls) {\n const group = groups.get(instrumentKey(value.instrumentId))!;\n const canonical =\n value.instrumentId.id === 'Amulet' &&\n value.instrumentId.admin === (await client.getDsoParty());\n let url: string | undefined;\n if (!canonical) {\n const urls = await discoveryUrlsForAppUid(\n sdk,\n input.informee,\n offset,\n cantonCallbackAppUid(value.instrumentId.admin, value.instrumentId.id),\n );\n if (urls.length > 1) throw new Error('Ambiguous transfer registry');\n url = urls[0] ?? input.registryUrls?.[value.instrumentId.admin];\n if (!url) throw new Error('No registry for transfer instrument');\n }\n const millis = Date.now();\n const requestedAt = new Date(millis).toISOString();\n const deadline = BigInt(millis) * 1000n + BigInt(value.instructionExpiry.microseconds);\n const fraction = ((deadline % 1_000_000n) + 1_000_000n) % 1_000_000n;\n const executeBefore = new Date(Number((deadline - fraction) / 1000n))\n .toISOString()\n .replace('.000Z', `.${fraction.toString().padStart(6, '0')}Z`);\n const args = {\n instrumentId: value.instrumentId,\n sender: input.admin,\n receiver: value.receiver,\n amount: value.amount,\n inputHoldingCids: group.inputHoldingCids,\n requestedAt,\n executeBefore,\n };\n const bundle = canonical\n ? await client.getAmuletTransferFactoryContext(args)\n : await fetchTransferFactoryContext(url!, value.instrumentId, {\n ...args,\n environment: input.environment,\n });\n disclosedContracts.push(\n ...providerDisclosuresSchema.parse(bundle.disclosedContracts),\n ...(await discloseUtilityCredentials(\n sdk,\n bundle.choiceContext.values['utility.digitalasset.com/sender-credentials'],\n input.admin,\n 'sender',\n )),\n );\n contexts.push({\n tag: 'TransferFactoryContext' as const,\n value: {\n transferFactoryCid: bundle.factoryId,\n inputHoldingCids: group.inputHoldingCids,\n timestamp: requestedAt,\n extraArgsContext: bundle.choiceContext,\n },\n });\n }\n return { contexts, disclosedContracts: mergeDisclosedContracts(disclosedContracts) };\n};\n"]}
1
+ {"version":3,"sources":["../src/refresh/onesig-transfer.ts"],"names":["HOLDING","providerDisclosuresSchema","z","array","cantonDisclosedContractSchema","extend","contractId","string","min","createdEventBlob","synchronizerId","transferCallSchema","object","tag","literal","value","receiver","amount","regex","instrumentId","admin","id","instructionExpiry","microseconds","resolveCantonOneSigTransferBatch","sdk","input","signedCalls","client","calls","parse","groups","Map","instrumentKey","instrument","JSON","stringify","key","parseDamlDecimal","Error","group","get","set","inputHoldingCids","offset","getLedgerEndOffset","disclosedContracts","values","holdings","fetchCallbackHoldings","selected","selectContractAmounts","smallestUnitsToDamlDecimal","toString","contract","callbackInterfaceView","createdEvent","map","push","callbackDisclosure","contexts","canonical","getDsoParty","url","urls","discoveryUrlsForAppUid","informee","cantonCallbackAppUid","length","registryUrls","millis","Date","now","requestedAt","toISOString","deadline","BigInt","fraction","executeBefore","Number","replace","padStart","args","sender","bundle","getAmuletTransferFactoryContext","fetchTransferFactoryContext","environment","discloseUtilityCredentials","choiceContext","transferFactoryCid","factoryId","timestamp","extraArgsContext","mergeDisclosedContracts"],"mappings":"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","file":"A4HRBTRS.js","sourcesContent":["import { z } from 'zod';\n\nimport type { ICantonClient } from '../client/interface';\nimport type { CantonSdk } from '../sdk/canton-sdk';\nimport { type CantonDisclosedContract, cantonDisclosedContractSchema } from '../transaction';\nimport { smallestUnitsToDamlDecimal } from '../types';\nimport { cantonCallbackAppUid } from './callback';\nimport { callbackDisclosure, callbackInterfaceView } from './callback-contracts';\nimport type { CantonOneSigTransferBatchRefresh } from './plan';\nimport {\n discloseUtilityCredentials,\n discoveryUrlsForAppUid,\n fetchCallbackHoldings,\n fetchTransferFactoryContext,\n mergeDisclosedContracts,\n} from './registry-context';\nimport { parseDamlDecimal, selectContractAmounts } from './select-contracts';\n\nconst HOLDING = '#splice-api-token-holding-v1:Splice.Api.Token.HoldingV1:Holding';\nconst providerDisclosuresSchema = z.array(\n cantonDisclosedContractSchema.extend({\n contractId: z.string().min(1),\n createdEventBlob: z.string().min(1),\n synchronizerId: z.string().min(1),\n }),\n);\nconst transferCallSchema = z.object({\n tag: z.literal('OpTransfer'),\n value: z.object({\n receiver: z.string().min(1),\n amount: z.string().regex(/^\\d+(?:\\.\\d{1,10})?$/),\n instrumentId: z.object({ admin: z.string().min(1), id: z.string() }),\n instructionExpiry: z.object({ microseconds: z.string().regex(/^-?\\d+$/) }),\n }),\n});\n\nexport const resolveCantonOneSigTransferBatch = async (\n sdk: CantonSdk,\n input: CantonOneSigTransferBatchRefresh['resolver'],\n signedCalls: unknown[],\n client: Pick<ICantonClient, 'getDsoParty' | 'getAmuletTransferFactoryContext'>,\n) => {\n const calls = z.array(transferCallSchema).min(1).parse(signedCalls);\n const groups = new Map<\n string,\n { instrumentId: { admin: string; id: string }; amount: bigint; inputHoldingCids: string[] }\n >();\n const instrumentKey = (instrument: { admin: string; id: string }) =>\n JSON.stringify([instrument.admin, instrument.id]);\n for (const { value } of calls) {\n const key = instrumentKey(value.instrumentId);\n const amount = parseDamlDecimal(value.amount, 'Transfer amount');\n if (amount <= 0n) throw new Error('Transfer amount must be positive');\n const group = groups.get(key);\n if (group) group.amount += amount;\n else groups.set(key, { instrumentId: value.instrumentId, amount, inputHoldingCids: [] });\n }\n const offset = await sdk.getLedgerEndOffset();\n const disclosedContracts: CantonDisclosedContract[] = [];\n for (const group of groups.values()) {\n const holdings = await fetchCallbackHoldings(sdk, input.admin, offset, group.instrumentId);\n const selected = selectContractAmounts(\n holdings,\n 'amount',\n smallestUnitsToDamlDecimal(group.amount.toString()),\n (contract) =>\n parseDamlDecimal(\n callbackInterfaceView(contract, HOLDING)?.amount,\n `Holding ${contract.createdEvent.contractId} amount`,\n ),\n );\n group.inputHoldingCids = selected.map(({ createdEvent }) => createdEvent.contractId);\n disclosedContracts.push(...selected.map(callbackDisclosure));\n }\n const contexts = [];\n for (const { value } of calls) {\n const group = groups.get(instrumentKey(value.instrumentId))!;\n const canonical =\n value.instrumentId.id === 'Amulet' &&\n value.instrumentId.admin === (await client.getDsoParty());\n let url: string | undefined;\n if (!canonical) {\n const urls = await discoveryUrlsForAppUid(\n sdk,\n input.informee,\n offset,\n cantonCallbackAppUid(value.instrumentId.admin, value.instrumentId.id),\n );\n if (urls.length > 1) throw new Error('Ambiguous transfer registry');\n url = urls[0] ?? input.registryUrls?.[value.instrumentId.admin];\n if (!url) throw new Error('No registry for transfer instrument');\n }\n const millis = Date.now();\n const requestedAt = new Date(millis).toISOString();\n const deadline = BigInt(millis) * 1000n + BigInt(value.instructionExpiry.microseconds);\n const fraction = ((deadline % 1_000_000n) + 1_000_000n) % 1_000_000n;\n const executeBefore = new Date(Number((deadline - fraction) / 1000n))\n .toISOString()\n .replace('.000Z', `.${fraction.toString().padStart(6, '0')}Z`);\n const args = {\n instrumentId: value.instrumentId,\n sender: input.admin,\n receiver: value.receiver,\n amount: value.amount,\n inputHoldingCids: group.inputHoldingCids,\n requestedAt,\n executeBefore,\n };\n const bundle = canonical\n ? await client.getAmuletTransferFactoryContext(args)\n : await fetchTransferFactoryContext(url!, value.instrumentId, {\n ...args,\n environment: input.environment,\n });\n disclosedContracts.push(\n ...providerDisclosuresSchema.parse(bundle.disclosedContracts),\n ...(await discloseUtilityCredentials(\n sdk,\n bundle.choiceContext.values['utility.digitalasset.com/sender-credentials'],\n input.admin,\n 'sender',\n )),\n );\n contexts.push({\n tag: 'TransferFactoryContext' as const,\n value: {\n transferFactoryCid: bundle.factoryId,\n inputHoldingCids: group.inputHoldingCids,\n timestamp: requestedAt,\n extraArgsContext: bundle.choiceContext,\n },\n });\n }\n return { contexts, disclosedContracts: mergeDisclosedContracts(disclosedContracts) };\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { withCantonCallbackRegistry } from './RFGCLYQN.js';
1
+ import { withCantonCallbackRegistry } from './7Z6L2FXT.js';
2
2
  import { fetchCallbackHoldings, callbackHoldingAmount, assertSafeRegistryUrl, postFactoryContext, discloseUtilityCredentials, fetchMergedTransferFactoryContext } from './TLQX4ZQW.js';
3
3
  import { selectLargestContracts } from './ZEK5YBPA.js';
4
4
  import { callbackInterfaceView, callbackDisclosure } from './YMXOSAU4.js';
@@ -104,5 +104,5 @@ var resolveBurnMintCallbackContext = /* @__PURE__ */ __name(async ({ sdk, inform
104
104
  }, "resolveBurnMintCallbackContext");
105
105
 
106
106
  export { resolveBurnMintCallbackContext };
107
- //# sourceMappingURL=HQMIA66Y.js.map
108
- //# sourceMappingURL=HQMIA66Y.js.map
107
+ //# sourceMappingURL=DELPT7WC.js.map
108
+ //# sourceMappingURL=DELPT7WC.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/refresh/callback-burn-mint.ts"],"names":["DELEGATE_TEMPLATE","HOLDING_INTERFACE","MINT_FACTORY_PATH","applyDelegate","sdk","informee","offset","factory","instrumentId","oappAdmin","contracts","queryActiveContracts","templateIds","includeCreatedEventBlob","matches","filter","createdEvent","payload","createArgument","admin","id","delegate","isTrustedOrigin","length","Error","match","burnMintFactoryCid","factoryId","contractId","choiceContext","disclosedContracts","callbackDisclosure","resolveBurnMintCallbackContext","appUid","mintEscrow","receivers","environment","holdings","selectLargestContracts","fetchCallbackHoldings","callbackHoldingAmount","inputHoldingCids","map","holding","firstAmount","callbackInterfaceView","amount","find","withCantonCallbackRegistry","registry","kind","parsed","assertSafeRegistryUrl","url","label","registryMintFactory","postFactoryContext","URL","origin","toString","outputs","owner","probeName","mintFactory","issuerCredentials","discloseUtilityCredentials","values","transferFactory","fetchMergedTransferFactoryContext","sender","senderCredentials","burnMintExtraArgs","burnMintOutputContext","transferFactoryCid","assetTransferContext"],"mappings":"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","file":"HQMIA66Y.js","sourcesContent":["import type { InstrumentId } from '../client/amulet';\nimport type { CantonSdk } from '../sdk';\nimport type { CantonDisclosedContract } from '../transaction';\nimport { isTrustedOrigin } from '../trusted-origin';\nimport { callbackDisclosure, callbackInterfaceView } from './callback-contracts';\nimport { withCantonCallbackRegistry } from './callback-registry';\nimport {\n assertSafeRegistryUrl,\n callbackHoldingAmount,\n discloseUtilityCredentials,\n fetchCallbackHoldings,\n fetchMergedTransferFactoryContext,\n postFactoryContext,\n type TransferFactoryContext,\n} from './registry-context';\nimport { selectLargestContracts } from './select-contracts';\n\nconst DELEGATE_TEMPLATE = '#layerzero-burn-mint-adapter:BurnMintDelegate:BurnMintDelegate';\nconst HOLDING_INTERFACE = '#splice-api-token-holding-v1:Splice.Api.Token.HoldingV1:Holding';\nconst MINT_FACTORY_PATH = 'api/utilities/v0/registry/burn-mint-instruction/v0/burn-mint-factory';\ntype DelegatePayload = { instrumentId: InstrumentId; delegate: string; burnMintFactoryCid: string };\n\nconst applyDelegate = async (\n sdk: CantonSdk,\n informee: string,\n offset: number,\n factory: TransferFactoryContext,\n instrumentId: InstrumentId,\n oappAdmin: string,\n): Promise<TransferFactoryContext> => {\n const contracts = await sdk.queryActiveContracts(informee, offset, {\n templateIds: [DELEGATE_TEMPLATE],\n includeCreatedEventBlob: true,\n });\n const matches = contracts.filter(({ createdEvent }) => {\n const payload = createdEvent.createArgument as DelegatePayload;\n return (\n payload.instrumentId?.admin === instrumentId.admin &&\n payload.instrumentId.id === instrumentId.id &&\n payload.delegate === oappAdmin &&\n isTrustedOrigin(createdEvent, instrumentId.admin, 'instrumentId.admin')\n );\n });\n if (matches.length > 1) {\n throw new Error(\n `Multiple BurnMintDelegate contracts for instrument ${instrumentId.admin}/${instrumentId.id} delegate=${oappAdmin} (${matches.length})`,\n );\n }\n const match = matches[0];\n if (!match) {\n if (oappAdmin !== instrumentId.admin) {\n throw new Error(\n `No BurnMintDelegate for instrument ${instrumentId.admin}/${instrumentId.id} delegate=${oappAdmin}; the adapter admin is not the instrument admin`,\n );\n }\n return factory;\n }\n const payload = match.createdEvent.createArgument as DelegatePayload;\n if (payload.burnMintFactoryCid !== factory.factoryId) {\n throw new Error(\n `BurnMintDelegate ${match.createdEvent.contractId} points at burn-mint factory ${payload.burnMintFactoryCid}, but the registry returned ${factory.factoryId}`,\n );\n }\n return {\n factoryId: match.createdEvent.contractId,\n choiceContext: factory.choiceContext,\n disclosedContracts: [callbackDisclosure(match), ...factory.disclosedContracts],\n };\n};\n\nexport const resolveBurnMintCallbackContext = async ({\n sdk,\n informee,\n appUid,\n oappAdmin,\n mintEscrow,\n instrumentId,\n offset,\n receivers,\n environment,\n}: {\n sdk: CantonSdk;\n informee: string;\n appUid: string;\n oappAdmin: string;\n mintEscrow: string;\n instrumentId: InstrumentId;\n offset: number;\n receivers: string[];\n environment?: string;\n}): Promise<{\n disclosedContracts: CantonDisclosedContract[];\n transferFactoryCid?: string;\n assetTransferContext?: Record<string, unknown>;\n burnMintFactoryCid?: string;\n burnMintExtraArgs?: Record<string, unknown>;\n burnMintOutputContext?: Record<string, unknown>;\n}> => {\n if (receivers.length === 0) return { disclosedContracts: [] };\n const holdings = selectLargestContracts(\n await fetchCallbackHoldings(sdk, mintEscrow, offset, instrumentId),\n callbackHoldingAmount,\n );\n const inputHoldingCids = holdings.map((holding) => holding.createdEvent.contractId);\n const firstAmount = holdings\n .map((holding) => callbackInterfaceView(holding, HOLDING_INTERFACE)?.amount)\n .find((amount): amount is string => amount != null && amount !== '0');\n return withCantonCallbackRegistry(\n { sdk, informee, offset, appUid, instrumentId, environment },\n async (registry) => {\n if (registry.kind === 'amulet') {\n throw new Error('Amulet cannot be minted through a burn-mint adapter');\n }\n const parsed = assertSafeRegistryUrl(registry.url, {\n environment,\n label: 'burn-mint-factory utilities URL',\n });\n const registryMintFactory = await postFactoryContext(\n new URL(MINT_FACTORY_PATH, `${parsed.origin}/`).toString(),\n {\n instrumentId,\n inputHoldingCids: [],\n outputs: [{ owner: mintEscrow, amount: '1' }],\n },\n { probeName: 'burn-mint-factory' },\n );\n const mintFactory = await applyDelegate(\n sdk,\n informee,\n offset,\n registryMintFactory,\n instrumentId,\n oappAdmin,\n );\n const issuerCredentials = await discloseUtilityCredentials(\n sdk,\n mintFactory.choiceContext.values['utility.digitalasset.com/issuer-credentials'],\n mintEscrow,\n 'issuer',\n );\n const transferFactory = await fetchMergedTransferFactoryContext(\n registry.url,\n instrumentId,\n {\n environment,\n inputHoldingCids,\n sender: mintEscrow,\n amount: firstAmount ?? '0',\n receivers,\n },\n );\n const senderCredentials = await discloseUtilityCredentials(\n sdk,\n transferFactory.choiceContext.values['utility.digitalasset.com/sender-credentials'],\n mintEscrow,\n 'sender',\n );\n return {\n disclosedContracts: [\n ...mintFactory.disclosedContracts,\n ...issuerCredentials,\n ...transferFactory.disclosedContracts,\n ...senderCredentials,\n ],\n burnMintFactoryCid: mintFactory.factoryId,\n burnMintExtraArgs: mintFactory.choiceContext.values,\n burnMintOutputContext: {},\n transferFactoryCid: transferFactory.factoryId,\n assetTransferContext: transferFactory.choiceContext.values,\n };\n },\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/refresh/callback-burn-mint.ts"],"names":["DELEGATE_TEMPLATE","HOLDING_INTERFACE","MINT_FACTORY_PATH","applyDelegate","sdk","informee","offset","factory","instrumentId","oappAdmin","contracts","queryActiveContracts","templateIds","includeCreatedEventBlob","matches","filter","createdEvent","payload","createArgument","admin","id","delegate","isTrustedOrigin","length","Error","match","burnMintFactoryCid","factoryId","contractId","choiceContext","disclosedContracts","callbackDisclosure","resolveBurnMintCallbackContext","appUid","mintEscrow","receivers","environment","holdings","selectLargestContracts","fetchCallbackHoldings","callbackHoldingAmount","inputHoldingCids","map","holding","firstAmount","callbackInterfaceView","amount","find","withCantonCallbackRegistry","registry","kind","parsed","assertSafeRegistryUrl","url","label","registryMintFactory","postFactoryContext","URL","origin","toString","outputs","owner","probeName","mintFactory","issuerCredentials","discloseUtilityCredentials","values","transferFactory","fetchMergedTransferFactoryContext","sender","senderCredentials","burnMintExtraArgs","burnMintOutputContext","transferFactoryCid","assetTransferContext"],"mappings":"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","file":"DELPT7WC.js","sourcesContent":["import type { InstrumentId } from '../client/amulet';\nimport type { CantonSdk } from '../sdk';\nimport type { CantonDisclosedContract } from '../transaction';\nimport { isTrustedOrigin } from '../trusted-origin';\nimport { callbackDisclosure, callbackInterfaceView } from './callback-contracts';\nimport { withCantonCallbackRegistry } from './callback-registry';\nimport {\n assertSafeRegistryUrl,\n callbackHoldingAmount,\n discloseUtilityCredentials,\n fetchCallbackHoldings,\n fetchMergedTransferFactoryContext,\n postFactoryContext,\n type TransferFactoryContext,\n} from './registry-context';\nimport { selectLargestContracts } from './select-contracts';\n\nconst DELEGATE_TEMPLATE = '#layerzero-burn-mint-adapter:BurnMintDelegate:BurnMintDelegate';\nconst HOLDING_INTERFACE = '#splice-api-token-holding-v1:Splice.Api.Token.HoldingV1:Holding';\nconst MINT_FACTORY_PATH = 'api/utilities/v0/registry/burn-mint-instruction/v0/burn-mint-factory';\ntype DelegatePayload = { instrumentId: InstrumentId; delegate: string; burnMintFactoryCid: string };\n\nconst applyDelegate = async (\n sdk: CantonSdk,\n informee: string,\n offset: number,\n factory: TransferFactoryContext,\n instrumentId: InstrumentId,\n oappAdmin: string,\n): Promise<TransferFactoryContext> => {\n const contracts = await sdk.queryActiveContracts(informee, offset, {\n templateIds: [DELEGATE_TEMPLATE],\n includeCreatedEventBlob: true,\n });\n const matches = contracts.filter(({ createdEvent }) => {\n const payload = createdEvent.createArgument as DelegatePayload;\n return (\n payload.instrumentId?.admin === instrumentId.admin &&\n payload.instrumentId.id === instrumentId.id &&\n payload.delegate === oappAdmin &&\n isTrustedOrigin(createdEvent, instrumentId.admin, 'instrumentId.admin')\n );\n });\n if (matches.length > 1) {\n throw new Error(\n `Multiple BurnMintDelegate contracts for instrument ${instrumentId.admin}/${instrumentId.id} delegate=${oappAdmin} (${matches.length})`,\n );\n }\n const match = matches[0];\n if (!match) {\n if (oappAdmin !== instrumentId.admin) {\n throw new Error(\n `No BurnMintDelegate for instrument ${instrumentId.admin}/${instrumentId.id} delegate=${oappAdmin}; the adapter admin is not the instrument admin`,\n );\n }\n return factory;\n }\n const payload = match.createdEvent.createArgument as DelegatePayload;\n if (payload.burnMintFactoryCid !== factory.factoryId) {\n throw new Error(\n `BurnMintDelegate ${match.createdEvent.contractId} points at burn-mint factory ${payload.burnMintFactoryCid}, but the registry returned ${factory.factoryId}`,\n );\n }\n return {\n factoryId: match.createdEvent.contractId,\n choiceContext: factory.choiceContext,\n disclosedContracts: [callbackDisclosure(match), ...factory.disclosedContracts],\n };\n};\n\nexport const resolveBurnMintCallbackContext = async ({\n sdk,\n informee,\n appUid,\n oappAdmin,\n mintEscrow,\n instrumentId,\n offset,\n receivers,\n environment,\n}: {\n sdk: CantonSdk;\n informee: string;\n appUid: string;\n oappAdmin: string;\n mintEscrow: string;\n instrumentId: InstrumentId;\n offset: number;\n receivers: string[];\n environment?: string;\n}): Promise<{\n disclosedContracts: CantonDisclosedContract[];\n transferFactoryCid?: string;\n assetTransferContext?: Record<string, unknown>;\n burnMintFactoryCid?: string;\n burnMintExtraArgs?: Record<string, unknown>;\n burnMintOutputContext?: Record<string, unknown>;\n}> => {\n if (receivers.length === 0) return { disclosedContracts: [] };\n const holdings = selectLargestContracts(\n await fetchCallbackHoldings(sdk, mintEscrow, offset, instrumentId),\n callbackHoldingAmount,\n );\n const inputHoldingCids = holdings.map((holding) => holding.createdEvent.contractId);\n const firstAmount = holdings\n .map((holding) => callbackInterfaceView(holding, HOLDING_INTERFACE)?.amount)\n .find((amount): amount is string => amount != null && amount !== '0');\n return withCantonCallbackRegistry(\n { sdk, informee, offset, appUid, instrumentId, environment },\n async (registry) => {\n if (registry.kind === 'amulet') {\n throw new Error('Amulet cannot be minted through a burn-mint adapter');\n }\n const parsed = assertSafeRegistryUrl(registry.url, {\n environment,\n label: 'burn-mint-factory utilities URL',\n });\n const registryMintFactory = await postFactoryContext(\n new URL(MINT_FACTORY_PATH, `${parsed.origin}/`).toString(),\n {\n instrumentId,\n inputHoldingCids: [],\n outputs: [{ owner: mintEscrow, amount: '1' }],\n },\n { probeName: 'burn-mint-factory' },\n );\n const mintFactory = await applyDelegate(\n sdk,\n informee,\n offset,\n registryMintFactory,\n instrumentId,\n oappAdmin,\n );\n const issuerCredentials = await discloseUtilityCredentials(\n sdk,\n mintFactory.choiceContext.values['utility.digitalasset.com/issuer-credentials'],\n mintEscrow,\n 'issuer',\n );\n const transferFactory = await fetchMergedTransferFactoryContext(\n registry.url,\n instrumentId,\n {\n environment,\n inputHoldingCids,\n sender: mintEscrow,\n amount: firstAmount ?? '0',\n receivers,\n },\n );\n const senderCredentials = await discloseUtilityCredentials(\n sdk,\n transferFactory.choiceContext.values['utility.digitalasset.com/sender-credentials'],\n mintEscrow,\n 'sender',\n );\n return {\n disclosedContracts: [\n ...mintFactory.disclosedContracts,\n ...issuerCredentials,\n ...transferFactory.disclosedContracts,\n ...senderCredentials,\n ],\n burnMintFactoryCid: mintFactory.factoryId,\n burnMintExtraArgs: mintFactory.choiceContext.values,\n burnMintOutputContext: {},\n transferFactoryCid: transferFactory.factoryId,\n assetTransferContext: transferFactory.choiceContext.values,\n };\n },\n );\n};\n"]}
@@ -26,5 +26,5 @@ var CommandStatus = {
26
26
  };
27
27
 
28
28
  export { CommandStatus, IntLikeSchema, buildTemplateId, canonicalizeDamlDecimal, smallestUnitsToDamlDecimal };
29
- //# sourceMappingURL=4WZTQJXP.js.map
30
- //# sourceMappingURL=4WZTQJXP.js.map
29
+ //# sourceMappingURL=KDLPAZ3P.js.map
30
+ //# sourceMappingURL=KDLPAZ3P.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts"],"names":["IntLikeSchema","z","union","bigint","number","refine","value","Number","isSafeInteger","message","buildTemplateId","packageId","modulePath","smallestUnitsToDamlDecimal","units","startsWith","Error","padded","padStart","slice","replace","canonicalizeDamlDecimal","integer","fraction","split","padEnd","CommandStatus","Accepted","Rejected","Timeout"],"mappings":";;;AAQO,IAAMA,aAAAA,GAAgBC,EACxBC,KAAAA,CAAM;AAACD,EAAAA,CAAAA,CAAEE,MAAAA,EAAM;AAAIF,EAAAA,CAAAA,CAAEG,MAAAA;CAAS,CAAA,CAC9BC,MAAAA,CAAO,CAACC,KAAAA,KAAU,OAAOA,UAAU,QAAA,IAAYC,MAAAA,CAAOC,aAAAA,CAAcF,KAAAA,CAAAA,EAAQ;EACzEG,OAAAA,EAAS;AACb,CAAA;AAcG,IAAMC,eAAAA,2BAAmBC,SAAAA,EAAmBC,UAAAA,KAC/C,GAAGD,SAAAA,CAAAA,CAAAA,EAAaC,UAAAA,CAAAA,CAAAA,EADW,iBAAA;AAIxB,IAAMC,0BAAAA,2BAA8BC,KAAAA,KAAAA;AACvC,EAAA,IAAIA,KAAAA,CAAMC,UAAAA,CAAW,GAAA,CAAA,EAAM;AACvB,IAAA,MAAM,IAAIC,KAAAA,CAAM,CAAA,0DAAA,EAA6DF,KAAAA,CAAAA,CAAO,CAAA;AACxF,EAAA;AACA,EAAA,MAAMG,MAAAA,GAASH,KAAAA,CAAMI,QAAAA,CAAS,EAAA,EAAI,GAAA,CAAA;AAClC,EAAA,OAAO,CAAA,EAAGD,MAAAA,CAAOE,KAAAA,CAAM,CAAA,EAAG,GAAC,CAAA,CAAIC,OAAAA,CAAQ,KAAA,EAAO,EAAA,KAAO,GAAA,CAAA,CAAA,EAAOH,MAAAA,CAAOE,KAAAA,CAAM,GAAC,CAAA,CAAA,CAAA;AAC9E,CAAA,EAN0C,4BAAA;AASnC,IAAME,uBAAAA,2BAA2Bf,KAAAA,KAAAA;AACpC,EAAA,MAAM,CAACgB,UAAU,GAAA,EAAKC,QAAAA,GAAW,EAAE,CAAA,GAAIjB,KAAAA,CAAMkB,MAAM,GAAA,CAAA;AACnD,EAAA,OAAO,GAAGF,OAAAA,CAAAA,CAAAA,EAAWC,SAASE,MAAAA,CAAO,EAAA,EAAI,GAAA,CAAA,CAAA,CAAA;AAC7C,CAAA,EAHuC,yBAAA;AA2BhC,IAAMC,aAAAA,GAAgB;EACzBC,QAAAA,EAAU,UAAA;EACVC,QAAAA,EAAU,UAAA;EACVC,OAAAA,EAAS;AACb","file":"4WZTQJXP.js","sourcesContent":["import type { ContractId, Party } from '@daml/types';\nimport { z } from 'zod';\n\n/**\n * A 64-bit integer field (oneSigId / nonce / threshold / count / signed `Int`).\n * A `number` must be a safe integer — larger values have already lost precision as\n * a float, so a bigint is required (mirrors the {@link toBigInt} runtime guard).\n */\nexport const IntLikeSchema = z\n .union([z.bigint(), z.number()])\n .refine((value) => typeof value === 'bigint' || Number.isSafeInteger(value), {\n message: 'number must be a safe integer; pass a bigint for values beyond MAX_SAFE_INTEGER',\n });\nexport type IntLike = z.infer<typeof IntLikeSchema>;\n\n/**\n * Core Types\n */\nexport type TemplateId = string;\n\n/**\n * Build a Canton template ID from a package ID and module path.\n *\n * @example buildTemplateId('abc123', 'RequestFactory:RequestFactory')\n * // => 'abc123:RequestFactory:RequestFactory'\n */\nexport const buildTemplateId = (packageId: string, modulePath: string): TemplateId =>\n `${packageId}:${modulePath}`;\n\n// '1' → '0.0000000001' (Canton Coin has 10 decimals)\nexport const smallestUnitsToDamlDecimal = (units: string): string => {\n if (units.startsWith('-')) {\n throw new Error(`smallestUnitsToDamlDecimal: negative value not supported: ${units}`);\n }\n const padded = units.padStart(11, '0');\n return `${padded.slice(0, -10).replace(/^0+/, '') || '0'}.${padded.slice(-10)}`;\n};\n\n// '0.01' → '0.0100000000' — pads to exactly 10 fractional digits for ledger comparison\nexport const canonicalizeDamlDecimal = (value: string): string => {\n const [integer = '0', fraction = ''] = value.split('.');\n return `${integer}.${fraction.padEnd(10, '0')}`;\n};\n\nexport type Contract<T extends object> = {\n templateId: TemplateId;\n contractId: ContractId<T>;\n payload: T;\n};\n\n/**\n * Submission Types\n */\nexport type SubmitActors = {\n actAs: Party[];\n readAs?: Party[];\n};\n\nexport type SubmitResult = {\n commandId: string;\n completionOffset: number;\n};\n\n/**\n * Wait / Reconciliation Types\n */\nexport const CommandStatus = {\n Accepted: 'accepted',\n Rejected: 'rejected',\n Timeout: 'timeout',\n} as const;\n\nexport type CommandStatus = (typeof CommandStatus)[keyof typeof CommandStatus];\n\nexport type WaitAccepted = {\n status: typeof CommandStatus.Accepted;\n commandId: string;\n updateId: string;\n offset: number;\n};\nexport type WaitRejected = {\n status: typeof CommandStatus.Rejected;\n commandId: string;\n offset: number;\n error: { code?: number; message: string; details?: unknown };\n};\ntype WaitTimeout = {\n status: typeof CommandStatus.Timeout;\n commandId: string;\n lastCheckedOffset?: number;\n};\n\nexport type WaitResult = WaitAccepted | WaitRejected | WaitTimeout;\n\nexport type WaitOptions = {\n parties: Party[];\n beginExclusive?: number;\n timeoutMs?: number;\n poll?: {\n limit?: number;\n streamIdleTimeoutMs?: number;\n backoffMs?: { initial: number; max: number };\n };\n};\n\n/**\n * External Party / Interactive Submission Types\n */\n\n/**\n * A prepared transaction ready for external signing.\n */\nexport type PreparedTransaction = {\n /** The transaction blob to sign */\n preparedTransaction: string;\n /** Hash of the transaction (sign this) */\n preparedTransactionHash: string;\n /** Hashing scheme version used */\n hashingSchemeVersion: 'HASHING_SCHEME_VERSION_UNSPECIFIED' | 'HASHING_SCHEME_VERSION_V2';\n /** Command ID for tracking */\n commandId: string;\n};\n\nexport type ExternalSignature = {\n /** The party that signed */\n party: Party;\n /** The signature bytes (base64 or hex) */\n signature: string;\n /** Fingerprint/ID of the signing key */\n signedBy: string;\n /** Signature format (e.g., 'Raw') */\n format: string;\n /** Signing algorithm (e.g., 'Ed25519') */\n signingAlgorithmSpec: string;\n};\n\n/**\n * A right granted to a Canton user, as returned by `/v2/users/{userId}/rights`.\n *\n * The `kind` is a discriminated union — only one variant is set per right:\n * - `CanActAs.value.party`: user can submit transactions as that party\n * - `CanReadAs.value.party`: user can read events visible to that party\n * - `ParticipantAdmin`: user has admin rights on the participant\n * - `IdentityProviderAdmin`: user can administer its identity provider\n * - `CanReadAsAnyParty`: user can read as any party\n * - `CanExecuteAsAnyParty`: user can submit as any party\n *\n * Hand-rolled because the OpenAPI generator's `Kind` converter is broken\n * (`instanceOfKindOneOf` checks lowercase `canActAs`, but `KindOneOfFromJSON`\n * reads uppercase `CanActAs`), so the typed client strips all party data.\n *\n * The four nullary variants carry `value: unknown` because Canton's wire\n * format for them is literally `{ \"value\": {} }` (see\n * https://docs.digitalasset.com/build/3.4/explanations/json-api/) and we\n * never read into that payload — only the presence of the variant matters.\n */\nexport type UserRightKind = {\n CanActAs?: { value: { party: string } };\n CanReadAs?: { value: { party: string } };\n ParticipantAdmin?: { value: unknown };\n IdentityProviderAdmin?: { value: unknown };\n CanReadAsAnyParty?: { value: unknown };\n CanExecuteAsAnyParty?: { value: unknown };\n};\n\nexport type UserRight = {\n kind: UserRightKind;\n};\n\n/** Normalized active contract (flat shape derived from JsActiveContract). */\nexport type NormalizedActiveContract = {\n contractId: string;\n templateId: string;\n payload: unknown;\n synchronizerId: string;\n};\n"]}
1
+ {"version":3,"sources":["../src/types.ts"],"names":["IntLikeSchema","z","union","bigint","number","refine","value","Number","isSafeInteger","message","buildTemplateId","packageId","modulePath","smallestUnitsToDamlDecimal","units","startsWith","Error","padded","padStart","slice","replace","canonicalizeDamlDecimal","integer","fraction","split","padEnd","CommandStatus","Accepted","Rejected","Timeout"],"mappings":";;;AAQO,IAAMA,aAAAA,GAAgBC,EACxBC,KAAAA,CAAM;AAACD,EAAAA,CAAAA,CAAEE,MAAAA,EAAM;AAAIF,EAAAA,CAAAA,CAAEG,MAAAA;CAAS,CAAA,CAC9BC,MAAAA,CAAO,CAACC,KAAAA,KAAU,OAAOA,UAAU,QAAA,IAAYC,MAAAA,CAAOC,aAAAA,CAAcF,KAAAA,CAAAA,EAAQ;EACzEG,OAAAA,EAAS;AACb,CAAA;AAcG,IAAMC,eAAAA,2BAAmBC,SAAAA,EAAmBC,UAAAA,KAC/C,GAAGD,SAAAA,CAAAA,CAAAA,EAAaC,UAAAA,CAAAA,CAAAA,EADW,iBAAA;AAIxB,IAAMC,0BAAAA,2BAA8BC,KAAAA,KAAAA;AACvC,EAAA,IAAIA,KAAAA,CAAMC,UAAAA,CAAW,GAAA,CAAA,EAAM;AACvB,IAAA,MAAM,IAAIC,KAAAA,CAAM,CAAA,0DAAA,EAA6DF,KAAAA,CAAAA,CAAO,CAAA;AACxF,EAAA;AACA,EAAA,MAAMG,MAAAA,GAASH,KAAAA,CAAMI,QAAAA,CAAS,EAAA,EAAI,GAAA,CAAA;AAClC,EAAA,OAAO,CAAA,EAAGD,MAAAA,CAAOE,KAAAA,CAAM,CAAA,EAAG,GAAC,CAAA,CAAIC,OAAAA,CAAQ,KAAA,EAAO,EAAA,KAAO,GAAA,CAAA,CAAA,EAAOH,MAAAA,CAAOE,KAAAA,CAAM,GAAC,CAAA,CAAA,CAAA;AAC9E,CAAA,EAN0C,4BAAA;AASnC,IAAME,uBAAAA,2BAA2Bf,KAAAA,KAAAA;AACpC,EAAA,MAAM,CAACgB,UAAU,GAAA,EAAKC,QAAAA,GAAW,EAAE,CAAA,GAAIjB,KAAAA,CAAMkB,MAAM,GAAA,CAAA;AACnD,EAAA,OAAO,GAAGF,OAAAA,CAAAA,CAAAA,EAAWC,SAASE,MAAAA,CAAO,EAAA,EAAI,GAAA,CAAA,CAAA,CAAA;AAC7C,CAAA,EAHuC,yBAAA;AA2BhC,IAAMC,aAAAA,GAAgB;EACzBC,QAAAA,EAAU,UAAA;EACVC,QAAAA,EAAU,UAAA;EACVC,OAAAA,EAAS;AACb","file":"KDLPAZ3P.js","sourcesContent":["import type { ContractId, Party } from '@daml/types';\nimport { z } from 'zod';\n\n/**\n * A 64-bit integer field (oneSigId / nonce / threshold / count / signed `Int`).\n * A `number` must be a safe integer — larger values have already lost precision as\n * a float, so a bigint is required (mirrors the {@link toBigInt} runtime guard).\n */\nexport const IntLikeSchema = z\n .union([z.bigint(), z.number()])\n .refine((value) => typeof value === 'bigint' || Number.isSafeInteger(value), {\n message: 'number must be a safe integer; pass a bigint for values beyond MAX_SAFE_INTEGER',\n });\nexport type IntLike = z.infer<typeof IntLikeSchema>;\n\n/**\n * Core Types\n */\nexport type TemplateId = string;\n\n/**\n * Build a Canton template ID from a package ID and module path.\n *\n * @example buildTemplateId('abc123', 'RequestFactory:RequestFactory')\n * // => 'abc123:RequestFactory:RequestFactory'\n */\nexport const buildTemplateId = (packageId: string, modulePath: string): TemplateId =>\n `${packageId}:${modulePath}`;\n\n// '1' → '0.0000000001' (Canton Coin has 10 decimals)\nexport const smallestUnitsToDamlDecimal = (units: string): string => {\n if (units.startsWith('-')) {\n throw new Error(`smallestUnitsToDamlDecimal: negative value not supported: ${units}`);\n }\n const padded = units.padStart(11, '0');\n return `${padded.slice(0, -10).replace(/^0+/, '') || '0'}.${padded.slice(-10)}`;\n};\n\n// '0.01' → '0.0100000000' — pads to exactly 10 fractional digits for ledger comparison\nexport const canonicalizeDamlDecimal = (value: string): string => {\n const [integer = '0', fraction = ''] = value.split('.');\n return `${integer}.${fraction.padEnd(10, '0')}`;\n};\n\nexport type Contract<T extends object> = {\n templateId: TemplateId;\n contractId: ContractId<T>;\n payload: T;\n};\n\n/**\n * Submission Types\n */\nexport type SubmitActors = {\n actAs: Party[];\n readAs?: Party[];\n};\n\nexport type SubmitResult = {\n commandId: string;\n completionOffset: number;\n};\n\n/**\n * Wait / Reconciliation Types\n */\nexport const CommandStatus = {\n Accepted: 'accepted',\n Rejected: 'rejected',\n Timeout: 'timeout',\n} as const;\n\nexport type CommandStatus = (typeof CommandStatus)[keyof typeof CommandStatus];\n\nexport type WaitAccepted = {\n status: typeof CommandStatus.Accepted;\n commandId: string;\n updateId: string;\n offset: number;\n};\nexport type WaitRejected = {\n status: typeof CommandStatus.Rejected;\n commandId: string;\n offset: number;\n error: { code?: number; message: string; details?: unknown };\n};\ntype WaitTimeout = {\n status: typeof CommandStatus.Timeout;\n commandId: string;\n lastCheckedOffset?: number;\n};\n\nexport type WaitResult = WaitAccepted | WaitRejected | WaitTimeout;\n\nexport type WaitWithExpiryResult = WaitResult | { status: 'expired'; commandId: string };\n\nexport type WaitOptions = {\n parties: Party[];\n beginExclusive?: number;\n timeoutMs?: number;\n poll?: {\n limit?: number;\n streamIdleTimeoutMs?: number;\n backoffMs?: { initial: number; max: number };\n };\n};\n\n/**\n * External Party / Interactive Submission Types\n */\n\n/**\n * A prepared transaction ready for external signing.\n */\nexport type PreparedTransaction = {\n /** The transaction blob to sign */\n preparedTransaction: string;\n /** Hash of the transaction (sign this) */\n preparedTransactionHash: string;\n /** Hashing scheme version used */\n hashingSchemeVersion: 'HASHING_SCHEME_VERSION_UNSPECIFIED' | 'HASHING_SCHEME_VERSION_V2';\n /** Command ID for tracking */\n commandId: string;\n};\n\nexport type PreparedTransactionWithExpiry = Omit<PreparedTransaction, 'hashingSchemeVersion'> & {\n hashingSchemeVersion: 'HASHING_SCHEME_VERSION_V3';\n expiry: {\n maxRecordTime: string;\n synchronizerId: string;\n participantId: string;\n userId: string;\n completionOffset: number;\n };\n};\n\nexport type ExternalSignature = {\n /** The party that signed */\n party: Party;\n /** The signature bytes (base64 or hex) */\n signature: string;\n /** Fingerprint/ID of the signing key */\n signedBy: string;\n /** Signature format (e.g., 'Raw') */\n format: string;\n /** Signing algorithm (e.g., 'Ed25519') */\n signingAlgorithmSpec: string;\n};\n\n/**\n * A right granted to a Canton user, as returned by `/v2/users/{userId}/rights`.\n *\n * The `kind` is a discriminated union — only one variant is set per right:\n * - `CanActAs.value.party`: user can submit transactions as that party\n * - `CanReadAs.value.party`: user can read events visible to that party\n * - `ParticipantAdmin`: user has admin rights on the participant\n * - `IdentityProviderAdmin`: user can administer its identity provider\n * - `CanReadAsAnyParty`: user can read as any party\n * - `CanExecuteAsAnyParty`: user can submit as any party\n *\n * Hand-rolled because the OpenAPI generator's `Kind` converter is broken\n * (`instanceOfKindOneOf` checks lowercase `canActAs`, but `KindOneOfFromJSON`\n * reads uppercase `CanActAs`), so the typed client strips all party data.\n *\n * The four nullary variants carry `value: unknown` because Canton's wire\n * format for them is literally `{ \"value\": {} }` (see\n * https://docs.digitalasset.com/build/3.4/explanations/json-api/) and we\n * never read into that payload — only the presence of the variant matters.\n */\nexport type UserRightKind = {\n CanActAs?: { value: { party: string } };\n CanReadAs?: { value: { party: string } };\n ParticipantAdmin?: { value: unknown };\n IdentityProviderAdmin?: { value: unknown };\n CanReadAsAnyParty?: { value: unknown };\n CanExecuteAsAnyParty?: { value: unknown };\n};\n\nexport type UserRight = {\n kind: UserRightKind;\n};\n\n/** Normalized active contract (flat shape derived from JsActiveContract). */\nexport type NormalizedActiveContract = {\n contractId: string;\n templateId: string;\n payload: unknown;\n synchronizerId: string;\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  import { templateIdMatches } from './ZMRZLUTH.js';
2
- import { cantonTransactionWithResultSchema } from './UG2M23HF.js';
2
+ import { cantonTransactionWithResultSchema } from './MM7EIOP4.js';
3
3
  import { __name } from './VUOMXK5T.js';
4
4
  import { NonEmittableError } from '@layerzerolabs/common-error-utils';
5
5
 
@@ -49,5 +49,5 @@ var getExercisedEvent = /* @__PURE__ */ __name((transaction, contractId) => {
49
49
  }, "getExercisedEvent");
50
50
 
51
51
  export { cantonDeploymentSucceeded, fetchCreatedEvents, findMatchingCreatedEvent, findMatchingCreatedEventFromTx, getExercisedEvent, waitForArchival };
52
- //# sourceMappingURL=YV6LAB6R.js.map
53
- //# sourceMappingURL=YV6LAB6R.js.map
52
+ //# sourceMappingURL=KGEOWAAR.js.map
53
+ //# sourceMappingURL=KGEOWAAR.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/events.ts"],"names":["findMatchingCreatedEvent","createdEvents","expectedTemplateId","expectedSignatories","expectedSet","Set","find","event","templateIdMatches","templateId","signatories","length","every","s","has","fetchCreatedEvents","client","updateId","parties","cantonTx","fetchTransactionByUpdateId","events","filter","map","CreatedEvent","findMatchingCreatedEventFromTx","tx","parsed","cantonTransactionWithResultSchema","safeParse","success","data","result","type","populatedTransaction","actAs","unresolvedCommands","minedTxHash","createCommand","cmd","cantonDeploymentSucceeded","txWithResult","waitForArchival","contractId","archived","fetchEventsByContractId","fetchTransactionByOffset","offset","NonEmittableError","getExercisedEvent","transaction","ExercisedEvent","exercised","undefined"],"mappings":"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","file":"YV6LAB6R.js","sourcesContent":["import { NonEmittableError } from '@layerzerolabs/common-error-utils';\n\nimport type { CantonTransaction, ICantonClient } from './client';\nimport type { CreatedEvent, ExercisedEvent } from './open-api/models';\nimport { templateIdMatches } from './refresh/deployment-address';\nimport { cantonTransactionWithResultSchema } from './transaction';\n\n/**\n * Finds a CreatedEvent matching the expected templateId whose signatories\n * are a subset of the provided actAs parties (ledger signatories ⊆ expected).\n * Opposite of `areExpectedSignatories` on the refresh path.\n */\nexport const findMatchingCreatedEvent = (\n createdEvents: CreatedEvent[],\n expectedTemplateId: string,\n expectedSignatories: string[],\n): CreatedEvent | undefined => {\n const expectedSet = new Set(expectedSignatories);\n return createdEvents.find((event) => {\n if (!templateIdMatches(event.templateId, expectedTemplateId)) return false;\n const signatories = event.signatories ?? [];\n return signatories.length > 0 && signatories.every((s) => expectedSet.has(s));\n });\n};\n\n/**\n * Fetches a transaction by updateId and returns all CreatedEvents.\n */\nexport const fetchCreatedEvents = async (\n client: ICantonClient,\n updateId: string,\n parties: string[],\n): Promise<CreatedEvent[]> => {\n const cantonTx = await client.fetchTransactionByUpdateId(updateId, parties);\n return (\n cantonTx.events\n ?.filter((event): event is { CreatedEvent: CreatedEvent } => 'CreatedEvent' in event)\n .map((event) => event.CreatedEvent) ?? []\n );\n};\n\n/**\n * Parses a Canton transaction-with-result, fetches the created events from the ledger,\n * and returns the first CreatedEvent matching the submitted command's templateId and actAs\n * signatories. Returns null if the transaction is falsy, not successful, or has no match.\n */\nexport const findMatchingCreatedEventFromTx = async (\n client: ICantonClient,\n tx: unknown,\n): Promise<CreatedEvent | null> => {\n const parsed = cantonTransactionWithResultSchema.safeParse(tx);\n if (!parsed.success) return null;\n\n if (parsed.data.result.type !== 'success') return null;\n\n const {\n populatedTransaction: { actAs, unresolvedCommands },\n } = parsed.data;\n const updateId = parsed.data.result.minedTxHash;\n\n if (!updateId || !actAs.length) return null;\n\n const createCommand = unresolvedCommands.find((cmd) => 'createCommand' in cmd);\n if (!createCommand || !('createCommand' in createCommand)) return null;\n\n const createdEvents = await fetchCreatedEvents(client, updateId, actAs);\n return (\n findMatchingCreatedEvent(createdEvents, createCommand.createCommand.templateId, actAs) ??\n null\n );\n};\n\n/**\n * Checks that a Canton deploy transaction resulted in a CreatedEvent\n * matching the submitted command's templateId and actAs signatories.\n */\nexport const cantonDeploymentSucceeded = async (\n client: ICantonClient,\n txWithResult: unknown,\n): Promise<boolean> => {\n return (await findMatchingCreatedEventFromTx(client, txWithResult)) != null;\n};\n\n/**\n * Waits for a contract to be archived and returns the transaction that archived it.\n * Throws NonEmittableError if the contract is not yet archived.\n */\nexport const waitForArchival = async (\n client: ICantonClient,\n contractId: string,\n parties: string[],\n): Promise<CantonTransaction> => {\n const { archived } = await client.fetchEventsByContractId(contractId, parties);\n if (archived) {\n return client.fetchTransactionByOffset(archived.offset, parties);\n }\n throw new NonEmittableError(`Contract ${contractId} is not archived yet`);\n};\n\n/** Returns the first exercised event on `contractId` in a transaction tree, if any. */\nexport const getExercisedEvent = (\n transaction: CantonTransaction,\n contractId: string,\n): ExercisedEvent | undefined => {\n for (const event of transaction.events ?? []) {\n if (!('ExercisedEvent' in event)) continue;\n const { ExercisedEvent: exercised } = event;\n if (exercised.contractId === contractId) {\n return exercised;\n }\n }\n return undefined;\n};\n"]}
1
+ {"version":3,"sources":["../src/events.ts"],"names":["findMatchingCreatedEvent","createdEvents","expectedTemplateId","expectedSignatories","expectedSet","Set","find","event","templateIdMatches","templateId","signatories","length","every","s","has","fetchCreatedEvents","client","updateId","parties","cantonTx","fetchTransactionByUpdateId","events","filter","map","CreatedEvent","findMatchingCreatedEventFromTx","tx","parsed","cantonTransactionWithResultSchema","safeParse","success","data","result","type","populatedTransaction","actAs","unresolvedCommands","minedTxHash","createCommand","cmd","cantonDeploymentSucceeded","txWithResult","waitForArchival","contractId","archived","fetchEventsByContractId","fetchTransactionByOffset","offset","NonEmittableError","getExercisedEvent","transaction","ExercisedEvent","exercised","undefined"],"mappings":"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","file":"KGEOWAAR.js","sourcesContent":["import { NonEmittableError } from '@layerzerolabs/common-error-utils';\n\nimport type { CantonTransaction, ICantonClient } from './client';\nimport type { CreatedEvent, ExercisedEvent } from './open-api/models';\nimport { templateIdMatches } from './refresh/deployment-address';\nimport { cantonTransactionWithResultSchema } from './transaction';\n\n/**\n * Finds a CreatedEvent matching the expected templateId whose signatories\n * are a subset of the provided actAs parties (ledger signatories ⊆ expected).\n * Opposite of `areExpectedSignatories` on the refresh path.\n */\nexport const findMatchingCreatedEvent = (\n createdEvents: CreatedEvent[],\n expectedTemplateId: string,\n expectedSignatories: string[],\n): CreatedEvent | undefined => {\n const expectedSet = new Set(expectedSignatories);\n return createdEvents.find((event) => {\n if (!templateIdMatches(event.templateId, expectedTemplateId)) return false;\n const signatories = event.signatories ?? [];\n return signatories.length > 0 && signatories.every((s) => expectedSet.has(s));\n });\n};\n\n/**\n * Fetches a transaction by updateId and returns all CreatedEvents.\n */\nexport const fetchCreatedEvents = async (\n client: ICantonClient,\n updateId: string,\n parties: string[],\n): Promise<CreatedEvent[]> => {\n const cantonTx = await client.fetchTransactionByUpdateId(updateId, parties);\n return (\n cantonTx.events\n ?.filter((event): event is { CreatedEvent: CreatedEvent } => 'CreatedEvent' in event)\n .map((event) => event.CreatedEvent) ?? []\n );\n};\n\n/**\n * Parses a Canton transaction-with-result, fetches the created events from the ledger,\n * and returns the first CreatedEvent matching the submitted command's templateId and actAs\n * signatories. Returns null if the transaction is falsy, not successful, or has no match.\n */\nexport const findMatchingCreatedEventFromTx = async (\n client: ICantonClient,\n tx: unknown,\n): Promise<CreatedEvent | null> => {\n const parsed = cantonTransactionWithResultSchema.safeParse(tx);\n if (!parsed.success) return null;\n\n if (parsed.data.result.type !== 'success') return null;\n\n const {\n populatedTransaction: { actAs, unresolvedCommands },\n } = parsed.data;\n const updateId = parsed.data.result.minedTxHash;\n\n if (!updateId || !actAs.length) return null;\n\n const createCommand = unresolvedCommands.find((cmd) => 'createCommand' in cmd);\n if (!createCommand || !('createCommand' in createCommand)) return null;\n\n const createdEvents = await fetchCreatedEvents(client, updateId, actAs);\n return (\n findMatchingCreatedEvent(createdEvents, createCommand.createCommand.templateId, actAs) ??\n null\n );\n};\n\n/**\n * Checks that a Canton deploy transaction resulted in a CreatedEvent\n * matching the submitted command's templateId and actAs signatories.\n */\nexport const cantonDeploymentSucceeded = async (\n client: ICantonClient,\n txWithResult: unknown,\n): Promise<boolean> => {\n return (await findMatchingCreatedEventFromTx(client, txWithResult)) != null;\n};\n\n/**\n * Waits for a contract to be archived and returns the transaction that archived it.\n * Throws NonEmittableError if the contract is not yet archived.\n */\nexport const waitForArchival = async (\n client: ICantonClient,\n contractId: string,\n parties: string[],\n): Promise<CantonTransaction> => {\n const { archived } = await client.fetchEventsByContractId(contractId, parties);\n if (archived) {\n return client.fetchTransactionByOffset(archived.offset, parties);\n }\n throw new NonEmittableError(`Contract ${contractId} is not archived yet`);\n};\n\n/** Returns the first exercised event on `contractId` in a transaction tree, if any. */\nexport const getExercisedEvent = (\n transaction: CantonTransaction,\n contractId: string,\n): ExercisedEvent | undefined => {\n for (const event of transaction.events ?? []) {\n if (!('ExercisedEvent' in event)) continue;\n const { ExercisedEvent: exercised } = event;\n if (exercised.contractId === contractId) {\n return exercised;\n }\n }\n return undefined;\n};\n"]}
@@ -77,6 +77,6 @@ var buildChannelCredentials = /* @__PURE__ */ __name((host, insecureTransport =
77
77
  return ChannelCredentials.createInsecure();
78
78
  }, "buildChannelCredentials");
79
79
 
80
- export { buildChannelCredentials, computeDecentralizedNamespace, computeMultiTransactionHash, headStateBaseQuery, synchronizerStore };
81
- //# sourceMappingURL=K7FRAGGM.js.map
82
- //# sourceMappingURL=K7FRAGGM.js.map
80
+ export { buildChannelCredentials, computeDecentralizedNamespace, computeMultiTransactionHash, headStateBaseQuery, isLoopbackHost, synchronizerStore };
81
+ //# sourceMappingURL=KLMACWXT.js.map
82
+ //# sourceMappingURL=KLMACWXT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/client/topology/utils.ts"],"names":["HASH_PURPOSE_DECENTRALIZED_NAMESPACE","HASH_PURPOSE_MULTI_TRANSACTION","computeDecentralizedNamespace","owners","sorted","sort","parts","owner","ownerBytes","Buffer","from","lengthPrefix","alloc","writeUInt32BE","length","push","bytesToHex","cantonMultihash","concat","computeMultiTransactionHash","hashes","left","right","compare","countBuffer","hash","lengthBuffer","synchronizerStore","synchronizerId","StoreId","create","store","oneofKind","synchronizer","id","headStateBaseQuery","proposals","BaseQuery","timeQuery","headState","Empty","LOOPBACK_HOSTNAMES","Set","LOOPBACK_IPV4","isLoopbackHost","host","hostname","replace","toLowerCase","has","test","buildChannelCredentials","insecureTransport","ChannelCredentials","createSsl","CantonError","createInsecure"],"mappings":";;;;;;;AASA,IAAMA,oCAAAA,GAAuC,EAAA;AAG7C,IAAMC,8BAAAA,GAAiC,EAAA;AAQhC,SAASC,8BAA8BC,MAAAA,EAAgB;AAC1D,EAAA,MAAMC,MAAAA,GAAS;AAAID,IAAAA,GAAAA;IAAQE,IAAAA,EAAI;AAC/B,EAAA,MAAMC,QAAkB,EAAA;AACxB,EAAA,KAAA,MAAWC,SAASH,MAAAA,EAAQ;AACxB,IAAA,MAAMI,UAAAA,GAAaC,MAAAA,CAAOC,IAAAA,CAAKH,KAAAA,EAAO,OAAA,CAAA;AACtC,IAAA,MAAMI,YAAAA,GAAeF,MAAAA,CAAOG,KAAAA,CAAM,CAAA,CAAA;AAClCD,IAAAA,YAAAA,CAAaE,aAAAA,CAAcL,WAAWM,MAAM,CAAA;AAC5CR,IAAAA,KAAAA,CAAMS,IAAAA,CAAKJ,cAAcH,UAAAA,CAAAA;AAC7B,EAAA;AACA,EAAA,OAAOQ,WAAWC,eAAAA,CAAgBjB,oCAAAA,EAAsCS,OAAOS,MAAAA,CAAOZ,KAAAA,CAAAA,CAAAA,CAAAA;AAC1F;AAVgBJ,MAAAA,CAAAA,6BAAAA,EAAAA,+BAAAA,CAAAA;AAmBT,SAASiB,4BAA4BC,MAAAA,EAAoB;AAC5D,EAAA,MAAMhB,MAAAA,GAAS;AAAIgB,IAAAA,GAAAA;AAAQf,GAAAA,CAAAA,IAAAA,CAAK,CAACgB,IAAAA,EAAMC,KAAAA,KACnCb,MAAAA,CAAOc,OAAAA,CAAQd,MAAAA,CAAOC,IAAAA,CAAKW,IAAAA,CAAAA,EAAOZ,MAAAA,CAAOC,IAAAA,CAAKY,KAAAA,CAAAA,CAAAA,CAAAA;AAElD,EAAA,MAAMhB,QAAkB,EAAA;AACxB,EAAA,MAAMkB,WAAAA,GAAcf,MAAAA,CAAOG,KAAAA,CAAM,CAAA,CAAA;AACjCY,EAAAA,WAAAA,CAAYX,aAAAA,CAAcT,OAAOU,MAAM,CAAA;AACvCR,EAAAA,KAAAA,CAAMS,KAAKS,WAAAA,CAAAA;AACX,EAAA,KAAA,MAAWC,QAAQrB,MAAAA,EAAQ;AACvB,IAAA,MAAMsB,YAAAA,GAAejB,MAAAA,CAAOG,KAAAA,CAAM,CAAA,CAAA;AAClCc,IAAAA,YAAAA,CAAab,aAAAA,CAAcY,KAAKX,MAAM,CAAA;AACtCR,IAAAA,KAAAA,CAAMS,IAAAA,CAAKW,YAAAA,EAAcjB,MAAAA,CAAOC,IAAAA,CAAKe,IAAAA,CAAAA,CAAAA;AACzC,EAAA;AACA,EAAA,OAAOR,eAAAA,CAAgBhB,8BAAAA,EAAgCQ,MAAAA,CAAOS,MAAAA,CAAOZ,KAAAA,CAAAA,CAAAA;AACzE;AAdgBa,MAAAA,CAAAA,2BAAAA,EAAAA,6BAAAA,CAAAA;AAqBT,SAASQ,kBAAkBC,cAAAA,EAAsB;AACpD,EAAA,OAAOC,QAAQC,MAAAA,CAAO;IAClBC,KAAAA,EAAO;MAAEC,SAAAA,EAAW,cAAA;MAAgBC,YAAAA,EAAc;QAAEC,EAAAA,EAAIN;AAAe;AAAE;GAC7E,CAAA;AACJ;AAJgBD,MAAAA,CAAAA,iBAAAA,EAAAA,mBAAAA,CAAAA;AAWT,SAASQ,kBAAAA,CAAmBP,cAAAA,EAAwBQ,SAAAA,GAAY,KAAA,EAAK;AACxE,EAAA,OAAOC,UAAUP,MAAAA,CAAO;AACpBC,IAAAA,KAAAA,EAAOJ,kBAAkBC,cAAAA,CAAAA;IACzBU,SAAAA,EAAW;MAAEN,SAAAA,EAAW,WAAA;MAAaO,SAAAA,EAAWC,KAAAA,CAAMV,MAAAA,CAAO,EAAC;AAAG,KAAA;AACjEM,IAAAA;GACJ,CAAA;AACJ;AANgBD,MAAAA,CAAAA,kBAAAA,EAAAA,oBAAAA,CAAAA;AAQhB,IAAMM,kBAAAA,uBAAyBC,GAAAA,CAAI;AAAC,EAAA,WAAA;AAAa,EAAA;AAAM,CAAA,CAAA;AACvD,IAAMC,aAAAA,GAAgB,qBAAA;AAKf,IAAMC,cAAAA,2BAAkBC,IAAAA,KAAAA;AAC3B,EAAA,MAAMC,QAAAA,GAAWD,IAAAA,CACZE,OAAAA,CAAQ,OAAA,EAAS,EAAA,EACjBA,OAAAA,CAAQ,YAAA,EAAc,IAAA,CAAA,CACtBC,WAAAA,EAAW;AAChB,EAAA,OAAOP,mBAAmBQ,GAAAA,CAAIH,QAAAA,CAAAA,IAAaH,aAAAA,CAAcO,KAAKJ,QAAAA,CAAAA;AAClE,CAAA,EAN8B,gBAAA;AAevB,IAAMK,uBAAAA,mBAA0B,MAAA,CAAA,CACnCN,IAAAA,EACAO,iBAAAA,GAAoB,KAAA,KAAK;AAEzB,EAAA,IAAI,CAACA,iBAAAA,EAAmB;AACpB,IAAA,OAAOC,mBAAmBC,SAAAA,EAAS;EACvC,CAAA,MAAA,IAAW,CAACV,cAAAA,CAAeC,IAAAA,CAAAA,EAAO;AAC9B,IAAA,MAAM,IAAIU,WAAAA,CACN,CAAA,kEAAA,EAAqEV,IAAAA,CAAAA,CAAM,CAAA;AAEnF,EAAA;AAEA,EAAA,OAAOQ,mBAAmBG,cAAAA,EAAc;AAC5C,CAAA,EAbuC,yBAAA","file":"KLMACWXT.js","sourcesContent":["import { BaseQuery, Empty, StoreId } from '@canton-network/core-ledger-proto';\nimport { ChannelCredentials } from '@grpc/grpc-js';\n\nimport { bytesToHex } from '@layerzerolabs/common-encoding-utils';\n\nimport { CantonError } from '../../errors';\nimport { cantonMultihash } from '../utils';\n\n/** Canton hash purpose for decentralized namespace derivation. */\nconst HASH_PURPOSE_DECENTRALIZED_NAMESPACE = 37;\n\n/** Canton hash purpose for multi-transaction topology signing. */\nconst HASH_PURPOSE_MULTI_TRANSACTION = 55;\n\n/**\n * Computes the decentralized namespace fingerprint from owner key fingerprints.\n *\n * Owners are sorted lexicographically, then hashed as\n * `1220` + SHA256(purpose=37 || for each owner: len(utf8) || utf8).\n */\nexport function computeDecentralizedNamespace(owners: string[]): string {\n const sorted = [...owners].sort();\n const parts: Buffer[] = [];\n for (const owner of sorted) {\n const ownerBytes = Buffer.from(owner, 'utf-8');\n const lengthPrefix = Buffer.alloc(4);\n lengthPrefix.writeUInt32BE(ownerBytes.length);\n parts.push(lengthPrefix, ownerBytes);\n }\n return bytesToHex(cantonMultihash(HASH_PURPOSE_DECENTRALIZED_NAMESPACE, Buffer.concat(parts)));\n}\n\n/**\n * Combines topology transaction hashes into the digest Canton expects signed.\n *\n * Hashes are sorted lexicographically, count-prefixed, each length-prefixed, then\n * hashed with purpose 55. Pass a single hash when signing one transaction —\n * Canton always uses this multi-transaction format for `AddTransactions`.\n */\nexport function computeMultiTransactionHash(hashes: Uint8Array[]): Uint8Array {\n const sorted = [...hashes].sort((left, right) =>\n Buffer.compare(Buffer.from(left), Buffer.from(right)),\n );\n const parts: Buffer[] = [];\n const countBuffer = Buffer.alloc(4);\n countBuffer.writeUInt32BE(sorted.length);\n parts.push(countBuffer);\n for (const hash of sorted) {\n const lengthBuffer = Buffer.alloc(4);\n lengthBuffer.writeUInt32BE(hash.length);\n parts.push(lengthBuffer, Buffer.from(hash));\n }\n return cantonMultihash(HASH_PURPOSE_MULTI_TRANSACTION, Buffer.concat(parts));\n}\n\n/**\n * Builds a topology `StoreId` scoped to a synchronizer.\n *\n * Used as the `store` field on topology read/write RPC requests.\n */\nexport function synchronizerStore(synchronizerId: string): StoreId {\n return StoreId.create({\n store: { oneofKind: 'synchronizer', synchronizer: { id: synchronizerId } },\n });\n}\n\n/**\n * Builds a topology `BaseQuery` at synchronizer head state.\n *\n * Used as the `baseQuery` field on topology list RPC requests.\n */\nexport function headStateBaseQuery(synchronizerId: string, proposals = false): BaseQuery {\n return BaseQuery.create({\n store: synchronizerStore(synchronizerId),\n timeQuery: { oneofKind: 'headState', headState: Empty.create({}) },\n proposals,\n });\n}\n\nconst LOOPBACK_HOSTNAMES = new Set(['localhost', '::1']);\nconst LOOPBACK_IPV4 = /^127(\\.\\d{1,3}){3}$/;\n\n/**\n * Whether a `host:port` target addresses the local machine.\n */\nexport const isLoopbackHost = (host: string): boolean => {\n const hostname = host\n .replace(/:\\d+$/, '')\n .replace(/^\\[(.*)\\]$/, '$1')\n .toLowerCase();\n return LOOPBACK_HOSTNAMES.has(hostname) || LOOPBACK_IPV4.test(hostname);\n};\n\n/**\n * Builds gRPC channel credentials for the Canton admin API.\n *\n * Encrypted whatever the port, because every admin call carries a reusable bearer token.\n *\n * @throws {CantonError} If an unencrypted channel is asked for on a remote host.\n */\nexport const buildChannelCredentials = (\n host: string,\n insecureTransport = false,\n): ChannelCredentials => {\n if (!insecureTransport) {\n return ChannelCredentials.createSsl();\n } else if (!isLoopbackHost(host)) {\n throw new CantonError(\n `Canton admin API requires an encrypted channel for a remote host: ${host}`,\n );\n }\n\n return ChannelCredentials.createInsecure();\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { cantonRefreshPlanSchema } from './DCDLEU2R.js';
1
+ import { cantonRefreshPlanSchema } from './UUUJS2PY.js';
2
2
  import { __name } from './VUOMXK5T.js';
3
3
  import { z } from 'zod';
4
4
  import { transactionSchema, buildTransactionWithResultSchema, assignedTransactionSchema, signedTransactionSchema, minedTransactionSchema } from '@layerzerolabs/common-chain-model';
@@ -119,5 +119,5 @@ var buildCantonTransaction = /* @__PURE__ */ __name(async (chainName, tx) => {
119
119
  }, "buildCantonTransaction");
120
120
 
121
121
  export { buildCantonTransaction, cantonAssignedTransactionSchema, cantonCommandSchema, cantonDisclosedContractSchema, cantonMinedTransactionSchema, cantonSignedTransactionSchema, cantonTransactionSchema, cantonTransactionWithResultSchema };
122
- //# sourceMappingURL=UG2M23HF.js.map
123
- //# sourceMappingURL=UG2M23HF.js.map
122
+ //# sourceMappingURL=MM7EIOP4.js.map
123
+ //# sourceMappingURL=MM7EIOP4.js.map
@@ -1 +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","cantonDisclosedContractSchema","optional","createdEventBlob","synchronizerId","cantonTransactionSchema","transactionSchema","extend","populatedTransaction","unresolvedCommands","array","unresolvedDisclosedContracts","actAs","partyToSenderEntity","record","deploymentSpec","packageName","ownerField","identityKeys","refreshPlan","cantonRefreshPlanSchema","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":"UG2M23HF.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 { cantonRefreshPlanSchema } from './refresh/plan';\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\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(cantonCommandSchema),\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 /** Build-time replacements for volatile command inputs and disclosures. */\n refreshPlan: cantonRefreshPlanSchema.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\nexport type CantonTx = z.infer<typeof cantonTransactionSchema>;\nexport type CantonPopulatedTransaction = CantonTx['populatedTransaction'];\nexport type CantonCommand = z.infer<typeof cantonCommandSchema>;\nexport type CantonUnresolvedCommand = CantonCommand;\nexport type CantonDisclosedContract = 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
+ {"version":3,"sources":["../src/transaction.ts"],"names":["cantonCommandSchema","z","union","object","createCommand","templateId","string","createArguments","any","exerciseCommand","contractId","choice","choiceArgument","createAndExerciseCommand","exerciseByKeyCommand","contractKey","cantonDisclosedContractSchema","optional","createdEventBlob","synchronizerId","cantonTransactionSchema","transactionSchema","extend","populatedTransaction","unresolvedCommands","array","unresolvedDisclosedContracts","actAs","partyToSenderEntity","record","deploymentSpec","packageName","ownerField","identityKeys","refreshPlan","cantonRefreshPlanSchema","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":";;;;;AAeO,IAAMA,mBAAAA,GAAsBC,EAAEC,KAAAA,CAAM;AACvCD,EAAAA,CAAAA,CAAEE,MAAAA,CAAO;AACLC,IAAAA,aAAAA,EAAeH,EAAEE,MAAAA,CAAO;AACpBE,MAAAA,UAAAA,EAAYJ,EAAEK,MAAAA,EAAM;AACpBC,MAAAA,eAAAA,EAAiBN,EAAEO,GAAAA;KACvB;GACJ,CAAA;AACAP,EAAAA,CAAAA,CAAEE,MAAAA,CAAO;AACLM,IAAAA,eAAAA,EAAiBR,EAAEE,MAAAA,CAAO;AACtBE,MAAAA,UAAAA,EAAYJ,EAAEK,MAAAA,EAAM;AACpBI,MAAAA,UAAAA,EAAYT,EAAEK,MAAAA,EAAM;AACpBK,MAAAA,MAAAA,EAAQV,EAAEK,MAAAA,EAAM;AAChBM,MAAAA,cAAAA,EAAgBX,EAAEO,GAAAA;KACtB;GACJ,CAAA;AACAP,EAAAA,CAAAA,CAAEE,MAAAA,CAAO;AACLU,IAAAA,wBAAAA,EAA0BZ,EAAEE,MAAAA,CAAO;AAC/BE,MAAAA,UAAAA,EAAYJ,EAAEK,MAAAA,EAAM;AACpBC,MAAAA,eAAAA,EAAiBN,EAAEO,GAAAA,EAAG;AACtBG,MAAAA,MAAAA,EAAQV,EAAEK,MAAAA,EAAM;AAChBM,MAAAA,cAAAA,EAAgBX,EAAEO,GAAAA;KACtB;GACJ,CAAA;AACAP,EAAAA,CAAAA,CAAEE,MAAAA,CAAO;AACLW,IAAAA,oBAAAA,EAAsBb,EAAEE,MAAAA,CAAO;AAC3BE,MAAAA,UAAAA,EAAYJ,EAAEK,MAAAA,EAAM;AACpBS,MAAAA,WAAAA,EAAad,EAAEO,GAAAA,EAAG;AAClBG,MAAAA,MAAAA,EAAQV,EAAEK,MAAAA,EAAM;AAChBM,MAAAA,cAAAA,EAAgBX,EAAEO,GAAAA;KACtB;GACJ;AACH,CAAA;AAEM,IAAMQ,6BAAAA,GAAgCf,EAAEE,MAAAA,CAAO;EAClDE,UAAAA,EAAYJ,CAAAA,CAAEK,MAAAA,EAAM,CAAGW,QAAAA,EAAQ;AAC/BP,EAAAA,UAAAA,EAAYT,EAAEK,MAAAA,EAAM;AACpBY,EAAAA,gBAAAA,EAAkBjB,EAAEK,MAAAA,EAAM;AAC1Ba,EAAAA,cAAAA,EAAgBlB,EAAEK,MAAAA;AACtB,CAAA;AAOO,IAAMc,uBAAAA,GAA0BC,kBAAkBC,MAAAA,CAAO;AAC5DC,EAAAA,oBAAAA,EAAsBtB,EAAEE,MAAAA,CAAO;IAC3BqB,kBAAAA,EAAoBvB,CAAAA,CAAEwB,MAAMzB,mBAAAA,CAAAA;IAC5B0B,4BAAAA,EAA8BzB,CAAAA,CAAEwB,MAAMT,6BAAAA,CAAAA;;AAGtCW,IAAAA,KAAAA,EAAO1B,CAAAA,CAAEwB,KAAAA,CAAMxB,CAAAA,CAAEK,MAAAA,EAAM,CAAA;;;;;;;AAOvBsB,IAAAA,mBAAAA,EAAqB3B,CAAAA,CAAE4B,MAAAA,CAAO5B,CAAAA,CAAEK,MAAAA,EAAM,EAAIL,CAAAA,CAAEwB,KAAAA,CAAMxB,CAAAA,CAAEK,MAAAA,EAAM,CAAA,CAAA,CAAKW,QAAAA,EAAQ;;AAEvEa,IAAAA,cAAAA,EAAgB7B,EACXE,MAAAA,CAAO;AACJ4B,MAAAA,WAAAA,EAAa9B,EAAEK,MAAAA,EAAM;AACrB0B,MAAAA,UAAAA,EAAY/B,EAAEK,MAAAA,EAAM;AACpB2B,MAAAA,YAAAA,EAAchC,CAAAA,CAAEwB,KAAAA,CAAMxB,CAAAA,CAAEK,MAAAA,EAAM;AAClC,KAAA,EACCW,QAAAA,EAAQ;;AAEbiB,IAAAA,WAAAA,EAAaC,wBAAwBlB,QAAAA;GACzC;AACJ,CAAA;AAEO,IAAMmB,iCAAAA,GACTC,iCAAiCjB,uBAAAA;AAErC,IAAMkB,+BAAAA,GAAkCrC,EAAEE,MAAAA,CAAO;;AAE7CoC,EAAAA,mBAAAA,EAAqBtC,EAAEK,MAAAA,EAAM;;AAE7BkC,EAAAA,uBAAAA,EAAyBvC,EAAEK,MAAAA,EAAM;;AAEjCmC,EAAAA,oBAAAA,EAAsBxC,EAAEyC,IAAAA,CAAK;AACzB,IAAA,oCAAA;AACA,IAAA;AACH,GAAA,CAAA;;AAEDC,EAAAA,SAAAA,EAAW1C,EAAEK,MAAAA,EAAM;;;;EAInBsC,gBAAAA,EAAkB3C,CAAAA,CAAE4C,MAAAA,EAAM,CAAG5B,QAAAA;AACjC,CAAA,CAAA;AAKO,IAAM6B,+BAAAA,GAAkCC,0BAA0BzB,MAAAA,CAAO;AAC5E,EAAA,GAAGF,uBAAAA,CAAwB4B,KAAAA;AAC3BC,EAAAA,mBAAAA,EAAqBX,gCAAgCrB,QAAAA;AACzD,CAAA;AAKO,IAAMiC,6BAAAA,GAAgCC,wBAAwB7B,MAAAA,CAAO;AACxE,EAAA,GAAGwB,+BAAAA,CAAgCE,KAAAA;;EAEnCI,QAAAA,EAAUnD,CAAAA,CAAEwB,MAAMzB,mBAAAA,CAAAA;EAClBqD,kBAAAA,EAAoBpD,CAAAA,CAAEwB,MAAMT,6BAAAA,CAAAA;AAC5BsC,EAAAA,iBAAAA,EAAmBrD,EAAEE,MAAAA,CAAO;;IAExBoD,UAAAA,EAAYtD,CAAAA,CAAEwB,KAAAA,CACVxB,CAAAA,CAAEE,MAAAA,CAAO;AACLqD,MAAAA,KAAAA,EAAOvD,EAAEK,MAAAA,EAAM;MACfiD,UAAAA,EAAYtD,CAAAA,CAAEwB,KAAAA,CACVxB,CAAAA,CAAEE,MAAAA,CAAO;AACLsD,QAAAA,MAAAA,EAAQxD,EAAEK,MAAAA,EAAM;AAChBoD,QAAAA,SAAAA,EAAWzD,EAAEK,MAAAA,EAAM;AACnBqD,QAAAA,QAAAA,EAAU1D,EAAEK,MAAAA,EAAM;AAClBsD,QAAAA,oBAAAA,EAAsB3D,EAAEK,MAAAA;AAC5B,OAAA,CAAA;AAER,KAAA,CAAA;GAER;AACJ,CAAA;AAKO,IAAMuD,4BAAAA,GAA+BC,uBAAuBxC,MAAAA,CAAO;AACtE,EAAA,GAAG4B,6BAAAA,CAA8BF,KAAAA;EACjCC,mBAAAA,EAAqBX;AACzB,CAAA;AAeO,IAAMyB,sBAAAA,mBAAyB,MAAA,CAAA,OAClCC,SAAAA,EACAC,EAAAA,KAAAA;AAEA,EAAA,OAAO;IACH,GAAGA,EAAAA;AACHD,IAAAA,SAAAA;IACAE,UAAAA,EAAY;AACRC,MAAAA,OAAAA,EAASF,EAAAA,CAAGC,UAAAA,EAAYC,OAAAA,IAAWC,IAAAA,CAAKC,GAAAA;AAC5C;AACJ,GAAA;AACJ,CAAA,EAXsC,wBAAA","file":"MM7EIOP4.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 { cantonRefreshPlanSchema } from './refresh/plan';\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\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(cantonCommandSchema),\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 /** Build-time replacements for volatile command inputs and disclosures. */\n refreshPlan: cantonRefreshPlanSchema.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\nexport type CantonTx = z.infer<typeof cantonTransactionSchema>;\nexport type CantonPopulatedTransaction = CantonTx['populatedTransaction'];\nexport type CantonCommand = z.infer<typeof cantonCommandSchema>;\nexport type CantonUnresolvedCommand = CantonCommand;\nexport type CantonDisclosedContract = 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,5 +1,5 @@
1
- import { resolveBurnMintCallbackContext } from './HQMIA66Y.js';
2
- import { resolveLockUnlockCallbackContext } from './CMFVLC7C.js';
1
+ import { resolveBurnMintCallbackContext } from './DELPT7WC.js';
2
+ import { resolveLockUnlockCallbackContext } from './6GIDRO6Y.js';
3
3
  import { partyIdFromRegistryFingerprint } from './TLQX4ZQW.js';
4
4
  import { callbackDisclosure } from './YMXOSAU4.js';
5
5
  import { isTrustedOrigin, areExpectedSignatories } from './SWY4QT4I.js';
@@ -420,5 +420,5 @@ var cantonBurnMintCallbackEntries = /* @__PURE__ */ __name((args) => {
420
420
  }, "cantonBurnMintCallbackEntries");
421
421
 
422
422
  export { cantonAdapterCallbackReceivers, cantonBurnMintCallbackEntries, cantonCallbackAppUid, cantonFinalizeCallbackBaseEntries, cantonLockUnlockCallbackEntries, getCantonCallbackFnArgs, hasPositiveCantonCallbackOutflow, resolveCantonFinalizeCallback, shouldIncludeCantonCallbackRateLimiter };
423
- //# sourceMappingURL=E6W3YWXU.js.map
424
- //# sourceMappingURL=E6W3YWXU.js.map
423
+ //# sourceMappingURL=MRAAJXQA.js.map
424
+ //# sourceMappingURL=MRAAJXQA.js.map