@layerzerolabs/common-canton 1.2.100 → 1.2.102

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 +0,0 @@
1
- {"version":3,"sources":["../src/refresh/resolve-plan.ts"],"names":["CANTON_TIME_PATTERN","resolveParty","partyRef","senderParty","label","isCantonDeferredSender","party","Error","getContractNumericField","contract","field","raw","getCreateArgumentField","createdEvent","createArgument","value","initialAmount","parseDamlDecimal","contractId","selectContractsByGte","contracts","requestedValue","selectContractAmounts","makeActiveContractRef","selector","type","partyToFilter","queryAs","expectedSignatories","templateId","interfaceId","contractStateFilter","stateFilter","resolveSelectorContracts","resolver","resolveActiveContracts","source","length","filter","resolveContractValue","selectActiveContracts","selection","kind","resolveCantonActiveContracts","args","queryParty","createContractAddressResolver","client","signingParties","appendDisclosures","undefined","selected","contractIds","map","isRecord","Array","isArray","isCantonTime","test","Number","isFinite","Date","parse","isActiveContractRefresh","refresh","isActiveContractValueRefresh","isAmuletContextRefresh","isTimestampRefresh","replaceAtPath","root","path","current","position","segment","entries","isLast","index","damlMapKey","matches","entry","readAtPath","readTarget","commands","target","command","commandIndex","exerciseCommand","choice","choiceArgument","createCommand","template","createArguments","applyPatch","applyTarget","argument","arguments","containsDeferredSentinel","isCantonDeferredSentinel","some","item","Object","values","child","disclosuresEqual","left","right","createdEventBlob","synchronizerId","resolveCantonRefreshPlan","replacements","cantonRefreshPlanSchema","shape","replaceSentinels","refreshPlan","structuredClone","unresolvedCommands","trim","replacement","targets","cantonSenderPartyRef","callback","cantonFinalizeCallbackRefreshSchema","contextIndices","sort","cidIndices","callbackCidTargets","JSON","stringify","pendingCallbackCid","disclosureMap","Map","disclosures","disclosure","existing","get","set","unresolvedDisclosedContracts","ref","discloseActiveContracts","resolved","transfer","cantonOneSigTransferBatchRefreshSchema","firstTarget","calls","transferIndices","flatMap","call","tag","indices","Set","size","includes","bundle","resolveCantonOneSigTransferBatch","CantonSdk","disclosedContracts","forEach","contexts","instruction","cantonOneSigTransferInstructionContextRefreshSchema","slice","transferInstructionCid","resolveCantonOneSigTransferInstructionContext","context","config","cantonOneSigConfigContextRefreshSchema","expected","operation","oappId","admin","id","expectedHandler","resolveCantonOneSigConfigContext","scope","cantonOneSigScopeContextRefreshSchema","contextTag","category","resolveCantonOneSigScopeContext","discovery","cantonOneSigDiscoveryContextRefreshSchema","timestamp","feeAmount","feeDsoParty","dso","resolveCantonOneSigDiscoveryContext","request","cantonOneSigRequestContextRefreshSchema","requestTags","dsoParty","String","resolveCantonOneSigRequestContext","resolveCantonFinalizeCallback","executeContext","callbackCid","acceptance","cantonTransferInstructionAcceptContextRefreshSchema","getTransferInstructionAcceptContext","choiceContext","getAmuletContextWithExternalRules","amuletContext","contractIdTargets","externalPartyAmuletRulesCid","now","offsetMs","iso","getTime","toISOString"],"mappings":"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","file":"4SK2ZV46.js","sourcesContent":["import type { ICantonClient } from '../client/interface';\nimport {\n type CantonRefreshPartyFilter,\n cantonSenderPartyRef,\n isCantonDeferredSender,\n isCantonDeferredSentinel,\n} from '../deferredValue';\nimport type { JsActiveContract } from '../open-api/models';\nimport { CantonSdk } from '../sdk/canton-sdk';\nimport type {\n CantonCommand,\n CantonDisclosedContract,\n CantonUnresolvedCommand,\n} from '../transaction';\nimport { getCreateArgumentField } from '../trusted-origin';\nimport { type ActiveContractRef, createContractAddressResolver } from './address-resolver';\nimport { resolveCantonFinalizeCallback } from './callback';\nimport { resolveCantonOneSigConfigContext } from './onesig-config';\nimport { resolveCantonOneSigDiscoveryContext } from './onesig-discovery';\nimport { resolveCantonOneSigRequestContext } from './onesig-request';\nimport { resolveCantonOneSigScopeContext } from './onesig-scope';\nimport { resolveCantonOneSigTransferBatch } from './onesig-transfer';\nimport { resolveCantonOneSigTransferInstructionContext } from './onesig-transfer-instruction';\nimport {\n type CantonActiveContractRefresh,\n type CantonActiveContractSelection,\n type CantonActiveContractValue,\n type CantonActiveContractValueRefresh,\n type CantonAmuletContextRefresh,\n type CantonArgumentRefreshTarget,\n type CantonContractSelector,\n cantonFinalizeCallbackRefreshSchema,\n cantonOneSigConfigContextRefreshSchema,\n cantonOneSigDiscoveryContextRefreshSchema,\n cantonOneSigRequestContextRefreshSchema,\n cantonOneSigScopeContextRefreshSchema,\n cantonOneSigTransferBatchRefreshSchema,\n cantonOneSigTransferInstructionContextRefreshSchema,\n type CantonRefresh,\n type CantonRefreshPath,\n type CantonRefreshPlan,\n cantonRefreshPlanSchema,\n type CantonRefreshTarget,\n type CantonTimestampRefresh,\n cantonTransferInstructionAcceptContextRefreshSchema,\n} from './plan';\nimport { parseDamlDecimal, selectContractAmounts } from './select-contracts';\n\nconst CANTON_TIME_PATTERN = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,9})?Z$/;\n\nconst resolveParty = (\n partyRef: CantonRefreshPartyFilter,\n senderParty: string | undefined,\n label: string,\n): string => {\n if (!isCantonDeferredSender(partyRef)) return partyRef.party;\n if (!senderParty) {\n throw new Error(`${label} requires a resolved sender party`);\n }\n return senderParty;\n};\n\nconst getContractNumericField = (contract: JsActiveContract, field: string): bigint => {\n const raw = getCreateArgumentField(contract.createdEvent.createArgument, field);\n const value =\n raw !== null && typeof raw === 'object' && 'initialAmount' in raw\n ? (raw as { initialAmount?: unknown }).initialAmount\n : raw;\n return parseDamlDecimal(\n value,\n `Contract ${contract.createdEvent.contractId} numeric field ${field}`,\n );\n};\n\nexport const selectContractsByGte = (\n contracts: JsActiveContract[],\n field: string,\n requestedValue: string,\n): JsActiveContract[] =>\n selectContractAmounts(contracts, field, requestedValue, (contract) =>\n getContractNumericField(contract, field),\n );\n\nconst makeActiveContractRef = (selector: CantonContractSelector): ActiveContractRef => ({\n type: 'activeContractIds',\n partyToFilter: selector.queryAs,\n expectedSignatories: selector.expectedSignatories,\n templateId: selector.templateId ?? selector.interfaceId,\n interfaceId: selector.interfaceId,\n contractStateFilter: selector.stateFilter,\n});\n\nconst resolveSelectorContracts = async (\n resolver: ReturnType<typeof createContractAddressResolver>,\n selector: CantonContractSelector,\n): Promise<JsActiveContract[]> => {\n const contracts = await resolver.resolveActiveContracts(makeActiveContractRef(selector));\n if (!selector.contractId) return contracts;\n const source = await resolver.resolveActiveContracts(\n makeActiveContractRef(selector.contractId.selector),\n );\n if (source.length !== 1)\n throw new Error(\n `Contract ID source matched ${source.length} contracts, expected exactly one`,\n );\n const contractId = getCreateArgumentField(\n source[0]!.createdEvent.createArgument,\n selector.contractId.field,\n );\n if (typeof contractId !== 'string' || !contractId)\n throw new Error('Contract ID source must contain a nonempty contract ID');\n return contracts.filter((contract) => contract.createdEvent.contractId === contractId);\n};\n\nconst resolveContractValue = async (\n resolver: ReturnType<typeof createContractAddressResolver>,\n source: CantonActiveContractValue,\n): Promise<string> => {\n const contracts = await resolveSelectorContracts(resolver, source.selector);\n if (contracts.length !== 1) {\n throw new Error(\n `Active contract value matched ${contracts.length} contracts, expected exactly one`,\n );\n }\n const value = getCreateArgumentField(contracts[0]!.createdEvent.createArgument, source.field);\n if (parseDamlDecimal(value, `Contract value ${source.field}`) <= 0n) {\n throw new Error(`Contract value ${source.field} must be positive`);\n }\n return value as string;\n};\n\nconst selectActiveContracts = async (\n contracts: JsActiveContract[],\n selection: CantonActiveContractSelection,\n resolver: ReturnType<typeof createContractAddressResolver>,\n): Promise<JsActiveContract[]> => {\n switch (selection.kind) {\n case 'exactlyOne':\n if (contracts.length !== 1) {\n throw new Error(\n `Active contract selection matched ${contracts.length} contracts, expected exactly one`,\n );\n }\n return contracts;\n case 'all':\n return contracts;\n case 'gte':\n return selectContractsByGte(\n contracts,\n selection.field,\n typeof selection.value === 'string'\n ? selection.value\n : await resolveContractValue(resolver, selection.value),\n );\n }\n};\n\nexport const resolveCantonActiveContracts = async (args: {\n client: ICantonClient;\n selector: CantonContractSelector;\n selection: CantonActiveContractSelection;\n senderParty?: string;\n}): Promise<{ contractIds: string[] }> => {\n const queryParty = resolveParty(\n args.selector.queryAs,\n args.senderParty,\n 'Active contract selection',\n );\n const resolver = createContractAddressResolver({\n client: args.client,\n senderParty: args.senderParty,\n signingParties: [queryParty],\n appendDisclosures: () => undefined,\n });\n const selected = await selectActiveContracts(\n await resolveSelectorContracts(resolver, args.selector),\n args.selection,\n resolver,\n );\n return {\n contractIds: selected.map(({ createdEvent }) => createdEvent.contractId),\n };\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n value !== null && typeof value === 'object' && !Array.isArray(value);\n\nconst isCantonTime = (value: unknown): value is string =>\n typeof value === 'string' &&\n CANTON_TIME_PATTERN.test(value) &&\n Number.isFinite(Date.parse(value));\n\nconst isActiveContractRefresh = (refresh: CantonRefresh): refresh is CantonActiveContractRefresh =>\n refresh.resolver.type === 'activeContract';\n\nconst isActiveContractValueRefresh = (\n refresh: CantonRefresh,\n): refresh is CantonActiveContractValueRefresh => refresh.resolver.type === 'activeContractValue';\n\nconst isAmuletContextRefresh = (refresh: CantonRefresh): refresh is CantonAmuletContextRefresh =>\n refresh.resolver.type === 'amuletContext';\n\nconst isTimestampRefresh = (refresh: CantonRefresh): refresh is CantonTimestampRefresh =>\n refresh.resolver.type === 'timestamp';\n\nconst replaceAtPath = (root: unknown, path: CantonRefreshPath, value: unknown): unknown => {\n if (path.length === 0) return value;\n\n let current = root;\n for (const [position, segment] of path.entries()) {\n const isLast = position === path.length - 1;\n if ('field' in segment) {\n if (!isRecord(current) || !(segment.field in current)) {\n throw new Error(`Refresh target field \"${segment.field}\" does not exist`);\n }\n if (isLast) {\n current[segment.field] = value;\n return root;\n }\n current = current[segment.field];\n continue;\n }\n if ('index' in segment) {\n if (!Array.isArray(current) || segment.index >= current.length) {\n throw new Error(`Refresh target array index ${segment.index} does not exist`);\n }\n if (isLast) {\n current[segment.index] = value;\n return root;\n }\n current = current[segment.index];\n continue;\n }\n\n if (!Array.isArray(current)) {\n throw new Error(`Refresh target DAML map \"${segment.damlMapKey}\" is not an array`);\n }\n const matches = current.filter(\n (entry): entry is [string, unknown] =>\n Array.isArray(entry) && entry.length === 2 && entry[0] === segment.damlMapKey,\n );\n if (matches.length !== 1) {\n throw new Error(\n `Refresh target DAML map key \"${segment.damlMapKey}\" matched ${matches.length} entries`,\n );\n }\n if (isLast) {\n matches[0]![1] = value;\n return root;\n }\n current = matches[0]![1];\n }\n return root;\n};\n\nconst readAtPath = (root: unknown, path: CantonRefreshPath): unknown => {\n let current = root;\n for (const segment of path) {\n if ('field' in segment) {\n if (!isRecord(current) || !(segment.field in current)) {\n throw new Error(`Refresh target field \"${segment.field}\" does not exist`);\n }\n current = current[segment.field];\n continue;\n }\n if ('index' in segment) {\n if (!Array.isArray(current) || segment.index >= current.length) {\n throw new Error(`Refresh target array index ${segment.index} does not exist`);\n }\n current = current[segment.index];\n continue;\n }\n\n if (!Array.isArray(current)) {\n throw new Error(`Refresh target DAML map \"${segment.damlMapKey}\" is not an array`);\n }\n const matches = current.filter(\n (entry): entry is [string, unknown] =>\n Array.isArray(entry) && entry.length === 2 && entry[0] === segment.damlMapKey,\n );\n if (matches.length !== 1) {\n throw new Error(\n `Refresh target DAML map key \"${segment.damlMapKey}\" matched ${matches.length} entries`,\n );\n }\n current = matches[0]![1];\n }\n return current;\n};\n\nconst readTarget = (\n commands: CantonUnresolvedCommand[],\n target: CantonArgumentRefreshTarget,\n path: CantonRefreshPath,\n): unknown => {\n const command = commands[target.commandIndex];\n if (!command) {\n throw new Error(`Refresh command index ${target.commandIndex} does not exist`);\n }\n\n if (target.command === 'exercise') {\n if (!('exerciseCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not an exercise`);\n }\n if (command.exerciseCommand.choice !== target.choice) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected choice ${target.choice}, found ${command.exerciseCommand.choice}`,\n );\n }\n return readAtPath(command.exerciseCommand.choiceArgument, path);\n }\n\n if (!('createCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not a create`);\n }\n if (command.createCommand.templateId !== target.template) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected template ${target.template}, found ${command.createCommand.templateId}`,\n );\n }\n return readAtPath(command.createCommand.createArguments, path);\n};\n\nconst applyPatch = (\n commands: CantonUnresolvedCommand[],\n target: CantonArgumentRefreshTarget,\n path: CantonRefreshPath,\n value: unknown,\n): void => {\n const command = commands[target.commandIndex];\n if (!command) {\n throw new Error(`Refresh command index ${target.commandIndex} does not exist`);\n }\n\n if (target.command === 'exercise') {\n if (!('exerciseCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not an exercise`);\n }\n if (command.exerciseCommand.choice !== target.choice) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected choice ${target.choice}, found ${command.exerciseCommand.choice}`,\n );\n }\n command.exerciseCommand.choiceArgument = replaceAtPath(\n command.exerciseCommand.choiceArgument,\n path,\n value,\n );\n return;\n }\n\n if (!('createCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not a create`);\n }\n if (command.createCommand.templateId !== target.template) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected template ${target.template}, found ${command.createCommand.templateId}`,\n );\n }\n command.createCommand.createArguments = replaceAtPath(\n command.createCommand.createArguments,\n path,\n value,\n );\n};\n\nconst applyTarget = (\n commands: CantonUnresolvedCommand[],\n target: CantonRefreshTarget,\n value: unknown,\n): void => {\n if ('field' in target) {\n const command = commands[target.commandIndex];\n if (!command) {\n throw new Error(`Refresh command index ${target.commandIndex} does not exist`);\n }\n if (!('exerciseCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not an exercise`);\n }\n if (target.choice !== undefined && command.exerciseCommand.choice !== target.choice) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected choice ${target.choice}, found ${command.exerciseCommand.choice}`,\n );\n }\n if (typeof value !== 'string') {\n throw new Error('Exercise contract ID refresh must resolve to a string');\n }\n command.exerciseCommand.contractId = value;\n return;\n }\n\n for (const argument of target.arguments) {\n applyPatch(commands, target, argument.path, value);\n }\n};\n\nconst containsDeferredSentinel = (value: unknown): boolean => {\n if (isCantonDeferredSentinel(value)) return true;\n if (Array.isArray(value)) return value.some((item) => containsDeferredSentinel(item));\n if (!isRecord(value)) return false;\n return Object.values(value).some((child) => containsDeferredSentinel(child));\n};\n\nconst disclosuresEqual = (left: CantonDisclosedContract, right: CantonDisclosedContract): boolean =>\n left.contractId === right.contractId &&\n left.templateId === right.templateId &&\n left.createdEventBlob === right.createdEventBlob &&\n left.synchronizerId === right.synchronizerId;\n\nexport const resolveCantonRefreshPlan = async (args: {\n unresolvedCommands: CantonUnresolvedCommand[];\n unresolvedDisclosedContracts: CantonDisclosedContract[];\n refreshPlan: CantonRefreshPlan;\n senderParty?: string;\n signingParties: string[];\n client: ICantonClient;\n}): Promise<{ commands: CantonCommand[]; disclosedContracts: CantonDisclosedContract[] }> => {\n const replacements = cantonRefreshPlanSchema.shape.replaceSentinels.parse(\n args.refreshPlan.replaceSentinels,\n );\n const commands = structuredClone(args.unresolvedCommands);\n if (replacements) {\n if (\n typeof args.senderParty !== 'string' ||\n !args.senderParty.trim() ||\n isCantonDeferredSentinel(args.senderParty)\n ) {\n throw new Error('Sender binding requires a resolved sender party');\n }\n for (const replacement of replacements) {\n for (const target of replacement.targets) {\n for (const { path } of target.arguments) {\n if (readTarget(commands, target, path) !== cantonSenderPartyRef()) {\n throw new Error(\n 'Sender binding target must contain cantonSenderPartyRef()',\n );\n }\n applyPatch(commands, target, path, args.senderParty);\n }\n }\n }\n }\n if (containsDeferredSentinel(commands)) {\n throw new Error('Canton refreshPlan cannot be combined with deferred sentinels');\n }\n\n for (const entry of args.refreshPlan.commands) {\n if (entry.resolver.type !== 'finalizeCallback') continue;\n const callback = cantonFinalizeCallbackRefreshSchema.parse(entry);\n const contextIndices = callback.targets.map((target) => target.commandIndex).sort();\n const cidIndices = callback.callbackCidTargets.map((target) => target.commandIndex).sort();\n if (JSON.stringify(contextIndices) !== JSON.stringify(cidIndices)) {\n throw new Error(\n 'Callback context and contract ID targets must address the same commands',\n );\n }\n for (const target of [...callback.targets, ...callback.callbackCidTargets]) {\n readTarget(commands, target, target.arguments[0].path);\n const command = commands[target.commandIndex]!;\n if (\n !('exerciseCommand' in command) ||\n !isRecord(command.exerciseCommand.choiceArgument) ||\n command.exerciseCommand.choiceArgument.pendingCallbackCid !==\n callback.resolver.pendingCallbackCid\n ) {\n throw new Error('Callback target must match the pinned PendingCallback');\n }\n }\n }\n\n const disclosureMap = new Map<string, CantonDisclosedContract>();\n const appendDisclosures = (disclosures: CantonDisclosedContract[]): void => {\n for (const disclosure of disclosures) {\n const existing = disclosureMap.get(disclosure.contractId);\n if (existing && !disclosuresEqual(existing, disclosure)) {\n throw new Error(`Conflicting disclosures for contract ${disclosure.contractId}`);\n }\n disclosureMap.set(disclosure.contractId, disclosure);\n }\n };\n appendDisclosures(args.unresolvedDisclosedContracts);\n\n const resolver = createContractAddressResolver({\n client: args.client,\n senderParty: args.senderParty,\n signingParties: args.signingParties,\n appendDisclosures,\n });\n\n for (const refresh of args.refreshPlan.commands) {\n if (isActiveContractRefresh(refresh)) {\n const ref = makeActiveContractRef(refresh.resolver.selector);\n const selected = await selectActiveContracts(\n await resolveSelectorContracts(resolver, refresh.resolver.selector),\n refresh.resolver.selection,\n resolver,\n );\n await resolver.discloseActiveContracts(ref, selected);\n const contractIds = selected.map(({ createdEvent }) => createdEvent.contractId);\n const resolved =\n refresh.resolver.selection.kind === 'exactlyOne' ? contractIds[0]! : contractIds;\n for (const target of refresh.targets) applyTarget(commands, target, resolved);\n continue;\n }\n\n if (isActiveContractValueRefresh(refresh)) {\n const value = await resolveContractValue(resolver, refresh.resolver);\n for (const target of refresh.targets) applyTarget(commands, target, value);\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigTransferBatch') {\n const transfer = cantonOneSigTransferBatchRefreshSchema.parse(refresh);\n const firstTarget = transfer.targets[0]!;\n const commandIndex = firstTarget.commandIndex;\n const calls = readTarget(commands, firstTarget, [\n { field: 'transaction' },\n { field: 'calls' },\n ]);\n if (!Array.isArray(calls)) throw new Error('OneSig transfer target requires calls');\n const transferIndices = calls.flatMap((entry, index) =>\n isRecord(entry) && isRecord(entry.call) && entry.call.tag === 'OpTransfer'\n ? [index]\n : [],\n );\n const indices = transfer.targets.map((target) => target.arguments[0].path[2].index);\n if (\n transfer.targets.some((target) => target.commandIndex !== commandIndex) ||\n indices.length !== transferIndices.length ||\n new Set(indices).size !== indices.length ||\n transferIndices.some((index) => !indices.includes(index)) ||\n args.refreshPlan.commands.filter(\n (entry) =>\n entry.resolver.type === 'oneSigTransferBatch' &&\n entry.targets.some((target) => target.commandIndex === commandIndex),\n ).length !== 1\n ) {\n throw new Error(\n 'OneSig transfer targets must cover every Transfer context exactly once',\n );\n }\n for (const target of transfer.targets) {\n const current = readTarget(commands, target, target.arguments[0].path);\n if (\n !isRecord(current) ||\n current.tag !== 'TransferFactoryContext' ||\n !isRecord(current.value)\n )\n throw new Error('OneSig transfer target context mismatch');\n }\n const bundle = await resolveCantonOneSigTransferBatch(\n new CantonSdk(args.client),\n transfer.resolver,\n indices.map((index) => calls[index].call),\n args.client,\n );\n appendDisclosures(bundle.disclosedContracts);\n transfer.targets.forEach((target, index) =>\n applyTarget(commands, target, bundle.contexts[index]),\n );\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigTransferInstructionContext') {\n const instruction = cantonOneSigTransferInstructionContextRefreshSchema.parse(refresh);\n const target = instruction.targets[0]!;\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [...path.slice(0, -1), { field: 'call' }]);\n if (\n !isRecord(current) ||\n current.tag !== 'TransferInstructionContext' ||\n !isRecord(current.value) ||\n current.value.transferInstructionCid !== instruction.resolver.transferInstructionCid\n ) {\n throw new Error(\n 'OneSig instruction target must match the pinned transfer instruction',\n );\n }\n const bundle = await resolveCantonOneSigTransferInstructionContext(\n new CantonSdk(args.client),\n instruction.resolver,\n call,\n args.client,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigConfigContext') {\n const config = cantonOneSigConfigContextRefreshSchema.parse(refresh);\n for (const target of config.targets) {\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [\n ...path.slice(0, -1),\n { field: 'call' },\n ]);\n const expected = config.resolver;\n if (\n !isRecord(call) ||\n !isRecord(call.value) ||\n call.tag !== expected.operation ||\n !isRecord(call.value.oappId) ||\n call.value.oappId.admin !== expected.oappId.admin ||\n call.value.oappId.id !== expected.oappId.id ||\n !isRecord(current) ||\n current.tag !== 'ConfigContext' ||\n !isRecord(current.value) ||\n (expected.operation === 'OpSetRequestFactory' &&\n call.value.expectedHandler !== expected.expectedHandler)\n ) {\n throw new Error('OneSig config target does not match signed call identity');\n }\n const bundle = await resolveCantonOneSigConfigContext(\n new CantonSdk(args.client),\n expected,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n }\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigScopeContext') {\n const scope = cantonOneSigScopeContextRefreshSchema.parse(refresh);\n for (const target of scope.targets) {\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [\n ...path.slice(0, -1),\n { field: 'call' },\n ]);\n const expected = scope.resolver;\n const contextTag =\n expected.operation === 'OpSetMinFee'\n ? 'MinFeeContext'\n : expected.operation === 'OpSetMinPayoutValue'\n ? 'MinPayoutValueContext'\n : expected.operation === 'OpSetProtocolLedgerTimeValidityPeriod'\n ? 'LedgerTimeValidityContext'\n : 'AccessControlContext';\n if (\n !isRecord(call) ||\n !isRecord(call.value) ||\n call.tag !== expected.operation ||\n !isRecord(call.value.scope) ||\n call.value.scope.category !== expected.scope.category ||\n call.value.scope.admin !== expected.scope.admin ||\n call.value.scope.id !== expected.scope.id ||\n (expected.operation === 'OpAcceptDefaultAdmin' &&\n expected.scope.category === 'oapp') ||\n !isRecord(current) ||\n current.tag !== contextTag ||\n !isRecord(current.value)\n ) {\n throw new Error('OneSig scope target does not match signed call identity');\n }\n const bundle = await resolveCantonOneSigScopeContext(\n new CantonSdk(args.client),\n expected,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n }\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigDiscoveryContext') {\n const discovery = cantonOneSigDiscoveryContextRefreshSchema.parse(refresh);\n for (const target of discovery.targets) {\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [\n ...path.slice(0, -1),\n { field: 'call' },\n ]);\n const expected = discovery.resolver;\n if (\n !isRecord(call) ||\n call.tag !== 'OpSetDiscoveryUrl' ||\n !isRecord(call.value) ||\n !isRecord(call.value.oappId) ||\n call.value.oappId.admin !== expected.oappId.admin ||\n call.value.oappId.id !== expected.oappId.id ||\n !isRecord(current) ||\n current.tag !== 'OAppDiscoveryContext' ||\n !isRecord(current.value) ||\n !isCantonTime(current.value.timestamp) ||\n (parseDamlDecimal(call.value.feeAmount, 'Discovery fee') > 0n\n ? expected.feeDsoParty !== call.value.dso\n : expected.feeDsoParty !== undefined)\n ) {\n throw new Error('OneSig discovery target does not match signed call identity');\n }\n const bundle = await resolveCantonOneSigDiscoveryContext(\n new CantonSdk(args.client),\n expected,\n current.value.timestamp,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n }\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigRequestContext') {\n const request = cantonOneSigRequestContextRefreshSchema.parse(refresh);\n for (const target of request.targets) {\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [\n ...path.slice(0, -1),\n { field: 'call' },\n ]);\n const expected = request.resolver.request;\n const requestTags = [\n 'OpCreateOAppRequest',\n 'OpSkip',\n 'OpBurn',\n 'OpClear',\n 'OpNilify',\n ];\n if (\n !isRecord(call) ||\n !isRecord(call.value) ||\n call.value.dso !== request.resolver.dsoParty ||\n !isRecord(current) ||\n !isRecord(current.value) ||\n !isCantonTime(current.value.timestamp) ||\n (expected.kind === 'request'\n ? call.tag !== 'OpCreateRequest' || current.tag !== 'RequestContext'\n : expected.kind === 'oappAccept'\n ? call.tag !== 'OpAcceptDefaultAdmin' ||\n current.tag !== 'OAppRequestContext' ||\n !isRecord(call.value.scope) ||\n call.value.scope.category !== 'oapp' ||\n call.value.scope.admin !== expected.oappId.admin ||\n call.value.scope.id !== expected.oappId.id ||\n parseDamlDecimal(call.value.feeAmount, 'OApp Accept fee') <= 0n\n : !requestTags.includes(String(call.tag)) ||\n current.tag !== 'OAppRequestContext' ||\n !isRecord(call.value.oappId) ||\n call.value.oappId.admin !== expected.oappId.admin ||\n call.value.oappId.id !== expected.oappId.id)\n ) {\n throw new Error('OneSig request target does not match signed call identity');\n }\n const bundle = await resolveCantonOneSigRequestContext(\n new CantonSdk(args.client),\n request.resolver,\n current.value.timestamp,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n }\n continue;\n }\n\n if (refresh.resolver.type === 'finalizeCallback') {\n const callback = cantonFinalizeCallbackRefreshSchema.parse(refresh);\n const bundle = await resolveCantonFinalizeCallback(\n new CantonSdk(args.client),\n callback.resolver,\n );\n appendDisclosures(bundle.disclosedContracts);\n for (const target of callback.targets)\n applyTarget(commands, target, bundle.executeContext);\n for (const target of callback.callbackCidTargets)\n applyTarget(commands, target, bundle.callbackCid);\n continue;\n }\n\n if (refresh.resolver.type === 'transferInstructionAcceptContext') {\n const acceptance = cantonTransferInstructionAcceptContextRefreshSchema.parse(refresh);\n for (const target of acceptance.targets) {\n readTarget(commands, target, target.arguments[0]!.path);\n const command = commands[target.commandIndex]!;\n if (\n !('exerciseCommand' in command) ||\n command.exerciseCommand.contractId !== acceptance.resolver.contractId\n ) {\n throw new Error(\n 'Accept context target must match the pinned transfer instruction',\n );\n }\n }\n const bundle = await args.client.getTransferInstructionAcceptContext({\n contractId: acceptance.resolver.contractId,\n });\n appendDisclosures(bundle.disclosedContracts);\n for (const target of acceptance.targets) {\n applyTarget(commands, target, bundle.choiceContext);\n }\n continue;\n }\n\n if (isAmuletContextRefresh(refresh)) {\n const bundle = await args.client.getAmuletContextWithExternalRules({\n admin: refresh.resolver.dsoParty,\n id: 'Amulet',\n });\n appendDisclosures(bundle.disclosedContracts);\n for (const target of refresh.targets) {\n applyTarget(commands, target, bundle.amuletContext);\n }\n for (const target of refresh.contractIdTargets ?? []) {\n applyTarget(commands, target, bundle.externalPartyAmuletRulesCid);\n }\n }\n }\n\n // Timestamp refreshes run after all external reads so their shared instant is\n // as close as possible to prepareForSigning, regardless of declaration order.\n const now = new Date();\n for (const refresh of args.refreshPlan.commands) {\n if (!isTimestampRefresh(refresh)) continue;\n\n for (const target of refresh.targets) {\n for (const { path, offsetMs = 0 } of target.arguments) {\n const iso = new Date(now.getTime() + offsetMs).toISOString();\n const current = readTarget(commands, target, path);\n let value: unknown;\n if (isCantonTime(current)) {\n value = iso;\n } else if (\n isRecord(current) &&\n current.tag === 'AV_Time' &&\n isCantonTime(current.value)\n ) {\n value = { ...current, value: iso };\n } else {\n throw new Error('Timestamp refresh target must contain a Canton Time value');\n }\n applyPatch(commands, target, path, value);\n }\n }\n }\n\n for (const refresh of args.refreshPlan.commands) {\n if (refresh.resolver.type !== 'transferInstructionAcceptContext') continue;\n for (const target of refresh.targets) {\n const command = commands[target.commandIndex]!;\n if (\n !('exerciseCommand' in command) ||\n command.exerciseCommand.contractId !== refresh.resolver.contractId\n ) {\n throw new Error('Accept context target must match the pinned transfer instruction');\n }\n }\n }\n\n for (const refresh of args.refreshPlan.commands) {\n if (refresh.resolver.type !== 'finalizeCallback') continue;\n const callback = cantonFinalizeCallbackRefreshSchema.parse(refresh);\n for (const target of [...callback.targets, ...callback.callbackCidTargets]) {\n const command = commands[target.commandIndex]!;\n if (\n !('exerciseCommand' in command) ||\n !isRecord(command.exerciseCommand.choiceArgument) ||\n command.exerciseCommand.choiceArgument.pendingCallbackCid !==\n callback.resolver.pendingCallbackCid\n ) {\n throw new Error('Callback target must match the pinned PendingCallback');\n }\n }\n }\n\n for (const replacement of replacements ?? []) {\n for (const target of replacement.targets) {\n for (const { path } of target.arguments) {\n if (readTarget(commands, target, path) !== args.senderParty) {\n throw new Error('Refresh cannot change the bound sender party');\n }\n }\n }\n }\n const disclosedContracts = [...disclosureMap.values()];\n if (containsDeferredSentinel(commands)) {\n throw new Error('Canton refreshPlan cannot return deferred sentinels');\n }\n\n return {\n commands: commands as CantonCommand[],\n disclosedContracts,\n };\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/refresh/onesig-request.ts"],"names":["ONESIG_CONFIG","FACTORY","FACTORY_CONFIG","IOAPP","OAPP_CONFIG","ACCESS_CONTROL","sameIdentity","value","identity","getCreateArgumentField","admin","id","exactlyOne","contracts","label","length","Error","requiredText","resolveCantonOneSigRequestContext","sdk","input","timestamp","offset","getLedgerEndOffset","templateContracts","templateId","name","entity","slice","split","queryActiveContracts","informee","templateIds","includeCreatedEventBlob","filter","createdEvent","packageName","join","interfaceContracts","interfaceId","packageId","getPackageId","resolvedId","queryActiveContractsByInterface","flatMap","contract","views","interfaceViews","view","viewStatus","code","viewValue","areExpectedSignatories","disclosedContracts","disclose","push","callbackDisclosure","contractId","factoryCid","gateway","oapp","request","kind","oneSigId","oneSig","config","createArgument","oappId","ioApps","configs","accessControls","Promise","all","ioApp","map","find","oappGateway","matchingAccess","scope","ioAppCid","oappConfig","accessControlCid","factory","handler","dsoParty","undefined","ownerConfig","ownerConfigCid","time","Date","now","toISOString","context","tag","requestFactoryConfig"],"mappings":"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","file":"D3KVE5XQ.js","sourcesContent":["import type { JsActiveContract } from '../open-api/models';\nimport type { CantonSdk } from '../sdk/canton-sdk';\nimport type { CantonDisclosedContract } from '../transaction';\nimport { areExpectedSignatories, getCreateArgumentField } from '../trusted-origin';\nimport { callbackDisclosure } from './callback-contracts';\nimport type { CantonOneSigRequestContextRefresh } from './plan';\n\nconst ONESIG_CONFIG = '#layerzero-onesigv1:OneSigConfig:OneSigConfig';\nconst FACTORY = '#layerzero-request-factory:RequestFactory:RequestFactory';\nconst FACTORY_CONFIG = '#layerzero-request-factory:RequestFactoryConfig:RequestFactoryConfig';\nconst IOAPP = '#layerzero-ioapp:IOApp:IOApp';\nconst OAPP_CONFIG = '#layerzero-ioapp-config:IOAppConfig:IOAppConfig';\nconst ACCESS_CONTROL = '#layerzero-iaccess-control:IAccessControl:IAccessControl';\n\ntype Input = CantonOneSigRequestContextRefresh['resolver'];\ntype Identity = { admin: string; id: string };\nexport type CantonOneSigRequestContext =\n | { tag: 'RequestContext'; value: { ownerConfig: string; timestamp: string } }\n | {\n tag: 'OAppRequestContext';\n value: {\n ioAppCid: string;\n oappConfig: string;\n accessControlCid: string | null;\n requestFactoryConfig: string;\n timestamp: string;\n };\n };\n\nconst sameIdentity = (value: unknown, identity: Identity): boolean =>\n getCreateArgumentField(value, 'admin') === identity.admin &&\n getCreateArgumentField(value, 'id') === identity.id;\nconst exactlyOne = (contracts: JsActiveContract[], label: string): JsActiveContract => {\n if (contracts.length !== 1)\n throw new Error(`Expected exactly one ${label}, found ${contracts.length}`);\n return contracts[0]!;\n};\nconst requiredText = (value: unknown, label: string): string => {\n if (typeof value !== 'string' || !value) throw new Error(`Missing ${label}`);\n return value;\n};\n\nexport const resolveCantonOneSigRequestContext = async (\n sdk: CantonSdk,\n input: Input,\n timestamp?: string,\n): Promise<{\n context: CantonOneSigRequestContext;\n disclosedContracts: CantonDisclosedContract[];\n}> => {\n const offset = await sdk.getLedgerEndOffset();\n const templateContracts = async (templateId: string) => {\n const [name, ...entity] = templateId.slice(1).split(':');\n return (\n await sdk.queryActiveContracts(input.informee, offset, {\n templateIds: [templateId],\n includeCreatedEventBlob: true,\n })\n ).filter(\n ({ createdEvent }) =>\n createdEvent.packageName === name &&\n createdEvent.templateId.split(':').slice(1).join(':') === entity.join(':'),\n );\n };\n const interfaceContracts = async (interfaceId: string, admin: string) => {\n const [name, ...entity] = interfaceId.slice(1).split(':');\n const packageId = await sdk.getPackageId(name!, [input.informee]);\n const resolvedId = `${packageId}:${entity.join(':')}`;\n return (\n await sdk.queryActiveContractsByInterface([input.informee], offset, [interfaceId], {\n includeCreatedEventBlob: true,\n })\n ).flatMap((contract) => {\n const views =\n contract.createdEvent.interfaceViews?.filter(\n (view) => view.interfaceId === resolvedId,\n ) ?? [];\n const view = views[0];\n return views.length === 1 &&\n view?.viewStatus?.code === 0 &&\n view.viewValue &&\n areExpectedSignatories(contract.createdEvent, [admin])\n ? [{ contract, view: view.viewValue as Record<string, unknown> }]\n : [];\n });\n };\n const disclosedContracts: CantonDisclosedContract[] = [];\n const disclose = (contract: JsActiveContract) => {\n disclosedContracts.push(callbackDisclosure(contract));\n return contract.createdEvent.contractId;\n };\n let factoryCid: string;\n let gateway: string | undefined;\n let oapp: { ioAppCid: string; oappConfig: string; accessControlCid: string | null } | undefined;\n if (input.request.kind === 'request') {\n const { admin, oneSigId } = input.request.oneSig;\n const config = exactlyOne(\n (await templateContracts(ONESIG_CONFIG)).filter(\n ({ createdEvent }) =>\n areExpectedSignatories(createdEvent, [admin]) &&\n getCreateArgumentField(createdEvent.createArgument, 'admin') === admin &&\n getCreateArgumentField(createdEvent.createArgument, 'oneSigId') === oneSigId,\n ),\n 'OneSig config',\n );\n factoryCid = requiredText(\n getCreateArgumentField(config.createdEvent.createArgument, 'requestFactoryCid'),\n 'OneSig request factory',\n );\n } else {\n const { oappId } = input.request;\n const [ioApps, configs, accessControls] = await Promise.all([\n interfaceContracts(IOAPP, oappId.admin),\n interfaceContracts(OAPP_CONFIG, oappId.admin),\n interfaceContracts(ACCESS_CONTROL, oappId.admin),\n ]);\n const ioApp = exactlyOne(\n ioApps\n .filter(({ view }) => sameIdentity(view.oappId, oappId))\n .map(({ contract }) => contract),\n 'IOApp',\n );\n const config = exactlyOne(\n configs\n .filter(({ view }) => sameIdentity(view.oappId, oappId))\n .map(({ contract }) => contract),\n 'OApp config',\n );\n gateway = requiredText(\n ioApps.find(({ contract }) => contract === ioApp)!.view.oappGateway,\n 'OApp gateway',\n );\n factoryCid = requiredText(\n getCreateArgumentField(config.createdEvent.createArgument, 'requestFactoryCid'),\n 'OApp request factory',\n );\n const matchingAccess = accessControls.filter(\n ({ view }) =>\n sameIdentity(view.scope, oappId) &&\n getCreateArgumentField(view.scope, 'category') === 'oapp',\n );\n if (matchingAccess.length > 1) throw new Error('Ambiguous OApp access control');\n if (input.request.kind === 'oappAccept' && matchingAccess.length !== 1)\n throw new Error('OApp Accept requires access control');\n oapp = {\n ioAppCid: disclose(ioApp),\n oappConfig: disclose(config),\n accessControlCid: matchingAccess[0] ? disclose(matchingAccess[0].contract) : null,\n };\n }\n const factory = exactlyOne(\n (await templateContracts(FACTORY)).filter(\n ({ createdEvent }) => createdEvent.contractId === factoryCid,\n ),\n 'configured request factory',\n );\n const handler = requiredText(\n getCreateArgumentField(factory.createdEvent.createArgument, 'handler'),\n 'request factory handler',\n );\n if (\n !areExpectedSignatories(factory.createdEvent, [handler]) ||\n getCreateArgumentField(factory.createdEvent.createArgument, 'dso') !== input.dsoParty ||\n (gateway !== undefined && gateway !== handler)\n ) {\n throw new Error('Request factory authority, DSO or OApp gateway mismatch');\n }\n disclose(factory);\n const ownerConfig = exactlyOne(\n (await templateContracts(FACTORY_CONFIG)).filter(\n ({ createdEvent }) =>\n areExpectedSignatories(createdEvent, [handler]) &&\n getCreateArgumentField(createdEvent.createArgument, 'handler') === handler,\n ),\n 'request factory config',\n );\n const ownerConfigCid = disclose(ownerConfig);\n const time = timestamp ?? new Date(Date.now() - 10_000).toISOString();\n return {\n context: oapp\n ? {\n tag: 'OAppRequestContext',\n value: { ...oapp, requestFactoryConfig: ownerConfigCid, timestamp: time },\n }\n : { tag: 'RequestContext', value: { ownerConfig: ownerConfigCid, timestamp: time } },\n disclosedContracts,\n };\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/refresh/plan.ts"],"names":["cantonRefreshPathSegmentSchema","z","union","object","field","string","min","index","number","int","nonnegative","damlMapKey","cantonRefreshPathSchema","array","cantonNestedRefreshPathSchema","exerciseEntrypointTargetSchema","commandIndex","command","literal","choice","optional","exerciseChoiceArgumentTargetSchema","arguments","path","cantonCreateArgumentTargetSchema","template","cantonRefreshTargetSchema","cantonArgumentRefreshTargetSchema","cantonNestedArgumentRefreshTargetSchema","extend","offsetMs","cantonSelectorFields","queryAs","cantonRefreshPartyFilterSchema","expectedSignatories","cantonExpectedSignatoriesSchema","stateFilter","record","unknown","cantonBaseContractSelectorSchema","templateId","interfaceId","never","cantonContractSelectorSchema","and","contractId","selector","cantonActiveContractValueSchema","cantonExactlyOneSelectionSchema","kind","cantonAllSelectionSchema","cantonGteSelectionSchema","value","cantonActiveContractSelectionSchema","discriminatedUnion","cantonActiveContractResolverFields","type","cantonActiveContractRefreshSchema","resolver","selection","targets","cantonActiveContractValueRefreshSchema","cantonAmuletContextRefreshSchema","dsoParty","contractIdTargets","cantonTransferInstructionAcceptContextRefreshSchema","tuple","strict","callbackArgumentTarget","callbackOAppIdSchema","admin","id","callbackDecimalSchema","regex","callbackIdentityFields","instrumentId","localDecimals","sharedDecimals","rateLimiterScaleDecimals","cantonFinalizeCallbackRefreshSchema","pendingCallbackCid","informee","oappId","identity","treasury","mintEscrow","environment","callbackCidTargets","oneSigRequestIdentitySchema","cantonOneSigRequestContextRefreshSchema","request","oneSig","oneSigId","enum","oneSigConfigResolverFields","cantonOneSigConfigContextRefreshSchema","operation","expectedHandler","shape","cantonOneSigScopeContextRefreshSchema","scope","category","cantonOneSigDiscoveryContextRefreshSchema","feeDsoParty","cantonOneSigTransferInstructionContextRefreshSchema","transferInstructionCid","registryUrls","length","cantonOneSigTransferBatchRefreshSchema","cantonTimestampRefreshSchema","cantonRefreshSchema","cantonSentinelArgumentSchema","strictObject","options","cantonSentinelTargetSchema","cantonRefreshPlanSchema","commands","replaceSentinels"],"mappings":"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","file":"DCDLEU2R.js","sourcesContent":["import { z } from 'zod';\n\nimport { cantonExpectedSignatoriesSchema, cantonRefreshPartyFilterSchema } from '../deferredValue';\n\nexport const cantonRefreshPathSegmentSchema = z.union([\n z.object({ field: z.string().min(1) }),\n z.object({ index: z.number().int().nonnegative() }),\n z.object({ damlMapKey: z.string().min(1) }),\n]);\n\nexport const cantonRefreshPathSchema = z.array(cantonRefreshPathSegmentSchema);\nconst cantonNestedRefreshPathSchema = cantonRefreshPathSchema.min(1);\n\nconst exerciseEntrypointTargetSchema = z.object({\n commandIndex: z.number().int().nonnegative(),\n command: z.literal('exercise'),\n field: z.literal('contractId'),\n choice: z.string().min(1).optional(),\n});\n\nconst exerciseChoiceArgumentTargetSchema = z.object({\n commandIndex: z.number().int().nonnegative(),\n command: z.literal('exercise'),\n choice: z.string().min(1),\n arguments: z\n .array(\n z.object({\n path: cantonRefreshPathSchema,\n }),\n )\n .min(1),\n});\n\nconst cantonCreateArgumentTargetSchema = z.object({\n commandIndex: z.number().int().nonnegative(),\n command: z.literal('create'),\n template: z.string().min(1),\n arguments: z\n .array(\n z.object({\n path: cantonRefreshPathSchema,\n }),\n )\n .min(1),\n});\n\nexport const cantonRefreshTargetSchema = z.union([\n exerciseEntrypointTargetSchema,\n exerciseChoiceArgumentTargetSchema,\n cantonCreateArgumentTargetSchema,\n]);\n\nexport const cantonArgumentRefreshTargetSchema = z.union([\n exerciseChoiceArgumentTargetSchema,\n cantonCreateArgumentTargetSchema,\n]);\n\nconst cantonNestedArgumentRefreshTargetSchema = z.union([\n exerciseChoiceArgumentTargetSchema.extend({\n arguments: z\n .array(\n z.object({\n path: cantonNestedRefreshPathSchema,\n offsetMs: z.number().int().optional(),\n }),\n )\n .min(1),\n }),\n cantonCreateArgumentTargetSchema.extend({\n arguments: z\n .array(\n z.object({\n path: cantonNestedRefreshPathSchema,\n offsetMs: z.number().int().optional(),\n }),\n )\n .min(1),\n }),\n]);\n\nconst cantonSelectorFields = {\n queryAs: cantonRefreshPartyFilterSchema,\n expectedSignatories: cantonExpectedSignatoriesSchema,\n stateFilter: z.record(z.string(), z.unknown()).optional(),\n};\nconst cantonBaseContractSelectorSchema = z.union([\n z.object({\n ...cantonSelectorFields,\n templateId: z.string().min(1),\n interfaceId: z.never().optional(),\n }),\n z.object({\n ...cantonSelectorFields,\n interfaceId: z.string().min(1),\n templateId: z.never().optional(),\n }),\n]);\nconst cantonContractSelectorSchema = cantonBaseContractSelectorSchema.and(\n z.object({\n contractId: z\n .object({ selector: cantonBaseContractSelectorSchema, field: z.string().min(1) })\n .optional(),\n }),\n);\n\nconst cantonActiveContractValueSchema = z.object({\n selector: cantonContractSelectorSchema,\n field: z.string().min(1),\n});\n\nconst cantonExactlyOneSelectionSchema = z.object({ kind: z.literal('exactlyOne') });\nconst cantonAllSelectionSchema = z.object({ kind: z.literal('all') });\nconst cantonGteSelectionSchema = z.object({\n kind: z.literal('gte'),\n field: z.string().min(1),\n value: z.union([z.string().min(1), cantonActiveContractValueSchema]),\n});\n\nexport const cantonActiveContractSelectionSchema = z.discriminatedUnion('kind', [\n cantonExactlyOneSelectionSchema,\n cantonAllSelectionSchema,\n cantonGteSelectionSchema,\n]);\n\nconst cantonActiveContractResolverFields = {\n type: z.literal('activeContract'),\n selector: cantonContractSelectorSchema,\n};\n\nconst cantonActiveContractRefreshSchema = z.union([\n z.object({\n resolver: z.object({\n ...cantonActiveContractResolverFields,\n selection: cantonExactlyOneSelectionSchema,\n }),\n targets: z.array(cantonRefreshTargetSchema),\n }),\n z.object({\n resolver: z.object({\n ...cantonActiveContractResolverFields,\n selection: z.union([cantonAllSelectionSchema, cantonGteSelectionSchema]),\n }),\n targets: z.array(cantonArgumentRefreshTargetSchema).min(1),\n }),\n]);\n\nconst cantonActiveContractValueRefreshSchema = z.object({\n resolver: cantonActiveContractValueSchema.extend({\n type: z.literal('activeContractValue'),\n }),\n targets: z.array(cantonArgumentRefreshTargetSchema).min(1),\n});\n\nconst cantonAmuletContextRefreshSchema = z.object({\n resolver: z.object({\n type: z.literal('amuletContext'),\n dsoParty: z.string().min(1),\n }),\n targets: z.array(cantonArgumentRefreshTargetSchema).min(1),\n contractIdTargets: z.array(exerciseEntrypointTargetSchema).min(1).optional(),\n});\n\nexport const cantonTransferInstructionAcceptContextRefreshSchema = z\n .object({\n resolver: z.object({\n type: z.literal('transferInstructionAcceptContext'),\n contractId: z.string().min(1),\n }),\n targets: z\n .array(\n z\n .object({\n commandIndex: z.number().int().nonnegative(),\n command: z.literal('exercise'),\n choice: z.literal('TransferInstruction_Accept'),\n arguments: z\n .array(\n z\n .object({\n path: z.tuple([\n z.object({ field: z.literal('extraArgs') }).strict(),\n z.object({ field: z.literal('context') }).strict(),\n ]),\n })\n .strict(),\n )\n .min(1),\n })\n .strict(),\n )\n .min(1),\n })\n .strict();\n\nconst callbackArgumentTarget = <T extends 'executeContext' | 'callbackCid'>(field: T) =>\n z\n .object({\n commandIndex: z.number().int().nonnegative(),\n command: z.literal('exercise'),\n choice: z.literal('FinalizeCallback'),\n arguments: z.tuple([\n z\n .object({\n path: z.tuple([z.object({ field: z.literal(field) }).strict()]),\n })\n .strict(),\n ]),\n })\n .strict();\n\nconst callbackOAppIdSchema = z.object({ admin: z.string().min(1), id: z.string().min(1) }).strict();\nconst callbackDecimalSchema = z.string().regex(/^\\d+$/);\nconst callbackIdentityFields = {\n instrumentId: callbackOAppIdSchema,\n localDecimals: callbackDecimalSchema,\n sharedDecimals: callbackDecimalSchema,\n rateLimiterScaleDecimals: callbackDecimalSchema,\n};\nexport const cantonFinalizeCallbackRefreshSchema = z\n .object({\n resolver: z\n .object({\n type: z.literal('finalizeCallback'),\n pendingCallbackCid: z.string().min(1),\n informee: z.string().min(1),\n oappId: callbackOAppIdSchema,\n identity: z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('oft-self'), ...callbackIdentityFields }).strict(),\n z\n .object({\n kind: z.literal('lock-unlock-adapter'),\n ...callbackIdentityFields,\n treasury: z.string().min(1),\n })\n .strict(),\n z\n .object({\n kind: z.literal('burn-mint-adapter'),\n ...callbackIdentityFields,\n mintEscrow: z.string().min(1),\n })\n .strict(),\n ]),\n environment: z.string().optional(),\n })\n .strict(),\n targets: z.array(callbackArgumentTarget('executeContext')).min(1),\n callbackCidTargets: z.array(callbackArgumentTarget('callbackCid')).min(1),\n })\n .strict();\n\nexport type CantonFinalizeCallbackRefresh = z.infer<typeof cantonFinalizeCallbackRefreshSchema>;\n\nconst oneSigRequestIdentitySchema = z\n .object({ admin: z.string().min(1), id: z.string().min(1) })\n .strict();\n\nexport const cantonOneSigRequestContextRefreshSchema = z\n .object({\n resolver: z\n .object({\n type: z.literal('oneSigRequestContext'),\n informee: z.string().min(1),\n dsoParty: z.string().min(1),\n request: z.discriminatedUnion('kind', [\n z\n .object({\n kind: z.literal('request'),\n oneSig: z\n .object({\n admin: z.string().min(1),\n oneSigId: z.string().regex(/^(0|[1-9]\\d*)$/),\n })\n .strict(),\n })\n .strict(),\n z\n .object({\n kind: z.enum(['oappRequest', 'oappAccept']),\n oappId: oneSigRequestIdentitySchema,\n })\n .strict(),\n ]),\n })\n .strict(),\n targets: z\n .array(\n z\n .object({\n commandIndex: z.number().int().nonnegative(),\n command: z.literal('exercise'),\n choice: z.literal('OneSig_ExecuteTransaction'),\n arguments: z.tuple([\n z\n .object({\n path: z.tuple([\n z.object({ field: z.literal('transaction') }).strict(),\n z.object({ field: z.literal('calls') }).strict(),\n z\n .object({ index: z.number().int().nonnegative() })\n .strict(),\n z.object({ field: z.literal('context') }).strict(),\n ]),\n })\n .strict(),\n ]),\n })\n .strict(),\n )\n .min(1),\n })\n .strict();\n\nexport type CantonOneSigRequestContextRefresh = z.infer<\n typeof cantonOneSigRequestContextRefreshSchema\n>;\n\nconst oneSigConfigResolverFields = {\n type: z.literal('oneSigConfigContext'),\n informee: z.string().min(1),\n oappId: oneSigRequestIdentitySchema,\n};\n\nexport const cantonOneSigConfigContextRefreshSchema = z\n .object({\n resolver: z.discriminatedUnion('operation', [\n z\n .object({\n ...oneSigConfigResolverFields,\n operation: z.enum([\n 'OpAddToBlacklist',\n 'OpRemoveFromBlacklist',\n 'OpAddToWhitelist',\n 'OpRemoveFromWhitelist',\n 'OpSetAllowlistMode',\n 'OpRateLimiterSetDefault',\n 'OpRateLimiterSetEidOverride',\n 'OpRateLimiterRemoveEidOverride',\n 'OpRateLimiterSetGlobalFlags',\n 'OpRateLimiterSetAddressExemption',\n 'OpRateLimiterSetState',\n 'OpPauseLocalTransfers',\n 'OpUnpauseLocalTransfers',\n 'OpPauseDstEids',\n 'OpUnpauseDstEids',\n 'OpSetLedgerTimeValidityPeriod',\n 'OpSetPeer',\n 'OpSetFeeBps',\n 'OpSetFeeDeposit',\n 'OpSetEnforcedOptions',\n 'OpRemoveEnforcedOption',\n 'OpSetCostAsserts',\n 'OpRemoveCostAsserts',\n 'OpSetTransferRule',\n 'OpSetOfferExpiryDelayPeriod',\n 'OpSetObservers',\n ]),\n })\n .strict(),\n z\n .object({\n ...oneSigConfigResolverFields,\n operation: z.literal('OpSetRequestFactory'),\n expectedHandler: z.string().min(1),\n })\n .strict(),\n ]),\n targets: cantonOneSigRequestContextRefreshSchema.shape.targets,\n })\n .strict();\n\nexport type CantonOneSigConfigContextRefresh = z.infer<\n typeof cantonOneSigConfigContextRefreshSchema\n>;\n\nexport const cantonOneSigScopeContextRefreshSchema = z\n .object({\n resolver: z\n .object({\n type: z.literal('oneSigScopeContext'),\n informee: z.string().min(1),\n operation: z.enum([\n 'OpGrantRoles',\n 'OpRevokeRoles',\n 'OpProposeDefaultAdmin',\n 'OpCancelProposeDefaultAdmin',\n 'OpAcceptDefaultAdmin',\n 'OpSetMinFee',\n 'OpSetMinPayoutValue',\n 'OpSetProtocolLedgerTimeValidityPeriod',\n ]),\n scope: z\n .object({ category: z.string(), id: z.string(), admin: z.string().min(1) })\n .strict(),\n })\n .strict(),\n targets: cantonOneSigRequestContextRefreshSchema.shape.targets,\n })\n .strict();\nexport type CantonOneSigScopeContextRefresh = z.infer<typeof cantonOneSigScopeContextRefreshSchema>;\n\nexport const cantonOneSigDiscoveryContextRefreshSchema = z\n .object({\n resolver: z\n .object({\n type: z.literal('oneSigDiscoveryContext'),\n informee: z.string().min(1),\n oappId: oneSigRequestIdentitySchema,\n feeDsoParty: z.string().min(1).optional(),\n })\n .strict(),\n targets: cantonOneSigRequestContextRefreshSchema.shape.targets,\n })\n .strict();\nexport type CantonOneSigDiscoveryContextRefresh = z.infer<\n typeof cantonOneSigDiscoveryContextRefreshSchema\n>;\n\nexport const cantonOneSigTransferInstructionContextRefreshSchema = z\n .object({\n resolver: z\n .object({\n type: z.literal('oneSigTransferInstructionContext'),\n admin: z.string().min(1),\n informee: z.string().min(1),\n transferInstructionCid: z.string().min(1),\n environment: z.string().optional(),\n registryUrls: z.record(z.string(), z.string()).optional(),\n })\n .strict(),\n targets: cantonOneSigRequestContextRefreshSchema.shape.targets.length(1),\n })\n .strict();\n\nexport type CantonOneSigTransferInstructionContextRefresh = z.infer<\n typeof cantonOneSigTransferInstructionContextRefreshSchema\n>;\n\nexport const cantonOneSigTransferBatchRefreshSchema = z\n .object({\n resolver: z\n .object({\n type: z.literal('oneSigTransferBatch'),\n admin: z.string().min(1),\n informee: z.string().min(1),\n environment: z.string().optional(),\n registryUrls: z.record(z.string(), z.string()).optional(),\n })\n .strict(),\n targets: cantonOneSigRequestContextRefreshSchema.shape.targets,\n })\n .strict();\nexport type CantonOneSigTransferBatchRefresh = z.infer<\n typeof cantonOneSigTransferBatchRefreshSchema\n>;\n\nconst cantonTimestampRefreshSchema = z.object({\n resolver: z.object({\n type: z.literal('timestamp'),\n }),\n targets: z.array(cantonNestedArgumentRefreshTargetSchema).min(1),\n});\n\nexport const cantonRefreshSchema = z.union([\n cantonActiveContractRefreshSchema,\n cantonActiveContractValueRefreshSchema,\n cantonAmuletContextRefreshSchema,\n cantonTransferInstructionAcceptContextRefreshSchema,\n cantonTimestampRefreshSchema,\n cantonFinalizeCallbackRefreshSchema,\n cantonOneSigRequestContextRefreshSchema,\n cantonOneSigConfigContextRefreshSchema,\n cantonOneSigScopeContextRefreshSchema,\n cantonOneSigDiscoveryContextRefreshSchema,\n cantonOneSigTransferInstructionContextRefreshSchema,\n cantonOneSigTransferBatchRefreshSchema,\n]);\n\nconst cantonSentinelArgumentSchema = z.strictObject({\n path: z.array(\n z.union([\n cantonRefreshPathSegmentSchema.options[0].strict(),\n cantonRefreshPathSegmentSchema.options[1].strict(),\n cantonRefreshPathSegmentSchema.options[2].strict(),\n ]),\n ),\n});\nconst cantonSentinelTargetSchema = z.union([\n exerciseChoiceArgumentTargetSchema\n .extend({ arguments: z.array(cantonSentinelArgumentSchema).min(1) })\n .strict(),\n cantonCreateArgumentTargetSchema\n .extend({ arguments: z.array(cantonSentinelArgumentSchema).min(1) })\n .strict(),\n]);\n\nexport const cantonRefreshPlanSchema = z.object({\n commands: z.array(cantonRefreshSchema).min(1),\n replaceSentinels: z\n .array(\n z.strictObject({\n kind: z.literal('senderParty'),\n targets: z.array(cantonSentinelTargetSchema).min(1),\n }),\n )\n .min(1)\n .optional(),\n});\n\nexport type CantonRefreshPathSegment = z.infer<typeof cantonRefreshPathSegmentSchema>;\nexport type CantonRefreshPath = z.infer<typeof cantonRefreshPathSchema>;\nexport type ExerciseEntrypointTargetField = Pick<\n z.infer<typeof exerciseEntrypointTargetSchema>,\n 'field'\n>;\nexport type ExerciseChoiceArgumentTargetField = Pick<\n z.infer<typeof exerciseChoiceArgumentTargetSchema>,\n 'choice' | 'arguments'\n>;\nexport type CantonRefreshTarget = z.infer<typeof cantonRefreshTargetSchema>;\nexport type CantonArgumentRefreshTarget = z.infer<typeof cantonArgumentRefreshTargetSchema>;\nexport type CantonContractSelector = z.infer<typeof cantonContractSelectorSchema>;\nexport type CantonActiveContractSelection = z.infer<typeof cantonActiveContractSelectionSchema>;\nexport type CantonActiveContractRefresh = z.infer<typeof cantonActiveContractRefreshSchema>;\nexport type CantonAmuletContextRefresh = z.infer<typeof cantonAmuletContextRefreshSchema>;\nexport type CantonTimestampRefresh = z.infer<typeof cantonTimestampRefreshSchema>;\nexport type CantonRefresh = z.infer<typeof cantonRefreshSchema>;\nexport type CantonRefreshPlan = z.infer<typeof cantonRefreshPlanSchema>;\n\nexport type CantonActiveContractValue = z.infer<typeof cantonActiveContractValueSchema>;\nexport type CantonActiveContractValueRefresh = z.infer<\n typeof cantonActiveContractValueRefreshSchema\n>;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/client/canton-client.ts"],"names":["CantonClient","config","userId","wallet","DefaultApi","CantonProtocolError","getDsoParty","walletUrl","tokenProvider","fetchDsoParty","getToken","getAmuletTransferFactoryContext","args","fetchAmuletTransferFactoryContext","getTransferInstructionContext","fetchTransferInstructionContext","token","getTransferInstructionAcceptContext","contractId","fetchAcceptContext","getAmuletContextWithExternalRules","instrumentId","amuletContext","disclosedContracts","fetchAmuletContext","contextWithRules","externalPartyAmuletRulesCid","injectExternalPartyAmuletRules","obj","key","undefined","pascal","charAt","toUpperCase","slice","camel","toLowerCase","call","err","ResponseError","cantonApiErrorFromResponse","response","parties","includeCreatedEventBlob","Object","fromEntries","map","p","cumulative","identifierFilter","wildcardFilter","value","event","templateId","createdEventBlob","preparedTransaction","preparedTransactionHash","hashingSchemeVersion","connectedSynchronizers","getV2StateConnectedSynchronizers","synchronizerId","getLocalParticipantId","getV2PartiesParticipantId","participantId","once","id","CantonTransportError","uploadDar","dar","opts","bytes","byteOffset","byteLength","buffer","body","Blob","type","request","vetAllPackages","postV2Dars","skipIfVetted","CantonApiError","code","skipped","reason","details","validateDar","then","postV2DarsValidate","listParties","getV2Parties","pageSize","pageToken","partyDetails","party","nextPageToken","listUserRights","apiResponse","getV2UsersUserIdRightsRaw","raw","json","rights","listUserParties","Set","right","kind","CanActAs","CanReadAs","add","allocateParty","partyIdHint","postV2Parties","allocatePartyRequest","identityProviderId","generateExternalPartyTopology","generateExternalPartyTopologyRequest","synchronizer","partyHint","publicKey","localParticipantObservationOnly","confirmationThreshold","postV2PartiesExternalGenerateTopology","partyId","multiHash","topologyTransactions","length","allocateExternalParty","allocateExternalPartyRequest","onboardingTransactions","tx","transaction","multiHashSignatures","postV2PartiesExternalAllocate","grantCanActAs","postV2UsersUserIdRights","grantUserRightsRequest","canActAs","getPackageId","packageName","getPreferredPackagesRequest","packageVettingRequirements","postV2InteractiveSubmissionPreferredPackages","packageRef","packageReferences","find","ref","packageId","submit","actors","commands","commandId","randomUUID","completionOffset","getLedgerEndOffset","jsCommands","actAs","readAs","postV2CommandsAsyncSubmit","waitForCommand","timeoutMs","poll","limit","streamIdleTimeoutMs","initialBackoffMs","backoffMs","initial","maxBackoffMs","max","beginExclusive","currentBackoff","deadline","Date","now","completionStreamRequest","rawResponse","postV2CommandsCompletionsRaw","responseText","text","completions","JSON","parse","item","normalized","completionResponse","offsetCheckpoint","checkpoint","checkpointOffset","Math","completionWrapper","completion","offset","completionCommandId","status","updateId","error","message","remainingTime","sleepTime","min","Promise","resolve","setTimeout","lastCheckedOffset","interfaceIds","getEventsByContractIdRequest","eventFormat","filtersByParty","verbose","postV2EventsEventsByContractId","archived","created","createdEvent","createDisclosure","validated","fetchContractById","fetchEventsByContractId","archivedEvent","fetchTransactionByUpdateId","postV2UpdatesUpdateByIdRaw","getUpdateByIdRequest","updateFormat","updateResponse","fetchTransactionByOffset","postV2UpdatesUpdateByOffsetRaw","getUpdateByOffsetRequest","prepareForSigning","jsPrepareSubmissionRequest","verboseHashing","packageIdSelectionPreference","postV2InteractiveSubmissionPrepare","submitSigned","prepared","signatures","jsExecuteSubmissionRequest","partySignatures","sig","format","signature","signedBy","signingAlgorithmSpec","deduplicationPeriod","deduplicationDuration","seconds","nanos","submissionId","postV2InteractiveSubmissionExecute","getV2StateLedgerEnd","queryActiveContracts","queryActiveContractsByParties","templateIds","queryActiveContractsByInterface","cumulativeFilter","postV2StateActiveContractsRaw","getActiveContractsRequest","activeAtOffset","rawJson","contractEntry","JsActiveContract","filter","contract","JsActiveContractFromJSON","getUpdates","endInclusive","postV2UpdatesRaw","getUpdatesRequest","includeTransactions","transactionShape","updateResponses","update","templateFilter","interfaceId","interfaceFilter","includeInterfaceView","notFoundMessage","Transaction"],"mappings":"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","file":"HC2GOOAL.js","sourcesContent":["import type { ContractId } from '@daml/types';\nimport { once } from 'es-toolkit';\nimport { randomUUID } from 'node:crypto';\n\nimport {\n CantonApiError,\n cantonApiErrorFromResponse,\n CantonProtocolError,\n CantonTransportError,\n} from '../errors';\nimport {\n DefaultApi,\n type PostV2CommandsAsyncSubmitRequest,\n type PostV2CommandsCompletionsRequest,\n type PostV2DarsRequest,\n type PostV2DarsValidateRequest,\n type PostV2EventsEventsByContractIdRequest,\n type PostV2InteractiveSubmissionExecuteRequest,\n type PostV2InteractiveSubmissionPreferredPackagesRequest,\n type PostV2InteractiveSubmissionPrepareRequest,\n type PostV2PartiesExternalAllocateRequest,\n type PostV2PartiesExternalGenerateTopologyRequest,\n} from '../open-api/apis/DefaultApi';\nimport {\n type ArchivedEvent,\n type Command,\n type CreatedEvent,\n type CumulativeFilter,\n type DisclosedContract,\n type JsActiveContract,\n JsActiveContractFromJSON,\n} from '../open-api/models';\nimport { type Configuration, ResponseError } from '../open-api/runtime';\nimport type { CantonDisclosedContract } from '../transaction';\nimport type {\n ExternalSignature,\n PreparedTransaction,\n SubmitActors,\n SubmitResult,\n UserRight,\n WaitOptions,\n WaitResult,\n} from '../types';\nimport {\n type AmuletContextResult,\n type AmuletTransferFactoryArgs,\n type CantonClientWalletConfig,\n fetchAcceptContext,\n fetchAmuletContext,\n fetchAmuletTransferFactoryContext,\n fetchDsoParty,\n fetchTransferInstructionContext,\n injectExternalPartyAmuletRules,\n type InstrumentId,\n type TransferInstructionAcceptContextResult,\n type TransferInstructionChoice,\n} from './amulet';\nimport type {\n CantonTransaction,\n CantonUpdate,\n CantonUpdateResponse,\n ICantonClient,\n} from './interface';\n\n/**\n * CantonClient - The engine layer for Canton ledger operations.\n *\n * Responsibilities:\n * - Synchronizer discovery and caching\n * - Command submission and completion waiting\n * - Disclosed contract building\n * - JSON normalization (temporary workaround)\n *\n * This class uses composition (not inheritance) to wrap the generated API,\n * exposing only the minimal surface needed for ledger app operations.\n */\nexport class CantonClient implements ICantonClient {\n readonly #api: DefaultApi;\n readonly #userId: string;\n readonly #wallet?: CantonClientWalletConfig;\n #dsoParty?: string;\n\n constructor(\n config: Configuration,\n userId: string = 'participant_admin',\n wallet?: CantonClientWalletConfig,\n ) {\n this.#api = new DefaultApi(config);\n this.#userId = userId;\n this.#wallet = wallet;\n }\n\n #requireWallet(): CantonClientWalletConfig {\n if (!this.#wallet) {\n throw new CantonProtocolError(\n 'CantonClient has no wallet config (walletUrl + tokenProvider); amulet endpoints are unavailable',\n );\n }\n return this.#wallet;\n }\n\n async getDsoParty(): Promise<string> {\n const { walletUrl, tokenProvider } = this.#requireWallet();\n if (this.#dsoParty) return this.#dsoParty;\n this.#dsoParty = await fetchDsoParty(walletUrl, await tokenProvider.getToken());\n return this.#dsoParty;\n }\n\n async getAmuletTransferFactoryContext(args: AmuletTransferFactoryArgs) {\n const { walletUrl, tokenProvider } = this.#requireWallet();\n return fetchAmuletTransferFactoryContext(walletUrl, await tokenProvider.getToken(), args);\n }\n\n async getTransferInstructionContext(args: {\n contractId: string;\n choice: TransferInstructionChoice;\n }): Promise<TransferInstructionAcceptContextResult> {\n const { walletUrl, tokenProvider } = this.#requireWallet();\n return fetchTransferInstructionContext({\n ...args,\n walletUrl,\n token: await tokenProvider.getToken(),\n });\n }\n\n async getTransferInstructionAcceptContext({\n contractId,\n }: {\n contractId: string;\n }): Promise<TransferInstructionAcceptContextResult> {\n const { walletUrl, tokenProvider } = this.#requireWallet();\n return fetchAcceptContext({ walletUrl, token: await tokenProvider.getToken(), contractId });\n }\n\n /** Amulet ChoiceContext with ExternalPartyAmuletRules injected — required by every flow hitting FeeUtils.validateContext. */\n async getAmuletContextWithExternalRules(\n instrumentId: InstrumentId,\n ): Promise<AmuletContextResult> {\n const { walletUrl, tokenProvider } = this.#requireWallet();\n const { amuletContext, disclosedContracts } = await fetchAmuletContext(\n walletUrl,\n await tokenProvider.getToken(),\n instrumentId,\n );\n const { amuletContext: contextWithRules, externalPartyAmuletRulesCid } =\n injectExternalPartyAmuletRules(amuletContext, disclosedContracts);\n return { amuletContext: contextWithRules, disclosedContracts, externalPartyAmuletRulesCid };\n }\n\n /**\n * Get a property from an object, trying PascalCase first then camelCase.\n * Canton API returns PascalCase but OpenAPI expects camelCase.\n */\n #getField<T>(obj: Record<string, unknown> | undefined, key: string): T | undefined {\n if (!obj) return undefined;\n const pascal = key.charAt(0).toUpperCase() + key.slice(1);\n const camel = key.charAt(0).toLowerCase() + key.slice(1);\n return (obj[pascal] ?? obj[camel]) as T | undefined;\n }\n\n /**\n * Run an API call, normalizing a thrown `ResponseError` into a `CantonApiError`\n * that carries `errorCategory` (for retry classification). Other errors pass through.\n */\n async #invoke<T>(call: () => Promise<T>): Promise<T> {\n try {\n return await call();\n } catch (err) {\n if (err instanceof ResponseError) {\n throw await cantonApiErrorFromResponse(err.response);\n }\n throw err;\n }\n }\n\n /**\n * Build party-based filter object for event queries.\n */\n #buildPartyFilters(parties: string[], includeCreatedEventBlob: boolean) {\n return Object.fromEntries(\n parties.map((p) => [\n p,\n {\n cumulative: [\n {\n identifierFilter: {\n wildcardFilter: { value: { includeCreatedEventBlob } },\n },\n },\n ],\n },\n ]),\n );\n }\n\n /**\n * Validate and extract disclosure fields from a CreatedEvent.\n */\n #validateDisclosureEvent(\n event: { templateId?: string; contractId?: string; createdEventBlob?: string },\n contractId: ContractId<unknown>,\n ): { templateId: string; contractId: string; createdEventBlob: string } {\n if (!event.templateId) {\n throw new CantonProtocolError('Disclosure response missing templateId', {\n contractId,\n });\n }\n if (!event.contractId) {\n throw new CantonProtocolError('Disclosure response missing contractId', {\n contractId,\n });\n }\n if (!event.createdEventBlob) {\n throw new CantonProtocolError('Disclosure response missing createdEventBlob', {\n contractId,\n });\n }\n return {\n templateId: event.templateId,\n contractId: event.contractId,\n createdEventBlob: event.createdEventBlob,\n };\n }\n\n /**\n * Validate and extract prepared transaction fields from a prepare response.\n */\n #validatePrepareResponse(response: {\n preparedTransaction?: string;\n preparedTransactionHash?: string;\n hashingSchemeVersion?: string;\n }): {\n preparedTransaction: string;\n preparedTransactionHash: string;\n hashingSchemeVersion: string;\n } {\n if (!response.preparedTransaction) {\n throw new CantonProtocolError('Prepare response missing preparedTransaction');\n }\n if (!response.preparedTransactionHash) {\n throw new CantonProtocolError('Prepare response missing preparedTransactionHash');\n }\n if (!response.hashingSchemeVersion) {\n throw new CantonProtocolError('Prepare response missing hashingSchemeVersion');\n }\n return {\n preparedTransaction: response.preparedTransaction,\n preparedTransactionHash: response.preparedTransactionHash,\n hashingSchemeVersion: response.hashingSchemeVersion,\n };\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Synchronizer Discovery\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Returns all connected synchronizer IDs.\n */\n async connectedSynchronizers(): Promise<string[]> {\n const response = await this.#invoke(() => this.#api.getV2StateConnectedSynchronizers());\n\n return response.connectedSynchronizers?.map(({ synchronizerId }) => synchronizerId) ?? [];\n }\n\n async getLocalParticipantId(): Promise<string> {\n const response = await this.#invoke(() => this.#api.getV2PartiesParticipantId());\n return response.participantId;\n }\n\n /**\n * Internal: ensures we have a cached synchronizer ID, fetching if needed.\n */\n #ensureSynchronizerId = once(async (): Promise<string> => {\n const [id] = await this.connectedSynchronizers();\n\n if (!id) {\n throw new CantonTransportError('No connected synchronizers found');\n }\n\n return id;\n });\n\n // ─────────────────────────────────────────────────────────────────────────\n // DAR Upload / Validation\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Upload a DAR (Daml Archive) to the participant node.\n *\n * @param dar - Raw DAR bytes.\n * @param opts.vetAllPackages - Whether to vet all packages in the DAR.\n * @param opts.synchronizerId - Synchronizer to upload to (auto-detected if omitted).\n * @param opts.skipIfVetted - If true, silently succeeds when the DAR is already vetted.\n */\n async uploadDar(\n dar: Uint8Array<ArrayBuffer>,\n opts: { vetAllPackages?: boolean; synchronizerId?: string; skipIfVetted?: boolean } = {},\n ): Promise<object> {\n // Extract the underlying ArrayBuffer, handling views that don't start at offset 0\n const bytes =\n dar.byteOffset === 0 && dar.byteLength === dar.buffer.byteLength\n ? dar.buffer\n : dar.buffer.slice(dar.byteOffset, dar.byteOffset + dar.byteLength);\n const body = new Blob([bytes], { type: 'application/octet-stream' });\n const synchronizerId = opts.synchronizerId ?? (await this.#ensureSynchronizerId());\n const request: PostV2DarsRequest = {\n body,\n vetAllPackages: opts.vetAllPackages,\n synchronizerId,\n };\n\n try {\n return await this.#invoke(() => this.#api.postV2Dars(request));\n } catch (err: unknown) {\n // If skipIfVetted, treat KNOWN_PACKAGE_VERSION as a no-op success\n if (\n opts.skipIfVetted &&\n err instanceof CantonApiError &&\n err.code === 'KNOWN_PACKAGE_VERSION'\n ) {\n return { skipped: true, reason: 'already_vetted', details: err.body };\n }\n throw err;\n }\n }\n\n /**\n * Validate a DAR against the participant without uploading it.\n *\n * @param dar - Raw DAR bytes.\n * @param opts.synchronizerId - Synchronizer to validate against (auto-detected if omitted).\n */\n async validateDar(\n dar: Uint8Array<ArrayBuffer>,\n opts: { synchronizerId?: string } = {},\n ): Promise<void> {\n const bytes =\n dar.byteOffset === 0 && dar.byteLength === dar.buffer.byteLength\n ? dar.buffer\n : dar.buffer.slice(dar.byteOffset, dar.byteOffset + dar.byteLength);\n const body = new Blob([bytes], { type: 'application/octet-stream' });\n const request: PostV2DarsValidateRequest = {\n body,\n synchronizerId: opts.synchronizerId,\n };\n\n if (!request.synchronizerId) {\n return this.#ensureSynchronizerId().then((synchronizerId) =>\n this.#invoke(() => this.#api.postV2DarsValidate({ ...request, synchronizerId })),\n );\n }\n\n return this.#invoke(() => this.#api.postV2DarsValidate(request));\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Party Management\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * List all known parties on the participant node.\n *\n * @param opts.pageSize - Maximum number of results per page\n * @param opts.pageToken - Pagination token from previous response\n * @returns Array of party IDs and pagination token\n */\n async listParties(\n opts: { pageSize?: number; pageToken?: string } = {},\n ): Promise<{ parties: string[]; nextPageToken?: string }> {\n const response = await this.#invoke(() =>\n this.#api.getV2Parties({\n pageSize: opts.pageSize,\n pageToken: opts.pageToken,\n }),\n );\n\n return {\n parties: response.partyDetails?.map((p) => p.party) ?? [],\n nextPageToken: response.nextPageToken,\n };\n }\n\n /**\n * Return the rights granted to the current user (this.#userId).\n *\n * Bypasses the OpenAPI generator's typed `Kind` converter, which is\n * broken: `instanceOfKindOneOf` checks lowercase `canActAs in value`, but\n * `KindOneOfFromJSONTyped` reads uppercase `json['CanActAs']`, so the\n * typed client returns every `kind` as `{}`. We parse the raw JSON\n * ourselves to preserve the actual variant payload.\n */\n async listUserRights(): Promise<UserRight[]> {\n const apiResponse = await this.#invoke(() =>\n this.#api.getV2UsersUserIdRightsRaw({\n userId: this.#userId,\n }),\n );\n const raw = (await apiResponse.raw.json()) as { rights?: UserRight[] };\n return raw.rights ?? [];\n }\n\n /**\n * Return the parties the current user has CanActAs or CanReadAs rights\n * for. Convenience wrapper over `listUserRights()` for the common case\n * where the caller just needs party-scoped access (e.g. to query events\n * or fetch transactions).\n *\n * Use this instead of `listParties()` when the caller only has scoped\n * rights — `listParties()` returns *all* parties on the participant\n * (including DSO, splice parties), and Canton returns 403 if you query\n * as a party you can't read.\n */\n async listUserParties(): Promise<string[]> {\n const rights = await this.listUserRights();\n const parties = new Set<string>();\n for (const right of rights) {\n // Only `CanActAs` / `CanReadAs` carry a party; the other four\n // variants (ParticipantAdmin, IdentityProviderAdmin,\n // CanReadAsAnyParty, CanExecuteAsAnyParty) have empty payloads.\n const party = right.kind.CanActAs?.value.party ?? right.kind.CanReadAs?.value.party;\n if (party !== undefined) {\n parties.add(party);\n }\n }\n return [...parties];\n }\n\n /**\n * Allocate a new party on the participant node.\n *\n * @param partyIdHint - A hint for the party ID (e.g., \"alice\", \"bob\")\n * @param opts.userId - User who gets actAs rights (empty string = no user)\n * @param opts.synchronizerId - Synchronizer to allocate on (auto-detected if omitted)\n * @param opts.identityProviderId - Identity provider ID (empty string = default)\n * @returns The allocated party ID\n */\n async allocateParty(\n partyIdHint: string,\n opts: { userId?: string; synchronizerId?: string; identityProviderId?: string } = {},\n ): Promise<string> {\n const synchronizerId = opts.synchronizerId ?? (await this.#ensureSynchronizerId());\n\n const response = await this.#invoke(() =>\n this.#api.postV2Parties({\n allocatePartyRequest: {\n partyIdHint,\n synchronizerId,\n userId: opts.userId ?? '',\n identityProviderId: opts.identityProviderId ?? '',\n },\n }),\n );\n\n const party = response.partyDetails?.party;\n if (!party) {\n throw new CantonProtocolError('Party allocation response missing party ID');\n }\n\n return party;\n }\n\n /**\n * Generate unsigned topology transactions for an external party.\n *\n * POST /v2/parties/external/generate-topology\n */\n async generateExternalPartyTopology(args: {\n partyHint: string;\n publicKey: { format: string; keyData: string; keySpec: string };\n localParticipantObservationOnly: boolean;\n confirmationThreshold: number;\n }): Promise<{\n partyId: string;\n topologyTransactions: string[];\n multiHash: string;\n synchronizerId: string;\n }> {\n const synchronizerId = await this.#ensureSynchronizerId();\n const request: PostV2PartiesExternalGenerateTopologyRequest = {\n generateExternalPartyTopologyRequest: {\n synchronizer: synchronizerId,\n partyHint: args.partyHint,\n publicKey: args.publicKey,\n localParticipantObservationOnly: args.localParticipantObservationOnly,\n confirmationThreshold: args.confirmationThreshold,\n },\n };\n\n const response = await this.#invoke(() =>\n this.#api.postV2PartiesExternalGenerateTopology(request),\n );\n\n if (!response.partyId || !response.multiHash) {\n throw new CantonProtocolError(\n 'generateExternalPartyTopology response missing partyId or multiHash',\n );\n }\n\n if (!response.topologyTransactions?.length) {\n throw new CantonProtocolError(\n 'generateExternalPartyTopology response missing topologyTransactions',\n );\n }\n\n return {\n partyId: response.partyId,\n topologyTransactions: response.topologyTransactions,\n multiHash: response.multiHash,\n synchronizerId,\n };\n }\n\n /**\n * Submit signed topology transactions to register an external party.\n *\n * POST /v2/parties/external/allocate\n */\n async allocateExternalParty(args: {\n synchronizerId: string;\n topologyTransactions: string[];\n multiHashSignatures: Array<{\n format: string;\n signature: string;\n signedBy: string;\n signingAlgorithmSpec: string;\n }>;\n }): Promise<string> {\n const request: PostV2PartiesExternalAllocateRequest = {\n allocateExternalPartyRequest: {\n synchronizer: args.synchronizerId,\n onboardingTransactions: args.topologyTransactions.map((tx) => ({\n transaction: tx,\n })),\n multiHashSignatures: args.multiHashSignatures,\n identityProviderId: '',\n },\n };\n\n const response = await this.#invoke(() => this.#api.postV2PartiesExternalAllocate(request));\n\n if (!response.partyId) {\n throw new CantonProtocolError('allocateExternalParty response missing partyId');\n }\n\n return response.partyId;\n }\n\n /**\n * Grant canActAs right for a party to the current service user.\n * Idempotent — safe to call even if the right is already granted.\n *\n * POST /v2/users/{userId}/rights\n */\n async grantCanActAs(partyId: string): Promise<void> {\n await this.#invoke(() =>\n this.#api.postV2UsersUserIdRights({\n userId: this.#userId,\n grantUserRightsRequest: {\n userId: this.#userId,\n rights: [{ kind: { canActAs: { value: { party: partyId } } } }],\n identityProviderId: '',\n },\n }),\n );\n }\n\n /**\n * Get the package ID for a package by name.\n *\n * @param packageName - The package name (e.g., \"layerzero-oft\")\n * @param parties - Parties whose vetting state should be considered\n * @param opts.synchronizerId - Synchronizer to query (auto-detected if omitted)\n * @returns The package ID (hash)\n */\n async getPackageId(\n packageName: string,\n parties: string[],\n opts: { synchronizerId?: string } = {},\n ): Promise<string> {\n const synchronizerId = opts.synchronizerId ?? (await this.#ensureSynchronizerId());\n\n const request: PostV2InteractiveSubmissionPreferredPackagesRequest = {\n getPreferredPackagesRequest: {\n packageVettingRequirements: [\n {\n packageName,\n parties,\n },\n ],\n synchronizerId,\n },\n };\n\n const response = await this.#invoke(() =>\n this.#api.postV2InteractiveSubmissionPreferredPackages(request),\n );\n\n const packageRef = response.packageReferences?.find(\n (ref) => ref.packageName === packageName,\n );\n if (!packageRef?.packageId) {\n throw new CantonProtocolError(\n `Package \"${packageName}\" not found or not vetted for parties`,\n );\n }\n\n return packageRef.packageId;\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Command Submission\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Submit a batch of commands atomically.\n *\n * @returns commandId and completionOffset for use with waitForCommand()\n */\n async submit(\n actors: SubmitActors,\n commands: Command[],\n opts: { disclosedContracts?: DisclosedContract[]; commandId?: string } = {},\n ): Promise<SubmitResult> {\n const synchronizerId = await this.#ensureSynchronizerId();\n const commandId = opts.commandId ?? randomUUID();\n\n // Snapshot ledger end before submission so waitForCommand knows where to start polling\n const completionOffset = await this.getLedgerEndOffset();\n\n const request: PostV2CommandsAsyncSubmitRequest = {\n jsCommands: {\n commandId,\n actAs: actors.actAs,\n readAs: actors.readAs ?? actors.actAs,\n userId: this.#userId,\n synchronizerId,\n commands,\n disclosedContracts: opts.disclosedContracts,\n },\n };\n\n await this.#invoke(() => this.#api.postV2CommandsAsyncSubmit(request));\n\n return { commandId, completionOffset };\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Completion Waiting / Reconciliation\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Wait for a command to be accepted or rejected.\n *\n * Uses bounded exponential backoff to avoid hammering the participant.\n */\n async waitForCommand(commandId: string, opts: WaitOptions): Promise<WaitResult> {\n const { parties, timeoutMs = 30_000, poll = {} } = opts;\n\n const limit = poll.limit ?? 50;\n const streamIdleTimeoutMs = poll.streamIdleTimeoutMs ?? 1000;\n const initialBackoffMs = poll.backoffMs?.initial ?? 100;\n const maxBackoffMs = poll.backoffMs?.max ?? 5000;\n\n let beginExclusive = opts.beginExclusive ?? 0;\n let currentBackoff = initialBackoffMs;\n const deadline = Date.now() + timeoutMs;\n\n // Poll the completions stream until we find our commandId or timeout\n while (Date.now() < deadline) {\n const request: PostV2CommandsCompletionsRequest = {\n completionStreamRequest: {\n beginExclusive,\n parties,\n userId: this.#userId,\n },\n limit,\n streamIdleTimeoutMs,\n };\n\n const rawResponse = await this.#invoke(() =>\n this.#api.postV2CommandsCompletionsRaw(request),\n );\n const responseText = await rawResponse.raw.text();\n const completions = JSON.parse(responseText) as unknown[];\n\n // Scan each completion for our commandId\n for (const item of completions) {\n const normalized = item as Record<string, unknown>;\n const completionResponse = this.#getField<Record<string, unknown>>(\n normalized,\n 'completionResponse',\n );\n if (!completionResponse) continue;\n\n // Handle offsetCheckpoint responses (no commandId)\n const offsetCheckpoint = this.#getField<Record<string, unknown>>(\n completionResponse,\n 'offsetCheckpoint',\n );\n if (offsetCheckpoint) {\n const checkpoint =\n this.#getField<Record<string, unknown>>(offsetCheckpoint, 'value') ??\n offsetCheckpoint;\n const checkpointOffset = this.#getField<number>(checkpoint, 'offset');\n if (checkpointOffset !== undefined) {\n beginExclusive = Math.max(beginExclusive, checkpointOffset);\n }\n continue;\n }\n\n // Navigate: completionResponse.completion.value\n const completionWrapper = this.#getField<Record<string, unknown>>(\n completionResponse,\n 'completion',\n );\n const completion =\n this.#getField<Record<string, unknown>>(completionWrapper, 'value') ??\n completionWrapper;\n if (!completion) continue;\n\n const offset = this.#getField<number>(completion, 'offset');\n const completionCommandId = this.#getField<string>(completion, 'commandId');\n\n // Found our command — check gRPC status to determine accept/reject\n if (completionCommandId === commandId) {\n const status = this.#getField<{\n code?: number;\n message?: string;\n details?: unknown;\n }>(completion, 'status');\n\n // code === 0 or status undefined means success (gRPC OK)\n if (!status || status.code === 0) {\n return {\n status: 'accepted',\n commandId,\n updateId: this.#getField<string>(completion, 'updateId') ?? '',\n offset: offset ?? 0,\n };\n } else {\n return {\n status: 'rejected',\n commandId,\n offset: offset ?? 0,\n error: {\n code: status.code,\n message: status.message ?? 'Unknown rejection',\n details: status.details,\n },\n };\n }\n }\n\n // Not our command — advance offset cursor past it\n if (offset !== undefined) {\n beginExclusive = Math.max(beginExclusive, offset);\n }\n }\n\n // Bounded exponential backoff\n const remainingTime = deadline - Date.now();\n const sleepTime = Math.min(currentBackoff, remainingTime, maxBackoffMs);\n if (sleepTime > 0) {\n await new Promise((resolve) => setTimeout(resolve, sleepTime));\n }\n currentBackoff = Math.min(currentBackoff * 2, maxBackoffMs);\n }\n\n return { status: 'timeout', commandId, lastCheckedOffset: beginExclusive };\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Disclosed Contracts\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Fetch active contract's created event by ID.\n * Returns undefined if contract doesn't exist or is archived.\n */\n async #fetchActiveContractEvent(\n contractId: ContractId<unknown>,\n parties: string[],\n includeCreatedEventBlob: boolean,\n interfaceIds?: string[],\n ): Promise<CreatedEvent | undefined> {\n const request: PostV2EventsEventsByContractIdRequest = {\n getEventsByContractIdRequest: {\n contractId,\n eventFormat: {\n filtersByParty: interfaceIds?.length\n ? Object.fromEntries(\n parties.map((party) => [\n party,\n {\n cumulative: this.#buildInterfaceCumulativeFilters(\n interfaceIds,\n includeCreatedEventBlob,\n ),\n },\n ]),\n )\n : this.#buildPartyFilters(parties, includeCreatedEventBlob),\n verbose: false,\n },\n },\n };\n\n const response = await this.#invoke(() =>\n this.#api.postV2EventsEventsByContractId(request),\n );\n\n // If archived, contract is not active\n if (response.archived) return undefined;\n\n return response.created?.createdEvent;\n }\n\n /**\n * Build a disclosure for a contract.\n *\n * @param contractId - The contract ID to create disclosure for\n * @param parties - Parties that have visibility to the contract\n * @returns DisclosedContract if visible, undefined if not found\n * @throws CantonProtocolError if contract visible but blob missing (server/config mismatch)\n */\n async createDisclosure(\n contractId: ContractId<unknown>,\n parties: string[],\n ): Promise<CantonDisclosedContract | undefined> {\n const synchronizerId = await this.#ensureSynchronizerId();\n const created = await this.#fetchActiveContractEvent(contractId, parties, true);\n\n if (!created) return undefined;\n\n const validated = this.#validateDisclosureEvent(created, contractId);\n return {\n ...validated,\n synchronizerId,\n };\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Internal: Active Contract Queries (used by CantonSdk)\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Fetch a single contract by ID.\n *\n * @param contractId The contract ID to fetch\n * @param parties Parties to use for filtering (required for non-admin tokens)\n */\n async fetchContractById(\n contractId: ContractId<unknown>,\n parties: string[],\n opts?: { interfaceIds?: string[] },\n ): Promise<CreatedEvent | undefined> {\n return this.#fetchActiveContractEvent(contractId, parties, false, opts?.interfaceIds);\n }\n\n /**\n * Fetch both the created and archived events for a contract by ID.\n * Unlike fetchContractById, this preserves archival information.\n */\n async fetchEventsByContractId(\n contractId: string,\n parties: string[],\n ): Promise<{ created: CreatedEvent | undefined; archived: ArchivedEvent | undefined }> {\n const request: PostV2EventsEventsByContractIdRequest = {\n getEventsByContractIdRequest: {\n contractId,\n eventFormat: {\n filtersByParty: this.#buildPartyFilters(parties, false),\n verbose: false,\n },\n },\n };\n\n const response = await this.#invoke(() =>\n this.#api.postV2EventsEventsByContractId(request),\n );\n\n return {\n created: response.created?.createdEvent,\n archived: response.archived?.archivedEvent,\n };\n }\n\n /**\n * Fetch an update (transaction) by its ID.\n * @param updateId The update ID from a completion\n * @param parties Parties to use for the query filter\n * @returns The full update response\n */\n async fetchTransactionByUpdateId(\n updateId: string,\n parties: string[],\n ): Promise<CantonTransaction> {\n const response = await this.#invoke(() =>\n this.#api.postV2UpdatesUpdateByIdRaw({\n getUpdateByIdRequest: {\n updateId,\n updateFormat: this.#buildUpdateFormat(parties),\n },\n }),\n );\n\n const updateResponse: CantonUpdateResponse = await response.raw.json();\n return this.#parseTransactionFromUpdate(\n updateResponse,\n `Update ${updateId} is not a transaction`,\n );\n }\n\n /**\n * Fetch a transaction by its offset.\n * @param offset - The ledger offset\n * @param parties - Parties to use for the query filter\n * @returns The full transaction including recordTime\n */\n async fetchTransactionByOffset(offset: number, parties: string[]): Promise<CantonTransaction> {\n const response = await this.#invoke(() =>\n this.#api.postV2UpdatesUpdateByOffsetRaw({\n getUpdateByOffsetRequest: {\n offset,\n updateFormat: this.#buildUpdateFormat(parties),\n },\n }),\n );\n\n const updateResponse: CantonUpdateResponse = await response.raw.json();\n return this.#parseTransactionFromUpdate(\n updateResponse,\n `Update at offset ${offset} is not a transaction`,\n );\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // External Party / Interactive Submission\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Prepare commands for external party signing.\n *\n * Returns a typed PreparedTransaction that preserves the contract type\n * through the signing flow. After signing, use submitSigned() to submit.\n *\n * @typeparam T The contract payload type (phantom type for type safety)\n *\n * @example\n * ```ts\n * const prepared = await client.prepareForSigning<Oft>({ actAs: [party] }, [cmd]);\n * const signature = await sign(prepared.preparedTransactionHash);\n * await client.submitSigned(prepared, [signature]);\n * ```\n */\n async prepareForSigning(\n actors: SubmitActors,\n commands: Command[],\n opts: { disclosedContracts?: DisclosedContract[]; commandId?: string } = {},\n ): Promise<PreparedTransaction> {\n const synchronizerId = await this.#ensureSynchronizerId();\n const commandId = opts.commandId ?? randomUUID();\n\n const request: PostV2InteractiveSubmissionPrepareRequest = {\n jsPrepareSubmissionRequest: {\n userId: this.#userId,\n commandId,\n commands,\n actAs: actors.actAs,\n readAs: actors.readAs ?? actors.actAs,\n disclosedContracts: opts.disclosedContracts,\n synchronizerId,\n verboseHashing: false,\n packageIdSelectionPreference: [],\n },\n };\n\n const response = await this.#invoke(() =>\n this.#api.postV2InteractiveSubmissionPrepare(request),\n );\n const validated = this.#validatePrepareResponse(response);\n\n return {\n ...validated,\n hashingSchemeVersion:\n validated.hashingSchemeVersion as PreparedTransaction['hashingSchemeVersion'],\n commandId,\n };\n }\n\n /**\n * Submit a pre-signed transaction.\n *\n * The generic type T flows from prepareForSigning() for type documentation.\n */\n async submitSigned(\n prepared: PreparedTransaction,\n signatures: ExternalSignature[],\n ): Promise<SubmitResult> {\n // Snapshot ledger end so the caller can poll for completion from this point\n const completionOffset = await this.getLedgerEndOffset();\n\n const request: PostV2InteractiveSubmissionExecuteRequest = {\n jsExecuteSubmissionRequest: {\n preparedTransaction: prepared.preparedTransaction,\n // Map each ExternalSignature into the Canton per-party signature format\n partySignatures: {\n signatures: signatures.map((sig) => ({\n party: sig.party,\n signatures: [\n {\n format: sig.format,\n signature: sig.signature,\n signedBy: sig.signedBy,\n signingAlgorithmSpec: sig.signingAlgorithmSpec,\n },\n ],\n })),\n },\n deduplicationPeriod: {\n deduplicationDuration: {\n value: { seconds: 3600, nanos: 0 }, // 1 hour default\n },\n },\n submissionId: randomUUID(),\n userId: this.#userId,\n hashingSchemeVersion: prepared.hashingSchemeVersion,\n },\n };\n\n await this.#invoke(() => this.#api.postV2InteractiveSubmissionExecute(request));\n\n return { commandId: prepared.commandId, completionOffset };\n }\n\n // ─────────────────────────────────────────────────────────────────────────\n // Active Contracts Query\n // ─────────────────────────────────────────────────────────────────────────\n\n /**\n * Get the current ledger end offset.\n */\n async getLedgerEndOffset(): Promise<number> {\n const response = await this.#invoke(() => this.#api.getV2StateLedgerEnd());\n return response.offset ?? 0;\n }\n\n /**\n * Query active contracts at a given offset with optional template filtering.\n *\n * @param party - Party to query as\n * @param offset - Ledger offset for the snapshot\n * @param opts.templateIds - Optional template IDs to filter by\n * @param opts.limit - Maximum number of contracts to return\n * @param opts.includeCreatedEventBlob - Include CIP disclosure blobs (default false)\n */\n async queryActiveContracts(\n party: string,\n offset: number,\n opts?: { templateIds?: string[]; limit?: number; includeCreatedEventBlob?: boolean },\n ): Promise<JsActiveContract[]> {\n return this.queryActiveContractsByParties([party], offset, opts?.templateIds ?? [], {\n limit: opts?.limit,\n includeCreatedEventBlob: opts?.includeCreatedEventBlob,\n });\n }\n\n /**\n * Query active contracts visible to any of the given parties.\n *\n * Single API call with all parties in filtersByParty.\n *\n * @param parties - Parties to query as (for visibility)\n * @param offset - Ledger offset for the snapshot\n * @param templateIds - Template IDs to filter by\n * @param opts.limit - Maximum number of contracts to return\n * @param opts.includeCreatedEventBlob - Include CIP disclosure blobs (default false)\n */\n async queryActiveContractsByParties(\n parties: string[],\n offset: number,\n templateIds: string[],\n opts?: { limit?: number; includeCreatedEventBlob?: boolean },\n ): Promise<JsActiveContract[]> {\n return this.#fetchActiveContracts(\n parties,\n offset,\n this.#buildCumulativeFilters(templateIds, opts?.includeCreatedEventBlob),\n opts,\n );\n }\n\n /**\n * Query active contracts visible to any of the given parties that implement\n * the given interfaces.\n *\n * @param parties - Parties to query as (for visibility)\n * @param offset - Ledger offset for the snapshot\n * @param interfaceIds - Interface IDs to filter by (e.g. \"#package:Module:Interface\")\n * @param opts.limit - Maximum number of contracts to return\n */\n async queryActiveContractsByInterface(\n parties: string[],\n offset: number,\n interfaceIds: string[],\n opts?: { limit?: number; includeCreatedEventBlob?: boolean },\n ): Promise<JsActiveContract[]> {\n return this.#fetchActiveContracts(\n parties,\n offset,\n this.#buildInterfaceCumulativeFilters(interfaceIds, opts?.includeCreatedEventBlob),\n opts,\n );\n }\n\n async #fetchActiveContracts(\n parties: string[],\n offset: number,\n cumulativeFilter: CumulativeFilter[],\n opts?: { limit?: number },\n ): Promise<JsActiveContract[]> {\n const filtersByParty = Object.fromEntries(\n parties.map((party) => [party, { cumulative: cumulativeFilter }]),\n );\n\n // `eventFormat` replaces the legacy `filter` + `verbose: true` fields, which Canton 3.6\n // rejects by default (DEPRECATED_API_DISABLED) and 3.7 removes.\n const rawResponse = await this.#invoke(() =>\n this.#api.postV2StateActiveContractsRaw({\n getActiveContractsRequest: {\n eventFormat: { filtersByParty, verbose: false },\n activeAtOffset: offset,\n },\n limit: opts?.limit,\n }),\n );\n\n // Raw response is an array of streamed entries; extract and deserialize contracts\n type RawActiveContractsResponse = Array<{\n contractEntry?: { JsActiveContract?: Record<string, unknown> };\n }>;\n const rawJson: RawActiveContractsResponse = await rawResponse.raw.json();\n\n return rawJson\n .map((item) => item.contractEntry?.JsActiveContract)\n .filter((contract): contract is Record<string, unknown> => contract != null)\n .map((contract) => JsActiveContractFromJSON(contract));\n }\n\n /**\n * Stream transactions from a given offset.\n *\n * Uses `updateFormat` with `TRANSACTION_SHAPE_LEDGER_EFFECTS` so consumers\n * receive `ExercisedEvent`s (e.g. the request-poller depends on\n * `Request_Create` exercise results). The deprecated legacy `filter`\n * shape would default to `ACS_DELTA`, which only emits Created/Archived\n * events and silently drops every exercise on the wire.\n *\n * @param party - Party to query as\n * @param beginExclusive - Start offset (exclusive)\n * @param endInclusive - End offset (inclusive)\n * @param opts.templateIds - Optional template IDs to filter by\n * @param opts.limit - Maximum number of transactions to return\n */\n async getUpdates(\n party: string,\n beginExclusive: number,\n endInclusive: number,\n opts?: { templateIds?: string[]; limit?: number },\n ): Promise<CantonUpdate[]> {\n const eventFormat = {\n filtersByParty: {\n [party]: { cumulative: this.#buildCumulativeFilters(opts?.templateIds) },\n },\n verbose: false,\n };\n const rawResponse = await this.#invoke(() =>\n this.#api.postV2UpdatesRaw({\n getUpdatesRequest: {\n beginExclusive,\n endInclusive,\n updateFormat: {\n includeTransactions: {\n eventFormat,\n transactionShape: 'TRANSACTION_SHAPE_LEDGER_EFFECTS' as const,\n },\n },\n },\n limit: opts?.limit,\n }),\n );\n\n const updateResponses: CantonUpdateResponse[] = await rawResponse.raw.json();\n\n return updateResponses.map((response) => response.update);\n }\n\n /**\n * Build cumulative filters for party-based queries.\n * If templateIds provided, filters by those templates; otherwise uses wildcard.\n */\n #buildCumulativeFilters(\n templateIds?: string[],\n includeCreatedEventBlob = false,\n ): CumulativeFilter[] {\n if (templateIds?.length) {\n return templateIds.map((templateId) => ({\n identifierFilter: {\n templateFilter: { value: { templateId, includeCreatedEventBlob } },\n },\n }));\n }\n return [\n {\n identifierFilter: {\n wildcardFilter: { value: { includeCreatedEventBlob } },\n },\n },\n ];\n }\n\n /**\n * Build cumulative filters for interface-based ACS queries.\n * If interfaceIds provided, filters by those interfaces; otherwise uses wildcard.\n */\n #buildInterfaceCumulativeFilters(\n interfaceIds?: string[],\n includeCreatedEventBlob = false,\n ): CumulativeFilter[] {\n if (interfaceIds?.length) {\n return interfaceIds.map((interfaceId) => ({\n identifierFilter: {\n interfaceFilter: {\n value: {\n interfaceId,\n includeInterfaceView: true,\n includeCreatedEventBlob,\n },\n },\n },\n }));\n }\n return [\n {\n identifierFilter: {\n wildcardFilter: { value: { includeCreatedEventBlob } },\n },\n },\n ];\n }\n\n /**\n * Build the standard update format for fetching transactions.\n */\n #buildUpdateFormat(parties: string[]) {\n return {\n includeTransactions: {\n eventFormat: {\n filtersByParty: this.#buildPartyFilters(parties, false),\n verbose: false,\n },\n transactionShape: 'TRANSACTION_SHAPE_LEDGER_EFFECTS' as const,\n },\n };\n }\n\n /**\n * Parse an update response and extract the transaction.\n * The response structure is: { update: { Transaction: { value: CantonTransaction } } }\n */\n #parseTransactionFromUpdate(\n json: CantonUpdateResponse,\n notFoundMessage: string,\n ): CantonTransaction {\n // Update can be a Transaction, Reassignment, TopologyTransaction, or OffsetCheckpoint\n if (!('Transaction' in json.update)) {\n throw new CantonProtocolError(notFoundMessage);\n }\n\n return json.update.Transaction.value;\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/refresh/onesig-config.ts"],"names":["OAPP_CONFIG","ACCESS_CONTROL","RATE_STATE","TRANSFER_RULE","REQUEST_FACTORY","exactlyOne","contracts","label","length","Error","resolveCantonOneSigConfigContext","sdk","input","oappId","operation","offset","getLedgerEndOffset","sameIdentity","value","getCreateArgumentField","admin","id","templateContracts","templateId","name","entity","slice","split","queryActiveContracts","informee","templateIds","includeCreatedEventBlob","filter","createdEvent","packageName","join","areExpectedSignatories","interfaceContracts","interfaceId","packageId","getPackageId","resolvedId","queryActiveContractsByInterface","flatMap","contract","views","interfaceViews","view","viewStatus","code","viewValue","disclosedContracts","disclose","push","callbackDisclosure","contractId","configs","accessControls","Promise","all","configCid","map","matchingAccess","scope","accessControlCid","rateLimitStateCid","includes","createArgument","newTransferRuleCid","newRequestFactoryCid","expectedHandler","context","tag"],"mappings":"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","file":"IUQEDBC6.js","sourcesContent":["import type { JsActiveContract } from '../open-api/models';\nimport type { CantonSdk } from '../sdk/canton-sdk';\nimport type { CantonDisclosedContract } from '../transaction';\nimport { areExpectedSignatories, getCreateArgumentField } from '../trusted-origin';\nimport { callbackDisclosure } from './callback-contracts';\nimport type { CantonOneSigConfigContextRefresh } from './plan';\n\nconst OAPP_CONFIG = '#layerzero-ioapp-config:IOAppConfig:IOAppConfig';\nconst ACCESS_CONTROL = '#layerzero-iaccess-control:IAccessControl:IAccessControl';\nconst RATE_STATE = '#layerzero-rate-limiter:RateLimiterState:RateLimiterState';\nconst TRANSFER_RULE = '#layerzero-oft:Transfer.OftTransferRule:OftTransferRule';\nconst REQUEST_FACTORY = '#layerzero-request-factory:RequestFactory:RequestFactory';\n\ntype Input = CantonOneSigConfigContextRefresh['resolver'];\nexport type CantonOneSigConfigContext = {\n tag: 'ConfigContext';\n value: {\n configCid: string;\n accessControlCid: string | null;\n rateLimitStateCid: string | null;\n newTransferRuleCid: string | null;\n newRequestFactoryCid: string | null;\n };\n};\nconst exactlyOne = (contracts: JsActiveContract[], label: string): JsActiveContract => {\n if (contracts.length !== 1)\n throw new Error(`Expected exactly one ${label}, found ${contracts.length}`);\n return contracts[0]!;\n};\n\nexport const resolveCantonOneSigConfigContext = async (\n sdk: CantonSdk,\n input: Input,\n): Promise<{\n context: CantonOneSigConfigContext;\n disclosedContracts: CantonDisclosedContract[];\n}> => {\n const { oappId, operation } = input;\n const offset = await sdk.getLedgerEndOffset();\n const sameIdentity = (value: unknown): boolean =>\n getCreateArgumentField(value, 'admin') === oappId.admin &&\n getCreateArgumentField(value, 'id') === oappId.id;\n const templateContracts = async (templateId: string, admin: string) => {\n const [name, ...entity] = templateId.slice(1).split(':');\n return (\n await sdk.queryActiveContracts(input.informee, offset, {\n templateIds: [templateId],\n includeCreatedEventBlob: true,\n })\n ).filter(\n ({ createdEvent }) =>\n createdEvent.packageName === name &&\n createdEvent.templateId.split(':').slice(1).join(':') === entity.join(':') &&\n areExpectedSignatories(createdEvent, [admin]),\n );\n };\n const interfaceContracts = async (interfaceId: string) => {\n const [name, ...entity] = interfaceId.slice(1).split(':');\n const packageId = await sdk.getPackageId(name!, [input.informee]);\n const resolvedId = `${packageId}:${entity.join(':')}`;\n return (\n await sdk.queryActiveContractsByInterface([input.informee], offset, [interfaceId], {\n includeCreatedEventBlob: true,\n })\n ).flatMap((contract) => {\n const views =\n contract.createdEvent.interfaceViews?.filter(\n (view) => view.interfaceId === resolvedId,\n ) ?? [];\n const view = views[0];\n return views.length === 1 &&\n view?.viewStatus?.code === 0 &&\n view.viewValue &&\n areExpectedSignatories(contract.createdEvent, [oappId.admin])\n ? [{ contract, view: view.viewValue as Record<string, unknown> }]\n : [];\n });\n };\n const disclosedContracts: CantonDisclosedContract[] = [];\n const disclose = (contract: JsActiveContract) => {\n disclosedContracts.push(callbackDisclosure(contract));\n return contract.createdEvent.contractId;\n };\n const [configs, accessControls] = await Promise.all([\n interfaceContracts(OAPP_CONFIG),\n interfaceContracts(ACCESS_CONTROL),\n ]);\n const configCid = disclose(\n exactlyOne(\n configs.filter(({ view }) => sameIdentity(view.oappId)).map(({ contract }) => contract),\n 'OApp config',\n ),\n );\n const matchingAccess = accessControls.filter(\n ({ view }) =>\n sameIdentity(view.scope) && getCreateArgumentField(view.scope, 'category') === 'oapp',\n );\n if (matchingAccess.length > 1) throw new Error('Ambiguous OApp access control');\n const accessControlCid = matchingAccess[0] ? disclose(matchingAccess[0].contract) : null;\n let rateLimitStateCid: string | null = null;\n if (\n [\n 'OpRateLimiterSetDefault',\n 'OpRateLimiterSetEidOverride',\n 'OpRateLimiterRemoveEidOverride',\n 'OpRateLimiterSetState',\n ].includes(operation)\n ) {\n rateLimitStateCid = disclose(\n exactlyOne(\n (await templateContracts(RATE_STATE, oappId.admin)).filter(({ createdEvent }) =>\n sameIdentity(getCreateArgumentField(createdEvent.createArgument, 'oappId')),\n ),\n 'rate limiter state',\n ),\n );\n }\n let newTransferRuleCid: string | null = null;\n if (operation === 'OpSetTransferRule') {\n newTransferRuleCid = disclose(\n exactlyOne(\n (await templateContracts(TRANSFER_RULE, oappId.admin)).filter(({ createdEvent }) =>\n sameIdentity(\n getCreateArgumentField(createdEvent.createArgument, 'instrumentId'),\n ),\n ),\n 'transfer rule',\n ),\n );\n }\n let newRequestFactoryCid: string | null = null;\n if (operation === 'OpSetRequestFactory') {\n newRequestFactoryCid = disclose(\n exactlyOne(\n (await templateContracts(REQUEST_FACTORY, input.expectedHandler)).filter(\n ({ createdEvent }) =>\n getCreateArgumentField(createdEvent.createArgument, 'handler') ===\n input.expectedHandler,\n ),\n 'replacement request factory',\n ),\n );\n }\n return {\n context: {\n tag: 'ConfigContext',\n value: {\n configCid,\n accessControlCid,\n rateLimitStateCid,\n newTransferRuleCid,\n newRequestFactoryCid,\n },\n },\n disclosedContracts,\n };\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/client/topology/utils.ts"],"names":["HASH_PURPOSE_DECENTRALIZED_NAMESPACE","HASH_PURPOSE_MULTI_TRANSACTION","computeDecentralizedNamespace","owners","sorted","sort","parts","owner","ownerBytes","Buffer","from","lengthPrefix","alloc","writeUInt32BE","length","push","bytesToHex","cantonMultihash","concat","computeMultiTransactionHash","hashes","left","right","compare","countBuffer","hash","lengthBuffer","synchronizerStore","synchronizerId","StoreId","create","store","oneofKind","synchronizer","id","headStateBaseQuery","proposals","BaseQuery","timeQuery","headState","Empty","LOOPBACK_HOSTNAMES","Set","LOOPBACK_IPV4","isLoopbackHost","host","hostname","replace","toLowerCase","has","test","buildChannelCredentials","insecureTransport","ChannelCredentials","createSsl","CantonError","createInsecure"],"mappings":"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","file":"K7FRAGGM.js","sourcesContent":["import { BaseQuery, Empty, StoreId } from '@canton-network/core-ledger-proto';\nimport { ChannelCredentials } from '@grpc/grpc-js';\n\nimport { bytesToHex } from '@layerzerolabs/common-encoding-utils';\n\nimport { CantonError } from '../../errors';\nimport { cantonMultihash } from '../utils';\n\n/** Canton hash purpose for decentralized namespace derivation. */\nconst HASH_PURPOSE_DECENTRALIZED_NAMESPACE = 37;\n\n/** Canton hash purpose for multi-transaction topology signing. */\nconst HASH_PURPOSE_MULTI_TRANSACTION = 55;\n\n/**\n * Computes the decentralized namespace fingerprint from owner key fingerprints.\n *\n * Owners are sorted lexicographically, then hashed as\n * `1220` + SHA256(purpose=37 || for each owner: len(utf8) || utf8).\n */\nexport function computeDecentralizedNamespace(owners: string[]): string {\n const sorted = [...owners].sort();\n const parts: Buffer[] = [];\n for (const owner of sorted) {\n const ownerBytes = Buffer.from(owner, 'utf-8');\n const lengthPrefix = Buffer.alloc(4);\n lengthPrefix.writeUInt32BE(ownerBytes.length);\n parts.push(lengthPrefix, ownerBytes);\n }\n return bytesToHex(cantonMultihash(HASH_PURPOSE_DECENTRALIZED_NAMESPACE, Buffer.concat(parts)));\n}\n\n/**\n * Combines topology transaction hashes into the digest Canton expects signed.\n *\n * Hashes are sorted lexicographically, count-prefixed, each length-prefixed, then\n * hashed with purpose 55. Pass a single hash when signing one transaction —\n * Canton always uses this multi-transaction format for `AddTransactions`.\n */\nexport function computeMultiTransactionHash(hashes: Uint8Array[]): Uint8Array {\n const sorted = [...hashes].sort((left, right) =>\n Buffer.compare(Buffer.from(left), Buffer.from(right)),\n );\n const parts: Buffer[] = [];\n const countBuffer = Buffer.alloc(4);\n countBuffer.writeUInt32BE(sorted.length);\n parts.push(countBuffer);\n for (const hash of sorted) {\n const lengthBuffer = Buffer.alloc(4);\n lengthBuffer.writeUInt32BE(hash.length);\n parts.push(lengthBuffer, Buffer.from(hash));\n }\n return cantonMultihash(HASH_PURPOSE_MULTI_TRANSACTION, Buffer.concat(parts));\n}\n\n/**\n * Builds a topology `StoreId` scoped to a synchronizer.\n *\n * Used as the `store` field on topology read/write RPC requests.\n */\nexport function synchronizerStore(synchronizerId: string): StoreId {\n return StoreId.create({\n store: { oneofKind: 'synchronizer', synchronizer: { id: synchronizerId } },\n });\n}\n\n/**\n * Builds a topology `BaseQuery` at synchronizer head state.\n *\n * Used as the `baseQuery` field on topology list RPC requests.\n */\nexport function headStateBaseQuery(synchronizerId: string, proposals = false): BaseQuery {\n return BaseQuery.create({\n store: synchronizerStore(synchronizerId),\n timeQuery: { oneofKind: 'headState', headState: Empty.create({}) },\n proposals,\n });\n}\n\nconst LOOPBACK_HOSTNAMES = new Set(['localhost', '::1']);\nconst LOOPBACK_IPV4 = /^127(\\.\\d{1,3}){3}$/;\n\n/**\n * Whether a `host:port` target addresses the local machine.\n */\nconst isLoopbackHost = (host: string): boolean => {\n const hostname = host\n .replace(/:\\d+$/, '')\n .replace(/^\\[(.*)\\]$/, '$1')\n .toLowerCase();\n return LOOPBACK_HOSTNAMES.has(hostname) || LOOPBACK_IPV4.test(hostname);\n};\n\n/**\n * Builds gRPC channel credentials for the Canton admin API.\n *\n * Encrypted whatever the port, because every admin call carries a reusable bearer token.\n *\n * @throws {CantonError} If an unencrypted channel is asked for on a remote host.\n */\nexport const buildChannelCredentials = (\n host: string,\n insecureTransport = false,\n): ChannelCredentials => {\n if (!insecureTransport) {\n return ChannelCredentials.createSsl();\n } else if (!isLoopbackHost(host)) {\n throw new CantonError(\n `Canton admin API requires an encrypted channel for a remote host: ${host}`,\n );\n }\n\n return ChannelCredentials.createInsecure();\n};\n"]}