@layerzerolabs/common-canton 1.2.94 → 1.2.96
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{DZCJJOBK.js → 4SK2ZV46.js} +3 -3
- package/dist/{DZCJJOBK.js.map → 4SK2ZV46.js.map} +1 -1
- package/dist/{P4PU4NFW.js → D3KVE5XQ.js} +3 -3
- package/dist/{P4PU4NFW.js.map → D3KVE5XQ.js.map} +1 -1
- package/dist/{THWUUI4S.js → J4V2ZLWV.js} +36 -5
- package/dist/J4V2ZLWV.js.map +1 -0
- package/dist/{VK75NQEJ.js → JJDWTXLN.js} +3 -3
- package/dist/{VK75NQEJ.js.map → JJDWTXLN.js.map} +1 -1
- package/dist/address.d.ts +37 -1
- package/dist/address.d.ts.map +1 -1
- package/dist/address.js +1 -1
- package/dist/browser.js +1 -1
- package/dist/index.js +4 -4
- package/dist/refresh/index.js +3 -3
- package/dist/refresh/onesig-request.js +1 -1
- package/dist/refresh/resolve-plan.js +2 -2
- package/dist/refresh/resolve.js +3 -3
- package/package.json +10 -10
- package/dist/THWUUI4S.js.map +0 -1
|
@@ -2,7 +2,7 @@ import { CantonSdk } from './XUXLV3PL.js';
|
|
|
2
2
|
import { resolveCantonOneSigTransferBatch } from './NSHNCUWI.js';
|
|
3
3
|
import { resolveCantonOneSigConfigContext } from './IUQEDBC6.js';
|
|
4
4
|
import { resolveCantonOneSigDiscoveryContext } from './B7J77LOR.js';
|
|
5
|
-
import { resolveCantonOneSigRequestContext } from './
|
|
5
|
+
import { resolveCantonOneSigRequestContext } from './D3KVE5XQ.js';
|
|
6
6
|
import { resolveCantonOneSigScopeContext } from './NGED2YCU.js';
|
|
7
7
|
import { resolveCantonOneSigTransferInstructionContext } from './5BK6GCUD.js';
|
|
8
8
|
import { resolveCantonFinalizeCallback } from './E6W3YWXU.js';
|
|
@@ -552,5 +552,5 @@ var resolveCantonRefreshPlan = /* @__PURE__ */ __name(async (args) => {
|
|
|
552
552
|
}, "resolveCantonRefreshPlan");
|
|
553
553
|
|
|
554
554
|
export { resolveCantonActiveContracts, resolveCantonRefreshPlan, selectContractsByGte };
|
|
555
|
-
//# sourceMappingURL=
|
|
556
|
-
//# sourceMappingURL=
|
|
555
|
+
//# sourceMappingURL=4SK2ZV46.js.map
|
|
556
|
+
//# sourceMappingURL=4SK2ZV46.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/refresh/resolve-plan.ts"],"names":["CANTON_TIME_PATTERN","resolveParty","partyRef","senderParty","label","isCantonDeferredSender","party","Error","getContractNumericField","contract","field","raw","getCreateArgumentField","createdEvent","createArgument","value","initialAmount","parseDamlDecimal","contractId","selectContractsByGte","contracts","requestedValue","selectContractAmounts","makeActiveContractRef","selector","type","partyToFilter","queryAs","expectedSignatories","templateId","interfaceId","contractStateFilter","stateFilter","resolveSelectorContracts","resolver","resolveActiveContracts","source","length","filter","resolveContractValue","selectActiveContracts","selection","kind","resolveCantonActiveContracts","args","queryParty","createContractAddressResolver","client","signingParties","appendDisclosures","undefined","selected","contractIds","map","isRecord","Array","isArray","isCantonTime","test","Number","isFinite","Date","parse","isActiveContractRefresh","refresh","isActiveContractValueRefresh","isAmuletContextRefresh","isTimestampRefresh","replaceAtPath","root","path","current","position","segment","entries","isLast","index","damlMapKey","matches","entry","readAtPath","readTarget","commands","target","command","commandIndex","exerciseCommand","choice","choiceArgument","createCommand","template","createArguments","applyPatch","applyTarget","argument","arguments","containsDeferredSentinel","isCantonDeferredSentinel","some","item","Object","values","child","disclosuresEqual","left","right","createdEventBlob","synchronizerId","resolveCantonRefreshPlan","replacements","cantonRefreshPlanSchema","shape","replaceSentinels","refreshPlan","structuredClone","unresolvedCommands","trim","replacement","targets","cantonSenderPartyRef","callback","cantonFinalizeCallbackRefreshSchema","contextIndices","sort","cidIndices","callbackCidTargets","JSON","stringify","pendingCallbackCid","disclosureMap","Map","disclosures","disclosure","existing","get","set","unresolvedDisclosedContracts","ref","discloseActiveContracts","resolved","transfer","cantonOneSigTransferBatchRefreshSchema","firstTarget","calls","transferIndices","flatMap","call","tag","indices","Set","size","includes","bundle","resolveCantonOneSigTransferBatch","CantonSdk","disclosedContracts","forEach","contexts","instruction","cantonOneSigTransferInstructionContextRefreshSchema","slice","transferInstructionCid","resolveCantonOneSigTransferInstructionContext","context","config","cantonOneSigConfigContextRefreshSchema","expected","operation","oappId","admin","id","expectedHandler","resolveCantonOneSigConfigContext","scope","cantonOneSigScopeContextRefreshSchema","contextTag","category","resolveCantonOneSigScopeContext","discovery","cantonOneSigDiscoveryContextRefreshSchema","timestamp","feeAmount","feeDsoParty","dso","resolveCantonOneSigDiscoveryContext","request","cantonOneSigRequestContextRefreshSchema","requestTags","dsoParty","String","resolveCantonOneSigRequestContext","resolveCantonFinalizeCallback","executeContext","callbackCid","acceptance","cantonTransferInstructionAcceptContextRefreshSchema","getTransferInstructionAcceptContext","choiceContext","getAmuletContextWithExternalRules","amuletContext","contractIdTargets","externalPartyAmuletRulesCid","now","offsetMs","iso","getTime","toISOString"],"mappings":"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","file":"DZCJJOBK.js","sourcesContent":["import type { ICantonClient } from '../client/interface';\nimport {\n type CantonRefreshPartyFilter,\n cantonSenderPartyRef,\n isCantonDeferredSender,\n isCantonDeferredSentinel,\n} from '../deferredValue';\nimport type { JsActiveContract } from '../open-api/models';\nimport { CantonSdk } from '../sdk/canton-sdk';\nimport type {\n CantonCommand,\n CantonDisclosedContract,\n CantonUnresolvedCommand,\n} from '../transaction';\nimport { getCreateArgumentField } from '../trusted-origin';\nimport { type ActiveContractRef, createContractAddressResolver } from './address-resolver';\nimport { resolveCantonFinalizeCallback } from './callback';\nimport { resolveCantonOneSigConfigContext } from './onesig-config';\nimport { resolveCantonOneSigDiscoveryContext } from './onesig-discovery';\nimport { resolveCantonOneSigRequestContext } from './onesig-request';\nimport { resolveCantonOneSigScopeContext } from './onesig-scope';\nimport { resolveCantonOneSigTransferBatch } from './onesig-transfer';\nimport { resolveCantonOneSigTransferInstructionContext } from './onesig-transfer-instruction';\nimport {\n type CantonActiveContractRefresh,\n type CantonActiveContractSelection,\n type CantonActiveContractValue,\n type CantonActiveContractValueRefresh,\n type CantonAmuletContextRefresh,\n type CantonArgumentRefreshTarget,\n type CantonContractSelector,\n cantonFinalizeCallbackRefreshSchema,\n cantonOneSigConfigContextRefreshSchema,\n cantonOneSigDiscoveryContextRefreshSchema,\n cantonOneSigRequestContextRefreshSchema,\n cantonOneSigScopeContextRefreshSchema,\n cantonOneSigTransferBatchRefreshSchema,\n cantonOneSigTransferInstructionContextRefreshSchema,\n type CantonRefresh,\n type CantonRefreshPath,\n type CantonRefreshPlan,\n cantonRefreshPlanSchema,\n type CantonRefreshTarget,\n type CantonTimestampRefresh,\n cantonTransferInstructionAcceptContextRefreshSchema,\n} from './plan';\nimport { parseDamlDecimal, selectContractAmounts } from './select-contracts';\n\nconst CANTON_TIME_PATTERN = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,9})?Z$/;\n\nconst resolveParty = (\n partyRef: CantonRefreshPartyFilter,\n senderParty: string | undefined,\n label: string,\n): string => {\n if (!isCantonDeferredSender(partyRef)) return partyRef.party;\n if (!senderParty) {\n throw new Error(`${label} requires a resolved sender party`);\n }\n return senderParty;\n};\n\nconst getContractNumericField = (contract: JsActiveContract, field: string): bigint => {\n const raw = getCreateArgumentField(contract.createdEvent.createArgument, field);\n const value =\n raw !== null && typeof raw === 'object' && 'initialAmount' in raw\n ? (raw as { initialAmount?: unknown }).initialAmount\n : raw;\n return parseDamlDecimal(\n value,\n `Contract ${contract.createdEvent.contractId} numeric field ${field}`,\n );\n};\n\nexport const selectContractsByGte = (\n contracts: JsActiveContract[],\n field: string,\n requestedValue: string,\n): JsActiveContract[] =>\n selectContractAmounts(contracts, field, requestedValue, (contract) =>\n getContractNumericField(contract, field),\n );\n\nconst makeActiveContractRef = (selector: CantonContractSelector): ActiveContractRef => ({\n type: 'activeContractIds',\n partyToFilter: selector.queryAs,\n expectedSignatories: selector.expectedSignatories,\n templateId: selector.templateId ?? selector.interfaceId,\n interfaceId: selector.interfaceId,\n contractStateFilter: selector.stateFilter,\n});\n\nconst resolveSelectorContracts = async (\n resolver: ReturnType<typeof createContractAddressResolver>,\n selector: CantonContractSelector,\n): Promise<JsActiveContract[]> => {\n const contracts = await resolver.resolveActiveContracts(makeActiveContractRef(selector));\n if (!selector.contractId) return contracts;\n const source = await resolver.resolveActiveContracts(\n makeActiveContractRef(selector.contractId.selector),\n );\n if (source.length !== 1)\n throw new Error(\n `Contract ID source matched ${source.length} contracts, expected exactly one`,\n );\n const contractId = getCreateArgumentField(\n source[0]!.createdEvent.createArgument,\n selector.contractId.field,\n );\n if (typeof contractId !== 'string' || !contractId)\n throw new Error('Contract ID source must contain a nonempty contract ID');\n return contracts.filter((contract) => contract.createdEvent.contractId === contractId);\n};\n\nconst resolveContractValue = async (\n resolver: ReturnType<typeof createContractAddressResolver>,\n source: CantonActiveContractValue,\n): Promise<string> => {\n const contracts = await resolveSelectorContracts(resolver, source.selector);\n if (contracts.length !== 1) {\n throw new Error(\n `Active contract value matched ${contracts.length} contracts, expected exactly one`,\n );\n }\n const value = getCreateArgumentField(contracts[0]!.createdEvent.createArgument, source.field);\n if (parseDamlDecimal(value, `Contract value ${source.field}`) <= 0n) {\n throw new Error(`Contract value ${source.field} must be positive`);\n }\n return value as string;\n};\n\nconst selectActiveContracts = async (\n contracts: JsActiveContract[],\n selection: CantonActiveContractSelection,\n resolver: ReturnType<typeof createContractAddressResolver>,\n): Promise<JsActiveContract[]> => {\n switch (selection.kind) {\n case 'exactlyOne':\n if (contracts.length !== 1) {\n throw new Error(\n `Active contract selection matched ${contracts.length} contracts, expected exactly one`,\n );\n }\n return contracts;\n case 'all':\n return contracts;\n case 'gte':\n return selectContractsByGte(\n contracts,\n selection.field,\n typeof selection.value === 'string'\n ? selection.value\n : await resolveContractValue(resolver, selection.value),\n );\n }\n};\n\nexport const resolveCantonActiveContracts = async (args: {\n client: ICantonClient;\n selector: CantonContractSelector;\n selection: CantonActiveContractSelection;\n senderParty?: string;\n}): Promise<{ contractIds: string[] }> => {\n const queryParty = resolveParty(\n args.selector.queryAs,\n args.senderParty,\n 'Active contract selection',\n );\n const resolver = createContractAddressResolver({\n client: args.client,\n senderParty: args.senderParty,\n signingParties: [queryParty],\n appendDisclosures: () => undefined,\n });\n const selected = await selectActiveContracts(\n await resolveSelectorContracts(resolver, args.selector),\n args.selection,\n resolver,\n );\n return {\n contractIds: selected.map(({ createdEvent }) => createdEvent.contractId),\n };\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n value !== null && typeof value === 'object' && !Array.isArray(value);\n\nconst isCantonTime = (value: unknown): value is string =>\n typeof value === 'string' &&\n CANTON_TIME_PATTERN.test(value) &&\n Number.isFinite(Date.parse(value));\n\nconst isActiveContractRefresh = (refresh: CantonRefresh): refresh is CantonActiveContractRefresh =>\n refresh.resolver.type === 'activeContract';\n\nconst isActiveContractValueRefresh = (\n refresh: CantonRefresh,\n): refresh is CantonActiveContractValueRefresh => refresh.resolver.type === 'activeContractValue';\n\nconst isAmuletContextRefresh = (refresh: CantonRefresh): refresh is CantonAmuletContextRefresh =>\n refresh.resolver.type === 'amuletContext';\n\nconst isTimestampRefresh = (refresh: CantonRefresh): refresh is CantonTimestampRefresh =>\n refresh.resolver.type === 'timestamp';\n\nconst replaceAtPath = (root: unknown, path: CantonRefreshPath, value: unknown): unknown => {\n if (path.length === 0) return value;\n\n let current = root;\n for (const [position, segment] of path.entries()) {\n const isLast = position === path.length - 1;\n if ('field' in segment) {\n if (!isRecord(current) || !(segment.field in current)) {\n throw new Error(`Refresh target field \"${segment.field}\" does not exist`);\n }\n if (isLast) {\n current[segment.field] = value;\n return root;\n }\n current = current[segment.field];\n continue;\n }\n if ('index' in segment) {\n if (!Array.isArray(current) || segment.index >= current.length) {\n throw new Error(`Refresh target array index ${segment.index} does not exist`);\n }\n if (isLast) {\n current[segment.index] = value;\n return root;\n }\n current = current[segment.index];\n continue;\n }\n\n if (!Array.isArray(current)) {\n throw new Error(`Refresh target DAML map \"${segment.damlMapKey}\" is not an array`);\n }\n const matches = current.filter(\n (entry): entry is [string, unknown] =>\n Array.isArray(entry) && entry.length === 2 && entry[0] === segment.damlMapKey,\n );\n if (matches.length !== 1) {\n throw new Error(\n `Refresh target DAML map key \"${segment.damlMapKey}\" matched ${matches.length} entries`,\n );\n }\n if (isLast) {\n matches[0]![1] = value;\n return root;\n }\n current = matches[0]![1];\n }\n return root;\n};\n\nconst readAtPath = (root: unknown, path: CantonRefreshPath): unknown => {\n let current = root;\n for (const segment of path) {\n if ('field' in segment) {\n if (!isRecord(current) || !(segment.field in current)) {\n throw new Error(`Refresh target field \"${segment.field}\" does not exist`);\n }\n current = current[segment.field];\n continue;\n }\n if ('index' in segment) {\n if (!Array.isArray(current) || segment.index >= current.length) {\n throw new Error(`Refresh target array index ${segment.index} does not exist`);\n }\n current = current[segment.index];\n continue;\n }\n\n if (!Array.isArray(current)) {\n throw new Error(`Refresh target DAML map \"${segment.damlMapKey}\" is not an array`);\n }\n const matches = current.filter(\n (entry): entry is [string, unknown] =>\n Array.isArray(entry) && entry.length === 2 && entry[0] === segment.damlMapKey,\n );\n if (matches.length !== 1) {\n throw new Error(\n `Refresh target DAML map key \"${segment.damlMapKey}\" matched ${matches.length} entries`,\n );\n }\n current = matches[0]![1];\n }\n return current;\n};\n\nconst readTarget = (\n commands: CantonUnresolvedCommand[],\n target: CantonArgumentRefreshTarget,\n path: CantonRefreshPath,\n): unknown => {\n const command = commands[target.commandIndex];\n if (!command) {\n throw new Error(`Refresh command index ${target.commandIndex} does not exist`);\n }\n\n if (target.command === 'exercise') {\n if (!('exerciseCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not an exercise`);\n }\n if (command.exerciseCommand.choice !== target.choice) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected choice ${target.choice}, found ${command.exerciseCommand.choice}`,\n );\n }\n return readAtPath(command.exerciseCommand.choiceArgument, path);\n }\n\n if (!('createCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not a create`);\n }\n if (command.createCommand.templateId !== target.template) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected template ${target.template}, found ${command.createCommand.templateId}`,\n );\n }\n return readAtPath(command.createCommand.createArguments, path);\n};\n\nconst applyPatch = (\n commands: CantonUnresolvedCommand[],\n target: CantonArgumentRefreshTarget,\n path: CantonRefreshPath,\n value: unknown,\n): void => {\n const command = commands[target.commandIndex];\n if (!command) {\n throw new Error(`Refresh command index ${target.commandIndex} does not exist`);\n }\n\n if (target.command === 'exercise') {\n if (!('exerciseCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not an exercise`);\n }\n if (command.exerciseCommand.choice !== target.choice) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected choice ${target.choice}, found ${command.exerciseCommand.choice}`,\n );\n }\n command.exerciseCommand.choiceArgument = replaceAtPath(\n command.exerciseCommand.choiceArgument,\n path,\n value,\n );\n return;\n }\n\n if (!('createCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not a create`);\n }\n if (command.createCommand.templateId !== target.template) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected template ${target.template}, found ${command.createCommand.templateId}`,\n );\n }\n command.createCommand.createArguments = replaceAtPath(\n command.createCommand.createArguments,\n path,\n value,\n );\n};\n\nconst applyTarget = (\n commands: CantonUnresolvedCommand[],\n target: CantonRefreshTarget,\n value: unknown,\n): void => {\n if ('field' in target) {\n const command = commands[target.commandIndex];\n if (!command) {\n throw new Error(`Refresh command index ${target.commandIndex} does not exist`);\n }\n if (!('exerciseCommand' in command)) {\n throw new Error(`Refresh command index ${target.commandIndex} is not an exercise`);\n }\n if (target.choice !== undefined && command.exerciseCommand.choice !== target.choice) {\n throw new Error(\n `Refresh command index ${target.commandIndex} expected choice ${target.choice}, found ${command.exerciseCommand.choice}`,\n );\n }\n if (typeof value !== 'string') {\n throw new Error('Exercise contract ID refresh must resolve to a string');\n }\n command.exerciseCommand.contractId = value;\n return;\n }\n\n for (const argument of target.arguments) {\n applyPatch(commands, target, argument.path, value);\n }\n};\n\nconst containsDeferredSentinel = (value: unknown): boolean => {\n if (isCantonDeferredSentinel(value)) return true;\n if (Array.isArray(value)) return value.some((item) => containsDeferredSentinel(item));\n if (!isRecord(value)) return false;\n return Object.values(value).some((child) => containsDeferredSentinel(child));\n};\n\nconst disclosuresEqual = (left: CantonDisclosedContract, right: CantonDisclosedContract): boolean =>\n left.contractId === right.contractId &&\n left.templateId === right.templateId &&\n left.createdEventBlob === right.createdEventBlob &&\n left.synchronizerId === right.synchronizerId;\n\nexport const resolveCantonRefreshPlan = async (args: {\n unresolvedCommands: CantonUnresolvedCommand[];\n unresolvedDisclosedContracts: CantonDisclosedContract[];\n refreshPlan: CantonRefreshPlan;\n senderParty?: string;\n signingParties: string[];\n client: ICantonClient;\n}): Promise<{ commands: CantonCommand[]; disclosedContracts: CantonDisclosedContract[] }> => {\n const replacements = cantonRefreshPlanSchema.shape.replaceSentinels.parse(\n args.refreshPlan.replaceSentinels,\n );\n const commands = structuredClone(args.unresolvedCommands);\n if (replacements) {\n if (\n typeof args.senderParty !== 'string' ||\n !args.senderParty.trim() ||\n isCantonDeferredSentinel(args.senderParty)\n ) {\n throw new Error('Sender binding requires a resolved sender party');\n }\n for (const replacement of replacements) {\n for (const target of replacement.targets) {\n for (const { path } of target.arguments) {\n if (readTarget(commands, target, path) !== cantonSenderPartyRef()) {\n throw new Error(\n 'Sender binding target must contain cantonSenderPartyRef()',\n );\n }\n applyPatch(commands, target, path, args.senderParty);\n }\n }\n }\n }\n if (containsDeferredSentinel(commands)) {\n throw new Error('Canton refreshPlan cannot be combined with deferred sentinels');\n }\n\n for (const entry of args.refreshPlan.commands) {\n if (entry.resolver.type !== 'finalizeCallback') continue;\n const callback = cantonFinalizeCallbackRefreshSchema.parse(entry);\n const contextIndices = callback.targets.map((target) => target.commandIndex).sort();\n const cidIndices = callback.callbackCidTargets.map((target) => target.commandIndex).sort();\n if (JSON.stringify(contextIndices) !== JSON.stringify(cidIndices)) {\n throw new Error(\n 'Callback context and contract ID targets must address the same commands',\n );\n }\n for (const target of [...callback.targets, ...callback.callbackCidTargets]) {\n readTarget(commands, target, target.arguments[0].path);\n const command = commands[target.commandIndex]!;\n if (\n !('exerciseCommand' in command) ||\n !isRecord(command.exerciseCommand.choiceArgument) ||\n command.exerciseCommand.choiceArgument.pendingCallbackCid !==\n callback.resolver.pendingCallbackCid\n ) {\n throw new Error('Callback target must match the pinned PendingCallback');\n }\n }\n }\n\n const disclosureMap = new Map<string, CantonDisclosedContract>();\n const appendDisclosures = (disclosures: CantonDisclosedContract[]): void => {\n for (const disclosure of disclosures) {\n const existing = disclosureMap.get(disclosure.contractId);\n if (existing && !disclosuresEqual(existing, disclosure)) {\n throw new Error(`Conflicting disclosures for contract ${disclosure.contractId}`);\n }\n disclosureMap.set(disclosure.contractId, disclosure);\n }\n };\n appendDisclosures(args.unresolvedDisclosedContracts);\n\n const resolver = createContractAddressResolver({\n client: args.client,\n senderParty: args.senderParty,\n signingParties: args.signingParties,\n appendDisclosures,\n });\n\n for (const refresh of args.refreshPlan.commands) {\n if (isActiveContractRefresh(refresh)) {\n const ref = makeActiveContractRef(refresh.resolver.selector);\n const selected = await selectActiveContracts(\n await resolveSelectorContracts(resolver, refresh.resolver.selector),\n refresh.resolver.selection,\n resolver,\n );\n await resolver.discloseActiveContracts(ref, selected);\n const contractIds = selected.map(({ createdEvent }) => createdEvent.contractId);\n const resolved =\n refresh.resolver.selection.kind === 'exactlyOne' ? contractIds[0]! : contractIds;\n for (const target of refresh.targets) applyTarget(commands, target, resolved);\n continue;\n }\n\n if (isActiveContractValueRefresh(refresh)) {\n const value = await resolveContractValue(resolver, refresh.resolver);\n for (const target of refresh.targets) applyTarget(commands, target, value);\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigTransferBatch') {\n const transfer = cantonOneSigTransferBatchRefreshSchema.parse(refresh);\n const firstTarget = transfer.targets[0]!;\n const commandIndex = firstTarget.commandIndex;\n const calls = readTarget(commands, firstTarget, [\n { field: 'transaction' },\n { field: 'calls' },\n ]);\n if (!Array.isArray(calls)) throw new Error('OneSig transfer target requires calls');\n const transferIndices = calls.flatMap((entry, index) =>\n isRecord(entry) && isRecord(entry.call) && entry.call.tag === 'OpTransfer'\n ? [index]\n : [],\n );\n const indices = transfer.targets.map((target) => target.arguments[0].path[2].index);\n if (\n transfer.targets.some((target) => target.commandIndex !== commandIndex) ||\n indices.length !== transferIndices.length ||\n new Set(indices).size !== indices.length ||\n transferIndices.some((index) => !indices.includes(index)) ||\n args.refreshPlan.commands.filter(\n (entry) =>\n entry.resolver.type === 'oneSigTransferBatch' &&\n entry.targets.some((target) => target.commandIndex === commandIndex),\n ).length !== 1\n ) {\n throw new Error(\n 'OneSig transfer targets must cover every Transfer context exactly once',\n );\n }\n for (const target of transfer.targets) {\n const current = readTarget(commands, target, target.arguments[0].path);\n if (\n !isRecord(current) ||\n current.tag !== 'TransferFactoryContext' ||\n !isRecord(current.value)\n )\n throw new Error('OneSig transfer target context mismatch');\n }\n const bundle = await resolveCantonOneSigTransferBatch(\n new CantonSdk(args.client),\n transfer.resolver,\n indices.map((index) => calls[index].call),\n args.client,\n );\n appendDisclosures(bundle.disclosedContracts);\n transfer.targets.forEach((target, index) =>\n applyTarget(commands, target, bundle.contexts[index]),\n );\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigTransferInstructionContext') {\n const instruction = cantonOneSigTransferInstructionContextRefreshSchema.parse(refresh);\n const target = instruction.targets[0]!;\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [...path.slice(0, -1), { field: 'call' }]);\n if (\n !isRecord(current) ||\n current.tag !== 'TransferInstructionContext' ||\n !isRecord(current.value) ||\n current.value.transferInstructionCid !== instruction.resolver.transferInstructionCid\n ) {\n throw new Error(\n 'OneSig instruction target must match the pinned transfer instruction',\n );\n }\n const bundle = await resolveCantonOneSigTransferInstructionContext(\n new CantonSdk(args.client),\n instruction.resolver,\n call,\n args.client,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigConfigContext') {\n const config = cantonOneSigConfigContextRefreshSchema.parse(refresh);\n for (const target of config.targets) {\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [\n ...path.slice(0, -1),\n { field: 'call' },\n ]);\n const expected = config.resolver;\n if (\n !isRecord(call) ||\n !isRecord(call.value) ||\n call.tag !== expected.operation ||\n !isRecord(call.value.oappId) ||\n call.value.oappId.admin !== expected.oappId.admin ||\n call.value.oappId.id !== expected.oappId.id ||\n !isRecord(current) ||\n current.tag !== 'ConfigContext' ||\n !isRecord(current.value) ||\n (expected.operation === 'OpSetRequestFactory' &&\n call.value.expectedHandler !== expected.expectedHandler)\n ) {\n throw new Error('OneSig config target does not match signed call identity');\n }\n const bundle = await resolveCantonOneSigConfigContext(\n new CantonSdk(args.client),\n expected,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n }\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigScopeContext') {\n const scope = cantonOneSigScopeContextRefreshSchema.parse(refresh);\n for (const target of scope.targets) {\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [\n ...path.slice(0, -1),\n { field: 'call' },\n ]);\n const expected = scope.resolver;\n const contextTag =\n expected.operation === 'OpSetMinFee'\n ? 'MinFeeContext'\n : expected.operation === 'OpSetMinPayoutValue'\n ? 'MinPayoutValueContext'\n : expected.operation === 'OpSetProtocolLedgerTimeValidityPeriod'\n ? 'LedgerTimeValidityContext'\n : 'AccessControlContext';\n if (\n !isRecord(call) ||\n !isRecord(call.value) ||\n call.tag !== expected.operation ||\n !isRecord(call.value.scope) ||\n call.value.scope.category !== expected.scope.category ||\n call.value.scope.admin !== expected.scope.admin ||\n call.value.scope.id !== expected.scope.id ||\n (expected.operation === 'OpAcceptDefaultAdmin' &&\n expected.scope.category === 'oapp') ||\n !isRecord(current) ||\n current.tag !== contextTag ||\n !isRecord(current.value)\n ) {\n throw new Error('OneSig scope target does not match signed call identity');\n }\n const bundle = await resolveCantonOneSigScopeContext(\n new CantonSdk(args.client),\n expected,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n }\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigDiscoveryContext') {\n const discovery = cantonOneSigDiscoveryContextRefreshSchema.parse(refresh);\n for (const target of discovery.targets) {\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [\n ...path.slice(0, -1),\n { field: 'call' },\n ]);\n const expected = discovery.resolver;\n if (\n !isRecord(call) ||\n call.tag !== 'OpSetDiscoveryUrl' ||\n !isRecord(call.value) ||\n !isRecord(call.value.oappId) ||\n call.value.oappId.admin !== expected.oappId.admin ||\n call.value.oappId.id !== expected.oappId.id ||\n !isRecord(current) ||\n current.tag !== 'OAppDiscoveryContext' ||\n !isRecord(current.value) ||\n !isCantonTime(current.value.timestamp) ||\n (parseDamlDecimal(call.value.feeAmount, 'Discovery fee') > 0n\n ? expected.feeDsoParty !== call.value.dso\n : expected.feeDsoParty !== undefined)\n ) {\n throw new Error('OneSig discovery target does not match signed call identity');\n }\n const bundle = await resolveCantonOneSigDiscoveryContext(\n new CantonSdk(args.client),\n expected,\n current.value.timestamp,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n }\n continue;\n }\n\n if (refresh.resolver.type === 'oneSigRequestContext') {\n const request = cantonOneSigRequestContextRefreshSchema.parse(refresh);\n for (const target of request.targets) {\n const path = target.arguments[0].path;\n const current = readTarget(commands, target, path);\n const call = readTarget(commands, target, [\n ...path.slice(0, -1),\n { field: 'call' },\n ]);\n const expected = request.resolver.request;\n const requestTags = [\n 'OpCreateOAppRequest',\n 'OpSkip',\n 'OpBurn',\n 'OpClear',\n 'OpNilify',\n ];\n if (\n !isRecord(call) ||\n !isRecord(call.value) ||\n call.value.dso !== request.resolver.dsoParty ||\n !isRecord(current) ||\n !isRecord(current.value) ||\n !isCantonTime(current.value.timestamp) ||\n (expected.kind === 'request'\n ? call.tag !== 'OpCreateRequest' || current.tag !== 'RequestContext'\n : expected.kind === 'oappAccept'\n ? call.tag !== 'OpAcceptDefaultAdmin' ||\n current.tag !== 'OAppRequestContext' ||\n !isRecord(call.value.scope) ||\n call.value.scope.category !== 'oapp' ||\n call.value.scope.admin !== expected.oappId.admin ||\n call.value.scope.id !== expected.oappId.id ||\n parseDamlDecimal(call.value.feeAmount, 'OApp Accept fee') <= 0n\n : !requestTags.includes(String(call.tag)) ||\n current.tag !== 'OAppRequestContext' ||\n !isRecord(call.value.oappId) ||\n call.value.oappId.admin !== expected.oappId.admin ||\n call.value.oappId.id !== expected.oappId.id)\n ) {\n throw new Error('OneSig request target does not match signed call identity');\n }\n const bundle = await resolveCantonOneSigRequestContext(\n new CantonSdk(args.client),\n request.resolver,\n current.value.timestamp,\n );\n appendDisclosures(bundle.disclosedContracts);\n applyTarget(commands, target, bundle.context);\n }\n continue;\n }\n\n if (refresh.resolver.type === 'finalizeCallback') {\n const callback = cantonFinalizeCallbackRefreshSchema.parse(refresh);\n const bundle = await resolveCantonFinalizeCallback(\n new CantonSdk(args.client),\n callback.resolver,\n );\n appendDisclosures(bundle.disclosedContracts);\n for (const target of callback.targets)\n applyTarget(commands, target, bundle.executeContext);\n for (const target of callback.callbackCidTargets)\n applyTarget(commands, target, bundle.callbackCid);\n continue;\n }\n\n if (refresh.resolver.type === 'transferInstructionAcceptContext') {\n const acceptance = cantonTransferInstructionAcceptContextRefreshSchema.parse(refresh);\n for (const target of acceptance.targets) {\n readTarget(commands, target, target.arguments[0]!.path);\n const command = commands[target.commandIndex]!;\n if (\n !('exerciseCommand' in command) ||\n command.exerciseCommand.contractId !== acceptance.resolver.contractId\n ) {\n throw new Error(\n 'Accept context target must match the pinned transfer instruction',\n );\n }\n }\n const bundle = await args.client.getTransferInstructionAcceptContext({\n contractId: acceptance.resolver.contractId,\n });\n appendDisclosures(bundle.disclosedContracts);\n for (const target of acceptance.targets) {\n applyTarget(commands, target, bundle.choiceContext);\n }\n continue;\n }\n\n if (isAmuletContextRefresh(refresh)) {\n const bundle = await args.client.getAmuletContextWithExternalRules({\n admin: refresh.resolver.dsoParty,\n id: 'Amulet',\n });\n appendDisclosures(bundle.disclosedContracts);\n for (const target of refresh.targets) {\n applyTarget(commands, target, bundle.amuletContext);\n }\n for (const target of refresh.contractIdTargets ?? []) {\n applyTarget(commands, target, bundle.externalPartyAmuletRulesCid);\n }\n }\n }\n\n // Timestamp refreshes run after all external reads so their shared instant is\n // as close as possible to prepareForSigning, regardless of declaration order.\n const now = new Date();\n for (const refresh of args.refreshPlan.commands) {\n if (!isTimestampRefresh(refresh)) continue;\n\n for (const target of refresh.targets) {\n for (const { path, offsetMs = 0 } of target.arguments) {\n const iso = new Date(now.getTime() + offsetMs).toISOString();\n const current = readTarget(commands, target, path);\n let value: unknown;\n if (isCantonTime(current)) {\n value = iso;\n } else if (\n isRecord(current) &&\n current.tag === 'AV_Time' &&\n isCantonTime(current.value)\n ) {\n value = { ...current, value: iso };\n } else {\n throw new Error('Timestamp refresh target must contain a Canton Time value');\n }\n applyPatch(commands, target, path, value);\n }\n }\n }\n\n for (const refresh of args.refreshPlan.commands) {\n if (refresh.resolver.type !== 'transferInstructionAcceptContext') continue;\n for (const target of refresh.targets) {\n const command = commands[target.commandIndex]!;\n if (\n !('exerciseCommand' in command) ||\n command.exerciseCommand.contractId !== refresh.resolver.contractId\n ) {\n throw new Error('Accept context target must match the pinned transfer instruction');\n }\n }\n }\n\n for (const refresh of args.refreshPlan.commands) {\n if (refresh.resolver.type !== 'finalizeCallback') continue;\n const callback = cantonFinalizeCallbackRefreshSchema.parse(refresh);\n for (const target of [...callback.targets, ...callback.callbackCidTargets]) {\n const command = commands[target.commandIndex]!;\n if (\n !('exerciseCommand' in command) ||\n !isRecord(command.exerciseCommand.choiceArgument) ||\n command.exerciseCommand.choiceArgument.pendingCallbackCid !==\n callback.resolver.pendingCallbackCid\n ) {\n throw new Error('Callback target must match the pinned PendingCallback');\n }\n }\n }\n\n for (const replacement of replacements ?? []) {\n for (const target of replacement.targets) {\n for (const { path } of target.arguments) {\n if (readTarget(commands, target, path) !== args.senderParty) {\n throw new Error('Refresh cannot change the bound sender party');\n }\n }\n }\n }\n const disclosedContracts = [...disclosureMap.values()];\n if (containsDeferredSentinel(commands)) {\n throw new Error('Canton refreshPlan cannot return deferred sentinels');\n }\n\n return {\n commands: commands as CantonCommand[],\n disclosedContracts,\n };\n};\n"]}
|
|
1
|
+
{"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":";;;;;;;;;;;;;;;;AAgDA,IAAMA,mBAAAA,GAAsB,sDAAA;AAE5B,IAAMC,YAAAA,mBAAe,MAAA,CAAA,CACjBC,QAAAA,EACAC,WAAAA,EACAC,KAAAA,KAAAA;AAEA,EAAA,IAAI,CAACC,sBAAAA,CAAuBH,QAAAA,CAAAA,SAAkBA,QAAAA,CAASI,KAAAA;AACvD,EAAA,IAAI,CAACH,WAAAA,EAAa;AACd,IAAA,MAAM,IAAII,KAAAA,CAAM,CAAA,EAAGH,KAAAA,CAAAA,iCAAAA,CAAwC,CAAA;AAC/D,EAAA;AACA,EAAA,OAAOD,WAAAA;AACX,CAAA,EAVqB,cAAA,CAAA;AAYrB,IAAMK,uBAAAA,mBAA0B,MAAA,CAAA,CAACC,QAAAA,EAA4BC,KAAAA,KAAAA;AACzD,EAAA,MAAMC,GAAAA,GAAMC,sBAAAA,CAAuBH,QAAAA,CAASI,YAAAA,CAAaC,gBAAgBJ,KAAAA,CAAAA;AACzE,EAAA,MAAMK,KAAAA,GACFJ,QAAQ,IAAA,IAAQ,OAAOA,QAAQ,QAAA,IAAY,eAAA,IAAmBA,GAAAA,GACvDA,GAAAA,CAAoCK,aAAAA,GACrCL,GAAAA;AACV,EAAA,OAAOM,gBAAAA,CACHF,OACA,CAAA,SAAA,EAAYN,QAAAA,CAASI,aAAaK,UAAU,CAAA,eAAA,EAAkBR,KAAAA,CAAAA,CAAO,CAAA;AAE7E,CAAA,EAVgC,yBAAA,CAAA;AAYzB,IAAMS,oBAAAA,mBAAuB,MAAA,CAAA,CAChCC,SAAAA,EACAV,KAAAA,EACAW,mBAEAC,qBAAAA,CAAsBF,SAAAA,EAAWV,KAAAA,EAAOW,cAAAA,EAAgB,CAACZ,QAAAA,KACrDD,uBAAAA,CAAwBC,QAAAA,EAAUC,KAAAA,CAAAA,CAAAA,EANN,sBAAA;AASpC,IAAMa,qBAAAA,2BAAyBC,QAAAA,MAAyD;EACpFC,IAAAA,EAAM,mBAAA;AACNC,EAAAA,aAAAA,EAAeF,QAAAA,CAASG,OAAAA;AACxBC,EAAAA,mBAAAA,EAAqBJ,QAAAA,CAASI,mBAAAA;EAC9BC,UAAAA,EAAYL,QAAAA,CAASK,cAAcL,QAAAA,CAASM,WAAAA;AAC5CA,EAAAA,WAAAA,EAAaN,QAAAA,CAASM,WAAAA;AACtBC,EAAAA,mBAAAA,EAAqBP,QAAAA,CAASQ;AAClC,CAAA,CAAA,EAP8B,uBAAA,CAAA;AAS9B,IAAMC,wBAAAA,mBAA2B,MAAA,CAAA,OAC7BC,QAAAA,EACAV,QAAAA,KAAAA;AAEA,EAAA,MAAMJ,YAAY,MAAMc,QAAAA,CAASC,sBAAAA,CAAuBZ,qBAAAA,CAAsBC,QAAAA,CAAAA,CAAAA;AAC9E,EAAA,IAAI,CAACA,QAAAA,CAASN,UAAAA,EAAY,OAAOE,SAAAA;AACjC,EAAA,MAAMgB,MAAAA,GAAS,MAAMF,QAAAA,CAASC,sBAAAA,CAC1BZ,sBAAsBC,QAAAA,CAASN,UAAAA,CAAWM,QAAQ,CAAA,CAAA;AAEtD,EAAA,IAAIY,MAAAA,CAAOC,WAAW,CAAA,EAClB,MAAM,IAAI9B,KAAAA,CACN,CAAA,2BAAA,EAA8B6B,MAAAA,CAAOC,MAAM,CAAA,gCAAA,CAAkC,CAAA;AAErF,EAAA,MAAMnB,UAAAA,GAAaN,uBACfwB,MAAAA,CAAO,CAAA,EAAIvB,YAAAA,CAAaC,cAAAA,EACxBU,QAAAA,CAASN,UAAAA,CAAWR,KAAK,CAAA;AAE7B,EAAA,IAAI,OAAOQ,eAAe,QAAA,IAAY,CAACA,YACnC,MAAM,IAAIX,MAAM,wDAAA,CAAA;AACpB,EAAA,OAAOa,UAAUkB,MAAAA,CAAO,CAAC7B,aAAaA,QAAAA,CAASI,YAAAA,CAAaK,eAAeA,UAAAA,CAAAA;AAC/E,CAAA,EApBiC,0BAAA,CAAA;AAsBjC,IAAMqB,oBAAAA,mBAAuB,MAAA,CAAA,OACzBL,QAAAA,EACAE,MAAAA,KAAAA;AAEA,EAAA,MAAMhB,SAAAA,GAAY,MAAMa,wBAAAA,CAAyBC,QAAAA,EAAUE,OAAOZ,QAAQ,CAAA;AAC1E,EAAA,IAAIJ,SAAAA,CAAUiB,WAAW,CAAA,EAAG;AACxB,IAAA,MAAM,IAAI9B,KAAAA,CACN,CAAA,8BAAA,EAAiCa,SAAAA,CAAUiB,MAAM,CAAA,gCAAA,CAAkC,CAAA;AAE3F,EAAA;AACA,EAAA,MAAMtB,KAAAA,GAAQH,uBAAuBQ,SAAAA,CAAU,CAAA,EAAIP,YAAAA,CAAaC,cAAAA,EAAgBsB,OAAO1B,KAAK,CAAA;AAC5F,EAAA,IAAIO,iBAAiBF,KAAAA,EAAO,CAAA,eAAA,EAAkBqB,OAAO1B,KAAK,CAAA,CAAE,KAAK,EAAA,EAAI;AACjE,IAAA,MAAM,IAAIH,KAAAA,CAAM,CAAA,eAAA,EAAkB6B,MAAAA,CAAO1B,KAAK,CAAA,iBAAA,CAAmB,CAAA;AACrE,EAAA;AACA,EAAA,OAAOK,KAAAA;AACX,CAAA,EAf6B,sBAAA,CAAA;AAiB7B,IAAMyB,qBAAAA,mBAAwB,MAAA,CAAA,OAC1BpB,SAAAA,EACAqB,SAAAA,EACAP,QAAAA,KAAAA;AAEA,EAAA,QAAQO,UAAUC,IAAAA;IACd,KAAK,YAAA;AACD,MAAA,IAAItB,SAAAA,CAAUiB,WAAW,CAAA,EAAG;AACxB,QAAA,MAAM,IAAI9B,KAAAA,CACN,CAAA,kCAAA,EAAqCa,SAAAA,CAAUiB,MAAM,CAAA,gCAAA,CAAkC,CAAA;AAE/F,MAAA;AACA,MAAA,OAAOjB,SAAAA;IACX,KAAK,KAAA;AACD,MAAA,OAAOA,SAAAA;IACX,KAAK,KAAA;AACD,MAAA,OAAOD,oBAAAA,CACHC,SAAAA,EACAqB,SAAAA,CAAU/B,KAAAA,EACV,OAAO+B,SAAAA,CAAU1B,KAAAA,KAAU,QAAA,GACrB0B,SAAAA,CAAU1B,QACV,MAAMwB,oBAAAA,CAAqBL,QAAAA,EAAUO,SAAAA,CAAU1B,KAAK,CAAA,CAAA;AAEtE;AACJ,CAAA,EAxB8B,uBAAA,CAAA;AA0BvB,IAAM4B,4BAAAA,iCAAsCC,IAAAA,KAAAA;AAM/C,EAAA,MAAMC,aAAa5C,YAAAA,CACf2C,IAAAA,CAAKpB,SAASG,OAAAA,EACdiB,IAAAA,CAAKzC,aACL,2BAAA,CAAA;AAEJ,EAAA,MAAM+B,WAAWY,6BAAAA,CAA8B;AAC3CC,IAAAA,MAAAA,EAAQH,IAAAA,CAAKG,MAAAA;AACb5C,IAAAA,WAAAA,EAAayC,IAAAA,CAAKzC,WAAAA;IAClB6C,cAAAA,EAAgB;AAACH,MAAAA;;AACjBI,IAAAA,iBAAAA,+BAAyBC,MAAAA,EAAN,mBAAA;GACvB,CAAA;AACA,EAAA,MAAMC,QAAAA,GAAW,MAAMX,qBAAAA,CACnB,MAAMP,wBAAAA,CAAyBC,QAAAA,EAAUU,IAAAA,CAAKpB,QAAQ,CAAA,EACtDoB,IAAAA,CAAKH,SAAAA,EACLP,QAAAA,CAAAA;AAEJ,EAAA,OAAO;AACHkB,IAAAA,WAAAA,EAAaD,SAASE,GAAAA,CAAI,CAAC,EAAExC,YAAAA,EAAY,KAAOA,aAAaK,UAAU;AAC3E,GAAA;AACJ,CAAA,EAzB4C,8BAAA;AA2B5C,IAAMoC,QAAAA,mBAAW,MAAA,CAAA,CAACvC,KAAAA,KACdA,KAAAA,KAAU,IAAA,IAAQ,OAAOA,KAAAA,KAAU,QAAA,IAAY,CAACwC,KAAAA,CAAMC,OAAAA,CAAQzC,KAAAA,CAAAA,EADjD,UAAA,CAAA;AAGjB,IAAM0C,+BAAe,MAAA,CAAA,CAAC1C,KAAAA,KAClB,OAAOA,KAAAA,KAAU,YACjBf,mBAAAA,CAAoB0D,IAAAA,CAAK3C,KAAAA,CAAAA,IACzB4C,OAAOC,QAAAA,CAASC,IAAAA,CAAKC,KAAAA,CAAM/C,KAAAA,CAAAA,CAAAA,EAHV,cAAA,CAAA;AAKrB,IAAMgD,0CAA0B,MAAA,CAAA,CAACC,OAAAA,KAC7BA,OAAAA,CAAQ9B,QAAAA,CAAST,SAAS,gBAAA,EADE,yBAAA,CAAA;AAGhC,IAAMwC,+CAA+B,MAAA,CAAA,CACjCD,OAAAA,KAC8CA,OAAAA,CAAQ9B,QAAAA,CAAST,SAAS,qBAAA,EAFvC,8BAAA,CAAA;AAIrC,IAAMyC,yCAAyB,MAAA,CAAA,CAACF,OAAAA,KAC5BA,OAAAA,CAAQ9B,QAAAA,CAAST,SAAS,eAAA,EADC,wBAAA,CAAA;AAG/B,IAAM0C,qCAAqB,MAAA,CAAA,CAACH,OAAAA,KACxBA,OAAAA,CAAQ9B,QAAAA,CAAST,SAAS,WAAA,EADH,oBAAA,CAAA;AAG3B,IAAM2C,aAAAA,mBAAgB,MAAA,CAAA,CAACC,IAAAA,EAAeC,IAAAA,EAAyBvD,KAAAA,KAAAA;AAC3D,EAAA,IAAIuD,IAAAA,CAAKjC,MAAAA,KAAW,CAAA,EAAG,OAAOtB,KAAAA;AAE9B,EAAA,IAAIwD,OAAAA,GAAUF,IAAAA;AACd,EAAA,KAAA,MAAW,CAACG,QAAAA,EAAUC,OAAAA,CAAAA,IAAYH,IAAAA,CAAKI,SAAO,EAAI;AAC9C,IAAA,MAAMC,MAAAA,GAASH,QAAAA,KAAaF,IAAAA,CAAKjC,MAAAA,GAAS,CAAA;AAC1C,IAAA,IAAI,WAAWoC,OAAAA,EAAS;AACpB,MAAA,IAAI,CAACnB,QAAAA,CAASiB,OAAAA,KAAY,EAAEE,OAAAA,CAAQ/D,SAAS6D,OAAAA,CAAAA,EAAU;AACnD,QAAA,MAAM,IAAIhE,KAAAA,CAAM,CAAA,sBAAA,EAAyBkE,OAAAA,CAAQ/D,KAAK,CAAA,gBAAA,CAAkB,CAAA;AAC5E,MAAA;AACA,MAAA,IAAIiE,MAAAA,EAAQ;AACRJ,QAAAA,OAAAA,CAAQE,OAAAA,CAAQ/D,KAAK,CAAA,GAAIK,KAAAA;AACzB,QAAA,OAAOsD,IAAAA;AACX,MAAA;AACAE,MAAAA,OAAAA,GAAUA,OAAAA,CAAQE,QAAQ/D,KAAK,CAAA;AAC/B,MAAA;AACJ,IAAA;AACA,IAAA,IAAI,WAAW+D,OAAAA,EAAS;AACpB,MAAA,IAAI,CAAClB,MAAMC,OAAAA,CAAQe,OAAAA,KAAYE,OAAAA,CAAQG,KAAAA,IAASL,QAAQlC,MAAAA,EAAQ;AAC5D,QAAA,MAAM,IAAI9B,KAAAA,CAAM,CAAA,2BAAA,EAA8BkE,OAAAA,CAAQG,KAAK,CAAA,eAAA,CAAiB,CAAA;AAChF,MAAA;AACA,MAAA,IAAID,MAAAA,EAAQ;AACRJ,QAAAA,OAAAA,CAAQE,OAAAA,CAAQG,KAAK,CAAA,GAAI7D,KAAAA;AACzB,QAAA,OAAOsD,IAAAA;AACX,MAAA;AACAE,MAAAA,OAAAA,GAAUA,OAAAA,CAAQE,QAAQG,KAAK,CAAA;AAC/B,MAAA;AACJ,IAAA;AAEA,IAAA,IAAI,CAACrB,KAAAA,CAAMC,OAAAA,CAAQe,OAAAA,CAAAA,EAAU;AACzB,MAAA,MAAM,IAAIhE,KAAAA,CAAM,CAAA,yBAAA,EAA4BkE,OAAAA,CAAQI,UAAU,CAAA,iBAAA,CAAmB,CAAA;AACrF,IAAA;AACA,IAAA,MAAMC,UAAUP,OAAAA,CAAQjC,MAAAA,CACpB,CAACyC,KAAAA,KACGxB,MAAMC,OAAAA,CAAQuB,KAAAA,CAAAA,IAAUA,KAAAA,CAAM1C,WAAW,CAAA,IAAK0C,KAAAA,CAAM,CAAA,CAAA,KAAON,QAAQI,UAAU,CAAA;AAErF,IAAA,IAAIC,OAAAA,CAAQzC,WAAW,CAAA,EAAG;AACtB,MAAA,MAAM,IAAI9B,MACN,CAAA,6BAAA,EAAgCkE,OAAAA,CAAQI,UAAU,CAAA,UAAA,EAAaC,OAAAA,CAAQzC,MAAM,CAAA,QAAA,CAAU,CAAA;AAE/F,IAAA;AACA,IAAA,IAAIsC,MAAAA,EAAQ;AACRG,MAAAA,OAAAA,CAAQ,CAAA,CAAA,CAAI,CAAA,CAAA,GAAK/D,KAAAA;AACjB,MAAA,OAAOsD,IAAAA;AACX,IAAA;AACAE,IAAAA,OAAAA,GAAUO,OAAAA,CAAQ,CAAA,CAAA,CAAI,CAAA,CAAA;AAC1B,EAAA;AACA,EAAA,OAAOT,IAAAA;AACX,CAAA,EAhDsB,eAAA,CAAA;AAkDtB,IAAMW,UAAAA,mBAAa,MAAA,CAAA,CAACX,IAAAA,EAAeC,IAAAA,KAAAA;AAC/B,EAAA,IAAIC,OAAAA,GAAUF,IAAAA;AACd,EAAA,KAAA,MAAWI,WAAWH,IAAAA,EAAM;AACxB,IAAA,IAAI,WAAWG,OAAAA,EAAS;AACpB,MAAA,IAAI,CAACnB,QAAAA,CAASiB,OAAAA,KAAY,EAAEE,OAAAA,CAAQ/D,SAAS6D,OAAAA,CAAAA,EAAU;AACnD,QAAA,MAAM,IAAIhE,KAAAA,CAAM,CAAA,sBAAA,EAAyBkE,OAAAA,CAAQ/D,KAAK,CAAA,gBAAA,CAAkB,CAAA;AAC5E,MAAA;AACA6D,MAAAA,OAAAA,GAAUA,OAAAA,CAAQE,QAAQ/D,KAAK,CAAA;AAC/B,MAAA;AACJ,IAAA;AACA,IAAA,IAAI,WAAW+D,OAAAA,EAAS;AACpB,MAAA,IAAI,CAAClB,MAAMC,OAAAA,CAAQe,OAAAA,KAAYE,OAAAA,CAAQG,KAAAA,IAASL,QAAQlC,MAAAA,EAAQ;AAC5D,QAAA,MAAM,IAAI9B,KAAAA,CAAM,CAAA,2BAAA,EAA8BkE,OAAAA,CAAQG,KAAK,CAAA,eAAA,CAAiB,CAAA;AAChF,MAAA;AACAL,MAAAA,OAAAA,GAAUA,OAAAA,CAAQE,QAAQG,KAAK,CAAA;AAC/B,MAAA;AACJ,IAAA;AAEA,IAAA,IAAI,CAACrB,KAAAA,CAAMC,OAAAA,CAAQe,OAAAA,CAAAA,EAAU;AACzB,MAAA,MAAM,IAAIhE,KAAAA,CAAM,CAAA,yBAAA,EAA4BkE,OAAAA,CAAQI,UAAU,CAAA,iBAAA,CAAmB,CAAA;AACrF,IAAA;AACA,IAAA,MAAMC,UAAUP,OAAAA,CAAQjC,MAAAA,CACpB,CAACyC,KAAAA,KACGxB,MAAMC,OAAAA,CAAQuB,KAAAA,CAAAA,IAAUA,KAAAA,CAAM1C,WAAW,CAAA,IAAK0C,KAAAA,CAAM,CAAA,CAAA,KAAON,QAAQI,UAAU,CAAA;AAErF,IAAA,IAAIC,OAAAA,CAAQzC,WAAW,CAAA,EAAG;AACtB,MAAA,MAAM,IAAI9B,MACN,CAAA,6BAAA,EAAgCkE,OAAAA,CAAQI,UAAU,CAAA,UAAA,EAAaC,OAAAA,CAAQzC,MAAM,CAAA,QAAA,CAAU,CAAA;AAE/F,IAAA;AACAkC,IAAAA,OAAAA,GAAUO,OAAAA,CAAQ,CAAA,CAAA,CAAI,CAAA,CAAA;AAC1B,EAAA;AACA,EAAA,OAAOP,OAAAA;AACX,CAAA,EAjCmB,YAAA,CAAA;AAmCnB,IAAMU,UAAAA,mBAAa,MAAA,CAAA,CACfC,QAAAA,EACAC,MAAAA,EACAb,IAAAA,KAAAA;AAEA,EAAA,MAAMc,OAAAA,GAAUF,QAAAA,CAASC,MAAAA,CAAOE,YAAY,CAAA;AAC5C,EAAA,IAAI,CAACD,OAAAA,EAAS;AACV,IAAA,MAAM,IAAI7E,KAAAA,CAAM,CAAA,sBAAA,EAAyB4E,MAAAA,CAAOE,YAAY,CAAA,eAAA,CAAiB,CAAA;AACjF,EAAA;AAEA,EAAA,IAAIF,MAAAA,CAAOC,YAAY,UAAA,EAAY;AAC/B,IAAA,IAAI,EAAE,qBAAqBA,OAAAA,CAAAA,EAAU;AACjC,MAAA,MAAM,IAAI7E,KAAAA,CAAM,CAAA,sBAAA,EAAyB4E,MAAAA,CAAOE,YAAY,CAAA,mBAAA,CAAqB,CAAA;AACrF,IAAA;AACA,IAAA,IAAID,OAAAA,CAAQE,eAAAA,CAAgBC,MAAAA,KAAWJ,MAAAA,CAAOI,MAAAA,EAAQ;AAClD,MAAA,MAAM,IAAIhF,KAAAA,CACN,CAAA,sBAAA,EAAyB4E,MAAAA,CAAOE,YAAY,CAAA,iBAAA,EAAoBF,MAAAA,CAAOI,MAAM,CAAA,QAAA,EAAWH,OAAAA,CAAQE,eAAAA,CAAgBC,MAAM,CAAA,CAAE,CAAA;AAEhI,IAAA;AACA,IAAA,OAAOP,UAAAA,CAAWI,OAAAA,CAAQE,eAAAA,CAAgBE,cAAAA,EAAgBlB,IAAAA,CAAAA;AAC9D,EAAA;AAEA,EAAA,IAAI,EAAE,mBAAmBc,OAAAA,CAAAA,EAAU;AAC/B,IAAA,MAAM,IAAI7E,KAAAA,CAAM,CAAA,sBAAA,EAAyB4E,MAAAA,CAAOE,YAAY,CAAA,gBAAA,CAAkB,CAAA;AAClF,EAAA;AACA,EAAA,IAAID,OAAAA,CAAQK,aAAAA,CAAc5D,UAAAA,KAAesD,MAAAA,CAAOO,QAAAA,EAAU;AACtD,IAAA,MAAM,IAAInF,KAAAA,CACN,CAAA,sBAAA,EAAyB4E,MAAAA,CAAOE,YAAY,CAAA,mBAAA,EAAsBF,MAAAA,CAAOO,QAAQ,CAAA,QAAA,EAAWN,OAAAA,CAAQK,aAAAA,CAAc5D,UAAU,CAAA,CAAE,CAAA;AAEtI,EAAA;AACA,EAAA,OAAOmD,UAAAA,CAAWI,OAAAA,CAAQK,aAAAA,CAAcE,eAAAA,EAAiBrB,IAAAA,CAAAA;AAC7D,CAAA,EA/BmB,YAAA,CAAA;AAiCnB,IAAMsB,UAAAA,mBAAa,MAAA,CAAA,CACfV,QAAAA,EACAC,MAAAA,EACAb,MACAvD,KAAAA,KAAAA;AAEA,EAAA,MAAMqE,OAAAA,GAAUF,QAAAA,CAASC,MAAAA,CAAOE,YAAY,CAAA;AAC5C,EAAA,IAAI,CAACD,OAAAA,EAAS;AACV,IAAA,MAAM,IAAI7E,KAAAA,CAAM,CAAA,sBAAA,EAAyB4E,MAAAA,CAAOE,YAAY,CAAA,eAAA,CAAiB,CAAA;AACjF,EAAA;AAEA,EAAA,IAAIF,MAAAA,CAAOC,YAAY,UAAA,EAAY;AAC/B,IAAA,IAAI,EAAE,qBAAqBA,OAAAA,CAAAA,EAAU;AACjC,MAAA,MAAM,IAAI7E,KAAAA,CAAM,CAAA,sBAAA,EAAyB4E,MAAAA,CAAOE,YAAY,CAAA,mBAAA,CAAqB,CAAA;AACrF,IAAA;AACA,IAAA,IAAID,OAAAA,CAAQE,eAAAA,CAAgBC,MAAAA,KAAWJ,MAAAA,CAAOI,MAAAA,EAAQ;AAClD,MAAA,MAAM,IAAIhF,KAAAA,CACN,CAAA,sBAAA,EAAyB4E,MAAAA,CAAOE,YAAY,CAAA,iBAAA,EAAoBF,MAAAA,CAAOI,MAAM,CAAA,QAAA,EAAWH,OAAAA,CAAQE,eAAAA,CAAgBC,MAAM,CAAA,CAAE,CAAA;AAEhI,IAAA;AACAH,IAAAA,OAAAA,CAAQE,gBAAgBE,cAAAA,GAAiBpB,aAAAA,CACrCgB,QAAQE,eAAAA,CAAgBE,cAAAA,EACxBlB,MACAvD,KAAAA,CAAAA;AAEJ,IAAA;AACJ,EAAA;AAEA,EAAA,IAAI,EAAE,mBAAmBqE,OAAAA,CAAAA,EAAU;AAC/B,IAAA,MAAM,IAAI7E,KAAAA,CAAM,CAAA,sBAAA,EAAyB4E,MAAAA,CAAOE,YAAY,CAAA,gBAAA,CAAkB,CAAA;AAClF,EAAA;AACA,EAAA,IAAID,OAAAA,CAAQK,aAAAA,CAAc5D,UAAAA,KAAesD,MAAAA,CAAOO,QAAAA,EAAU;AACtD,IAAA,MAAM,IAAInF,KAAAA,CACN,CAAA,sBAAA,EAAyB4E,MAAAA,CAAOE,YAAY,CAAA,mBAAA,EAAsBF,MAAAA,CAAOO,QAAQ,CAAA,QAAA,EAAWN,OAAAA,CAAQK,aAAAA,CAAc5D,UAAU,CAAA,CAAE,CAAA;AAEtI,EAAA;AACAuD,EAAAA,OAAAA,CAAQK,cAAcE,eAAAA,GAAkBvB,aAAAA,CACpCgB,QAAQK,aAAAA,CAAcE,eAAAA,EACtBrB,MACAvD,KAAAA,CAAAA;AAER,CAAA,EAzCmB,YAAA,CAAA;AA2CnB,IAAM8E,WAAAA,mBAAc,MAAA,CAAA,CAChBX,QAAAA,EACAC,MAAAA,EACApE,KAAAA,KAAAA;AAEA,EAAA,IAAI,WAAWoE,MAAAA,EAAQ;AACnB,IAAA,MAAMC,OAAAA,GAAUF,QAAAA,CAASC,MAAAA,CAAOE,YAAY,CAAA;AAC5C,IAAA,IAAI,CAACD,OAAAA,EAAS;AACV,MAAA,MAAM,IAAI7E,KAAAA,CAAM,CAAA,sBAAA,EAAyB4E,MAAAA,CAAOE,YAAY,CAAA,eAAA,CAAiB,CAAA;AACjF,IAAA;AACA,IAAA,IAAI,EAAE,qBAAqBD,OAAAA,CAAAA,EAAU;AACjC,MAAA,MAAM,IAAI7E,KAAAA,CAAM,CAAA,sBAAA,EAAyB4E,MAAAA,CAAOE,YAAY,CAAA,mBAAA,CAAqB,CAAA;AACrF,IAAA;AACA,IAAA,IAAIF,OAAOI,MAAAA,KAAWrC,MAAAA,IAAakC,QAAQE,eAAAA,CAAgBC,MAAAA,KAAWJ,OAAOI,MAAAA,EAAQ;AACjF,MAAA,MAAM,IAAIhF,KAAAA,CACN,CAAA,sBAAA,EAAyB4E,MAAAA,CAAOE,YAAY,CAAA,iBAAA,EAAoBF,MAAAA,CAAOI,MAAM,CAAA,QAAA,EAAWH,OAAAA,CAAQE,eAAAA,CAAgBC,MAAM,CAAA,CAAE,CAAA;AAEhI,IAAA;AACA,IAAA,IAAI,OAAOxE,UAAU,QAAA,EAAU;AAC3B,MAAA,MAAM,IAAIR,MAAM,uDAAA,CAAA;AACpB,IAAA;AACA6E,IAAAA,OAAAA,CAAQE,gBAAgBpE,UAAAA,GAAaH,KAAAA;AACrC,IAAA;AACJ,EAAA;AAEA,EAAA,KAAA,MAAW+E,QAAAA,IAAYX,OAAOY,SAAAA,EAAW;AACrCH,IAAAA,UAAAA,CAAWV,QAAAA,EAAUC,MAAAA,EAAQW,QAAAA,CAASxB,IAAAA,EAAMvD,KAAAA,CAAAA;AAChD,EAAA;AACJ,CAAA,EA5BoB,aAAA,CAAA;AA8BpB,IAAMiF,wBAAAA,2BAA4BjF,KAAAA,KAAAA;AAC9B,EAAA,IAAIkF,wBAAAA,CAAyBlF,KAAAA,CAAAA,EAAQ,OAAO,IAAA;AAC5C,EAAA,IAAIwC,KAAAA,CAAMC,OAAAA,CAAQzC,KAAAA,CAAAA,EAAQ,OAAOA,KAAAA,CAAMmF,IAAAA,CAAK,CAACC,IAAAA,KAASH,wBAAAA,CAAyBG,IAAAA,CAAAA,CAAAA;AAC/E,EAAA,IAAI,CAAC7C,QAAAA,CAASvC,KAAAA,CAAAA,EAAQ,OAAO,KAAA;AAC7B,EAAA,OAAOqF,MAAAA,CAAOC,OAAOtF,KAAAA,CAAAA,CAAOmF,KAAK,CAACI,KAAAA,KAAUN,wBAAAA,CAAyBM,KAAAA,CAAAA,CAAAA;AACzE,CAAA,EALiC,0BAAA,CAAA;AAOjC,IAAMC,mCAAmB,MAAA,CAAA,CAACC,IAAAA,EAA+BC,UACrDD,IAAAA,CAAKtF,UAAAA,KAAeuF,MAAMvF,UAAAA,IAC1BsF,IAAAA,CAAK3E,eAAe4E,KAAAA,CAAM5E,UAAAA,IAC1B2E,KAAKE,gBAAAA,KAAqBD,KAAAA,CAAMC,oBAChCF,IAAAA,CAAKG,cAAAA,KAAmBF,MAAME,cAAAA,EAJT,kBAAA,CAAA;AAMlB,IAAMC,wBAAAA,iCAAkChE,IAAAA,KAAAA;AAQ3C,EAAA,MAAMiE,eAAeC,uBAAAA,CAAwBC,KAAAA,CAAMC,iBAAiBlD,KAAAA,CAChElB,IAAAA,CAAKqE,YAAYD,gBAAgB,CAAA;AAErC,EAAA,MAAM9B,QAAAA,GAAWgC,eAAAA,CAAgBtE,IAAAA,CAAKuE,kBAAkB,CAAA;AACxD,EAAA,IAAIN,YAAAA,EAAc;AACd,IAAA,IACI,OAAOjE,IAAAA,CAAKzC,WAAAA,KAAgB,QAAA,IAC5B,CAACyC,IAAAA,CAAKzC,WAAAA,CAAYiH,IAAAA,EAAI,IACtBnB,wBAAAA,CAAyBrD,IAAAA,CAAKzC,WAAW,CAAA,EAC3C;AACE,MAAA,MAAM,IAAII,MAAM,iDAAA,CAAA;AACpB,IAAA;AACA,IAAA,KAAA,MAAW8G,eAAeR,YAAAA,EAAc;AACpC,MAAA,KAAA,MAAW1B,MAAAA,IAAUkC,YAAYC,OAAAA,EAAS;AACtC,QAAA,KAAA,MAAW,EAAEhD,IAAAA,EAAI,IAAMa,MAAAA,CAAOY,SAAAA,EAAW;AACrC,UAAA,IAAId,WAAWC,QAAAA,EAAUC,MAAAA,EAAQb,IAAAA,CAAAA,KAAUiD,sBAAAA,EAAwB;AAC/D,YAAA,MAAM,IAAIhH,MACN,2DAAA,CAAA;AAER,UAAA;AACAqF,UAAAA,UAAAA,CAAWV,QAAAA,EAAUC,MAAAA,EAAQb,IAAAA,EAAM1B,IAAAA,CAAKzC,WAAW,CAAA;AACvD,QAAA;AACJ,MAAA;AACJ,IAAA;AACJ,EAAA;AACA,EAAA,IAAI6F,wBAAAA,CAAyBd,QAAAA,CAAAA,EAAW;AACpC,IAAA,MAAM,IAAI3E,MAAM,+DAAA,CAAA;AACpB,EAAA;AAEA,EAAA,KAAA,MAAWwE,KAAAA,IAASnC,IAAAA,CAAKqE,WAAAA,CAAY/B,QAAAA,EAAU;AAC3C,IAAA,IAAIH,KAAAA,CAAM7C,QAAAA,CAAST,IAAAA,KAAS,kBAAA,EAAoB;AAChD,IAAA,MAAM+F,QAAAA,GAAWC,mCAAAA,CAAoC3D,KAAAA,CAAMiB,KAAAA,CAAAA;AAC3D,IAAA,MAAM2C,cAAAA,GAAiBF,SAASF,OAAAA,CAAQjE,GAAAA,CAAI,CAAC8B,MAAAA,KAAWA,MAAAA,CAAOE,YAAY,CAAA,CAAEsC,IAAAA,EAAI;AACjF,IAAA,MAAMC,UAAAA,GAAaJ,SAASK,kBAAAA,CAAmBxE,GAAAA,CAAI,CAAC8B,MAAAA,KAAWA,MAAAA,CAAOE,YAAY,CAAA,CAAEsC,IAAAA,EAAI;AACxF,IAAA,IAAIG,KAAKC,SAAAA,CAAUL,cAAAA,MAAoBI,IAAAA,CAAKC,SAAAA,CAAUH,UAAAA,CAAAA,EAAa;AAC/D,MAAA,MAAM,IAAIrH,MACN,yEAAA,CAAA;AAER,IAAA;AACA,IAAA,KAAA,MAAW4E,MAAAA,IAAU;SAAIqC,QAAAA,CAASF,OAAAA;SAAYE,QAAAA,CAASK;AAAqB,KAAA,EAAA;AACxE5C,MAAAA,UAAAA,CAAWC,UAAUC,MAAAA,EAAQA,MAAAA,CAAOY,SAAAA,CAAU,CAAA,EAAGzB,IAAI,CAAA;AACrD,MAAA,MAAMc,OAAAA,GAAUF,QAAAA,CAASC,MAAAA,CAAOE,YAAY,CAAA;AAC5C,MAAA,IACI,EAAE,iBAAA,IAAqBD,OAAAA,CAAAA,IACvB,CAAC9B,SAAS8B,OAAAA,CAAQE,eAAAA,CAAgBE,cAAc,CAAA,IAChDJ,QAAQE,eAAAA,CAAgBE,cAAAA,CAAewC,kBAAAA,KACnCR,QAAAA,CAAStF,SAAS8F,kBAAAA,EACxB;AACE,QAAA,MAAM,IAAIzH,MAAM,uDAAA,CAAA;AACpB,MAAA;AACJ,IAAA;AACJ,EAAA;AAEA,EAAA,MAAM0H,aAAAA,uBAAoBC,GAAAA,EAAAA;AAC1B,EAAA,MAAMjF,iBAAAA,2BAAqBkF,WAAAA,KAAAA;AACvB,IAAA,KAAA,MAAWC,cAAcD,WAAAA,EAAa;AAClC,MAAA,MAAME,QAAAA,GAAWJ,aAAAA,CAAcK,GAAAA,CAAIF,UAAAA,CAAWlH,UAAU,CAAA;AACxD,MAAA,IAAImH,QAAAA,IAAY,CAAC9B,gBAAAA,CAAiB8B,QAAAA,EAAUD,UAAAA,CAAAA,EAAa;AACrD,QAAA,MAAM,IAAI7H,KAAAA,CAAM,CAAA,qCAAA,EAAwC6H,UAAAA,CAAWlH,UAAU,CAAA,CAAE,CAAA;AACnF,MAAA;AACA+G,MAAAA,aAAAA,CAAcM,GAAAA,CAAIH,UAAAA,CAAWlH,UAAAA,EAAYkH,UAAAA,CAAAA;AAC7C,IAAA;EACJ,CAAA,EAR0B,mBAAA,CAAA;AAS1BnF,EAAAA,iBAAAA,CAAkBL,KAAK4F,4BAA4B,CAAA;AAEnD,EAAA,MAAMtG,WAAWY,6BAAAA,CAA8B;AAC3CC,IAAAA,MAAAA,EAAQH,IAAAA,CAAKG,MAAAA;AACb5C,IAAAA,WAAAA,EAAayC,IAAAA,CAAKzC,WAAAA;AAClB6C,IAAAA,cAAAA,EAAgBJ,IAAAA,CAAKI,cAAAA;AACrBC,IAAAA;GACJ,CAAA;AAEA,EAAA,KAAA,MAAWe,OAAAA,IAAWpB,IAAAA,CAAKqE,WAAAA,CAAY/B,QAAAA,EAAU;AAC7C,IAAA,IAAInB,uBAAAA,CAAwBC,OAAAA,CAAAA,EAAU;AAClC,MAAA,MAAMyE,GAAAA,GAAMlH,qBAAAA,CAAsByC,OAAAA,CAAQ9B,QAAAA,CAASV,QAAQ,CAAA;AAC3D,MAAA,MAAM2B,QAAAA,GAAW,MAAMX,qBAAAA,CACnB,MAAMP,wBAAAA,CAAyBC,QAAAA,EAAU8B,OAAAA,CAAQ9B,QAAAA,CAASV,QAAQ,CAAA,EAClEwC,OAAAA,CAAQ9B,QAAAA,CAASO,WACjBP,QAAAA,CAAAA;AAEJ,MAAA,MAAMA,QAAAA,CAASwG,uBAAAA,CAAwBD,GAAAA,EAAKtF,QAAAA,CAAAA;AAC5C,MAAA,MAAMC,WAAAA,GAAcD,SAASE,GAAAA,CAAI,CAAC,EAAExC,YAAAA,EAAY,KAAOA,aAAaK,UAAU,CAAA;AAC9E,MAAA,MAAMyH,QAAAA,GACF3E,QAAQ9B,QAAAA,CAASO,SAAAA,CAAUC,SAAS,YAAA,GAAeU,WAAAA,CAAY,CAAA,CAAA,GAAMA,WAAAA;AACzE,MAAA,KAAA,MAAW+B,UAAUnB,OAAAA,CAAQsD,OAAAA,EAASzB,WAAAA,CAAYX,QAAAA,EAAUC,QAAQwD,QAAAA,CAAAA;AACpE,MAAA;AACJ,IAAA;AAEA,IAAA,IAAI1E,4BAAAA,CAA6BD,OAAAA,CAAAA,EAAU;AACvC,MAAA,MAAMjD,KAAAA,GAAQ,MAAMwB,oBAAAA,CAAqBL,QAAAA,EAAU8B,QAAQ9B,QAAQ,CAAA;AACnE,MAAA,KAAA,MAAWiD,UAAUnB,OAAAA,CAAQsD,OAAAA,EAASzB,WAAAA,CAAYX,QAAAA,EAAUC,QAAQpE,KAAAA,CAAAA;AACpE,MAAA;AACJ,IAAA;AAEA,IAAA,IAAIiD,OAAAA,CAAQ9B,QAAAA,CAAST,IAAAA,KAAS,qBAAA,EAAuB;AACjD,MAAA,MAAMmH,QAAAA,GAAWC,sCAAAA,CAAuC/E,KAAAA,CAAME,OAAAA,CAAAA;AAC9D,MAAA,MAAM8E,WAAAA,GAAcF,QAAAA,CAAStB,OAAAA,CAAQ,CAAA,CAAA;AACrC,MAAA,MAAMjC,eAAeyD,WAAAA,CAAYzD,YAAAA;AACjC,MAAA,MAAM0D,KAAAA,GAAQ9D,UAAAA,CAAWC,QAAAA,EAAU4D,WAAAA,EAAa;AAC5C,QAAA;UAAEpI,KAAAA,EAAO;AAAc,SAAA;AACvB,QAAA;UAAEA,KAAAA,EAAO;AAAQ;AACpB,OAAA,CAAA;AACD,MAAA,IAAI,CAAC6C,MAAMC,OAAAA,CAAQuF,KAAAA,GAAQ,MAAM,IAAIxI,MAAM,uCAAA,CAAA;AAC3C,MAAA,MAAMyI,kBAAkBD,KAAAA,CAAME,OAAAA,CAAQ,CAAClE,KAAAA,EAAOH,UAC1CtB,QAAAA,CAASyB,KAAAA,CAAAA,IAAUzB,QAAAA,CAASyB,MAAMmE,IAAI,CAAA,IAAKnE,KAAAA,CAAMmE,IAAAA,CAAKC,QAAQ,YAAA,GACxD;AAACvE,QAAAA;AACD,OAAA,GAAA,EAAE,CAAA;AAEZ,MAAA,MAAMwE,OAAAA,GAAUR,QAAAA,CAAStB,OAAAA,CAAQjE,GAAAA,CAAI,CAAC8B,MAAAA,KAAWA,MAAAA,CAAOY,SAAAA,CAAU,CAAA,CAAA,CAAGzB,IAAAA,CAAK,CAAA,EAAGM,KAAK,CAAA;AAClF,MAAA,IACIgE,QAAAA,CAAStB,QAAQpB,IAAAA,CAAK,CAACf,WAAWA,MAAAA,CAAOE,YAAAA,KAAiBA,YAAAA,CAAAA,IAC1D+D,OAAAA,CAAQ/G,MAAAA,KAAW2G,gBAAgB3G,MAAAA,IACnC,IAAIgH,GAAAA,CAAID,OAAAA,CAAAA,CAASE,IAAAA,KAASF,QAAQ/G,MAAAA,IAClC2G,eAAAA,CAAgB9C,IAAAA,CAAK,CAACtB,KAAAA,KAAU,CAACwE,QAAQG,QAAAA,CAAS3E,KAAAA,CAAAA,CAAAA,IAClDhC,IAAAA,CAAKqE,WAAAA,CAAY/B,SAAS5C,MAAAA,CACtB,CAACyC,KAAAA,KACGA,KAAAA,CAAM7C,QAAAA,CAAST,IAAAA,KAAS,yBACxBsD,KAAAA,CAAMuC,OAAAA,CAAQpB,IAAAA,CAAK,CAACf,MAAAA,KAAWA,MAAAA,CAAOE,iBAAiBA,YAAAA,CAAAA,CAAAA,CAC7DhD,MAAAA,KAAW,CAAA,EACf;AACE,QAAA,MAAM,IAAI9B,MACN,wEAAA,CAAA;AAER,MAAA;AACA,MAAA,KAAA,MAAW4E,MAAAA,IAAUyD,SAAStB,OAAAA,EAAS;AACnC,QAAA,MAAM/C,OAAAA,GAAUU,WAAWC,QAAAA,EAAUC,MAAAA,EAAQA,OAAOY,SAAAA,CAAU,CAAA,EAAGzB,IAAI,CAAA;AACrE,QAAA,IACI,CAAChB,QAAAA,CAASiB,OAAAA,CAAAA,IACVA,QAAQ4E,GAAAA,KAAQ,wBAAA,IAChB,CAAC7F,QAAAA,CAASiB,QAAQxD,KAAK,CAAA,EAEvB,MAAM,IAAIR,MAAM,yCAAA,CAAA;AACxB,MAAA;AACA,MAAA,MAAMiJ,MAAAA,GAAS,MAAMC,gCAAAA,CACjB,IAAIC,UAAU9G,IAAAA,CAAKG,MAAM,GACzB6F,QAAAA,CAAS1G,QAAAA,EACTkH,QAAQ/F,GAAAA,CAAI,CAACuB,UAAUmE,KAAAA,CAAMnE,KAAAA,EAAOsE,IAAI,CAAA,EACxCtG,KAAKG,MAAM,CAAA;AAEfE,MAAAA,iBAAAA,CAAkBuG,OAAOG,kBAAkB,CAAA;AAC3Cf,MAAAA,QAAAA,CAAStB,OAAAA,CAAQsC,OAAAA,CAAQ,CAACzE,MAAAA,EAAQP,KAAAA,KAC9BiB,WAAAA,CAAYX,QAAAA,EAAUC,MAAAA,EAAQqE,MAAAA,CAAOK,QAAAA,CAASjF,KAAAA,CAAM,CAAA,CAAA;AAExD,MAAA;AACJ,IAAA;AAEA,IAAA,IAAIZ,OAAAA,CAAQ9B,QAAAA,CAAST,IAAAA,KAAS,kCAAA,EAAoC;AAC9D,MAAA,MAAMqI,WAAAA,GAAcC,mDAAAA,CAAoDjG,KAAAA,CAAME,OAAAA,CAAAA;AAC9E,MAAA,MAAMmB,MAAAA,GAAS2E,WAAAA,CAAYxC,OAAAA,CAAQ,CAAA,CAAA;AACnC,MAAA,MAAMhD,IAAAA,GAAOa,MAAAA,CAAOY,SAAAA,CAAU,CAAA,CAAA,CAAGzB,IAAAA;AACjC,MAAA,MAAMC,OAAAA,GAAUU,UAAAA,CAAWC,QAAAA,EAAUC,MAAAA,EAAQb,IAAAA,CAAAA;AAC7C,MAAA,MAAM4E,IAAAA,GAAOjE,UAAAA,CAAWC,QAAAA,EAAUC,MAAAA,EAAQ;WAAIb,IAAAA,CAAK0F,KAAAA,CAAM,GAAG,EAAC,CAAA;AAAI,QAAA;UAAEtJ,KAAAA,EAAO;AAAO;AAAE,OAAA,CAAA;AACnF,MAAA,IACI,CAAC4C,QAAAA,CAASiB,OAAAA,CAAAA,IACVA,OAAAA,CAAQ4E,QAAQ,4BAAA,IAChB,CAAC7F,QAAAA,CAASiB,OAAAA,CAAQxD,KAAK,CAAA,IACvBwD,OAAAA,CAAQxD,MAAMkJ,sBAAAA,KAA2BH,WAAAA,CAAY5H,SAAS+H,sBAAAA,EAChE;AACE,QAAA,MAAM,IAAI1J,MACN,sEAAA,CAAA;AAER,MAAA;AACA,MAAA,MAAMiJ,MAAAA,GAAS,MAAMU,6CAAAA,CACjB,IAAIR,SAAAA,CAAU9G,IAAAA,CAAKG,MAAM,CAAA,EACzB+G,WAAAA,CAAY5H,QAAAA,EACZgH,IAAAA,EACAtG,IAAAA,CAAKG,MAAM,CAAA;AAEfE,MAAAA,iBAAAA,CAAkBuG,OAAOG,kBAAkB,CAAA;AAC3C9D,MAAAA,WAAAA,CAAYX,QAAAA,EAAUC,MAAAA,EAAQqE,MAAAA,CAAOW,OAAO,CAAA;AAC5C,MAAA;AACJ,IAAA;AAEA,IAAA,IAAInG,OAAAA,CAAQ9B,QAAAA,CAAST,IAAAA,KAAS,qBAAA,EAAuB;AACjD,MAAA,MAAM2I,MAAAA,GAASC,sCAAAA,CAAuCvG,KAAAA,CAAME,OAAAA,CAAAA;AAC5D,MAAA,KAAA,MAAWmB,MAAAA,IAAUiF,OAAO9C,OAAAA,EAAS;AACjC,QAAA,MAAMhD,IAAAA,GAAOa,MAAAA,CAAOY,SAAAA,CAAU,CAAA,CAAA,CAAGzB,IAAAA;AACjC,QAAA,MAAMC,OAAAA,GAAUU,UAAAA,CAAWC,QAAAA,EAAUC,MAAAA,EAAQb,IAAAA,CAAAA;AAC7C,QAAA,MAAM4E,IAAAA,GAAOjE,UAAAA,CAAWC,QAAAA,EAAUC,MAAAA,EAAQ;aACnCb,IAAAA,CAAK0F,KAAAA,CAAM,GAAG,EAAC,CAAA;AAClB,UAAA;YAAEtJ,KAAAA,EAAO;AAAO;AACnB,SAAA,CAAA;AACD,QAAA,MAAM4J,WAAWF,MAAAA,CAAOlI,QAAAA;AACxB,QAAA,IACI,CAACoB,QAAAA,CAAS4F,IAAAA,CAAAA,IACV,CAAC5F,SAAS4F,IAAAA,CAAKnI,KAAK,CAAA,IACpBmI,IAAAA,CAAKC,GAAAA,KAAQmB,QAAAA,CAASC,aACtB,CAACjH,QAAAA,CAAS4F,IAAAA,CAAKnI,KAAAA,CAAMyJ,MAAM,CAAA,IAC3BtB,KAAKnI,KAAAA,CAAMyJ,MAAAA,CAAOC,KAAAA,KAAUH,QAAAA,CAASE,MAAAA,CAAOC,KAAAA,IAC5CvB,KAAKnI,KAAAA,CAAMyJ,MAAAA,CAAOE,EAAAA,KAAOJ,QAAAA,CAASE,MAAAA,CAAOE,EAAAA,IACzC,CAACpH,QAAAA,CAASiB,OAAAA,CAAAA,IACVA,OAAAA,CAAQ4E,GAAAA,KAAQ,eAAA,IAChB,CAAC7F,QAAAA,CAASiB,OAAAA,CAAQxD,KAAK,CAAA,IACtBuJ,QAAAA,CAASC,SAAAA,KAAc,yBACpBrB,IAAAA,CAAKnI,KAAAA,CAAM4J,eAAAA,KAAoBL,QAAAA,CAASK,eAAAA,EAC9C;AACE,UAAA,MAAM,IAAIpK,MAAM,0DAAA,CAAA;AACpB,QAAA;AACA,QAAA,MAAMiJ,MAAAA,GAAS,MAAMoB,gCAAAA,CACjB,IAAIlB,UAAU9G,IAAAA,CAAKG,MAAM,GACzBuH,QAAAA,CAAAA;AAEJrH,QAAAA,iBAAAA,CAAkBuG,OAAOG,kBAAkB,CAAA;AAC3C9D,QAAAA,WAAAA,CAAYX,QAAAA,EAAUC,MAAAA,EAAQqE,MAAAA,CAAOW,OAAO,CAAA;AAChD,MAAA;AACA,MAAA;AACJ,IAAA;AAEA,IAAA,IAAInG,OAAAA,CAAQ9B,QAAAA,CAAST,IAAAA,KAAS,oBAAA,EAAsB;AAChD,MAAA,MAAMoJ,KAAAA,GAAQC,qCAAAA,CAAsChH,KAAAA,CAAME,OAAAA,CAAAA;AAC1D,MAAA,KAAA,MAAWmB,MAAAA,IAAU0F,MAAMvD,OAAAA,EAAS;AAChC,QAAA,MAAMhD,IAAAA,GAAOa,MAAAA,CAAOY,SAAAA,CAAU,CAAA,CAAA,CAAGzB,IAAAA;AACjC,QAAA,MAAMC,OAAAA,GAAUU,UAAAA,CAAWC,QAAAA,EAAUC,MAAAA,EAAQb,IAAAA,CAAAA;AAC7C,QAAA,MAAM4E,IAAAA,GAAOjE,UAAAA,CAAWC,QAAAA,EAAUC,MAAAA,EAAQ;aACnCb,IAAAA,CAAK0F,KAAAA,CAAM,GAAG,EAAC,CAAA;AAClB,UAAA;YAAEtJ,KAAAA,EAAO;AAAO;AACnB,SAAA,CAAA;AACD,QAAA,MAAM4J,WAAWO,KAAAA,CAAM3I,QAAAA;AACvB,QAAA,MAAM6I,UAAAA,GACFT,QAAAA,CAASC,SAAAA,KAAc,aAAA,GACjB,eAAA,GACAD,QAAAA,CAASC,SAAAA,KAAc,qBAAA,GACrB,uBAAA,GACAD,QAAAA,CAASC,SAAAA,KAAc,uCAAA,GACrB,2BAAA,GACA,sBAAA;AACd,QAAA,IACI,CAACjH,QAAAA,CAAS4F,IAAAA,CAAAA,IACV,CAAC5F,QAAAA,CAAS4F,IAAAA,CAAKnI,KAAK,CAAA,IACpBmI,IAAAA,CAAKC,GAAAA,KAAQmB,QAAAA,CAASC,SAAAA,IACtB,CAACjH,QAAAA,CAAS4F,IAAAA,CAAKnI,KAAAA,CAAM8J,KAAK,CAAA,IAC1B3B,IAAAA,CAAKnI,KAAAA,CAAM8J,KAAAA,CAAMG,QAAAA,KAAaV,QAAAA,CAASO,KAAAA,CAAMG,QAAAA,IAC7C9B,IAAAA,CAAKnI,KAAAA,CAAM8J,KAAAA,CAAMJ,UAAUH,QAAAA,CAASO,KAAAA,CAAMJ,KAAAA,IAC1CvB,IAAAA,CAAKnI,KAAAA,CAAM8J,KAAAA,CAAMH,EAAAA,KAAOJ,QAAAA,CAASO,KAAAA,CAAMH,EAAAA,IACtCJ,QAAAA,CAASC,SAAAA,KAAc,sBAAA,IACpBD,QAAAA,CAASO,KAAAA,CAAMG,QAAAA,KAAa,MAAA,IAChC,CAAC1H,QAAAA,CAASiB,OAAAA,CAAAA,IACVA,OAAAA,CAAQ4E,GAAAA,KAAQ4B,UAAAA,IAChB,CAACzH,QAAAA,CAASiB,OAAAA,CAAQxD,KAAK,CAAA,EACzB;AACE,UAAA,MAAM,IAAIR,MAAM,yDAAA,CAAA;AACpB,QAAA;AACA,QAAA,MAAMiJ,MAAAA,GAAS,MAAMyB,+BAAAA,CACjB,IAAIvB,UAAU9G,IAAAA,CAAKG,MAAM,GACzBuH,QAAAA,CAAAA;AAEJrH,QAAAA,iBAAAA,CAAkBuG,OAAOG,kBAAkB,CAAA;AAC3C9D,QAAAA,WAAAA,CAAYX,QAAAA,EAAUC,MAAAA,EAAQqE,MAAAA,CAAOW,OAAO,CAAA;AAChD,MAAA;AACA,MAAA;AACJ,IAAA;AAEA,IAAA,IAAInG,OAAAA,CAAQ9B,QAAAA,CAAST,IAAAA,KAAS,wBAAA,EAA0B;AACpD,MAAA,MAAMyJ,SAAAA,GAAYC,yCAAAA,CAA0CrH,KAAAA,CAAME,OAAAA,CAAAA;AAClE,MAAA,KAAA,MAAWmB,MAAAA,IAAU+F,UAAU5D,OAAAA,EAAS;AACpC,QAAA,MAAMhD,IAAAA,GAAOa,MAAAA,CAAOY,SAAAA,CAAU,CAAA,CAAA,CAAGzB,IAAAA;AACjC,QAAA,MAAMC,OAAAA,GAAUU,UAAAA,CAAWC,QAAAA,EAAUC,MAAAA,EAAQb,IAAAA,CAAAA;AAC7C,QAAA,MAAM4E,IAAAA,GAAOjE,UAAAA,CAAWC,QAAAA,EAAUC,MAAAA,EAAQ;aACnCb,IAAAA,CAAK0F,KAAAA,CAAM,GAAG,EAAC,CAAA;AAClB,UAAA;YAAEtJ,KAAAA,EAAO;AAAO;AACnB,SAAA,CAAA;AACD,QAAA,MAAM4J,WAAWY,SAAAA,CAAUhJ,QAAAA;AAC3B,QAAA,IACI,CAACoB,QAAAA,CAAS4F,IAAAA,CAAAA,IACVA,IAAAA,CAAKC,GAAAA,KAAQ,mBAAA,IACb,CAAC7F,QAAAA,CAAS4F,IAAAA,CAAKnI,KAAK,CAAA,IACpB,CAACuC,QAAAA,CAAS4F,IAAAA,CAAKnI,KAAAA,CAAMyJ,MAAM,CAAA,IAC3BtB,IAAAA,CAAKnI,KAAAA,CAAMyJ,MAAAA,CAAOC,KAAAA,KAAUH,QAAAA,CAASE,MAAAA,CAAOC,KAAAA,IAC5CvB,IAAAA,CAAKnI,KAAAA,CAAMyJ,MAAAA,CAAOE,EAAAA,KAAOJ,SAASE,MAAAA,CAAOE,EAAAA,IACzC,CAACpH,QAAAA,CAASiB,OAAAA,CAAAA,IACVA,OAAAA,CAAQ4E,GAAAA,KAAQ,sBAAA,IAChB,CAAC7F,QAAAA,CAASiB,OAAAA,CAAQxD,KAAK,CAAA,IACvB,CAAC0C,YAAAA,CAAac,QAAQxD,KAAAA,CAAMqK,SAAS,CAAA,KACpCnK,gBAAAA,CAAiBiI,IAAAA,CAAKnI,KAAAA,CAAMsK,SAAAA,EAAW,eAAA,CAAA,GAAmB,EAAA,GACrDf,QAAAA,CAASgB,WAAAA,KAAgBpC,IAAAA,CAAKnI,KAAAA,CAAMwK,GAAAA,GACpCjB,QAAAA,CAASgB,gBAAgBpI,MAAAA,CAAAA,EACjC;AACE,UAAA,MAAM,IAAI3C,MAAM,6DAAA,CAAA;AACpB,QAAA;AACA,QAAA,MAAMiJ,MAAAA,GAAS,MAAMgC,mCAAAA,CACjB,IAAI9B,SAAAA,CAAU9G,IAAAA,CAAKG,MAAM,CAAA,EACzBuH,QAAAA,EACA/F,OAAAA,CAAQxD,KAAAA,CAAMqK,SAAS,CAAA;AAE3BnI,QAAAA,iBAAAA,CAAkBuG,OAAOG,kBAAkB,CAAA;AAC3C9D,QAAAA,WAAAA,CAAYX,QAAAA,EAAUC,MAAAA,EAAQqE,MAAAA,CAAOW,OAAO,CAAA;AAChD,MAAA;AACA,MAAA;AACJ,IAAA;AAEA,IAAA,IAAInG,OAAAA,CAAQ9B,QAAAA,CAAST,IAAAA,KAAS,sBAAA,EAAwB;AAClD,MAAA,MAAMgK,OAAAA,GAAUC,uCAAAA,CAAwC5H,KAAAA,CAAME,OAAAA,CAAAA;AAC9D,MAAA,KAAA,MAAWmB,MAAAA,IAAUsG,QAAQnE,OAAAA,EAAS;AAClC,QAAA,MAAMhD,IAAAA,GAAOa,MAAAA,CAAOY,SAAAA,CAAU,CAAA,CAAA,CAAGzB,IAAAA;AACjC,QAAA,MAAMC,OAAAA,GAAUU,UAAAA,CAAWC,QAAAA,EAAUC,MAAAA,EAAQb,IAAAA,CAAAA;AAC7C,QAAA,MAAM4E,IAAAA,GAAOjE,UAAAA,CAAWC,QAAAA,EAAUC,MAAAA,EAAQ;aACnCb,IAAAA,CAAK0F,KAAAA,CAAM,GAAG,EAAC,CAAA;AAClB,UAAA;YAAEtJ,KAAAA,EAAO;AAAO;AACnB,SAAA,CAAA;AACD,QAAA,MAAM4J,QAAAA,GAAWmB,QAAQvJ,QAAAA,CAASuJ,OAAAA;AAClC,QAAA,MAAME,WAAAA,GAAc;AAChB,UAAA,qBAAA;AACA,UAAA,QAAA;AACA,UAAA,QAAA;AACA,UAAA,SAAA;AACA,UAAA;;AAEJ,QAAA,IACI,CAACrI,QAAAA,CAAS4F,IAAAA,CAAAA,IACV,CAAC5F,SAAS4F,IAAAA,CAAKnI,KAAK,CAAA,IACpBmI,IAAAA,CAAKnI,KAAAA,CAAMwK,GAAAA,KAAQE,QAAQvJ,QAAAA,CAAS0J,QAAAA,IACpC,CAACtI,QAAAA,CAASiB,OAAAA,CAAAA,IACV,CAACjB,QAAAA,CAASiB,OAAAA,CAAQxD,KAAK,CAAA,IACvB,CAAC0C,YAAAA,CAAac,QAAQxD,KAAAA,CAAMqK,SAAS,CAAA,KACpCd,QAAAA,CAAS5H,IAAAA,KAAS,SAAA,GACbwG,KAAKC,GAAAA,KAAQ,iBAAA,IAAqB5E,OAAAA,CAAQ4E,GAAAA,KAAQ,gBAAA,GAClDmB,QAAAA,CAAS5H,SAAS,YAAA,GAChBwG,IAAAA,CAAKC,GAAAA,KAAQ,sBAAA,IACb5E,OAAAA,CAAQ4E,GAAAA,KAAQ,oBAAA,IAChB,CAAC7F,QAAAA,CAAS4F,IAAAA,CAAKnI,KAAAA,CAAM8J,KAAK,CAAA,IAC1B3B,IAAAA,CAAKnI,MAAM8J,KAAAA,CAAMG,QAAAA,KAAa,MAAA,IAC9B9B,IAAAA,CAAKnI,KAAAA,CAAM8J,KAAAA,CAAMJ,UAAUH,QAAAA,CAASE,MAAAA,CAAOC,KAAAA,IAC3CvB,IAAAA,CAAKnI,KAAAA,CAAM8J,KAAAA,CAAMH,OAAOJ,QAAAA,CAASE,MAAAA,CAAOE,EAAAA,IACxCzJ,gBAAAA,CAAiBiI,IAAAA,CAAKnI,KAAAA,CAAMsK,WAAW,iBAAA,CAAA,IAAsB,EAAA,GAC7D,CAACM,WAAAA,CAAYpC,QAAAA,CAASsC,OAAO3C,IAAAA,CAAKC,GAAG,CAAA,CAAA,IACrC5E,OAAAA,CAAQ4E,GAAAA,KAAQ,wBAChB,CAAC7F,QAAAA,CAAS4F,IAAAA,CAAKnI,KAAAA,CAAMyJ,MAAM,CAAA,IAC3BtB,KAAKnI,KAAAA,CAAMyJ,MAAAA,CAAOC,KAAAA,KAAUH,QAAAA,CAASE,MAAAA,CAAOC,KAAAA,IAC5CvB,IAAAA,CAAKnI,KAAAA,CAAMyJ,MAAAA,CAAOE,EAAAA,KAAOJ,QAAAA,CAASE,MAAAA,CAAOE,EAAAA,CAAAA,EACnD;AACE,UAAA,MAAM,IAAInK,MAAM,2DAAA,CAAA;AACpB,QAAA;AACA,QAAA,MAAMiJ,MAAAA,GAAS,MAAMsC,iCAAAA,CACjB,IAAIpC,SAAAA,CAAU9G,IAAAA,CAAKG,MAAM,CAAA,EACzB0I,OAAAA,CAAQvJ,QAAAA,EACRqC,OAAAA,CAAQxD,KAAAA,CAAMqK,SAAS,CAAA;AAE3BnI,QAAAA,iBAAAA,CAAkBuG,OAAOG,kBAAkB,CAAA;AAC3C9D,QAAAA,WAAAA,CAAYX,QAAAA,EAAUC,MAAAA,EAAQqE,MAAAA,CAAOW,OAAO,CAAA;AAChD,MAAA;AACA,MAAA;AACJ,IAAA;AAEA,IAAA,IAAInG,OAAAA,CAAQ9B,QAAAA,CAAST,IAAAA,KAAS,kBAAA,EAAoB;AAC9C,MAAA,MAAM+F,QAAAA,GAAWC,mCAAAA,CAAoC3D,KAAAA,CAAME,OAAAA,CAAAA;AAC3D,MAAA,MAAMwF,MAAAA,GAAS,MAAMuC,6BAAAA,CACjB,IAAIrC,UAAU9G,IAAAA,CAAKG,MAAM,CAAA,EACzByE,QAAAA,CAAStF,QAAQ,CAAA;AAErBe,MAAAA,iBAAAA,CAAkBuG,OAAOG,kBAAkB,CAAA;AAC3C,MAAA,KAAA,MAAWxE,UAAUqC,QAAAA,CAASF,OAAAA,cACdpC,QAAAA,EAAUC,MAAAA,EAAQqE,OAAOwC,cAAc,CAAA;AACvD,MAAA,KAAA,MAAW7G,UAAUqC,QAAAA,CAASK,kBAAAA,cACd3C,QAAAA,EAAUC,MAAAA,EAAQqE,OAAOyC,WAAW,CAAA;AACpD,MAAA;AACJ,IAAA;AAEA,IAAA,IAAIjI,OAAAA,CAAQ9B,QAAAA,CAAST,IAAAA,KAAS,kCAAA,EAAoC;AAC9D,MAAA,MAAMyK,UAAAA,GAAaC,mDAAAA,CAAoDrI,KAAAA,CAAME,OAAAA,CAAAA;AAC7E,MAAA,KAAA,MAAWmB,MAAAA,IAAU+G,WAAW5E,OAAAA,EAAS;AACrCrC,QAAAA,UAAAA,CAAWC,UAAUC,MAAAA,EAAQA,MAAAA,CAAOY,SAAAA,CAAU,CAAA,EAAIzB,IAAI,CAAA;AACtD,QAAA,MAAMc,OAAAA,GAAUF,QAAAA,CAASC,MAAAA,CAAOE,YAAY,CAAA;AAC5C,QAAA,IACI,EAAE,qBAAqBD,OAAAA,CAAAA,IACvBA,OAAAA,CAAQE,gBAAgBpE,UAAAA,KAAegL,UAAAA,CAAWhK,SAAShB,UAAAA,EAC7D;AACE,UAAA,MAAM,IAAIX,MACN,kEAAA,CAAA;AAER,QAAA;AACJ,MAAA;AACA,MAAA,MAAMiJ,MAAAA,GAAS,MAAM5G,IAAAA,CAAKG,MAAAA,CAAOqJ,mCAAAA,CAAoC;AACjElL,QAAAA,UAAAA,EAAYgL,WAAWhK,QAAAA,CAAShB;OACpC,CAAA;AACA+B,MAAAA,iBAAAA,CAAkBuG,OAAOG,kBAAkB,CAAA;AAC3C,MAAA,KAAA,MAAWxE,MAAAA,IAAU+G,WAAW5E,OAAAA,EAAS;AACrCzB,QAAAA,WAAAA,CAAYX,QAAAA,EAAUC,MAAAA,EAAQqE,MAAAA,CAAO6C,aAAa,CAAA;AACtD,MAAA;AACA,MAAA;AACJ,IAAA;AAEA,IAAA,IAAInI,sBAAAA,CAAuBF,OAAAA,CAAAA,EAAU;AACjC,MAAA,MAAMwF,MAAAA,GAAS,MAAM5G,IAAAA,CAAKG,MAAAA,CAAOuJ,iCAAAA,CAAkC;AAC/D7B,QAAAA,KAAAA,EAAOzG,QAAQ9B,QAAAA,CAAS0J,QAAAA;QACxBlB,EAAAA,EAAI;OACR,CAAA;AACAzH,MAAAA,iBAAAA,CAAkBuG,OAAOG,kBAAkB,CAAA;AAC3C,MAAA,KAAA,MAAWxE,MAAAA,IAAUnB,QAAQsD,OAAAA,EAAS;AAClCzB,QAAAA,WAAAA,CAAYX,QAAAA,EAAUC,MAAAA,EAAQqE,MAAAA,CAAO+C,aAAa,CAAA;AACtD,MAAA;AACA,MAAA,KAAA,MAAWpH,MAAAA,IAAUnB,OAAAA,CAAQwI,iBAAAA,IAAqB,EAAA,EAAI;AAClD3G,QAAAA,WAAAA,CAAYX,QAAAA,EAAUC,MAAAA,EAAQqE,MAAAA,CAAOiD,2BAA2B,CAAA;AACpE,MAAA;AACJ,IAAA;AACJ,EAAA;AAIA,EAAA,MAAMC,GAAAA,uBAAU7I,IAAAA,EAAAA;AAChB,EAAA,KAAA,MAAWG,OAAAA,IAAWpB,IAAAA,CAAKqE,WAAAA,CAAY/B,QAAAA,EAAU;AAC7C,IAAA,IAAI,CAACf,kBAAAA,CAAmBH,OAAAA,CAAAA,EAAU;AAElC,IAAA,KAAA,MAAWmB,MAAAA,IAAUnB,QAAQsD,OAAAA,EAAS;AAClC,MAAA,KAAA,MAAW,EAAEhD,IAAAA,EAAMqI,QAAAA,GAAW,CAAA,EAAC,IAAMxH,OAAOY,SAAAA,EAAW;AACnD,QAAA,MAAM6G,GAAAA,GAAM,IAAI/I,IAAAA,CAAK6I,GAAAA,CAAIG,SAAO,GAAKF,QAAAA,EAAUG,WAAAA,EAAW;AAC1D,QAAA,MAAMvI,OAAAA,GAAUU,UAAAA,CAAWC,QAAAA,EAAUC,MAAAA,EAAQb,IAAAA,CAAAA;AAC7C,QAAA,IAAIvD,KAAAA;AACJ,QAAA,IAAI0C,YAAAA,CAAac,OAAAA,CAAAA,EAAU;AACvBxD,UAAAA,KAAAA,GAAQ6L,GAAAA;QACZ,CAAA,MAAA,IACItJ,QAAAA,CAASiB,OAAAA,CAAAA,IACTA,OAAAA,CAAQ4E,QAAQ,SAAA,IAChB1F,YAAAA,CAAac,OAAAA,CAAQxD,KAAK,CAAA,EAC5B;AACEA,UAAAA,KAAAA,GAAQ;YAAE,GAAGwD,OAAAA;YAASxD,KAAAA,EAAO6L;AAAI,WAAA;QACrC,CAAA,MAAO;AACH,UAAA,MAAM,IAAIrM,MAAM,2DAAA,CAAA;AACpB,QAAA;AACAqF,QAAAA,UAAAA,CAAWV,QAAAA,EAAUC,MAAAA,EAAQb,IAAAA,EAAMvD,KAAAA,CAAAA;AACvC,MAAA;AACJ,IAAA;AACJ,EAAA;AAEA,EAAA,KAAA,MAAWiD,OAAAA,IAAWpB,IAAAA,CAAKqE,WAAAA,CAAY/B,QAAAA,EAAU;AAC7C,IAAA,IAAIlB,OAAAA,CAAQ9B,QAAAA,CAAST,IAAAA,KAAS,kCAAA,EAAoC;AAClE,IAAA,KAAA,MAAW0D,MAAAA,IAAUnB,QAAQsD,OAAAA,EAAS;AAClC,MAAA,MAAMlC,OAAAA,GAAUF,QAAAA,CAASC,MAAAA,CAAOE,YAAY,CAAA;AAC5C,MAAA,IACI,EAAE,qBAAqBD,OAAAA,CAAAA,IACvBA,OAAAA,CAAQE,gBAAgBpE,UAAAA,KAAe8C,OAAAA,CAAQ9B,SAAShB,UAAAA,EAC1D;AACE,QAAA,MAAM,IAAIX,MAAM,kEAAA,CAAA;AACpB,MAAA;AACJ,IAAA;AACJ,EAAA;AAEA,EAAA,KAAA,MAAWyD,OAAAA,IAAWpB,IAAAA,CAAKqE,WAAAA,CAAY/B,QAAAA,EAAU;AAC7C,IAAA,IAAIlB,OAAAA,CAAQ9B,QAAAA,CAAST,IAAAA,KAAS,kBAAA,EAAoB;AAClD,IAAA,MAAM+F,QAAAA,GAAWC,mCAAAA,CAAoC3D,KAAAA,CAAME,OAAAA,CAAAA;AAC3D,IAAA,KAAA,MAAWmB,MAAAA,IAAU;SAAIqC,QAAAA,CAASF,OAAAA;SAAYE,QAAAA,CAASK;AAAqB,KAAA,EAAA;AACxE,MAAA,MAAMzC,OAAAA,GAAUF,QAAAA,CAASC,MAAAA,CAAOE,YAAY,CAAA;AAC5C,MAAA,IACI,EAAE,iBAAA,IAAqBD,OAAAA,CAAAA,IACvB,CAAC9B,SAAS8B,OAAAA,CAAQE,eAAAA,CAAgBE,cAAc,CAAA,IAChDJ,QAAQE,eAAAA,CAAgBE,cAAAA,CAAewC,kBAAAA,KACnCR,QAAAA,CAAStF,SAAS8F,kBAAAA,EACxB;AACE,QAAA,MAAM,IAAIzH,MAAM,uDAAA,CAAA;AACpB,MAAA;AACJ,IAAA;AACJ,EAAA;AAEA,EAAA,KAAA,MAAW8G,WAAAA,IAAeR,YAAAA,IAAgB,EAAA,EAAI;AAC1C,IAAA,KAAA,MAAW1B,MAAAA,IAAUkC,YAAYC,OAAAA,EAAS;AACtC,MAAA,KAAA,MAAW,EAAEhD,IAAAA,EAAI,IAAMa,MAAAA,CAAOY,SAAAA,EAAW;AACrC,QAAA,IAAId,WAAWC,QAAAA,EAAUC,MAAAA,EAAQb,IAAAA,CAAAA,KAAU1B,KAAKzC,WAAAA,EAAa;AACzD,UAAA,MAAM,IAAII,MAAM,8CAAA,CAAA;AACpB,QAAA;AACJ,MAAA;AACJ,IAAA;AACJ,EAAA;AACA,EAAA,MAAMoJ,kBAAAA,GAAqB;AAAI1B,IAAAA,GAAAA,aAAAA,CAAc5B,MAAAA;;AAC7C,EAAA,IAAIL,wBAAAA,CAAyBd,QAAAA,CAAAA,EAAW;AACpC,IAAA,MAAM,IAAI3E,MAAM,qDAAA,CAAA;AACpB,EAAA;AAEA,EAAA,OAAO;AACH2E,IAAAA,QAAAA;AACAyE,IAAAA;AACJ,GAAA;AACJ,CAAA,EA9dwC,0BAAA","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"]}
|
|
@@ -3,7 +3,7 @@ import { areExpectedSignatories, getCreateArgumentField } from './SWY4QT4I.js';
|
|
|
3
3
|
import { __name } from './VUOMXK5T.js';
|
|
4
4
|
|
|
5
5
|
// src/refresh/onesig-request.ts
|
|
6
|
-
var ONESIG_CONFIG = "#layerzero-
|
|
6
|
+
var ONESIG_CONFIG = "#layerzero-onesigv1:OneSigConfig:OneSigConfig";
|
|
7
7
|
var FACTORY = "#layerzero-request-factory:RequestFactory:RequestFactory";
|
|
8
8
|
var FACTORY_CONFIG = "#layerzero-request-factory:RequestFactoryConfig:RequestFactoryConfig";
|
|
9
9
|
var IOAPP = "#layerzero-ioapp:IOApp:IOApp";
|
|
@@ -121,5 +121,5 @@ var resolveCantonOneSigRequestContext = /* @__PURE__ */ __name(async (sdk, input
|
|
|
121
121
|
}, "resolveCantonOneSigRequestContext");
|
|
122
122
|
|
|
123
123
|
export { resolveCantonOneSigRequestContext };
|
|
124
|
-
//# sourceMappingURL=
|
|
125
|
-
//# sourceMappingURL=
|
|
124
|
+
//# sourceMappingURL=D3KVE5XQ.js.map
|
|
125
|
+
//# sourceMappingURL=D3KVE5XQ.js.map
|
|
@@ -1 +1 @@
|
|
|
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":"P4PU4NFW.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-lzonesig: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
|
+
{"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"]}
|
|
@@ -7,6 +7,9 @@ var CANTON_CONTRACT_ID_HEX_LENGTH = 138;
|
|
|
7
7
|
var CANTON_PARTY_ADDRESS_PREFIX = "<<CANTON_PARTY::";
|
|
8
8
|
var CANTON_CID_ADDRESS_PREFIX = "<<CANTON_CID::";
|
|
9
9
|
var CANTON_GLOBAL_ADDRESS_PREFIX = "<<CANTON_GLOBAL::";
|
|
10
|
+
var CANTON_OAPP_FILTER_ADDRESS_PREFIX = "<<CANTON_OAPP_FILTER::";
|
|
11
|
+
var CANTON_OAPP_FILTER_DELIMITER = "|";
|
|
12
|
+
var CANTON_OAPP_FILTER_ADDRESS_REGEX = /^<<CANTON_OAPP_FILTER::([^|<>]+::[0-9a-fA-F]+)\|([^|]+)>>$/;
|
|
10
13
|
var cantonPartyAddress = /* @__PURE__ */ __name((hint, fingerprint) => `${CANTON_PARTY_ADDRESS_PREFIX}${hint}::${fingerprint}${CANTON_DEFERRED_VALUE_SUFFIX}`, "cantonPartyAddress");
|
|
11
14
|
var cantonCidAddress = /* @__PURE__ */ __name((contractId) => `${CANTON_CID_ADDRESS_PREFIX}${contractId}${CANTON_DEFERRED_VALUE_SUFFIX}`, "cantonCidAddress");
|
|
12
15
|
var cantonGlobalAddress = /* @__PURE__ */ __name((address) => {
|
|
@@ -16,6 +19,34 @@ var cantonGlobalAddress = /* @__PURE__ */ __name((address) => {
|
|
|
16
19
|
return `${CANTON_GLOBAL_ADDRESS_PREFIX}${hexZeroPad(address, 32).toLowerCase()}${CANTON_DEFERRED_VALUE_SUFFIX}`;
|
|
17
20
|
}, "cantonGlobalAddress");
|
|
18
21
|
var isCantonGlobalAddress = /* @__PURE__ */ __name((value) => /^<<CANTON_GLOBAL::0x[0-9a-fA-F]{64}>>$/.test(value), "isCantonGlobalAddress");
|
|
22
|
+
var toCantonGlobalAddress = /* @__PURE__ */ __name((address) => isCantonGlobalAddress(address) ? address : cantonGlobalAddress(address), "toCantonGlobalAddress");
|
|
23
|
+
var parseCantonGlobalAddress = /* @__PURE__ */ __name((address) => {
|
|
24
|
+
if (!isCantonGlobalAddress(address)) {
|
|
25
|
+
throw new Error(`Not a Canton global address: ${address}`);
|
|
26
|
+
}
|
|
27
|
+
return address.slice(CANTON_GLOBAL_ADDRESS_PREFIX.length, -CANTON_DEFERRED_VALUE_SUFFIX.length).toLowerCase();
|
|
28
|
+
}, "parseCantonGlobalAddress");
|
|
29
|
+
var isCantonOAppFilterAddress = /* @__PURE__ */ __name((value) => CANTON_OAPP_FILTER_ADDRESS_REGEX.test(value), "isCantonOAppFilterAddress");
|
|
30
|
+
var cantonOAppFilterAddress = /* @__PURE__ */ __name((partyId, id) => {
|
|
31
|
+
if (id.includes(CANTON_OAPP_FILTER_DELIMITER)) {
|
|
32
|
+
throw new Error(`Canton OApp filter id must not contain '${CANTON_OAPP_FILTER_DELIMITER}': ${id}`);
|
|
33
|
+
}
|
|
34
|
+
const address = `${CANTON_OAPP_FILTER_ADDRESS_PREFIX}${partyId}${CANTON_OAPP_FILTER_DELIMITER}${id}${CANTON_DEFERRED_VALUE_SUFFIX}`;
|
|
35
|
+
if (!isCantonOAppFilterAddress(address)) {
|
|
36
|
+
throw new Error(`Invalid Canton OApp filter: partyId=${partyId} id=${id}`);
|
|
37
|
+
}
|
|
38
|
+
return address;
|
|
39
|
+
}, "cantonOAppFilterAddress");
|
|
40
|
+
var parseCantonOAppFilterAddress = /* @__PURE__ */ __name((address) => {
|
|
41
|
+
const match = CANTON_OAPP_FILTER_ADDRESS_REGEX.exec(address);
|
|
42
|
+
if (!match) {
|
|
43
|
+
throw new Error(`Not a Canton OApp filter address: ${address}`);
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
partyId: match[1],
|
|
47
|
+
id: match[2]
|
|
48
|
+
};
|
|
49
|
+
}, "parseCantonOAppFilterAddress");
|
|
19
50
|
var cantonDeferredAddress = /* @__PURE__ */ __name((sentinel) => sentinel, "cantonDeferredAddress");
|
|
20
51
|
var toCantonAddress = /* @__PURE__ */ __name((raw) => {
|
|
21
52
|
if (isCantonDeferredSentinel(raw)) {
|
|
@@ -32,9 +63,9 @@ var toCantonAddress = /* @__PURE__ */ __name((raw) => {
|
|
|
32
63
|
}
|
|
33
64
|
throw new Error(`Not a Canton-native address: ${raw}`);
|
|
34
65
|
}, "toCantonAddress");
|
|
35
|
-
var isCantonAddress = /* @__PURE__ */ __name((value) => value.startsWith(CANTON_PARTY_ADDRESS_PREFIX) || value.startsWith(CANTON_CID_ADDRESS_PREFIX) || isCantonDeferredSentinel(value) || isCantonGlobalAddress(value), "isCantonAddress");
|
|
66
|
+
var isCantonAddress = /* @__PURE__ */ __name((value) => value.startsWith(CANTON_PARTY_ADDRESS_PREFIX) || value.startsWith(CANTON_CID_ADDRESS_PREFIX) || isCantonDeferredSentinel(value) || isCantonGlobalAddress(value) || isCantonOAppFilterAddress(value), "isCantonAddress");
|
|
36
67
|
var cantonAddressToPartyId = /* @__PURE__ */ __name((address) => {
|
|
37
|
-
const isNonPartyAddress = address.startsWith(CANTON_CID_ADDRESS_PREFIX) || address.startsWith(CANTON_GLOBAL_ADDRESS_PREFIX) || address.startsWith(CANTON_DEFERRED_VALUE_PREFIX);
|
|
68
|
+
const isNonPartyAddress = address.startsWith(CANTON_CID_ADDRESS_PREFIX) || address.startsWith(CANTON_GLOBAL_ADDRESS_PREFIX) || address.startsWith(CANTON_OAPP_FILTER_ADDRESS_PREFIX) || address.startsWith(CANTON_DEFERRED_VALUE_PREFIX);
|
|
38
69
|
if (isNonPartyAddress) {
|
|
39
70
|
throw new Error(`Not a Canton party address: ${address}`);
|
|
40
71
|
}
|
|
@@ -56,6 +87,6 @@ var cantonAddressToPartyId = /* @__PURE__ */ __name((address) => {
|
|
|
56
87
|
return `${match[1]}::${match[2]}`;
|
|
57
88
|
}, "cantonAddressToPartyId");
|
|
58
89
|
|
|
59
|
-
export { CANTON_CID_ADDRESS_PREFIX, CANTON_GLOBAL_ADDRESS_PREFIX, CANTON_PARTY_ADDRESS_PREFIX, cantonAddressToPartyId, cantonCidAddress, cantonDeferredAddress, cantonGlobalAddress, cantonPartyAddress, isCantonAddress, isCantonGlobalAddress, toCantonAddress };
|
|
60
|
-
//# sourceMappingURL=
|
|
61
|
-
//# sourceMappingURL=
|
|
90
|
+
export { CANTON_CID_ADDRESS_PREFIX, CANTON_GLOBAL_ADDRESS_PREFIX, CANTON_OAPP_FILTER_ADDRESS_PREFIX, CANTON_OAPP_FILTER_DELIMITER, CANTON_PARTY_ADDRESS_PREFIX, cantonAddressToPartyId, cantonCidAddress, cantonDeferredAddress, cantonGlobalAddress, cantonOAppFilterAddress, cantonPartyAddress, isCantonAddress, isCantonGlobalAddress, isCantonOAppFilterAddress, parseCantonGlobalAddress, parseCantonOAppFilterAddress, toCantonAddress, toCantonGlobalAddress };
|
|
91
|
+
//# sourceMappingURL=J4V2ZLWV.js.map
|
|
92
|
+
//# sourceMappingURL=J4V2ZLWV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/address.ts"],"names":["CANTON_PARTY_ID_REGEX","CANTON_CONTRACT_ID_HEX_LENGTH","CANTON_PARTY_ADDRESS_PREFIX","CANTON_CID_ADDRESS_PREFIX","CANTON_GLOBAL_ADDRESS_PREFIX","CANTON_OAPP_FILTER_ADDRESS_PREFIX","CANTON_OAPP_FILTER_DELIMITER","CANTON_OAPP_FILTER_ADDRESS_REGEX","cantonPartyAddress","hint","fingerprint","CANTON_DEFERRED_VALUE_SUFFIX","cantonCidAddress","contractId","cantonGlobalAddress","address","test","Error","hexZeroPad","toLowerCase","isCantonGlobalAddress","value","toCantonGlobalAddress","parseCantonGlobalAddress","slice","length","isCantonOAppFilterAddress","cantonOAppFilterAddress","partyId","id","includes","parseCantonOAppFilterAddress","match","exec","cantonDeferredAddress","sentinel","toCantonAddress","raw","isCantonDeferredSentinel","partyMatch","bare","trim0x","startsWith","isCantonAddress","cantonAddressToPartyId","isNonPartyAddress","CANTON_DEFERRED_VALUE_PREFIX","candidate","endsWith"],"mappings":"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","file":"J4V2ZLWV.js","sourcesContent":["import { hexZeroPad, trim0x } from '@layerzerolabs/common-encoding-utils';\nimport type { Branded } from '@layerzerolabs/typescript-utils';\n\nimport {\n CANTON_DEFERRED_VALUE_PREFIX,\n CANTON_DEFERRED_VALUE_SUFFIX,\n isCantonDeferredSentinel,\n} from './deferredValue';\n\nconst CANTON_PARTY_ID_REGEX = /^(.+)::([0-9a-fA-F]+)$/;\nconst CANTON_CONTRACT_ID_HEX_LENGTH = 138; // 69 bytes\n\nexport const CANTON_PARTY_ADDRESS_PREFIX = '<<CANTON_PARTY::';\nexport const CANTON_CID_ADDRESS_PREFIX = '<<CANTON_CID::';\nexport const CANTON_GLOBAL_ADDRESS_PREFIX = '<<CANTON_GLOBAL::';\nexport const CANTON_OAPP_FILTER_ADDRESS_PREFIX = '<<CANTON_OAPP_FILTER::';\nexport const CANTON_OAPP_FILTER_DELIMITER = '|';\n\nconst CANTON_OAPP_FILTER_ADDRESS_REGEX =\n /^<<CANTON_OAPP_FILTER::([^|<>]+::[0-9a-fA-F]+)\\|([^|]+)>>$/;\n\n/** A Canton ledger or VER global address, with an explicit sentinel prefix. */\nexport type CantonAddress = Branded<string, 'CantonAddress'>;\n\n/** Construct a party `CantonAddress` from hint and fingerprint. */\nexport const cantonPartyAddress = (hint: string, fingerprint: string): CantonAddress =>\n `${CANTON_PARTY_ADDRESS_PREFIX}${hint}::${fingerprint}${CANTON_DEFERRED_VALUE_SUFFIX}` as CantonAddress;\n\n/** Construct a contract-ID `CantonAddress` from the raw 69-byte hex contract id. */\nexport const cantonCidAddress = (contractId: string): CantonAddress =>\n `${CANTON_CID_ADDRESS_PREFIX}${contractId}${CANTON_DEFERRED_VALUE_SUFFIX}` as CantonAddress;\n\n/** Explicitly wrap an already-derived VER global address. This does not hash the input. */\nexport const cantonGlobalAddress = (address: string): CantonAddress => {\n if (!/^(?:0x)?[0-9a-fA-F]{1,64}$/.test(address)) {\n throw new Error(`Invalid Canton global bytes32 address: ${address}`);\n }\n return `${CANTON_GLOBAL_ADDRESS_PREFIX}${hexZeroPad(address, 32).toLowerCase()}${CANTON_DEFERRED_VALUE_SUFFIX}` as CantonAddress;\n};\n\nexport const isCantonGlobalAddress = (value: string): value is CantonAddress =>\n /^<<CANTON_GLOBAL::0x[0-9a-fA-F]{64}>>$/.test(value);\n\n/**\n * The global address sentinel for a raw VER global bytes32. A value that is already a global\n * address sentinel is returned unchanged.\n *\n * @throws Error for a value that is neither a global address sentinel nor 1 to 64 hex characters.\n */\nexport const toCantonGlobalAddress = (address: string): CantonAddress =>\n isCantonGlobalAddress(address) ? address : cantonGlobalAddress(address);\n\n/**\n * The lowercase `0x{bytes32}` inside a global address (`<<CANTON_GLOBAL::0x{bytes32}>>`). This is the\n * inverse of {@link cantonGlobalAddress}.\n *\n * @throws Error for any other input.\n */\nexport const parseCantonGlobalAddress = (address: string): string => {\n if (!isCantonGlobalAddress(address)) {\n throw new Error(`Not a Canton global address: ${address}`);\n }\n return address\n .slice(CANTON_GLOBAL_ADDRESS_PREFIX.length, -CANTON_DEFERRED_VALUE_SUFFIX.length)\n .toLowerCase();\n};\n\n/** Returns true for an OApp filter address: `<<CANTON_OAPP_FILTER::{hint}::{hex fingerprint}|{id}>>`. */\nexport const isCantonOAppFilterAddress = (value: string): value is CantonAddress =>\n CANTON_OAPP_FILTER_ADDRESS_REGEX.test(value);\n\n/**\n * Construct an OApp filter `CantonAddress` (`<<CANTON_OAPP_FILTER::{partyId}|{id}>>`) from the OApp's party\n * id (`hint::fingerprint`) and its id.\n *\n * @throws Error if `partyId` is not a party id, or `id` is empty or contains `|`.\n */\nexport const cantonOAppFilterAddress = (partyId: string, id: string): CantonAddress => {\n if (id.includes(CANTON_OAPP_FILTER_DELIMITER)) {\n throw new Error(\n `Canton OApp filter id must not contain '${CANTON_OAPP_FILTER_DELIMITER}': ${id}`,\n );\n }\n const address = `${CANTON_OAPP_FILTER_ADDRESS_PREFIX}${partyId}${CANTON_OAPP_FILTER_DELIMITER}${id}${CANTON_DEFERRED_VALUE_SUFFIX}`;\n if (!isCantonOAppFilterAddress(address)) {\n throw new Error(`Invalid Canton OApp filter: partyId=${partyId} id=${id}`);\n }\n return address as CantonAddress;\n};\n\n/**\n * Split an OApp filter address (`<<CANTON_OAPP_FILTER::{partyId}|{id}>>`) into its party id and id. This is\n * the inverse of {@link cantonOAppFilterAddress}.\n *\n * @throws Error for any other input.\n */\nexport const parseCantonOAppFilterAddress = (address: string): { partyId: string; id: string } => {\n const match = CANTON_OAPP_FILTER_ADDRESS_REGEX.exec(address);\n if (!match) {\n throw new Error(`Not a Canton OApp filter address: ${address}`);\n }\n return { partyId: match[1]!, id: match[2]! };\n};\n\n/** Wrap a deferred-ref sentinel (`<<CANTON_DEFERRED:{json}>>`) as a `CantonAddress`. */\nexport const cantonDeferredAddress = (sentinel: string): CantonAddress => sentinel as CantonAddress;\n\n/** Wrap a raw Canton ledger value (party id, contract id, or deferred sentinel) as `CantonAddress`. */\nexport const toCantonAddress = (raw: string): CantonAddress => {\n if (isCantonDeferredSentinel(raw)) {\n return cantonDeferredAddress(raw);\n }\n const partyMatch = CANTON_PARTY_ID_REGEX.exec(raw);\n if (partyMatch) {\n const [, hint, fingerprint] = partyMatch;\n return cantonPartyAddress(hint!, fingerprint!);\n }\n const bare = trim0x(raw);\n if (bare.length === CANTON_CONTRACT_ID_HEX_LENGTH && bare.startsWith('00')) {\n return cantonCidAddress(bare);\n }\n throw new Error(`Not a Canton-native address: ${raw}`);\n};\n\n/** Returns true if `value` is a valid `CantonAddress` sentinel string. */\nexport const isCantonAddress = (value: string): value is CantonAddress =>\n value.startsWith(CANTON_PARTY_ADDRESS_PREFIX) ||\n value.startsWith(CANTON_CID_ADDRESS_PREFIX) ||\n isCantonDeferredSentinel(value) ||\n isCantonGlobalAddress(value) ||\n isCantonOAppFilterAddress(value);\n\n/**\n * Convert a Canton party address (`<<CANTON_PARTY::hint::fingerprint>>`) back to its raw party id\n * (`hint::fingerprint`). This is the inverse of {@link cantonPartyAddress} / {@link toCantonAddress}\n * for parties.\n *\n * A raw party id (`hint::fingerprint`, hex fingerprint) is also accepted and returned unchanged.\n *\n * @throws Error for contract-id (`<<CANTON_CID::...>>`), global (`<<CANTON_GLOBAL::...>>`), OApp filter\n * (`<<CANTON_OAPP_FILTER::...>>`) and deferred\n * (`<<CANTON_DEFERRED:...>>`) addresses, and for any malformed input.\n */\nexport const cantonAddressToPartyId = (address: string): string => {\n const isNonPartyAddress =\n address.startsWith(CANTON_CID_ADDRESS_PREFIX) ||\n address.startsWith(CANTON_GLOBAL_ADDRESS_PREFIX) ||\n address.startsWith(CANTON_OAPP_FILTER_ADDRESS_PREFIX) ||\n address.startsWith(CANTON_DEFERRED_VALUE_PREFIX);\n if (isNonPartyAddress) {\n throw new Error(`Not a Canton party address: ${address}`);\n }\n let candidate: string;\n if (address.startsWith(CANTON_PARTY_ADDRESS_PREFIX)) {\n if (!address.endsWith(CANTON_DEFERRED_VALUE_SUFFIX)) {\n throw new Error(`Not a Canton party address: ${address}`);\n }\n candidate = address.slice(\n CANTON_PARTY_ADDRESS_PREFIX.length,\n address.length - CANTON_DEFERRED_VALUE_SUFFIX.length,\n );\n } else if (address.startsWith('<<')) {\n throw new Error(`Not a Canton party address: ${address}`);\n } else {\n candidate = address;\n }\n const match = CANTON_PARTY_ID_REGEX.exec(candidate);\n if (!match || !match[1] || match[1].includes('<') || match[1].includes('>')) {\n throw new Error(`Not a Canton party address: ${address}`);\n }\n return `${match[1]}::${match[2]}`;\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { resolveCantonRefreshPlan } from './
|
|
1
|
+
import { resolveCantonRefreshPlan } from './4SK2ZV46.js';
|
|
2
2
|
import { __name } from './VUOMXK5T.js';
|
|
3
3
|
|
|
4
4
|
// src/refresh/resolve.ts
|
|
@@ -16,5 +16,5 @@ var resolveCantonTransaction = /* @__PURE__ */ __name(async ({ unresolvedCommand
|
|
|
16
16
|
}, "resolveCantonTransaction");
|
|
17
17
|
|
|
18
18
|
export { resolveCantonTransaction };
|
|
19
|
-
//# sourceMappingURL=
|
|
20
|
-
//# sourceMappingURL=
|
|
19
|
+
//# sourceMappingURL=JJDWTXLN.js.map
|
|
20
|
+
//# sourceMappingURL=JJDWTXLN.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/refresh/resolve.ts"],"names":["resolveCantonTransaction","unresolvedCommands","unresolvedDisclosedContracts","refreshPlan","senderParty","signingParties","client","resolveCantonRefreshPlan","commands"],"mappings":";;;;AAmBO,IAAMA,wBAAAA,iCAAkC,EAC3CC,kBAAAA,EACAC,8BACAC,WAAAA,EACAC,WAAAA,EACAC,cAAAA,EACAC,MAAAA,EAAM,KACmB;AAIzB,EAAA,OAAOC,wBAAAA,CAAyB;AAC5BN,IAAAA,kBAAAA;AACAC,IAAAA,4BAAAA;AACAC,IAAAA,WAAAA,EAAaA,WAAAA,IAAe;AAAEK,MAAAA,QAAAA,EAAU;AAAG,KAAA;AAC3CJ,IAAAA,WAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA;GACJ,CAAA;AACJ,CAAA,EAnBwC,0BAAA","file":"
|
|
1
|
+
{"version":3,"sources":["../src/refresh/resolve.ts"],"names":["resolveCantonTransaction","unresolvedCommands","unresolvedDisclosedContracts","refreshPlan","senderParty","signingParties","client","resolveCantonRefreshPlan","commands"],"mappings":";;;;AAmBO,IAAMA,wBAAAA,iCAAkC,EAC3CC,kBAAAA,EACAC,8BACAC,WAAAA,EACAC,WAAAA,EACAC,cAAAA,EACAC,MAAAA,EAAM,KACmB;AAIzB,EAAA,OAAOC,wBAAAA,CAAyB;AAC5BN,IAAAA,kBAAAA;AACAC,IAAAA,4BAAAA;AACAC,IAAAA,WAAAA,EAAaA,WAAAA,IAAe;AAAEK,MAAAA,QAAAA,EAAU;AAAG,KAAA;AAC3CJ,IAAAA,WAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA;GACJ,CAAA;AACJ,CAAA,EAnBwC,0BAAA","file":"JJDWTXLN.js","sourcesContent":["import type { ICantonClient } from '../client/interface';\nimport type {\n CantonCommand,\n CantonDisclosedContract,\n CantonUnresolvedCommand,\n} from '../transaction';\nimport type { CantonRefreshPlan } from './plan';\nimport { resolveCantonRefreshPlan } from './resolve-plan';\n\nexport interface ResolveCantonAddressParams {\n unresolvedCommands: CantonUnresolvedCommand[];\n unresolvedDisclosedContracts: CantonDisclosedContract[];\n refreshPlan?: CantonRefreshPlan;\n senderParty?: string;\n /** A contract is only disclosed when none of these parties is already a stakeholder on it. */\n signingParties: string[];\n client: ICantonClient;\n}\n\nexport const resolveCantonTransaction = async ({\n unresolvedCommands,\n unresolvedDisclosedContracts,\n refreshPlan,\n senderParty,\n signingParties,\n client,\n}: ResolveCantonAddressParams): Promise<{\n commands: CantonCommand[];\n disclosedContracts: CantonDisclosedContract[];\n}> => {\n return resolveCantonRefreshPlan({\n unresolvedCommands,\n unresolvedDisclosedContracts,\n refreshPlan: refreshPlan ?? { commands: [] },\n senderParty,\n signingParties,\n client,\n });\n};\n"]}
|
package/dist/address.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ import type { Branded } from '@layerzerolabs/typescript-utils';
|
|
|
2
2
|
export declare const CANTON_PARTY_ADDRESS_PREFIX = "<<CANTON_PARTY::";
|
|
3
3
|
export declare const CANTON_CID_ADDRESS_PREFIX = "<<CANTON_CID::";
|
|
4
4
|
export declare const CANTON_GLOBAL_ADDRESS_PREFIX = "<<CANTON_GLOBAL::";
|
|
5
|
+
export declare const CANTON_OAPP_FILTER_ADDRESS_PREFIX = "<<CANTON_OAPP_FILTER::";
|
|
6
|
+
export declare const CANTON_OAPP_FILTER_DELIMITER = "|";
|
|
5
7
|
/** A Canton ledger or VER global address, with an explicit sentinel prefix. */
|
|
6
8
|
export type CantonAddress = Branded<string, 'CantonAddress'>;
|
|
7
9
|
/** Construct a party `CantonAddress` from hint and fingerprint. */
|
|
@@ -11,6 +13,39 @@ export declare const cantonCidAddress: (contractId: string) => CantonAddress;
|
|
|
11
13
|
/** Explicitly wrap an already-derived VER global address. This does not hash the input. */
|
|
12
14
|
export declare const cantonGlobalAddress: (address: string) => CantonAddress;
|
|
13
15
|
export declare const isCantonGlobalAddress: (value: string) => value is CantonAddress;
|
|
16
|
+
/**
|
|
17
|
+
* The global address sentinel for a raw VER global bytes32. A value that is already a global
|
|
18
|
+
* address sentinel is returned unchanged.
|
|
19
|
+
*
|
|
20
|
+
* @throws Error for a value that is neither a global address sentinel nor 1 to 64 hex characters.
|
|
21
|
+
*/
|
|
22
|
+
export declare const toCantonGlobalAddress: (address: string) => CantonAddress;
|
|
23
|
+
/**
|
|
24
|
+
* The lowercase `0x{bytes32}` inside a global address (`<<CANTON_GLOBAL::0x{bytes32}>>`). This is the
|
|
25
|
+
* inverse of {@link cantonGlobalAddress}.
|
|
26
|
+
*
|
|
27
|
+
* @throws Error for any other input.
|
|
28
|
+
*/
|
|
29
|
+
export declare const parseCantonGlobalAddress: (address: string) => string;
|
|
30
|
+
/** Returns true for an OApp filter address: `<<CANTON_OAPP_FILTER::{hint}::{hex fingerprint}|{id}>>`. */
|
|
31
|
+
export declare const isCantonOAppFilterAddress: (value: string) => value is CantonAddress;
|
|
32
|
+
/**
|
|
33
|
+
* Construct an OApp filter `CantonAddress` (`<<CANTON_OAPP_FILTER::{partyId}|{id}>>`) from the OApp's party
|
|
34
|
+
* id (`hint::fingerprint`) and its id.
|
|
35
|
+
*
|
|
36
|
+
* @throws Error if `partyId` is not a party id, or `id` is empty or contains `|`.
|
|
37
|
+
*/
|
|
38
|
+
export declare const cantonOAppFilterAddress: (partyId: string, id: string) => CantonAddress;
|
|
39
|
+
/**
|
|
40
|
+
* Split an OApp filter address (`<<CANTON_OAPP_FILTER::{partyId}|{id}>>`) into its party id and id. This is
|
|
41
|
+
* the inverse of {@link cantonOAppFilterAddress}.
|
|
42
|
+
*
|
|
43
|
+
* @throws Error for any other input.
|
|
44
|
+
*/
|
|
45
|
+
export declare const parseCantonOAppFilterAddress: (address: string) => {
|
|
46
|
+
partyId: string;
|
|
47
|
+
id: string;
|
|
48
|
+
};
|
|
14
49
|
/** Wrap a deferred-ref sentinel (`<<CANTON_DEFERRED:{json}>>`) as a `CantonAddress`. */
|
|
15
50
|
export declare const cantonDeferredAddress: (sentinel: string) => CantonAddress;
|
|
16
51
|
/** Wrap a raw Canton ledger value (party id, contract id, or deferred sentinel) as `CantonAddress`. */
|
|
@@ -24,7 +59,8 @@ export declare const isCantonAddress: (value: string) => value is CantonAddress;
|
|
|
24
59
|
*
|
|
25
60
|
* A raw party id (`hint::fingerprint`, hex fingerprint) is also accepted and returned unchanged.
|
|
26
61
|
*
|
|
27
|
-
* @throws Error for contract-id (`<<CANTON_CID::...>>`), global (`<<CANTON_GLOBAL::...>>`)
|
|
62
|
+
* @throws Error for contract-id (`<<CANTON_CID::...>>`), global (`<<CANTON_GLOBAL::...>>`), OApp filter
|
|
63
|
+
* (`<<CANTON_OAPP_FILTER::...>>`) and deferred
|
|
28
64
|
* (`<<CANTON_DEFERRED:...>>`) addresses, and for any malformed input.
|
|
29
65
|
*/
|
|
30
66
|
export declare const cantonAddressToPartyId: (address: string) => string;
|
package/dist/address.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../src/address.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAW/D,eAAO,MAAM,2BAA2B,qBAAqB,CAAC;AAC9D,eAAO,MAAM,yBAAyB,mBAAmB,CAAC;AAC1D,eAAO,MAAM,4BAA4B,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../src/address.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAW/D,eAAO,MAAM,2BAA2B,qBAAqB,CAAC;AAC9D,eAAO,MAAM,yBAAyB,mBAAmB,CAAC;AAC1D,eAAO,MAAM,4BAA4B,sBAAsB,CAAC;AAChE,eAAO,MAAM,iCAAiC,2BAA2B,CAAC;AAC1E,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAKhD,+EAA+E;AAC/E,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAE7D,mEAAmE;AACnE,eAAO,MAAM,kBAAkB,SAAU,MAAM,eAAe,MAAM,KAAG,aACoC,CAAC;AAE5G,oFAAoF;AACpF,eAAO,MAAM,gBAAgB,eAAgB,MAAM,KAAG,aACyC,CAAC;AAEhG,2FAA2F;AAC3F,eAAO,MAAM,mBAAmB,YAAa,MAAM,KAAG,aAKrD,CAAC;AAEF,eAAO,MAAM,qBAAqB,UAAW,MAAM,KAAG,KAAK,IAAI,aACP,CAAC;AAEzD;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,YAAa,MAAM,KAAG,aACmB,CAAC;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,YAAa,MAAM,KAAG,MAO1D,CAAC;AAEF,yGAAyG;AACzG,eAAO,MAAM,yBAAyB,UAAW,MAAM,KAAG,KAAK,IAAI,aACnB,CAAC;AAEjD;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,YAAa,MAAM,MAAM,MAAM,KAAG,aAWrE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,YAAa,MAAM,KAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAM3F,CAAC;AAEF,wFAAwF;AACxF,eAAO,MAAM,qBAAqB,aAAc,MAAM,KAAG,aAA0C,CAAC;AAEpG,uGAAuG;AACvG,eAAO,MAAM,eAAe,QAAS,MAAM,KAAG,aAc7C,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,eAAe,UAAW,MAAM,KAAG,KAAK,IAAI,aAKrB,CAAC;AAErC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,YAAa,MAAM,KAAG,MA4BxD,CAAC"}
|
package/dist/address.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { CANTON_CID_ADDRESS_PREFIX, CANTON_GLOBAL_ADDRESS_PREFIX, CANTON_PARTY_ADDRESS_PREFIX, cantonAddressToPartyId, cantonCidAddress, cantonDeferredAddress, cantonGlobalAddress, cantonPartyAddress, isCantonAddress, isCantonGlobalAddress, toCantonAddress } from './
|
|
1
|
+
export { CANTON_CID_ADDRESS_PREFIX, CANTON_GLOBAL_ADDRESS_PREFIX, CANTON_OAPP_FILTER_ADDRESS_PREFIX, CANTON_OAPP_FILTER_DELIMITER, CANTON_PARTY_ADDRESS_PREFIX, cantonAddressToPartyId, cantonCidAddress, cantonDeferredAddress, cantonGlobalAddress, cantonOAppFilterAddress, cantonPartyAddress, isCantonAddress, isCantonGlobalAddress, isCantonOAppFilterAddress, parseCantonGlobalAddress, parseCantonOAppFilterAddress, toCantonAddress, toCantonGlobalAddress } from './J4V2ZLWV.js';
|
|
2
2
|
import './U6EV6YAY.js';
|
|
3
3
|
import './VUOMXK5T.js';
|
|
4
4
|
//# sourceMappingURL=address.js.map
|
package/dist/browser.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { assertHexLength, codePointLength, formatDamlDecimal, intToHex, keccak256Hex, padLeft, showBool, showInt, textToHex, timeToUnixSeconds, toBigInt } from './EZIA6KIP.js';
|
|
2
2
|
export { SECP256K1_SPKI_DER_HEADER, SECP256K1_SPKI_DER_HEADER_HEX, derEncodeSignature, publicKeyToSpkiDer } from './CMDFOA7C.js';
|
|
3
|
-
export { CANTON_CID_ADDRESS_PREFIX, CANTON_GLOBAL_ADDRESS_PREFIX, CANTON_PARTY_ADDRESS_PREFIX, cantonAddressToPartyId, cantonCidAddress, cantonDeferredAddress, cantonGlobalAddress, cantonPartyAddress, isCantonAddress, isCantonGlobalAddress, toCantonAddress } from './
|
|
3
|
+
export { CANTON_CID_ADDRESS_PREFIX, CANTON_GLOBAL_ADDRESS_PREFIX, CANTON_OAPP_FILTER_ADDRESS_PREFIX, CANTON_OAPP_FILTER_DELIMITER, CANTON_PARTY_ADDRESS_PREFIX, cantonAddressToPartyId, cantonCidAddress, cantonDeferredAddress, cantonGlobalAddress, cantonOAppFilterAddress, cantonPartyAddress, isCantonAddress, isCantonGlobalAddress, isCantonOAppFilterAddress, parseCantonGlobalAddress, parseCantonOAppFilterAddress, toCantonAddress, toCantonGlobalAddress } from './J4V2ZLWV.js';
|
|
4
4
|
export { CANTON_DEFERRED_SENDER, CANTON_DEFERRED_VALUE_PREFIX, CANTON_DEFERRED_VALUE_SUFFIX, cantonActiveContractIdRef, cantonDeferredSenderSchema, cantonDeferredValueSchema, cantonExpectedSignatoriesSchema, cantonRefreshPartyFilterSchema, cantonSenderPartyRef, encodeCantonDeferredValue, isCantonDeferredSender, isCantonDeferredSentinel, isCantonPlaceholder, parseCantonDeferredValue } from './U6EV6YAY.js';
|
|
5
5
|
import './VUOMXK5T.js';
|
|
6
6
|
//# sourceMappingURL=browser.js.map
|
package/dist/index.js
CHANGED
|
@@ -2,13 +2,13 @@ import './5GUYLHA7.js';
|
|
|
2
2
|
import './MPUXBCWT.js';
|
|
3
3
|
export { prepareRefreshableAmuletTransfer } from './YBGD26CU.js';
|
|
4
4
|
export { prepareRefreshableTransferInstructionAcceptance } from './G4IAVHVV.js';
|
|
5
|
-
export { resolveCantonTransaction } from './
|
|
6
|
-
export { resolveCantonActiveContracts, resolveCantonRefreshPlan, selectContractsByGte } from './
|
|
5
|
+
export { resolveCantonTransaction } from './JJDWTXLN.js';
|
|
6
|
+
export { resolveCantonActiveContracts, resolveCantonRefreshPlan, selectContractsByGte } from './4SK2ZV46.js';
|
|
7
7
|
export { CantonSdk } from './XUXLV3PL.js';
|
|
8
8
|
export { resolveCantonOneSigTransferBatch } from './NSHNCUWI.js';
|
|
9
9
|
export { resolveCantonOneSigConfigContext } from './IUQEDBC6.js';
|
|
10
10
|
export { resolveCantonOneSigDiscoveryContext } from './B7J77LOR.js';
|
|
11
|
-
export { resolveCantonOneSigRequestContext } from './
|
|
11
|
+
export { resolveCantonOneSigRequestContext } from './D3KVE5XQ.js';
|
|
12
12
|
export { resolveCantonOneSigScopeContext } from './NGED2YCU.js';
|
|
13
13
|
export { resolveCantonOneSigTransferInstructionContext } from './5BK6GCUD.js';
|
|
14
14
|
export { cantonAdapterCallbackReceivers, cantonBurnMintCallbackEntries, cantonCallbackAppUid, cantonFinalizeCallbackBaseEntries, cantonLockUnlockCallbackEntries, getCantonCallbackFnArgs, hasPositiveCantonCallbackOutflow, resolveCantonFinalizeCallback, shouldIncludeCantonCallbackRateLimiter } from './E6W3YWXU.js';
|
|
@@ -316,7 +316,7 @@ export { LocalTokenProvider } from './YF7P4UQM.js';
|
|
|
316
316
|
import './RSV7WS7X.js';
|
|
317
317
|
export { assertHexLength, codePointLength, formatDamlDecimal, intToHex, keccak256Hex, padLeft, showBool, showInt, textToHex, timeToUnixSeconds, toBigInt } from './EZIA6KIP.js';
|
|
318
318
|
export { SECP256K1_SPKI_DER_HEADER, SECP256K1_SPKI_DER_HEADER_HEX, derEncodeSignature, publicKeyToSpkiDer } from './CMDFOA7C.js';
|
|
319
|
-
export { CANTON_CID_ADDRESS_PREFIX, CANTON_GLOBAL_ADDRESS_PREFIX, CANTON_PARTY_ADDRESS_PREFIX, cantonAddressToPartyId, cantonCidAddress, cantonDeferredAddress, cantonGlobalAddress, cantonPartyAddress, isCantonAddress, isCantonGlobalAddress, toCantonAddress } from './
|
|
319
|
+
export { CANTON_CID_ADDRESS_PREFIX, CANTON_GLOBAL_ADDRESS_PREFIX, CANTON_OAPP_FILTER_ADDRESS_PREFIX, CANTON_OAPP_FILTER_DELIMITER, CANTON_PARTY_ADDRESS_PREFIX, cantonAddressToPartyId, cantonCidAddress, cantonDeferredAddress, cantonGlobalAddress, cantonOAppFilterAddress, cantonPartyAddress, isCantonAddress, isCantonGlobalAddress, isCantonOAppFilterAddress, parseCantonGlobalAddress, parseCantonOAppFilterAddress, toCantonAddress, toCantonGlobalAddress } from './J4V2ZLWV.js';
|
|
320
320
|
export { AMULET_INSTRUMENT_ID, fetchAcceptContext, fetchAmuletContext, fetchAmuletRules, fetchAmuletTransferFactoryContext, fetchDsoParty, fetchOpenAndIssuingMiningRounds, fetchTransferInstructionContext, findAmuletRulesDisclosures, injectExternalPartyAmuletRules, toDisclosedContract } from './KPFKPA5E.js';
|
|
321
321
|
export { assertSafeRegistryUrl, contractIdsFromAnyValue, discloseUtilityCredentials, discoveryUrlsForAppUid, mergeTransferFactoryContexts, partyIdFromRegistryFingerprint } from './TLQX4ZQW.js';
|
|
322
322
|
import './ZEK5YBPA.js';
|
package/dist/refresh/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import '../MPUXBCWT.js';
|
|
2
2
|
export { prepareRefreshableAmuletTransfer } from '../YBGD26CU.js';
|
|
3
3
|
export { prepareRefreshableTransferInstructionAcceptance } from '../G4IAVHVV.js';
|
|
4
|
-
export { resolveCantonTransaction } from '../
|
|
5
|
-
export { resolveCantonActiveContracts, resolveCantonRefreshPlan, selectContractsByGte } from '../
|
|
4
|
+
export { resolveCantonTransaction } from '../JJDWTXLN.js';
|
|
5
|
+
export { resolveCantonActiveContracts, resolveCantonRefreshPlan, selectContractsByGte } from '../4SK2ZV46.js';
|
|
6
6
|
import '../XUXLV3PL.js';
|
|
7
7
|
export { resolveCantonOneSigTransferBatch } from '../NSHNCUWI.js';
|
|
8
8
|
export { resolveCantonOneSigConfigContext } from '../IUQEDBC6.js';
|
|
9
9
|
export { resolveCantonOneSigDiscoveryContext } from '../B7J77LOR.js';
|
|
10
|
-
export { resolveCantonOneSigRequestContext } from '../
|
|
10
|
+
export { resolveCantonOneSigRequestContext } from '../D3KVE5XQ.js';
|
|
11
11
|
export { resolveCantonOneSigScopeContext } from '../NGED2YCU.js';
|
|
12
12
|
export { resolveCantonOneSigTransferInstructionContext } from '../5BK6GCUD.js';
|
|
13
13
|
export { cantonAdapterCallbackReceivers, cantonBurnMintCallbackEntries, cantonCallbackAppUid, cantonFinalizeCallbackBaseEntries, cantonLockUnlockCallbackEntries, getCantonCallbackFnArgs, hasPositiveCantonCallbackOutflow, resolveCantonFinalizeCallback, shouldIncludeCantonCallbackRateLimiter } from '../E6W3YWXU.js';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { resolveCantonActiveContracts, resolveCantonRefreshPlan, selectContractsByGte } from '../
|
|
1
|
+
export { resolveCantonActiveContracts, resolveCantonRefreshPlan, selectContractsByGte } from '../4SK2ZV46.js';
|
|
2
2
|
import '../XUXLV3PL.js';
|
|
3
3
|
import '../NSHNCUWI.js';
|
|
4
4
|
import '../IUQEDBC6.js';
|
|
5
5
|
import '../B7J77LOR.js';
|
|
6
|
-
import '../
|
|
6
|
+
import '../D3KVE5XQ.js';
|
|
7
7
|
import '../NGED2YCU.js';
|
|
8
8
|
import '../5BK6GCUD.js';
|
|
9
9
|
import '../E6W3YWXU.js';
|
package/dist/refresh/resolve.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { resolveCantonTransaction } from '../
|
|
2
|
-
import '../
|
|
1
|
+
export { resolveCantonTransaction } from '../JJDWTXLN.js';
|
|
2
|
+
import '../4SK2ZV46.js';
|
|
3
3
|
import '../XUXLV3PL.js';
|
|
4
4
|
import '../NSHNCUWI.js';
|
|
5
5
|
import '../IUQEDBC6.js';
|
|
6
6
|
import '../B7J77LOR.js';
|
|
7
|
-
import '../
|
|
7
|
+
import '../D3KVE5XQ.js';
|
|
8
8
|
import '../NGED2YCU.js';
|
|
9
9
|
import '../5BK6GCUD.js';
|
|
10
10
|
import '../E6W3YWXU.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@layerzerolabs/common-canton",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.96",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Canton VM client and utilities",
|
|
6
6
|
"license": "MIT",
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
"@canton-network/core-ledger-proto": "^1.7.0",
|
|
33
33
|
"@daml/types": "3.4.8",
|
|
34
34
|
"@grpc/grpc-js": "^1.14.5",
|
|
35
|
-
"@layerzerolabs/common-chain-model": "1.2.
|
|
36
|
-
"@layerzerolabs/common-encoding-utils": "1.2.
|
|
37
|
-
"@layerzerolabs/common-error-utils": "1.2.
|
|
38
|
-
"@layerzerolabs/typescript-utils": "1.2.
|
|
35
|
+
"@layerzerolabs/common-chain-model": "1.2.96",
|
|
36
|
+
"@layerzerolabs/common-encoding-utils": "1.2.96",
|
|
37
|
+
"@layerzerolabs/common-error-utils": "1.2.96",
|
|
38
|
+
"@layerzerolabs/typescript-utils": "1.2.96",
|
|
39
39
|
"@mojotech/json-type-validation": "^3.1.0",
|
|
40
40
|
"@noble/hashes": "^1.8.0",
|
|
41
41
|
"@noble/secp256k1": "1.7.1",
|
|
@@ -46,11 +46,11 @@
|
|
|
46
46
|
"zod": "4.3.5"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@layerzerolabs/eslint-configuration": "^1.2.
|
|
50
|
-
"@layerzerolabs/tsup-configuration": "1.2.
|
|
51
|
-
"@layerzerolabs/typescript-configuration": "1.2.
|
|
52
|
-
"@layerzerolabs/vitest-configuration": "1.2.
|
|
53
|
-
"@layerzerolabs/vm-tooling-canton": "1.2.
|
|
49
|
+
"@layerzerolabs/eslint-configuration": "^1.2.96",
|
|
50
|
+
"@layerzerolabs/tsup-configuration": "1.2.96",
|
|
51
|
+
"@layerzerolabs/typescript-configuration": "1.2.96",
|
|
52
|
+
"@layerzerolabs/vitest-configuration": "1.2.96",
|
|
53
|
+
"@layerzerolabs/vm-tooling-canton": "1.2.96",
|
|
54
54
|
"@vitest/coverage-v8": "4.1.10",
|
|
55
55
|
"eslint": "9.39.1",
|
|
56
56
|
"tsup": "^8.4.0",
|
package/dist/THWUUI4S.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/address.ts"],"names":["CANTON_PARTY_ID_REGEX","CANTON_CONTRACT_ID_HEX_LENGTH","CANTON_PARTY_ADDRESS_PREFIX","CANTON_CID_ADDRESS_PREFIX","CANTON_GLOBAL_ADDRESS_PREFIX","cantonPartyAddress","hint","fingerprint","CANTON_DEFERRED_VALUE_SUFFIX","cantonCidAddress","contractId","cantonGlobalAddress","address","test","Error","hexZeroPad","toLowerCase","isCantonGlobalAddress","value","cantonDeferredAddress","sentinel","toCantonAddress","raw","isCantonDeferredSentinel","partyMatch","exec","bare","trim0x","length","startsWith","isCantonAddress","cantonAddressToPartyId","isNonPartyAddress","CANTON_DEFERRED_VALUE_PREFIX","candidate","endsWith","slice","match","includes"],"mappings":"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","file":"THWUUI4S.js","sourcesContent":["import { hexZeroPad, trim0x } from '@layerzerolabs/common-encoding-utils';\nimport type { Branded } from '@layerzerolabs/typescript-utils';\n\nimport {\n CANTON_DEFERRED_VALUE_PREFIX,\n CANTON_DEFERRED_VALUE_SUFFIX,\n isCantonDeferredSentinel,\n} from './deferredValue';\n\nconst CANTON_PARTY_ID_REGEX = /^(.+)::([0-9a-fA-F]+)$/;\nconst CANTON_CONTRACT_ID_HEX_LENGTH = 138; // 69 bytes\n\nexport const CANTON_PARTY_ADDRESS_PREFIX = '<<CANTON_PARTY::';\nexport const CANTON_CID_ADDRESS_PREFIX = '<<CANTON_CID::';\nexport const CANTON_GLOBAL_ADDRESS_PREFIX = '<<CANTON_GLOBAL::';\n\n/** A Canton ledger or VER global address, with an explicit sentinel prefix. */\nexport type CantonAddress = Branded<string, 'CantonAddress'>;\n\n/** Construct a party `CantonAddress` from hint and fingerprint. */\nexport const cantonPartyAddress = (hint: string, fingerprint: string): CantonAddress =>\n `${CANTON_PARTY_ADDRESS_PREFIX}${hint}::${fingerprint}${CANTON_DEFERRED_VALUE_SUFFIX}` as CantonAddress;\n\n/** Construct a contract-ID `CantonAddress` from the raw 69-byte hex contract id. */\nexport const cantonCidAddress = (contractId: string): CantonAddress =>\n `${CANTON_CID_ADDRESS_PREFIX}${contractId}${CANTON_DEFERRED_VALUE_SUFFIX}` as CantonAddress;\n\n/** Explicitly wrap an already-derived VER global address. This does not hash the input. */\nexport const cantonGlobalAddress = (address: string): CantonAddress => {\n if (!/^(?:0x)?[0-9a-fA-F]{1,64}$/.test(address)) {\n throw new Error(`Invalid Canton global bytes32 address: ${address}`);\n }\n return `${CANTON_GLOBAL_ADDRESS_PREFIX}${hexZeroPad(address, 32).toLowerCase()}${CANTON_DEFERRED_VALUE_SUFFIX}` as CantonAddress;\n};\n\nexport const isCantonGlobalAddress = (value: string): value is CantonAddress =>\n /^<<CANTON_GLOBAL::0x[0-9a-fA-F]{64}>>$/.test(value);\n\n/** Wrap a deferred-ref sentinel (`<<CANTON_DEFERRED:{json}>>`) as a `CantonAddress`. */\nexport const cantonDeferredAddress = (sentinel: string): CantonAddress => sentinel as CantonAddress;\n\n/** Wrap a raw Canton ledger value (party id, contract id, or deferred sentinel) as `CantonAddress`. */\nexport const toCantonAddress = (raw: string): CantonAddress => {\n if (isCantonDeferredSentinel(raw)) {\n return cantonDeferredAddress(raw);\n }\n const partyMatch = CANTON_PARTY_ID_REGEX.exec(raw);\n if (partyMatch) {\n const [, hint, fingerprint] = partyMatch;\n return cantonPartyAddress(hint!, fingerprint!);\n }\n const bare = trim0x(raw);\n if (bare.length === CANTON_CONTRACT_ID_HEX_LENGTH && bare.startsWith('00')) {\n return cantonCidAddress(bare);\n }\n throw new Error(`Not a Canton-native address: ${raw}`);\n};\n\n/** Returns true if `value` is a valid `CantonAddress` sentinel string. */\nexport const isCantonAddress = (value: string): value is CantonAddress =>\n value.startsWith(CANTON_PARTY_ADDRESS_PREFIX) ||\n value.startsWith(CANTON_CID_ADDRESS_PREFIX) ||\n isCantonDeferredSentinel(value) ||\n isCantonGlobalAddress(value);\n\n/**\n * Convert a Canton party address (`<<CANTON_PARTY::hint::fingerprint>>`) back to its raw party id\n * (`hint::fingerprint`). This is the inverse of {@link cantonPartyAddress} / {@link toCantonAddress}\n * for parties.\n *\n * A raw party id (`hint::fingerprint`, hex fingerprint) is also accepted and returned unchanged.\n *\n * @throws Error for contract-id (`<<CANTON_CID::...>>`), global (`<<CANTON_GLOBAL::...>>`) and deferred\n * (`<<CANTON_DEFERRED:...>>`) addresses, and for any malformed input.\n */\nexport const cantonAddressToPartyId = (address: string): string => {\n const isNonPartyAddress =\n address.startsWith(CANTON_CID_ADDRESS_PREFIX) ||\n address.startsWith(CANTON_GLOBAL_ADDRESS_PREFIX) ||\n address.startsWith(CANTON_DEFERRED_VALUE_PREFIX);\n if (isNonPartyAddress) {\n throw new Error(`Not a Canton party address: ${address}`);\n }\n let candidate: string;\n if (address.startsWith(CANTON_PARTY_ADDRESS_PREFIX)) {\n if (!address.endsWith(CANTON_DEFERRED_VALUE_SUFFIX)) {\n throw new Error(`Not a Canton party address: ${address}`);\n }\n candidate = address.slice(\n CANTON_PARTY_ADDRESS_PREFIX.length,\n address.length - CANTON_DEFERRED_VALUE_SUFFIX.length,\n );\n } else if (address.startsWith('<<')) {\n throw new Error(`Not a Canton party address: ${address}`);\n } else {\n candidate = address;\n }\n const match = CANTON_PARTY_ID_REGEX.exec(candidate);\n if (!match || !match[1] || match[1].includes('<') || match[1].includes('>')) {\n throw new Error(`Not a Canton party address: ${address}`);\n }\n return `${match[1]}::${match[2]}`;\n};\n"]}
|