@layerzerolabs/common-canton 1.2.99 → 1.2.101

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/dist/{D3KVE5XQ.js → 3H5UAMWJ.js} +12 -9
  2. package/dist/3H5UAMWJ.js.map +1 -0
  3. package/dist/{YBGD26CU.js → 45C3KMUJ.js} +12 -6
  4. package/dist/45C3KMUJ.js.map +1 -0
  5. package/dist/{5BK6GCUD.js → 5VT3BVW6.js} +4 -4
  6. package/dist/{5BK6GCUD.js.map → 5VT3BVW6.js.map} +1 -1
  7. package/dist/{CMFVLC7C.js → 6GIDRO6Y.js} +3 -3
  8. package/dist/{CMFVLC7C.js.map → 6GIDRO6Y.js.map} +1 -1
  9. package/dist/{4SK2ZV46.js → 7DFFQF5Y.js} +37 -14
  10. package/dist/7DFFQF5Y.js.map +1 -0
  11. package/dist/{RFGCLYQN.js → 7Z6L2FXT.js} +3 -3
  12. package/dist/{RFGCLYQN.js.map → 7Z6L2FXT.js.map} +1 -1
  13. package/dist/{NSHNCUWI.js → A4HRBTRS.js} +5 -5
  14. package/dist/{NSHNCUWI.js.map → A4HRBTRS.js.map} +1 -1
  15. package/dist/{HQMIA66Y.js → DELPT7WC.js} +3 -3
  16. package/dist/{HQMIA66Y.js.map → DELPT7WC.js.map} +1 -1
  17. package/dist/{4WZTQJXP.js → KDLPAZ3P.js} +2 -2
  18. package/dist/{4WZTQJXP.js.map → KDLPAZ3P.js.map} +1 -1
  19. package/dist/{YV6LAB6R.js → KGEOWAAR.js} +3 -3
  20. package/dist/{YV6LAB6R.js.map → KGEOWAAR.js.map} +1 -1
  21. package/dist/{K7FRAGGM.js → KLMACWXT.js} +3 -3
  22. package/dist/KLMACWXT.js.map +1 -0
  23. package/dist/{UG2M23HF.js → MM7EIOP4.js} +3 -3
  24. package/dist/{UG2M23HF.js.map → MM7EIOP4.js.map} +1 -1
  25. package/dist/{E6W3YWXU.js → MRAAJXQA.js} +4 -4
  26. package/dist/{E6W3YWXU.js.map → MRAAJXQA.js.map} +1 -1
  27. package/dist/{NGED2YCU.js → OK7GQCQM.js} +9 -5
  28. package/dist/OK7GQCQM.js.map +1 -0
  29. package/dist/{JJDWTXLN.js → QOVYNKLD.js} +3 -3
  30. package/dist/{JJDWTXLN.js.map → QOVYNKLD.js.map} +1 -1
  31. package/dist/{HC2GOOAL.js → QWU4V7O2.js} +138 -24
  32. package/dist/QWU4V7O2.js.map +1 -0
  33. package/dist/{XUXLV3PL.js → SAHSVYH6.js} +2 -2
  34. package/dist/{XUXLV3PL.js.map → SAHSVYH6.js.map} +1 -1
  35. package/dist/{5VKWPQE4.js → SEKZMYNZ.js} +3 -3
  36. package/dist/{5VKWPQE4.js.map → SEKZMYNZ.js.map} +1 -1
  37. package/dist/{DCDLEU2R.js → UUUJS2PY.js} +11 -3
  38. package/dist/UUUJS2PY.js.map +1 -0
  39. package/dist/{M3GPMXME.js → W3ZJSUA6.js} +3 -3
  40. package/dist/{M3GPMXME.js.map → W3ZJSUA6.js.map} +1 -1
  41. package/dist/{IUQEDBC6.js → XKBA43N7.js} +12 -9
  42. package/dist/XKBA43N7.js.map +1 -0
  43. package/dist/{KPFKPA5E.js → XWNGGI4V.js} +6 -6
  44. package/dist/XWNGGI4V.js.map +1 -0
  45. package/dist/{2B3PTIL7.js → ZVEWMW6Q.js} +4 -4
  46. package/dist/{2B3PTIL7.js.map → ZVEWMW6Q.js.map} +1 -1
  47. package/dist/client/amulet.d.ts +11 -1
  48. package/dist/client/amulet.d.ts.map +1 -1
  49. package/dist/client/amulet.js +3 -3
  50. package/dist/client/canton-client.d.ts +13 -4
  51. package/dist/client/canton-client.d.ts.map +1 -1
  52. package/dist/client/canton-client.js +4 -4
  53. package/dist/client/grpc.js +2 -2
  54. package/dist/client/index.d.ts +1 -1
  55. package/dist/client/index.d.ts.map +1 -1
  56. package/dist/client/index.js +6 -6
  57. package/dist/client/interface.d.ts +13 -4
  58. package/dist/client/interface.d.ts.map +1 -1
  59. package/dist/client/topology/utils.d.ts +4 -0
  60. package/dist/client/topology/utils.d.ts.map +1 -1
  61. package/dist/client/topology/utils.js +1 -1
  62. package/dist/events.js +3 -3
  63. package/dist/index.js +23 -23
  64. package/dist/minFee.js +2 -2
  65. package/dist/provider.js +7 -7
  66. package/dist/refresh/callback-burn-mint.js +5 -5
  67. package/dist/refresh/callback-lock-unlock.js +5 -5
  68. package/dist/refresh/callback-registry.js +4 -4
  69. package/dist/refresh/callback.js +7 -7
  70. package/dist/refresh/index.js +17 -17
  71. package/dist/refresh/onesig-config.js +1 -1
  72. package/dist/refresh/onesig-request.js +1 -1
  73. package/dist/refresh/onesig-scope.d.ts.map +1 -1
  74. package/dist/refresh/onesig-scope.js +1 -1
  75. package/dist/refresh/onesig-transfer-instruction.js +8 -8
  76. package/dist/refresh/onesig-transfer.js +9 -9
  77. package/dist/refresh/plan.d.ts +18 -0
  78. package/dist/refresh/plan.d.ts.map +1 -1
  79. package/dist/refresh/plan.js +1 -1
  80. package/dist/refresh/prepare-amulet-transfer.d.ts.map +1 -1
  81. package/dist/refresh/prepare-amulet-transfer.js +4 -4
  82. package/dist/refresh/resolve-plan.d.ts.map +1 -1
  83. package/dist/refresh/resolve-plan.js +15 -15
  84. package/dist/refresh/resolve.js +16 -16
  85. package/dist/sdk/canton-sdk.d.ts +1 -0
  86. package/dist/sdk/canton-sdk.d.ts.map +1 -1
  87. package/dist/sdk/canton-sdk.js +1 -1
  88. package/dist/sdk/index.js +1 -1
  89. package/dist/transaction.d.ts +30 -0
  90. package/dist/transaction.d.ts.map +1 -1
  91. package/dist/transaction.js +2 -2
  92. package/dist/types.d.ts +14 -0
  93. package/dist/types.d.ts.map +1 -1
  94. package/dist/types.js +1 -1
  95. package/package.json +10 -10
  96. package/dist/4SK2ZV46.js.map +0 -1
  97. package/dist/D3KVE5XQ.js.map +0 -1
  98. package/dist/DCDLEU2R.js.map +0 -1
  99. package/dist/HC2GOOAL.js.map +0 -1
  100. package/dist/IUQEDBC6.js.map +0 -1
  101. package/dist/K7FRAGGM.js.map +0 -1
  102. package/dist/KPFKPA5E.js.map +0 -1
  103. package/dist/NGED2YCU.js.map +0 -1
  104. package/dist/YBGD26CU.js.map +0 -1
@@ -20,12 +20,17 @@ var requiredText = /* @__PURE__ */ __name((value, label) => {
20
20
  }, "requiredText");
21
21
  var resolveCantonOneSigRequestContext = /* @__PURE__ */ __name(async (sdk, input, timestamp) => {
22
22
  const offset = await sdk.getLedgerEndOffset();
23
+ const parties = [
24
+ .../* @__PURE__ */ new Set([
25
+ input.informee,
26
+ ...input.readAs ?? []
27
+ ])
28
+ ];
23
29
  const templateContracts = /* @__PURE__ */ __name(async (templateId) => {
24
30
  const [name, ...entity] = templateId.slice(1).split(":");
25
- return (await sdk.queryActiveContracts(input.informee, offset, {
26
- templateIds: [
27
- templateId
28
- ],
31
+ return (await sdk.queryActiveContractsByParties(parties, offset, [
32
+ templateId
33
+ ], {
29
34
  includeCreatedEventBlob: true
30
35
  })).filter(({ createdEvent }) => createdEvent.packageName === name && createdEvent.templateId.split(":").slice(1).join(":") === entity.join(":"));
31
36
  }, "templateContracts");
@@ -35,9 +40,7 @@ var resolveCantonOneSigRequestContext = /* @__PURE__ */ __name(async (sdk, input
35
40
  input.informee
36
41
  ]);
37
42
  const resolvedId = `${packageId}:${entity.join(":")}`;
38
- return (await sdk.queryActiveContractsByInterface([
39
- input.informee
40
- ], offset, [
43
+ return (await sdk.queryActiveContractsByInterface(parties, offset, [
41
44
  interfaceId
42
45
  ], {
43
46
  includeCreatedEventBlob: true
@@ -121,5 +124,5 @@ var resolveCantonOneSigRequestContext = /* @__PURE__ */ __name(async (sdk, input
121
124
  }, "resolveCantonOneSigRequestContext");
122
125
 
123
126
  export { resolveCantonOneSigRequestContext };
124
- //# sourceMappingURL=D3KVE5XQ.js.map
125
- //# sourceMappingURL=D3KVE5XQ.js.map
127
+ //# sourceMappingURL=3H5UAMWJ.js.map
128
+ //# sourceMappingURL=3H5UAMWJ.js.map
@@ -0,0 +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","parties","Set","informee","readAs","templateContracts","templateId","name","entity","slice","split","queryActiveContractsByParties","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":"3H5UAMWJ.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 parties = [...new Set([input.informee, ...(input.readAs ?? [])])];\n const templateContracts = async (templateId: string) => {\n const [name, ...entity] = templateId.slice(1).split(':');\n return (\n await sdk.queryActiveContractsByParties(parties, offset, [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(parties, 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,4 +1,4 @@
1
- import { AMULET_INSTRUMENT_ID } from './KPFKPA5E.js';
1
+ import { AMULET_INSTRUMENT_ID } from './XWNGGI4V.js';
2
2
  import { cantonSenderPartyRef, CANTON_DEFERRED_SENDER } from './U6EV6YAY.js';
3
3
  import { __name } from './VUOMXK5T.js';
4
4
 
@@ -19,7 +19,7 @@ var argumentTarget = /* @__PURE__ */ __name((...fields) => ({
19
19
  }
20
20
  ]
21
21
  }), "argumentTarget");
22
- var amuletTransferRefreshPlan = /* @__PURE__ */ __name(({ dsoParty, amount }) => ({
22
+ var amuletTransferRefreshPlan = /* @__PURE__ */ __name(({ dsoParty, receiverParty, amount }) => ({
23
23
  replaceSentinels: [
24
24
  {
25
25
  kind: "senderParty",
@@ -55,7 +55,9 @@ var amuletTransferRefreshPlan = /* @__PURE__ */ __name(({ dsoParty, amount }) =>
55
55
  {
56
56
  resolver: {
57
57
  type: "amuletContext",
58
- dsoParty
58
+ dsoParty,
59
+ receiver: receiverParty,
60
+ amount
59
61
  },
60
62
  targets: [
61
63
  argumentTarget("extraArgs", "context")
@@ -111,7 +113,10 @@ var prepareRefreshableAmuletTransfer = /* @__PURE__ */ __name(async ({ client, r
111
113
  admin: dsoParty,
112
114
  id: AMULET_INSTRUMENT_ID
113
115
  };
114
- const bundle = await client.getAmuletContextWithExternalRules(instrumentId);
116
+ const bundle = await client.getAmuletContextWithExternalRules(instrumentId, {
117
+ receiver: receiverParty,
118
+ amount
119
+ });
115
120
  const now = /* @__PURE__ */ new Date();
116
121
  return {
117
122
  actAs: [],
@@ -149,11 +154,12 @@ var prepareRefreshableAmuletTransfer = /* @__PURE__ */ __name(async ({ client, r
149
154
  unresolvedDisclosedContracts: bundle.disclosedContracts,
150
155
  refreshPlan: amuletTransferRefreshPlan({
151
156
  dsoParty,
157
+ receiverParty,
152
158
  amount
153
159
  })
154
160
  };
155
161
  }, "prepareRefreshableAmuletTransfer");
156
162
 
157
163
  export { prepareRefreshableAmuletTransfer };
158
- //# sourceMappingURL=YBGD26CU.js.map
159
- //# sourceMappingURL=YBGD26CU.js.map
164
+ //# sourceMappingURL=45C3KMUJ.js.map
165
+ //# sourceMappingURL=45C3KMUJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/refresh/prepare-amulet-transfer.ts"],"names":["AMULET_TEMPLATE_ID","TRANSFER_FACTORY_TEMPLATE_ID","TRANSFER_CHOICE","TRANSFER_WINDOW_MS","argumentTarget","fields","commandIndex","command","choice","arguments","path","map","field","amuletTransferRefreshPlan","dsoParty","receiverParty","amount","replaceSentinels","kind","targets","commands","resolver","type","selector","queryAs","CANTON_DEFERRED_SENDER","templateId","expectedSignatories","stateFilter","owner","selection","value","receiver","contractIdTargets","offsetMs","prepareRefreshableAmuletTransfer","client","getDsoParty","instrumentId","admin","id","AMULET_INSTRUMENT_ID","bundle","getAmuletContextWithExternalRules","now","Date","actAs","unresolvedCommands","exerciseCommand","contractId","externalPartyAmuletRulesCid","choiceArgument","expectedAdmin","transfer","sender","cantonSenderPartyRef","lock","requestedAt","toISOString","executeBefore","getTime","inputHoldingCids","meta","values","extraArgs","context","amuletContext","unresolvedDisclosedContracts","disclosedContracts","refreshPlan"],"mappings":"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","file":"45C3KMUJ.js","sourcesContent":["import { AMULET_INSTRUMENT_ID } from '../client/amulet';\nimport type { ICantonClient } from '../client/interface';\nimport { CANTON_DEFERRED_SENDER, cantonSenderPartyRef } from '../deferredValue';\nimport type { CantonPopulatedTransaction } from '../transaction';\nimport type { CantonArgumentRefreshTarget, CantonRefreshPlan } from './plan';\n\nconst AMULET_TEMPLATE_ID = '#splice-amulet:Splice.Amulet:Amulet';\nconst TRANSFER_FACTORY_TEMPLATE_ID =\n '#splice-api-token-transfer-instruction-v1:Splice.Api.Token.TransferInstructionV1:TransferFactory';\nconst TRANSFER_CHOICE = 'TransferFactory_Transfer';\nconst TRANSFER_WINDOW_MS = 24 * 60 * 60 * 1000;\n\nconst argumentTarget = (...fields: string[]): CantonArgumentRefreshTarget => ({\n commandIndex: 0,\n command: 'exercise',\n choice: TRANSFER_CHOICE,\n arguments: [{ path: fields.map((field) => ({ field })) }],\n});\n\nconst amuletTransferRefreshPlan = ({\n dsoParty,\n receiverParty,\n amount,\n}: {\n dsoParty: string;\n receiverParty: string;\n amount: string;\n}): CantonRefreshPlan => ({\n replaceSentinels: [{ kind: 'senderParty', targets: [argumentTarget('transfer', 'sender')] }],\n commands: [\n {\n resolver: {\n type: 'activeContract',\n selector: {\n queryAs: CANTON_DEFERRED_SENDER,\n templateId: AMULET_TEMPLATE_ID,\n expectedSignatories: [dsoParty],\n stateFilter: { owner: CANTON_DEFERRED_SENDER },\n },\n selection: { kind: 'gte', field: 'amount', value: amount },\n },\n targets: [argumentTarget('transfer', 'inputHoldingCids')],\n },\n {\n resolver: { type: 'amuletContext', dsoParty, receiver: receiverParty, amount },\n targets: [argumentTarget('extraArgs', 'context')],\n contractIdTargets: [{ commandIndex: 0, command: 'exercise', field: 'contractId' }],\n },\n {\n resolver: { type: 'timestamp' },\n targets: [\n {\n commandIndex: 0,\n command: 'exercise',\n choice: TRANSFER_CHOICE,\n arguments: [\n { path: [{ field: 'transfer' }, { field: 'requestedAt' }] },\n {\n path: [{ field: 'transfer' }, { field: 'executeBefore' }],\n offsetMs: TRANSFER_WINDOW_MS,\n },\n ],\n },\n ],\n },\n ],\n});\n\n/** Sender binding and initial funding must resolve before preparing or signing this transfer. */\nexport const prepareRefreshableAmuletTransfer = async ({\n client,\n receiverParty,\n amount,\n}: {\n client: ICantonClient;\n receiverParty: string;\n amount: string;\n}): Promise<CantonPopulatedTransaction> => {\n const dsoParty = await client.getDsoParty();\n const instrumentId = { admin: dsoParty, id: AMULET_INSTRUMENT_ID };\n const bundle = await client.getAmuletContextWithExternalRules(instrumentId, {\n receiver: receiverParty,\n amount,\n });\n const now = new Date();\n\n return {\n actAs: [],\n unresolvedCommands: [\n {\n exerciseCommand: {\n templateId: TRANSFER_FACTORY_TEMPLATE_ID,\n contractId: bundle.externalPartyAmuletRulesCid,\n choice: TRANSFER_CHOICE,\n choiceArgument: {\n expectedAdmin: dsoParty,\n transfer: {\n sender: cantonSenderPartyRef(),\n receiver: receiverParty,\n amount,\n instrumentId,\n lock: null,\n requestedAt: now.toISOString(),\n executeBefore: new Date(\n now.getTime() + TRANSFER_WINDOW_MS,\n ).toISOString(),\n inputHoldingCids: [],\n meta: { values: {} },\n },\n extraArgs: { context: bundle.amuletContext, meta: { values: {} } },\n },\n },\n },\n ],\n unresolvedDisclosedContracts: bundle.disclosedContracts,\n refreshPlan: amuletTransferRefreshPlan({ dsoParty, receiverParty, amount }),\n };\n};\n"]}
@@ -1,8 +1,8 @@
1
- import { cantonCallbackAppUid } from './E6W3YWXU.js';
1
+ import { cantonCallbackAppUid } from './MRAAJXQA.js';
2
2
  import { parseAmuletDecimal } from './CXTOAS7N.js';
3
3
  import { discoveryUrlsForAppUid, fetchTransferInstructionRegistryContext } from './TLQX4ZQW.js';
4
4
  import { callbackDisclosure } from './YMXOSAU4.js';
5
- import { cantonDisclosedContractSchema } from './UG2M23HF.js';
5
+ import { cantonDisclosedContractSchema } from './MM7EIOP4.js';
6
6
  import { areExpectedSignatories } from './SWY4QT4I.js';
7
7
  import { __name } from './VUOMXK5T.js';
8
8
  import { z } from 'zod';
@@ -117,5 +117,5 @@ var resolveCantonOneSigTransferInstructionContext = /* @__PURE__ */ __name(async
117
117
  }, "resolveCantonOneSigTransferInstructionContext");
118
118
 
119
119
  export { resolveCantonOneSigTransferInstructionContext };
120
- //# sourceMappingURL=5BK6GCUD.js.map
121
- //# sourceMappingURL=5BK6GCUD.js.map
120
+ //# sourceMappingURL=5VT3BVW6.js.map
121
+ //# sourceMappingURL=5VT3BVW6.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/refresh/onesig-transfer-instruction.ts"],"names":["INTERFACE","providerDisclosuresSchema","z","array","cantonDisclosedContractSchema","extend","contractId","string","min","createdEventBlob","synchronizerId","metadata","object","values","record","decimal","regex","instrument","admin","id","callSchema","tag","enum","value","transferSender","receiver","amount","instrumentId","requestedAt","executeBefore","transferMeta","instructionMeta","extraArgsMeta","viewSchema","transfer","sender","meta","status","timeMicros","match","exec","millis","Date","parse","NaN","Number","isFinite","Error","BigInt","padEnd","sameMetadata","left","right","Object","keys","length","entries","every","key","resolveCantonOneSigTransferInstructionContext","sdk","input","signedCall","client","call","signed","choice","offset","getLedgerEndOffset","packageId","getPackageId","interfaceId","instructions","queryActiveContractsByInterface","includeCreatedEventBlob","filter","createdEvent","transferInstructionCid","instruction","views","interfaceViews","view","viewStatus","code","areExpectedSignatories","viewValue","parseAmuletDecimal","instructionDisclosure","callbackDisclosure","canonical","getDsoParty","bundle","getTransferInstructionContext","urls","discoveryUrlsForAppUid","informee","cantonCallbackAppUid","url","registryUrls","fetchTransferInstructionRegistryContext","environment","providerDisclosures","disclosedContracts","context","extraArgsContext","choiceContext"],"mappings":"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","file":"5BK6GCUD.js","sourcesContent":["import { z } from 'zod';\n\nimport { parseAmuletDecimal } from '../amulet';\nimport type { ICantonClient } from '../client/interface';\nimport type { CantonSdk } from '../sdk/canton-sdk';\nimport { cantonDisclosedContractSchema } from '../transaction';\nimport { areExpectedSignatories } from '../trusted-origin';\nimport { cantonCallbackAppUid } from './callback';\nimport { callbackDisclosure } from './callback-contracts';\nimport type { CantonOneSigTransferInstructionContextRefresh } from './plan';\nimport {\n discoveryUrlsForAppUid,\n fetchTransferInstructionRegistryContext,\n} from './registry-context';\n\nconst INTERFACE =\n '#splice-api-token-transfer-instruction-v1:Splice.Api.Token.TransferInstructionV1:TransferInstruction';\nconst providerDisclosuresSchema = z.array(\n cantonDisclosedContractSchema.extend({\n contractId: z.string().min(1),\n createdEventBlob: z.string().min(1),\n synchronizerId: z.string().min(1),\n }),\n);\nconst metadata = z.object({ values: z.record(z.string(), z.string()) });\nconst decimal = z.string().regex(/^-?\\d+(?:\\.\\d{1,10})?$/);\nconst instrument = z.object({ admin: z.string().min(1), id: z.string() });\nconst callSchema = z.object({\n tag: z.enum(['OpAcceptTransferInstruction', 'OpWithdrawTransferInstruction']),\n value: z.object({\n transferSender: z.string(),\n receiver: z.string(),\n amount: decimal,\n instrumentId: instrument,\n requestedAt: z.string(),\n executeBefore: z.string(),\n transferMeta: metadata,\n instructionMeta: metadata,\n extraArgsMeta: metadata,\n }),\n});\nconst viewSchema = z.object({\n transfer: z.object({\n sender: z.string(),\n receiver: z.string(),\n amount: decimal,\n instrumentId: instrument,\n requestedAt: z.string(),\n executeBefore: z.string(),\n meta: metadata,\n }),\n meta: metadata,\n status: z.object({ tag: z.string() }),\n});\n\nconst timeMicros = (value: string): bigint => {\n const match = /^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2})(?:\\.(\\d{1,6}))?(Z|[+-]\\d{2}:\\d{2})$/.exec(\n value,\n );\n const millis = match ? Date.parse(`${match[1]}${match[3]}`) : NaN;\n if (!Number.isFinite(millis)) throw new Error('Invalid transfer instruction time');\n return BigInt(millis) * 1000n + BigInt((match![2] ?? '').padEnd(6, '0'));\n};\nconst sameMetadata = (left: z.infer<typeof metadata>, right: z.infer<typeof metadata>): boolean =>\n Object.keys(left.values).length === Object.keys(right.values).length &&\n Object.entries(left.values).every(([key, value]) => right.values[key] === value);\n\nexport const resolveCantonOneSigTransferInstructionContext = async (\n sdk: CantonSdk,\n input: CantonOneSigTransferInstructionContextRefresh['resolver'],\n signedCall: unknown,\n client: Pick<ICantonClient, 'getDsoParty' | 'getTransferInstructionContext'>,\n) => {\n if ((signedCall as { tag?: unknown } | null)?.tag === 'OpRejectTransferInstruction')\n throw new Error('OpRejectTransferInstruction is not supported: OneSig aborts it on-ledger');\n const call = callSchema.parse(signedCall);\n const signed = call.value;\n const choice = call.tag === 'OpAcceptTransferInstruction' ? 'accept' : 'withdraw';\n if ((choice === 'withdraw' ? signed.transferSender : signed.receiver) !== input.admin)\n throw new Error('OneSig transfer instruction authority mismatch');\n const offset = await sdk.getLedgerEndOffset();\n const packageId = await sdk.getPackageId('splice-api-token-transfer-instruction-v1', [\n input.admin,\n ]);\n const interfaceId = `${packageId}:Splice.Api.Token.TransferInstructionV1:TransferInstruction`;\n const instructions = (\n await sdk.queryActiveContractsByInterface([input.admin], offset, [INTERFACE], {\n includeCreatedEventBlob: true,\n })\n ).filter(({ createdEvent }) => createdEvent.contractId === input.transferInstructionCid);\n if (instructions.length !== 1)\n throw new Error('Pinned OneSig transfer instruction is not active or visible');\n const instruction = instructions[0]!;\n const views =\n instruction.createdEvent.interfaceViews?.filter(\n (view) =>\n view.interfaceId === interfaceId &&\n (!view.viewStatus || view.viewStatus.code === 0),\n ) ?? [];\n if (\n views.length !== 1 ||\n !areExpectedSignatories(instruction.createdEvent, [signed.instrumentId.admin])\n )\n throw new Error('Invalid OneSig transfer instruction interface or signatory');\n const view = viewSchema.parse(views[0]!.viewValue);\n const transfer = view.transfer;\n if (\n transfer.sender !== signed.transferSender ||\n transfer.receiver !== signed.receiver ||\n parseAmuletDecimal(transfer.amount) !== parseAmuletDecimal(signed.amount) ||\n transfer.instrumentId.admin !== signed.instrumentId.admin ||\n transfer.instrumentId.id !== signed.instrumentId.id ||\n timeMicros(transfer.requestedAt) !== timeMicros(signed.requestedAt) ||\n timeMicros(transfer.executeBefore) !== timeMicros(signed.executeBefore) ||\n !sameMetadata(transfer.meta, signed.transferMeta) ||\n !sameMetadata(view.meta, signed.instructionMeta) ||\n (choice !== 'withdraw' && view.status.tag !== 'TransferPendingReceiverAcceptance')\n )\n throw new Error(\n 'Pinned OneSig transfer instruction does not match signed intent or status',\n );\n const instructionDisclosure = callbackDisclosure(instruction);\n const canonical =\n signed.instrumentId.id === 'Amulet' &&\n signed.instrumentId.admin === (await client.getDsoParty());\n const bundle = await (async () => {\n if (canonical)\n return client.getTransferInstructionContext({\n contractId: input.transferInstructionCid,\n choice,\n });\n const urls = await discoveryUrlsForAppUid(\n sdk,\n input.informee,\n offset,\n cantonCallbackAppUid(signed.instrumentId.admin, signed.instrumentId.id),\n );\n if (urls.length > 1) throw new Error('Ambiguous transfer instruction registry');\n const url = urls[0] ?? input.registryUrls?.[signed.instrumentId.admin];\n if (!url) throw new Error('No registry for transfer instruction instrument');\n return fetchTransferInstructionRegistryContext(\n url,\n input.transferInstructionCid,\n choice,\n input.environment,\n );\n })();\n const providerDisclosures = providerDisclosuresSchema.parse(bundle.disclosedContracts);\n return {\n context: {\n tag: 'TransferInstructionContext' as const,\n value: {\n transferInstructionCid: input.transferInstructionCid,\n extraArgsContext: bundle.choiceContext,\n },\n },\n disclosedContracts: [instructionDisclosure, ...providerDisclosures],\n };\n};\n"]}
1
+ {"version":3,"sources":["../src/refresh/onesig-transfer-instruction.ts"],"names":["INTERFACE","providerDisclosuresSchema","z","array","cantonDisclosedContractSchema","extend","contractId","string","min","createdEventBlob","synchronizerId","metadata","object","values","record","decimal","regex","instrument","admin","id","callSchema","tag","enum","value","transferSender","receiver","amount","instrumentId","requestedAt","executeBefore","transferMeta","instructionMeta","extraArgsMeta","viewSchema","transfer","sender","meta","status","timeMicros","match","exec","millis","Date","parse","NaN","Number","isFinite","Error","BigInt","padEnd","sameMetadata","left","right","Object","keys","length","entries","every","key","resolveCantonOneSigTransferInstructionContext","sdk","input","signedCall","client","call","signed","choice","offset","getLedgerEndOffset","packageId","getPackageId","interfaceId","instructions","queryActiveContractsByInterface","includeCreatedEventBlob","filter","createdEvent","transferInstructionCid","instruction","views","interfaceViews","view","viewStatus","code","areExpectedSignatories","viewValue","parseAmuletDecimal","instructionDisclosure","callbackDisclosure","canonical","getDsoParty","bundle","getTransferInstructionContext","urls","discoveryUrlsForAppUid","informee","cantonCallbackAppUid","url","registryUrls","fetchTransferInstructionRegistryContext","environment","providerDisclosures","disclosedContracts","context","extraArgsContext","choiceContext"],"mappings":"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","file":"5VT3BVW6.js","sourcesContent":["import { z } from 'zod';\n\nimport { parseAmuletDecimal } from '../amulet';\nimport type { ICantonClient } from '../client/interface';\nimport type { CantonSdk } from '../sdk/canton-sdk';\nimport { cantonDisclosedContractSchema } from '../transaction';\nimport { areExpectedSignatories } from '../trusted-origin';\nimport { cantonCallbackAppUid } from './callback';\nimport { callbackDisclosure } from './callback-contracts';\nimport type { CantonOneSigTransferInstructionContextRefresh } from './plan';\nimport {\n discoveryUrlsForAppUid,\n fetchTransferInstructionRegistryContext,\n} from './registry-context';\n\nconst INTERFACE =\n '#splice-api-token-transfer-instruction-v1:Splice.Api.Token.TransferInstructionV1:TransferInstruction';\nconst providerDisclosuresSchema = z.array(\n cantonDisclosedContractSchema.extend({\n contractId: z.string().min(1),\n createdEventBlob: z.string().min(1),\n synchronizerId: z.string().min(1),\n }),\n);\nconst metadata = z.object({ values: z.record(z.string(), z.string()) });\nconst decimal = z.string().regex(/^-?\\d+(?:\\.\\d{1,10})?$/);\nconst instrument = z.object({ admin: z.string().min(1), id: z.string() });\nconst callSchema = z.object({\n tag: z.enum(['OpAcceptTransferInstruction', 'OpWithdrawTransferInstruction']),\n value: z.object({\n transferSender: z.string(),\n receiver: z.string(),\n amount: decimal,\n instrumentId: instrument,\n requestedAt: z.string(),\n executeBefore: z.string(),\n transferMeta: metadata,\n instructionMeta: metadata,\n extraArgsMeta: metadata,\n }),\n});\nconst viewSchema = z.object({\n transfer: z.object({\n sender: z.string(),\n receiver: z.string(),\n amount: decimal,\n instrumentId: instrument,\n requestedAt: z.string(),\n executeBefore: z.string(),\n meta: metadata,\n }),\n meta: metadata,\n status: z.object({ tag: z.string() }),\n});\n\nconst timeMicros = (value: string): bigint => {\n const match = /^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2})(?:\\.(\\d{1,6}))?(Z|[+-]\\d{2}:\\d{2})$/.exec(\n value,\n );\n const millis = match ? Date.parse(`${match[1]}${match[3]}`) : NaN;\n if (!Number.isFinite(millis)) throw new Error('Invalid transfer instruction time');\n return BigInt(millis) * 1000n + BigInt((match![2] ?? '').padEnd(6, '0'));\n};\nconst sameMetadata = (left: z.infer<typeof metadata>, right: z.infer<typeof metadata>): boolean =>\n Object.keys(left.values).length === Object.keys(right.values).length &&\n Object.entries(left.values).every(([key, value]) => right.values[key] === value);\n\nexport const resolveCantonOneSigTransferInstructionContext = async (\n sdk: CantonSdk,\n input: CantonOneSigTransferInstructionContextRefresh['resolver'],\n signedCall: unknown,\n client: Pick<ICantonClient, 'getDsoParty' | 'getTransferInstructionContext'>,\n) => {\n if ((signedCall as { tag?: unknown } | null)?.tag === 'OpRejectTransferInstruction')\n throw new Error('OpRejectTransferInstruction is not supported: OneSig aborts it on-ledger');\n const call = callSchema.parse(signedCall);\n const signed = call.value;\n const choice = call.tag === 'OpAcceptTransferInstruction' ? 'accept' : 'withdraw';\n if ((choice === 'withdraw' ? signed.transferSender : signed.receiver) !== input.admin)\n throw new Error('OneSig transfer instruction authority mismatch');\n const offset = await sdk.getLedgerEndOffset();\n const packageId = await sdk.getPackageId('splice-api-token-transfer-instruction-v1', [\n input.admin,\n ]);\n const interfaceId = `${packageId}:Splice.Api.Token.TransferInstructionV1:TransferInstruction`;\n const instructions = (\n await sdk.queryActiveContractsByInterface([input.admin], offset, [INTERFACE], {\n includeCreatedEventBlob: true,\n })\n ).filter(({ createdEvent }) => createdEvent.contractId === input.transferInstructionCid);\n if (instructions.length !== 1)\n throw new Error('Pinned OneSig transfer instruction is not active or visible');\n const instruction = instructions[0]!;\n const views =\n instruction.createdEvent.interfaceViews?.filter(\n (view) =>\n view.interfaceId === interfaceId &&\n (!view.viewStatus || view.viewStatus.code === 0),\n ) ?? [];\n if (\n views.length !== 1 ||\n !areExpectedSignatories(instruction.createdEvent, [signed.instrumentId.admin])\n )\n throw new Error('Invalid OneSig transfer instruction interface or signatory');\n const view = viewSchema.parse(views[0]!.viewValue);\n const transfer = view.transfer;\n if (\n transfer.sender !== signed.transferSender ||\n transfer.receiver !== signed.receiver ||\n parseAmuletDecimal(transfer.amount) !== parseAmuletDecimal(signed.amount) ||\n transfer.instrumentId.admin !== signed.instrumentId.admin ||\n transfer.instrumentId.id !== signed.instrumentId.id ||\n timeMicros(transfer.requestedAt) !== timeMicros(signed.requestedAt) ||\n timeMicros(transfer.executeBefore) !== timeMicros(signed.executeBefore) ||\n !sameMetadata(transfer.meta, signed.transferMeta) ||\n !sameMetadata(view.meta, signed.instructionMeta) ||\n (choice !== 'withdraw' && view.status.tag !== 'TransferPendingReceiverAcceptance')\n )\n throw new Error(\n 'Pinned OneSig transfer instruction does not match signed intent or status',\n );\n const instructionDisclosure = callbackDisclosure(instruction);\n const canonical =\n signed.instrumentId.id === 'Amulet' &&\n signed.instrumentId.admin === (await client.getDsoParty());\n const bundle = await (async () => {\n if (canonical)\n return client.getTransferInstructionContext({\n contractId: input.transferInstructionCid,\n choice,\n });\n const urls = await discoveryUrlsForAppUid(\n sdk,\n input.informee,\n offset,\n cantonCallbackAppUid(signed.instrumentId.admin, signed.instrumentId.id),\n );\n if (urls.length > 1) throw new Error('Ambiguous transfer instruction registry');\n const url = urls[0] ?? input.registryUrls?.[signed.instrumentId.admin];\n if (!url) throw new Error('No registry for transfer instruction instrument');\n return fetchTransferInstructionRegistryContext(\n url,\n input.transferInstructionCid,\n choice,\n input.environment,\n );\n })();\n const providerDisclosures = providerDisclosuresSchema.parse(bundle.disclosedContracts);\n return {\n context: {\n tag: 'TransferInstructionContext' as const,\n value: {\n transferInstructionCid: input.transferInstructionCid,\n extraArgsContext: bundle.choiceContext,\n },\n },\n disclosedContracts: [instructionDisclosure, ...providerDisclosures],\n };\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { withCantonCallbackRegistry, fetchCallbackTransferFactoryContext } from './RFGCLYQN.js';
1
+ import { withCantonCallbackRegistry, fetchCallbackTransferFactoryContext } from './7Z6L2FXT.js';
2
2
  import { fetchCallbackHoldings, callbackHoldingAmount, discloseUtilityCredentials } from './TLQX4ZQW.js';
3
3
  import { selectLargestContracts } from './ZEK5YBPA.js';
4
4
  import { callbackDisclosure, callbackInterfaceView } from './YMXOSAU4.js';
@@ -48,5 +48,5 @@ var resolveLockUnlockCallbackContext = /* @__PURE__ */ __name(async ({ sdk, info
48
48
  }, "resolveLockUnlockCallbackContext");
49
49
 
50
50
  export { resolveLockUnlockCallbackContext };
51
- //# sourceMappingURL=CMFVLC7C.js.map
52
- //# sourceMappingURL=CMFVLC7C.js.map
51
+ //# sourceMappingURL=6GIDRO6Y.js.map
52
+ //# sourceMappingURL=6GIDRO6Y.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/refresh/callback-lock-unlock.ts"],"names":["HOLDING_INTERFACE","resolveLockUnlockCallbackContext","sdk","informee","appUid","treasury","instrumentId","offset","receivers","environment","holdings","selectLargestContracts","fetchCallbackHoldings","callbackHoldingAmount","treasuryAssetCids","map","holding","createdEvent","contractId","treasuryDisclosures","callbackDisclosure","length","disclosedContracts","firstHoldingAmount","callbackInterfaceView","amount","find","factoryId","choiceContext","credentialDisclosures","withCantonCallbackRegistry","registry","context","fetchCallbackTransferFactoryContext","inputHoldingCids","sender","discloseUtilityCredentials","values","transferFactoryCid","assetTransferContext"],"mappings":";;;;;;;AAeA,IAAMA,iBAAAA,GAAoB,iEAAA;AAEnB,IAAMC,gCAAAA,mBAAmC,MAAA,CAAA,OAAO,EACnDC,GAAAA,EACAC,QAAAA,EACAC,MAAAA,EACAC,QAAAA,EACAC,YAAAA,EACAC,MAAAA,EACAC,SAAAA,EACAC,WAAAA,EAAW,KAUd;AAMG,EAAA,MAAMC,QAAAA,GAAWC,uBACb,MAAMC,qBAAAA,CAAsBV,KAAKG,QAAAA,EAAUE,MAAAA,EAAQD,YAAAA,CAAAA,EACnDO,qBAAAA,CAAAA;AAEJ,EAAA,MAAMC,oBAAoBJ,QAAAA,CAASK,GAAAA,CAAI,CAACC,OAAAA,KAAYA,OAAAA,CAAQC,aAAaC,UAAU,CAAA;AACnF,EAAA,MAAMC,mBAAAA,GAAsBT,QAAAA,CAASK,GAAAA,CAAIK,kBAAAA,CAAAA;AACzC,EAAA,IAAIZ,SAAAA,CAAUa,MAAAA,KAAW,CAAA,EACrB,OAAO;IAAEC,kBAAAA,EAAoBH,mBAAAA;AAAqBL,IAAAA;AAAkB,GAAA;AAExE,EAAA,MAAMS,qBAAqBb,QAAAA,CACtBK,GAAAA,CAAI,CAACC,OAAAA,KAAYQ,sBAAsBR,OAAAA,EAAShB,iBAAAA,CAAAA,EAAoByB,MAAAA,EACpEC,IAAAA,CAAK,CAACD,WAA6BA,MAAAA,IAAU,IAAA,IAAQA,WAAW,GAAA,CAAA;AACrE,EAAA,MAAM,EAAEE,SAAAA,EAAWC,aAAAA,EAAeN,oBAAoBO,qBAAAA,EAAqB,GACvE,MAAMC,0BAAAA,CACF;AAAE5B,IAAAA,GAAAA;AAAKC,IAAAA,QAAAA;AAAUI,IAAAA,MAAAA;AAAQH,IAAAA,MAAAA;AAAQE,IAAAA,YAAAA;AAAcG,IAAAA;AAAY,GAAA,EAC3D,OAAOsB,QAAAA,KAAAA;AACH,IAAA,MAAMC,OAAAA,GAAU,MAAMC,mCAAAA,CAClBF,QAAAA,EACA7B,KACAI,YAAAA,EACA;AACIG,MAAAA,WAAAA;MACAyB,gBAAAA,EAAkBpB,iBAAAA;MAClBqB,MAAAA,EAAQ9B,QAAAA;AACRoB,MAAAA,MAAAA,EAAQF,kBAAAA,IAAsB,GAAA;AAC9Bf,MAAAA;KACJ,CAAA;AAEJ,IAAA,OAAO;MACH,GAAGwB,OAAAA;MACHH,qBAAAA,EAAuB,MAAMO,2BACzBlC,GAAAA,EACA8B,OAAAA,CAAQJ,cAAcS,MAAAA,CAAO,6CAAA,CAAA,EAC7BhC,QAAAA,EACA,QAAA;AAER,KAAA;EACJ,CAAA,CAAA;AAER,EAAA,OAAO;IACHiB,kBAAAA,EAAoB;AACbH,MAAAA,GAAAA,mBAAAA;AACAG,MAAAA,GAAAA,kBAAAA;AACAO,MAAAA,GAAAA;;AAEPf,IAAAA,iBAAAA;IACAwB,kBAAAA,EAAoBX,SAAAA;AACpBY,IAAAA,oBAAAA,EAAsBX,aAAAA,CAAcS;AACxC,GAAA;AACJ,CAAA,EAzEgD,kCAAA","file":"CMFVLC7C.js","sourcesContent":["import type { InstrumentId } from '../client/amulet';\nimport type { CantonSdk } from '../sdk';\nimport type { CantonDisclosedContract } from '../transaction';\nimport { callbackDisclosure, callbackInterfaceView } from './callback-contracts';\nimport {\n fetchCallbackTransferFactoryContext,\n withCantonCallbackRegistry,\n} from './callback-registry';\nimport {\n callbackHoldingAmount,\n discloseUtilityCredentials,\n fetchCallbackHoldings,\n} from './registry-context';\nimport { selectLargestContracts } from './select-contracts';\n\nconst HOLDING_INTERFACE = '#splice-api-token-holding-v1:Splice.Api.Token.HoldingV1:Holding';\n\nexport const resolveLockUnlockCallbackContext = async ({\n sdk,\n informee,\n appUid,\n treasury,\n instrumentId,\n offset,\n receivers,\n environment,\n}: {\n sdk: CantonSdk;\n informee: string;\n appUid: string;\n treasury: string;\n instrumentId: InstrumentId;\n offset: number;\n receivers: string[];\n environment?: string;\n}): Promise<{\n disclosedContracts: CantonDisclosedContract[];\n treasuryAssetCids: string[];\n transferFactoryCid?: string;\n assetTransferContext?: Record<string, unknown>;\n}> => {\n const holdings = selectLargestContracts(\n await fetchCallbackHoldings(sdk, treasury, offset, instrumentId),\n callbackHoldingAmount,\n );\n const treasuryAssetCids = holdings.map((holding) => holding.createdEvent.contractId);\n const treasuryDisclosures = holdings.map(callbackDisclosure);\n if (receivers.length === 0)\n return { disclosedContracts: treasuryDisclosures, treasuryAssetCids };\n\n const firstHoldingAmount = holdings\n .map((holding) => callbackInterfaceView(holding, HOLDING_INTERFACE)?.amount)\n .find((amount): amount is string => amount != null && amount !== '0');\n const { factoryId, choiceContext, disclosedContracts, credentialDisclosures } =\n await withCantonCallbackRegistry(\n { sdk, informee, offset, appUid, instrumentId, environment },\n async (registry) => {\n const context = await fetchCallbackTransferFactoryContext(\n registry,\n sdk,\n instrumentId,\n {\n environment,\n inputHoldingCids: treasuryAssetCids,\n sender: treasury,\n amount: firstHoldingAmount ?? '0',\n receivers,\n },\n );\n return {\n ...context,\n credentialDisclosures: await discloseUtilityCredentials(\n sdk,\n context.choiceContext.values['utility.digitalasset.com/sender-credentials'],\n treasury,\n 'sender',\n ),\n };\n },\n );\n return {\n disclosedContracts: [\n ...treasuryDisclosures,\n ...disclosedContracts,\n ...credentialDisclosures,\n ],\n treasuryAssetCids,\n transferFactoryCid: factoryId,\n assetTransferContext: choiceContext.values,\n };\n};\n"]}
1
+ {"version":3,"sources":["../src/refresh/callback-lock-unlock.ts"],"names":["HOLDING_INTERFACE","resolveLockUnlockCallbackContext","sdk","informee","appUid","treasury","instrumentId","offset","receivers","environment","holdings","selectLargestContracts","fetchCallbackHoldings","callbackHoldingAmount","treasuryAssetCids","map","holding","createdEvent","contractId","treasuryDisclosures","callbackDisclosure","length","disclosedContracts","firstHoldingAmount","callbackInterfaceView","amount","find","factoryId","choiceContext","credentialDisclosures","withCantonCallbackRegistry","registry","context","fetchCallbackTransferFactoryContext","inputHoldingCids","sender","discloseUtilityCredentials","values","transferFactoryCid","assetTransferContext"],"mappings":";;;;;;;AAeA,IAAMA,iBAAAA,GAAoB,iEAAA;AAEnB,IAAMC,gCAAAA,mBAAmC,MAAA,CAAA,OAAO,EACnDC,GAAAA,EACAC,QAAAA,EACAC,MAAAA,EACAC,QAAAA,EACAC,YAAAA,EACAC,MAAAA,EACAC,SAAAA,EACAC,WAAAA,EAAW,KAUd;AAMG,EAAA,MAAMC,QAAAA,GAAWC,uBACb,MAAMC,qBAAAA,CAAsBV,KAAKG,QAAAA,EAAUE,MAAAA,EAAQD,YAAAA,CAAAA,EACnDO,qBAAAA,CAAAA;AAEJ,EAAA,MAAMC,oBAAoBJ,QAAAA,CAASK,GAAAA,CAAI,CAACC,OAAAA,KAAYA,OAAAA,CAAQC,aAAaC,UAAU,CAAA;AACnF,EAAA,MAAMC,mBAAAA,GAAsBT,QAAAA,CAASK,GAAAA,CAAIK,kBAAAA,CAAAA;AACzC,EAAA,IAAIZ,SAAAA,CAAUa,MAAAA,KAAW,CAAA,EACrB,OAAO;IAAEC,kBAAAA,EAAoBH,mBAAAA;AAAqBL,IAAAA;AAAkB,GAAA;AAExE,EAAA,MAAMS,qBAAqBb,QAAAA,CACtBK,GAAAA,CAAI,CAACC,OAAAA,KAAYQ,sBAAsBR,OAAAA,EAAShB,iBAAAA,CAAAA,EAAoByB,MAAAA,EACpEC,IAAAA,CAAK,CAACD,WAA6BA,MAAAA,IAAU,IAAA,IAAQA,WAAW,GAAA,CAAA;AACrE,EAAA,MAAM,EAAEE,SAAAA,EAAWC,aAAAA,EAAeN,oBAAoBO,qBAAAA,EAAqB,GACvE,MAAMC,0BAAAA,CACF;AAAE5B,IAAAA,GAAAA;AAAKC,IAAAA,QAAAA;AAAUI,IAAAA,MAAAA;AAAQH,IAAAA,MAAAA;AAAQE,IAAAA,YAAAA;AAAcG,IAAAA;AAAY,GAAA,EAC3D,OAAOsB,QAAAA,KAAAA;AACH,IAAA,MAAMC,OAAAA,GAAU,MAAMC,mCAAAA,CAClBF,QAAAA,EACA7B,KACAI,YAAAA,EACA;AACIG,MAAAA,WAAAA;MACAyB,gBAAAA,EAAkBpB,iBAAAA;MAClBqB,MAAAA,EAAQ9B,QAAAA;AACRoB,MAAAA,MAAAA,EAAQF,kBAAAA,IAAsB,GAAA;AAC9Bf,MAAAA;KACJ,CAAA;AAEJ,IAAA,OAAO;MACH,GAAGwB,OAAAA;MACHH,qBAAAA,EAAuB,MAAMO,2BACzBlC,GAAAA,EACA8B,OAAAA,CAAQJ,cAAcS,MAAAA,CAAO,6CAAA,CAAA,EAC7BhC,QAAAA,EACA,QAAA;AAER,KAAA;EACJ,CAAA,CAAA;AAER,EAAA,OAAO;IACHiB,kBAAAA,EAAoB;AACbH,MAAAA,GAAAA,mBAAAA;AACAG,MAAAA,GAAAA,kBAAAA;AACAO,MAAAA,GAAAA;;AAEPf,IAAAA,iBAAAA;IACAwB,kBAAAA,EAAoBX,SAAAA;AACpBY,IAAAA,oBAAAA,EAAsBX,aAAAA,CAAcS;AACxC,GAAA;AACJ,CAAA,EAzEgD,kCAAA","file":"6GIDRO6Y.js","sourcesContent":["import type { InstrumentId } from '../client/amulet';\nimport type { CantonSdk } from '../sdk';\nimport type { CantonDisclosedContract } from '../transaction';\nimport { callbackDisclosure, callbackInterfaceView } from './callback-contracts';\nimport {\n fetchCallbackTransferFactoryContext,\n withCantonCallbackRegistry,\n} from './callback-registry';\nimport {\n callbackHoldingAmount,\n discloseUtilityCredentials,\n fetchCallbackHoldings,\n} from './registry-context';\nimport { selectLargestContracts } from './select-contracts';\n\nconst HOLDING_INTERFACE = '#splice-api-token-holding-v1:Splice.Api.Token.HoldingV1:Holding';\n\nexport const resolveLockUnlockCallbackContext = async ({\n sdk,\n informee,\n appUid,\n treasury,\n instrumentId,\n offset,\n receivers,\n environment,\n}: {\n sdk: CantonSdk;\n informee: string;\n appUid: string;\n treasury: string;\n instrumentId: InstrumentId;\n offset: number;\n receivers: string[];\n environment?: string;\n}): Promise<{\n disclosedContracts: CantonDisclosedContract[];\n treasuryAssetCids: string[];\n transferFactoryCid?: string;\n assetTransferContext?: Record<string, unknown>;\n}> => {\n const holdings = selectLargestContracts(\n await fetchCallbackHoldings(sdk, treasury, offset, instrumentId),\n callbackHoldingAmount,\n );\n const treasuryAssetCids = holdings.map((holding) => holding.createdEvent.contractId);\n const treasuryDisclosures = holdings.map(callbackDisclosure);\n if (receivers.length === 0)\n return { disclosedContracts: treasuryDisclosures, treasuryAssetCids };\n\n const firstHoldingAmount = holdings\n .map((holding) => callbackInterfaceView(holding, HOLDING_INTERFACE)?.amount)\n .find((amount): amount is string => amount != null && amount !== '0');\n const { factoryId, choiceContext, disclosedContracts, credentialDisclosures } =\n await withCantonCallbackRegistry(\n { sdk, informee, offset, appUid, instrumentId, environment },\n async (registry) => {\n const context = await fetchCallbackTransferFactoryContext(\n registry,\n sdk,\n instrumentId,\n {\n environment,\n inputHoldingCids: treasuryAssetCids,\n sender: treasury,\n amount: firstHoldingAmount ?? '0',\n receivers,\n },\n );\n return {\n ...context,\n credentialDisclosures: await discloseUtilityCredentials(\n sdk,\n context.choiceContext.values['utility.digitalasset.com/sender-credentials'],\n treasury,\n 'sender',\n ),\n };\n },\n );\n return {\n disclosedContracts: [\n ...treasuryDisclosures,\n ...disclosedContracts,\n ...credentialDisclosures,\n ],\n treasuryAssetCids,\n transferFactoryCid: factoryId,\n assetTransferContext: choiceContext.values,\n };\n};\n"]}
@@ -1,20 +1,21 @@
1
- import { CantonSdk } from './XUXLV3PL.js';
2
- import { resolveCantonOneSigTransferBatch } from './NSHNCUWI.js';
3
- import { resolveCantonOneSigConfigContext } from './IUQEDBC6.js';
1
+ import { CantonSdk } from './SAHSVYH6.js';
2
+ import { resolveCantonOneSigTransferBatch } from './A4HRBTRS.js';
3
+ import { resolveCantonOneSigConfigContext } from './XKBA43N7.js';
4
4
  import { resolveCantonOneSigDiscoveryContext } from './B7J77LOR.js';
5
- import { resolveCantonOneSigRequestContext } from './D3KVE5XQ.js';
6
- import { resolveCantonOneSigScopeContext } from './NGED2YCU.js';
7
- import { resolveCantonOneSigTransferInstructionContext } from './5BK6GCUD.js';
8
- import { resolveCantonFinalizeCallback } from './E6W3YWXU.js';
5
+ import { resolveCantonOneSigRequestContext } from './3H5UAMWJ.js';
6
+ import { resolveCantonOneSigScopeContext } from './OK7GQCQM.js';
7
+ import { resolveCantonOneSigTransferInstructionContext } from './5VT3BVW6.js';
8
+ import { resolveCantonFinalizeCallback } from './MRAAJXQA.js';
9
9
  import { createContractAddressResolver } from './QSOEA7F4.js';
10
10
  import { selectContractAmounts, parseDamlDecimal } from './ZEK5YBPA.js';
11
- import { cantonRefreshPlanSchema, cantonFinalizeCallbackRefreshSchema, cantonOneSigTransferBatchRefreshSchema, cantonOneSigTransferInstructionContextRefreshSchema, cantonOneSigConfigContextRefreshSchema, cantonOneSigScopeContextRefreshSchema, cantonOneSigDiscoveryContextRefreshSchema, cantonOneSigRequestContextRefreshSchema, cantonTransferInstructionAcceptContextRefreshSchema } from './DCDLEU2R.js';
11
+ import { cantonRefreshPlanSchema, cantonFinalizeCallbackRefreshSchema, cantonOneSigTransferBatchRefreshSchema, cantonOneSigTransferInstructionContextRefreshSchema, cantonOneSigConfigContextRefreshSchema, cantonOneSigScopeContextRefreshSchema, cantonOneSigDiscoveryContextRefreshSchema, cantonOneSigRequestContextRefreshSchema, cantonTransferInstructionAcceptContextRefreshSchema } from './UUUJS2PY.js';
12
12
  import { getCreateArgumentField } from './SWY4QT4I.js';
13
13
  import { isCantonDeferredSentinel, cantonSenderPartyRef, isCantonDeferredSender } from './U6EV6YAY.js';
14
14
  import { __name } from './VUOMXK5T.js';
15
15
 
16
16
  // src/refresh/resolve-plan.ts
17
17
  var CANTON_TIME_PATTERN = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?Z$/;
18
+ var TRANSFER_PREAPPROVAL_EXPIRY_MARGIN_MS = 5 * 60 * 1e3;
18
19
  var resolveParty = /* @__PURE__ */ __name((partyRef, senderParty, label) => {
19
20
  if (!isCantonDeferredSender(partyRef)) return partyRef.party;
20
21
  if (!senderParty) {
@@ -233,6 +234,31 @@ var containsDeferredSentinel = /* @__PURE__ */ __name((value) => {
233
234
  if (!isRecord(value)) return false;
234
235
  return Object.values(value).some((child) => containsDeferredSentinel(child));
235
236
  }, "containsDeferredSentinel");
237
+ var transferPreapprovalExpiry = /* @__PURE__ */ __name(({ amuletContext, disclosedContracts }) => {
238
+ const preapproval = amuletContext.values["transfer-preapproval"];
239
+ if (!isRecord(preapproval) || typeof preapproval.value !== "string") return void 0;
240
+ const disclosure = disclosedContracts.find(({ contractId }) => contractId === preapproval.value);
241
+ const debugPayload = isRecord(disclosure) ? disclosure.debugPayload : void 0;
242
+ const expiresAt = isRecord(debugPayload) ? debugPayload.expiresAt : void 0;
243
+ return isCantonTime(expiresAt) ? expiresAt : void 0;
244
+ }, "transferPreapprovalExpiry");
245
+ var resolveAmuletContext = /* @__PURE__ */ __name(async (client, { dsoParty, receiver, amount }) => {
246
+ const instrumentId = {
247
+ admin: dsoParty,
248
+ id: "Amulet"
249
+ };
250
+ const bundle = await client.getAmuletContextWithExternalRules(instrumentId, {
251
+ receiver,
252
+ amount
253
+ });
254
+ if (!receiver) return bundle;
255
+ const expiresAt = transferPreapprovalExpiry(bundle);
256
+ if (!expiresAt || Date.parse(expiresAt) > Date.now() + TRANSFER_PREAPPROVAL_EXPIRY_MARGIN_MS) {
257
+ return bundle;
258
+ }
259
+ console.warn(`TransferPreapproval for receiver ${receiver} expires at ${expiresAt}; using the generic Amulet context`);
260
+ return client.getAmuletContextWithExternalRules(instrumentId);
261
+ }, "resolveAmuletContext");
236
262
  var disclosuresEqual = /* @__PURE__ */ __name((left, right) => left.contractId === right.contractId && left.templateId === right.templateId && left.createdEventBlob === right.createdEventBlob && left.synchronizerId === right.synchronizerId, "disclosuresEqual");
237
263
  var resolveCantonRefreshPlan = /* @__PURE__ */ __name(async (args) => {
238
264
  const replacements = cantonRefreshPlanSchema.shape.replaceSentinels.parse(args.refreshPlan.replaceSentinels);
@@ -473,10 +499,7 @@ var resolveCantonRefreshPlan = /* @__PURE__ */ __name(async (args) => {
473
499
  continue;
474
500
  }
475
501
  if (isAmuletContextRefresh(refresh)) {
476
- const bundle = await args.client.getAmuletContextWithExternalRules({
477
- admin: refresh.resolver.dsoParty,
478
- id: "Amulet"
479
- });
502
+ const bundle = await resolveAmuletContext(args.client, refresh.resolver);
480
503
  appendDisclosures(bundle.disclosedContracts);
481
504
  for (const target of refresh.targets) {
482
505
  applyTarget(commands, target, bundle.amuletContext);
@@ -552,5 +575,5 @@ var resolveCantonRefreshPlan = /* @__PURE__ */ __name(async (args) => {
552
575
  }, "resolveCantonRefreshPlan");
553
576
 
554
577
  export { resolveCantonActiveContracts, resolveCantonRefreshPlan, selectContractsByGte };
555
- //# sourceMappingURL=4SK2ZV46.js.map
556
- //# sourceMappingURL=4SK2ZV46.js.map
578
+ //# sourceMappingURL=7DFFQF5Y.js.map
579
+ //# sourceMappingURL=7DFFQF5Y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/refresh/resolve-plan.ts"],"names":["CANTON_TIME_PATTERN","TRANSFER_PREAPPROVAL_EXPIRY_MARGIN_MS","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","transferPreapprovalExpiry","amuletContext","disclosedContracts","preapproval","disclosure","find","debugPayload","expiresAt","resolveAmuletContext","dsoParty","receiver","amount","instrumentId","admin","id","bundle","getAmuletContextWithExternalRules","now","console","warn","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","existing","get","set","unresolvedDisclosedContracts","ref","discloseActiveContracts","resolved","transfer","cantonOneSigTransferBatchRefreshSchema","firstTarget","calls","transferIndices","flatMap","call","tag","indices","Set","size","includes","resolveCantonOneSigTransferBatch","CantonSdk","forEach","contexts","instruction","cantonOneSigTransferInstructionContextRefreshSchema","slice","transferInstructionCid","resolveCantonOneSigTransferInstructionContext","context","config","cantonOneSigConfigContextRefreshSchema","expected","operation","oappId","expectedHandler","resolveCantonOneSigConfigContext","scope","cantonOneSigScopeContextRefreshSchema","contextTag","category","resolveCantonOneSigScopeContext","discovery","cantonOneSigDiscoveryContextRefreshSchema","timestamp","feeAmount","feeDsoParty","dso","resolveCantonOneSigDiscoveryContext","request","cantonOneSigRequestContextRefreshSchema","requestTags","String","resolveCantonOneSigRequestContext","resolveCantonFinalizeCallback","executeContext","callbackCid","acceptance","cantonTransferInstructionAcceptContextRefreshSchema","getTransferInstructionAcceptContext","choiceContext","contractIdTargets","externalPartyAmuletRulesCid","offsetMs","iso","getTime","toISOString"],"mappings":"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","file":"7DFFQF5Y.js","sourcesContent":["import type { AmuletContextResult } from '../client/amulet';\nimport 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$/;\nconst TRANSFER_PREAPPROVAL_EXPIRY_MARGIN_MS = 5 * 60 * 1000;\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 transferPreapprovalExpiry = ({\n amuletContext,\n disclosedContracts,\n}: AmuletContextResult): string | undefined => {\n const preapproval = amuletContext.values['transfer-preapproval'];\n if (!isRecord(preapproval) || typeof preapproval.value !== 'string') return undefined;\n const disclosure: unknown = disclosedContracts.find(\n ({ contractId }) => contractId === preapproval.value,\n );\n const debugPayload = isRecord(disclosure) ? disclosure.debugPayload : undefined;\n const expiresAt = isRecord(debugPayload) ? debugPayload.expiresAt : undefined;\n return isCantonTime(expiresAt) ? expiresAt : undefined;\n};\n\nconst resolveAmuletContext = async (\n client: ICantonClient,\n { dsoParty, receiver, amount }: CantonAmuletContextRefresh['resolver'],\n): Promise<AmuletContextResult> => {\n const instrumentId = { admin: dsoParty, id: 'Amulet' };\n const bundle = await client.getAmuletContextWithExternalRules(instrumentId, {\n receiver,\n amount,\n });\n if (!receiver) return bundle;\n const expiresAt = transferPreapprovalExpiry(bundle);\n if (!expiresAt || Date.parse(expiresAt) > Date.now() + TRANSFER_PREAPPROVAL_EXPIRY_MARGIN_MS) {\n return bundle;\n }\n console.warn(\n `TransferPreapproval for receiver ${receiver} expires at ${expiresAt}; using the generic Amulet context`,\n );\n return client.getAmuletContextWithExternalRules(instrumentId);\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 resolveAmuletContext(args.client, refresh.resolver);\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,4 +1,4 @@
1
- import { AMULET_INSTRUMENT_ID } from './KPFKPA5E.js';
1
+ import { AMULET_INSTRUMENT_ID } from './XWNGGI4V.js';
2
2
  import { fetchMergedTransferFactoryContext, resolveProbeWindow, mergeProbedTransferFactoryContexts, discoveryUrlsForAppUid } from './TLQX4ZQW.js';
3
3
  import { __name } from './VUOMXK5T.js';
4
4
 
@@ -69,5 +69,5 @@ var fetchCallbackTransferFactoryContext = /* @__PURE__ */ __name(async (registry
69
69
  }, "fetchCallbackTransferFactoryContext");
70
70
 
71
71
  export { daUtilitiesRegistryUrl, fetchCallbackTransferFactoryContext, withCantonCallbackRegistry };
72
- //# sourceMappingURL=RFGCLYQN.js.map
73
- //# sourceMappingURL=RFGCLYQN.js.map
72
+ //# sourceMappingURL=7Z6L2FXT.js.map
73
+ //# sourceMappingURL=7Z6L2FXT.js.map