@layerzerolabs/gated-transaction 0.0.39 → 0.0.40

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.
@@ -10,45 +10,45 @@
10
10
  CLI Cleaning output folder
11
11
  CJS Build start
12
12
  ESM Build start
13
- ESM dist/gatedTransactionSignalLock.js 270.00 B
13
+ CJS dist/gatedTransactionSignalLock.cjs 697.00 B
14
+ CJS dist/index.cjs 2.65 KB
15
+ CJS dist/resolver.cjs 549.00 B
16
+ CJS dist/I7JOK2BP.cjs 3.69 KB
17
+ CJS dist/J2MWXBSK.cjs 1.08 KB
18
+ CJS dist/YJF4D23A.cjs 245.00 B
19
+ CJS dist/2WHEGCDB.cjs 9.11 KB
20
+ CJS dist/ZKCNP42T.cjs 3.91 KB
21
+ CJS dist/gatedTx.cjs 652.00 B
22
+ CJS dist/schemata.cjs 1.26 KB
23
+ CJS dist/gatedTransactionSignalLock.cjs.map 91.00 B
24
+ CJS dist/index.cjs.map 70.00 B
25
+ CJS dist/resolver.cjs.map 73.00 B
26
+ CJS dist/YJF4D23A.cjs.map 73.00 B
27
+ CJS dist/I7JOK2BP.cjs.map 8.61 KB
28
+ CJS dist/ZKCNP42T.cjs.map 14.00 KB
29
+ CJS dist/J2MWXBSK.cjs.map 4.04 KB
30
+ CJS dist/2WHEGCDB.cjs.map 23.22 KB
31
+ CJS dist/gatedTx.cjs.map 72.00 B
32
+ CJS dist/schemata.cjs.map 73.00 B
33
+ CJS ⚡️ Build success in 189ms
14
34
  ESM dist/index.js 658.00 B
15
- ESM dist/resolver.js 238.00 B
35
+ ESM dist/gatedTransactionSignalLock.js 270.00 B
16
36
  ESM dist/gatedTx.js 218.00 B
37
+ ESM dist/resolver.js 238.00 B
17
38
  ESM dist/VJKKTCPP.js 935.00 B
18
39
  ESM dist/7GRIENQP.js 3.47 KB
19
40
  ESM dist/schemata.js 335.00 B
20
41
  ESM dist/VUOMXK5T.js 222.00 B
42
+ ESM dist/GZTW336Z.js 8.57 KB
21
43
  ESM dist/L6WLN6U3.js 2.93 KB
22
- ESM dist/UR6B6V6H.js 8.42 KB
44
+ ESM dist/index.js.map 69.00 B
23
45
  ESM dist/gatedTransactionSignalLock.js.map 90.00 B
24
46
  ESM dist/resolver.js.map 72.00 B
25
47
  ESM dist/gatedTx.js.map 71.00 B
26
48
  ESM dist/VJKKTCPP.js.map 4.04 KB
27
- ESM dist/7GRIENQP.js.map 8.59 KB
28
49
  ESM dist/schemata.js.map 72.00 B
29
- ESM dist/L6WLN6U3.js.map 13.94 KB
30
- ESM dist/index.js.map 69.00 B
31
50
  ESM dist/VUOMXK5T.js.map 72.00 B
32
- ESM dist/UR6B6V6H.js.map 22.78 KB
33
- ESM ⚡️ Build success in 201ms
34
- CJS dist/gatedTransactionSignalLock.cjs 697.00 B
35
- CJS dist/gatedTx.cjs 652.00 B
36
- CJS dist/index.cjs 2.65 KB
37
- CJS dist/I7JOK2BP.cjs 3.69 KB
38
- CJS dist/resolver.cjs 549.00 B
39
- CJS dist/J2MWXBSK.cjs 1.08 KB
40
- CJS dist/YJF4D23A.cjs 245.00 B
41
- CJS dist/schemata.cjs 1.26 KB
42
- CJS dist/ZKCNP42T.cjs 3.91 KB
43
- CJS dist/5JUAD4GY.cjs 8.95 KB
44
- CJS dist/gatedTx.cjs.map 72.00 B
45
- CJS dist/index.cjs.map 70.00 B
46
- CJS dist/I7JOK2BP.cjs.map 8.61 KB
47
- CJS dist/resolver.cjs.map 73.00 B
48
- CJS dist/J2MWXBSK.cjs.map 4.04 KB
49
- CJS dist/gatedTransactionSignalLock.cjs.map 91.00 B
50
- CJS dist/schemata.cjs.map 73.00 B
51
- CJS dist/ZKCNP42T.cjs.map 14.00 KB
52
- CJS dist/YJF4D23A.cjs.map 73.00 B
53
- CJS dist/5JUAD4GY.cjs.map 22.81 KB
54
- CJS ⚡️ Build success in 203ms
51
+ ESM dist/7GRIENQP.js.map 8.59 KB
52
+ ESM dist/GZTW336Z.js.map 23.18 KB
53
+ ESM dist/L6WLN6U3.js.map 13.94 KB
54
+ ESM ⚡️ Build success in 189ms
@@ -10,10 +10,10 @@
10
10
  at /home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/test/resolver.test.ts:121:19
11
11
  at mockCall (file:///home/runner/work/monorepo-internal/monorepo-internal/node_modules/.pnpm/@vitest+spy@3.2.3/node_modules/@vitest/spy/dist/index.js:89:15)
12
12
  at spy (file:///home/runner/work/monorepo-internal/monorepo-internal/node_modules/.pnpm/tinyspy@4.0.3/node_modules/tinyspy/dist/index.js:47:103)
13
- at resolveGatedTransaction (/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/src/resolver.ts:231:37)
14
- at /home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/src/resolver.ts:344:63
13
+ at resolveGatedTransaction (/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/src/resolver.ts:238:37)
14
+ at /home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/src/resolver.ts:351:63
15
15
  at async Promise.all (index 0)
16
- at resolveGatedTransactions (/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/src/resolver.ts:375:12)
16
+ at resolveGatedTransactions (/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/src/resolver.ts:382:12)
17
17
  at /home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/test/resolver.test.ts:127:30
18
18
  at file:///home/runner/work/monorepo-internal/monorepo-internal/node_modules/.pnpm/@vitest+runner@3.2.3/node_modules/@vitest/runner/dist/chunk-hooks.js:752:20
19
19
 
@@ -21,18 +21,18 @@
21
21
  Gated transaction failed Error: build failed
22
22
  at Object.final (/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/test/resolver.test.ts:362:27)
23
23
  at Object.callByPointer (/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/test/resolver.test.ts:25:41)
24
- at extractGatedTransactionUnderlyingTransaction (/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/src/resolver.ts:118:31)
25
- at resolveGatedTransaction (/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/src/resolver.ts:226:34)
26
- at /home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/src/resolver.ts:344:63
24
+ at extractGatedTransactionUnderlyingTransaction (/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/src/resolver.ts:119:29)
25
+ at resolveGatedTransaction (/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/src/resolver.ts:233:34)
26
+ at /home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/src/resolver.ts:351:63
27
27
  at async Promise.all (index 0)
28
- at resolveGatedTransactions (/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/src/resolver.ts:375:12)
28
+ at resolveGatedTransactions (/home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/src/resolver.ts:382:12)
29
29
  at /home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction/test/resolver.test.ts:385:23
30
30
  at file:///home/runner/work/monorepo-internal/monorepo-internal/node_modules/.pnpm/@vitest+runner@3.2.3/node_modules/@vitest/runner/dist/chunk-hooks.js:752:20
31
31
 
32
- ✓ test/resolver.test.ts (10 tests) 426ms
32
+ ✓ test/resolver.test.ts (10 tests) 415ms
33
33
 
34
34
   Test Files  1 passed (1)
35
35
   Tests  10 passed (10)
36
-  Start at  23:00:08
37
-  Duration  1.06s (transform 165ms, setup 0ms, collect 251ms, tests 426ms, environment 0ms, prepare 135ms)
36
+  Start at  18:38:08
37
+  Duration  926ms (transform 128ms, setup 0ms, collect 219ms, tests 415ms, environment 0ms, prepare 87ms)
38
38
 
@@ -52,13 +52,18 @@ var checkGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ registr
52
52
  };
53
53
  }, "checkGatedTransaction");
54
54
  var extractGatedTransactionUnderlyingTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ registry, gatedTransaction, deps }) => {
55
+ let tx;
55
56
  if (gatedTransaction.transactionType === "literal") {
56
- return gatedTransaction.transaction;
57
+ tx = gatedTransaction.transaction;
57
58
  } else {
58
- return await registry.callByPointer(gatedTransaction.getTransactionPointer, [
59
+ tx = await registry.callByPointer(gatedTransaction.getTransactionPointer, [
59
60
  deps
60
61
  ]);
61
62
  }
63
+ if (!tx.parallelizingKey) {
64
+ tx.parallelizingKey = `MISSING_PARALLELIZING_KEY-${J2MWXBSK_cjs.getIdForGatedTransaction(gatedTransaction)}`;
65
+ }
66
+ return tx;
62
67
  }, "extractGatedTransactionUnderlyingTransaction");
63
68
  var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activityRegistry, gatedTx, getTransactionResult, processTx, confirmationCallback, fn, cache }) => {
64
69
  const baseGatedTx = {
@@ -237,5 +242,5 @@ var resolveSequencedGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(asyn
237
242
 
238
243
  exports.resolveGatedTransactions = resolveGatedTransactions;
239
244
  exports.resolveSequencedGatedTransactions = resolveSequencedGatedTransactions;
240
- //# sourceMappingURL=5JUAD4GY.cjs.map
241
- //# sourceMappingURL=5JUAD4GY.cjs.map
245
+ //# sourceMappingURL=2WHEGCDB.cjs.map
246
+ //# sourceMappingURL=2WHEGCDB.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resolver.ts"],"names":["checkGatedTransaction","__name","registry","gatedTransaction","cachedCheckResult","submittedTransaction","onChainData","undefined","params","check","callByPointer","functionPointer","expectationMet","expectedResult","operator","isEqual","comparisonValue","Error","extractGatedTransactionUnderlyingTransaction","deps","tx","transactionType","transaction","getTransactionPointer","parallelizingKey","getIdForGatedTransaction","resolveGatedTransaction","activityRegistry","gatedTx","getTransactionResult","processTx","confirmationCallback","fn","cache","baseGatedTx","name","chainName","bundleName","dependencies","cacheable","uniqueIdKeys","metadata","dependencyIds","map","dependenciesAreAllProcessed","every","id","condition","dependenciesWereSuccessful","checkResult","resolvedGatedTransaction","result","status","GatedTransactionStatus","DEPENDENCY_FAILED","lastCheckResult","initialCheckResult","getCachedTxCheckData","cacheSuccessfulTxCheckData","NO_OP","confirmation","DENIED","depsResults","dep","resolved","underlying","processResult","finalCheckResult","SUCCESS","stringify","o","JSON","_","v","toString","console","error","FINAL_CHECK_FAILED","finalOnChainState","e","TRANSACTION_FAILED","transactionError","resolveGatedTransactions","gatedTxes","userInteractionCallbacks","allInternalIds","allDeps","flatMap","allExternalDeps","filter","includes","results","Object","fromEntries","Promise","all","gtxId","txFunctions","resId","onResultCallback","func","resolveSequencedGatedTransactions","seq","push"],"mappings":"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","file":"2WHEGCDB.cjs","sourcesContent":["import isEqual from 'lodash.isequal';\n\nimport type { ActivityRegistry } from '@layerzerolabs/common-activities';\nimport type {\n Transaction,\n TransactionResult,\n TransactionWithResult,\n} from '@layerzerolabs/common-chain-model';\nimport type { WorkflowFunctions } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n BaseGatedTransactionFor,\n GatedTransaction,\n GatedTransactionId,\n IGatedTransactionCache,\n InferOnChainDataTypeFromGatedTransaction,\n ResolvedGatedTransaction,\n ResolvedGatedTransactionDependencies,\n UserInteractionCallbacks,\n} from './schemata';\nimport { GatedTransactionStatus } from './schemata';\n\ntype OnChainCheckResult<DataType = any> = {\n expectationMet: boolean;\n onChainData: DataType;\n};\n\nconst checkGatedTransaction = async <\n GatedTx extends GatedTransaction,\n TxWithResult extends TransactionWithResult,\n>({\n registry,\n gatedTransaction,\n cachedCheckResult,\n submittedTransaction,\n}: {\n registry: ActivityRegistry;\n gatedTransaction: GatedTx;\n cachedCheckResult?: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n submittedTransaction?: TxWithResult;\n}): Promise<OnChainCheckResult<InferOnChainDataTypeFromGatedTransaction<GatedTx>>> => {\n let onChainData: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n if (cachedCheckResult !== undefined) {\n onChainData = cachedCheckResult;\n } else {\n // Always inject the processed transaction as the last parameter when available\n let params = gatedTransaction.check.params;\n if (submittedTransaction !== undefined) {\n params = [...gatedTransaction.check.params, submittedTransaction];\n }\n\n onChainData = await registry.callByPointer(gatedTransaction.check.functionPointer, params);\n }\n\n let expectationMet: boolean;\n\n switch (gatedTransaction.check.expectedResult.operator) {\n case '=':\n expectationMet = isEqual(\n onChainData,\n gatedTransaction.check.expectedResult.comparisonValue,\n );\n break;\n case '!=':\n expectationMet = !isEqual(\n onChainData,\n gatedTransaction.check.expectedResult.comparisonValue,\n );\n break;\n case '>':\n expectationMet =\n (onChainData as number) >\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n case '>=':\n expectationMet =\n (onChainData as number) >=\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n case '<':\n expectationMet =\n (onChainData as number) <\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n case '<=':\n expectationMet =\n (onChainData as number) <=\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n default:\n throw new Error(\n `Gated transaction operator \"${gatedTransaction.check.expectedResult.operator}\" is not supported`,\n );\n }\n\n return {\n expectationMet,\n onChainData,\n };\n};\n\nconst extractGatedTransactionUnderlyingTransaction = async <\n GatedTx extends GatedTransaction,\n TxType extends Transaction,\n>({\n registry,\n gatedTransaction,\n deps,\n}: {\n registry: ActivityRegistry;\n gatedTransaction: GatedTx;\n deps: ResolvedGatedTransactionDependencies<GatedTx>;\n}): Promise<TxType> => {\n let tx: TxType;\n if (gatedTransaction.transactionType === 'literal') {\n tx = gatedTransaction.transaction as TxType;\n } else {\n tx = await registry.callByPointer(gatedTransaction.getTransactionPointer, [deps]);\n }\n\n if (!tx.parallelizingKey) {\n tx.parallelizingKey = `MISSING_PARALLELIZING_KEY-${getIdForGatedTransaction(gatedTransaction)}`;\n }\n\n return tx;\n};\n\nconst resolveGatedTransaction = async <\n TxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TransactionResult>,\n>({\n activityRegistry,\n gatedTx,\n getTransactionResult,\n processTx,\n confirmationCallback,\n fn,\n cache,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTx: GatedTx;\n processTx: ProcessTx;\n getTransactionResult: (gtxId: GatedTransactionId) =>\n | {\n resolved?: ResolvedGatedTransaction;\n checkResult: { onChainData?: any; expectationMet: boolean };\n }\n | undefined;\n confirmationCallback: NonNullable<UserInteractionCallbacks['confirmationCallback']>;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n}): Promise<{\n resolvedGatedTransaction: ResolvedGatedTransaction<GatedTx>;\n lastCheckResult: OnChainCheckResult | null;\n}> => {\n const baseGatedTx = {\n name: gatedTx.name,\n chainName: gatedTx.chainName,\n bundleName: gatedTx.bundleName,\n check: gatedTx.check,\n dependencies: gatedTx.dependencies,\n cacheable: gatedTx.cacheable,\n uniqueIdKeys: gatedTx.uniqueIdKeys,\n metadata: gatedTx.metadata,\n } as BaseGatedTransactionFor<GatedTx>;\n\n const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => getIdForGatedTransaction(tx));\n\n const dependenciesAreAllProcessed = () => dependencyIds.every((id) => getTransactionResult(id));\n\n await fn.condition(dependenciesAreAllProcessed);\n\n //check that the dependencies succeeded\n const dependenciesWereSuccessful = dependencyIds.every(\n (id) => getTransactionResult(id)?.checkResult.expectationMet,\n );\n\n if (!dependenciesWereSuccessful) {\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.DEPENDENCY_FAILED,\n },\n },\n lastCheckResult: null,\n };\n }\n\n const initialCheckResult = await checkGatedTransaction({\n gatedTransaction: gatedTx,\n registry: activityRegistry,\n cachedCheckResult: await cache?.getCachedTxCheckData?.(gatedTx),\n });\n\n await cache?.cacheSuccessfulTxCheckData?.(gatedTx, initialCheckResult.onChainData);\n\n if (initialCheckResult.expectationMet) {\n //already met\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.NO_OP,\n },\n },\n lastCheckResult: initialCheckResult,\n };\n }\n\n //get confirmation before sending\n const confirmation = await confirmationCallback(gatedTx);\n if (!confirmation) {\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.DENIED,\n },\n },\n lastCheckResult: initialCheckResult,\n };\n }\n\n //send the tx\n try {\n const depsResults = gatedTx.dependencies.map(\n (dep) => getTransactionResult(getIdForGatedTransaction(dep))!.resolved!,\n ) as ResolvedGatedTransactionDependencies<GatedTx>;\n // get the underlying calldata\n const underlying = await extractGatedTransactionUnderlyingTransaction<GatedTx, TxType>({\n registry: activityRegistry,\n gatedTransaction: gatedTx,\n deps: depsResults,\n });\n const processResult = await processTx(underlying);\n const submittedTransaction = { ...underlying, result: processResult };\n const finalCheckResult = await checkGatedTransaction({\n registry: activityRegistry,\n gatedTransaction: gatedTx,\n submittedTransaction,\n });\n\n await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);\n\n if (finalCheckResult.expectationMet) {\n //sent and successful\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.SUCCESS,\n submittedTransaction,\n },\n },\n lastCheckResult: finalCheckResult,\n };\n } else {\n //sent and unsuccessful\n const stringify = (o: any) =>\n JSON.stringify(o, (_, v) => (typeof v === 'bigint' ? v.toString() : v), 2);\n console.error(\n `Gated transaction ${gatedTx.name} final check failed:\\nExpected result ${stringify(gatedTx.check.expectedResult.comparisonValue)}, but got:\\n${stringify(finalCheckResult.onChainData)}`,\n );\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED,\n submittedTransaction,\n finalOnChainState: finalCheckResult.onChainData,\n },\n },\n lastCheckResult: finalCheckResult,\n };\n }\n } catch (e) {\n console.error('Gated transaction failed', e);\n //sent and failed\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.TRANSACTION_FAILED,\n transactionError: e,\n },\n },\n lastCheckResult: initialCheckResult,\n };\n }\n};\n\nexport const resolveGatedTransactions = async <\n TxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TransactionResult>,\n>({\n activityRegistry,\n gatedTxes,\n processTx,\n fn,\n cache,\n userInteractionCallbacks,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTxes: GatedTx[];\n processTx: ProcessTx;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n userInteractionCallbacks?: UserInteractionCallbacks;\n}): Promise<ResolvedGatedTransaction[]> => {\n //compute deps\n const allInternalIds = gatedTxes.map((tx) => getIdForGatedTransaction(tx));\n const allDeps = gatedTxes.flatMap((tx) => tx.dependencies ?? []);\n const allExternalDeps = allDeps.filter(\n (tx) => !allInternalIds.includes(getIdForGatedTransaction(tx)),\n );\n\n //prepopulate results for external dependencies\n //this map is only used for internal status tracking\n const results: Record<\n GatedTransactionId,\n {\n resolved?: ResolvedGatedTransaction;\n checkResult: { onChainData?: any; expectationMet: boolean };\n }\n > = Object.fromEntries(\n await Promise.all(\n allExternalDeps.map(async (tx) => {\n const checkResult = await checkGatedTransaction({\n gatedTransaction: tx,\n registry: activityRegistry,\n cachedCheckResult: await cache?.getCachedTxCheckData?.(tx),\n });\n\n return [\n getIdForGatedTransaction(tx),\n {\n checkResult,\n },\n ];\n }),\n ),\n );\n\n const getTransactionResult = (gtxId: GatedTransactionId) => results[gtxId];\n\n const txFunctions = gatedTxes.map((tx) => async () => {\n const { resolvedGatedTransaction, lastCheckResult } = await resolveGatedTransaction<\n TxType,\n GatedTx,\n ProcessTx\n >({\n gatedTx: tx,\n activityRegistry,\n getTransactionResult,\n processTx,\n confirmationCallback:\n userInteractionCallbacks?.confirmationCallback ?? (async () => true),\n fn,\n cache,\n });\n\n const resId = getIdForGatedTransaction(resolvedGatedTransaction);\n results[resId] = {\n resolved: resolvedGatedTransaction,\n checkResult: {\n expectationMet: [\n GatedTransactionStatus.SUCCESS,\n GatedTransactionStatus.NO_OP,\n ].includes(resolvedGatedTransaction.result.status),\n onChainData: lastCheckResult?.onChainData ?? undefined,\n },\n };\n\n userInteractionCallbacks?.onResultCallback?.(resolvedGatedTransaction);\n return resolvedGatedTransaction;\n });\n\n return await Promise.all(txFunctions.map((func) => func()));\n};\n\nexport const resolveSequencedGatedTransactions = async <\n TxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TransactionResult>,\n>({\n activityRegistry,\n gatedTxes,\n processTx,\n cache,\n userInteractionCallbacks,\n fn,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTxes: GatedTx[][];\n processTx: ProcessTx;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n userInteractionCallbacks?: UserInteractionCallbacks;\n}) => {\n const results = [];\n for (const seq of gatedTxes) {\n const result = await resolveGatedTransactions<TxType, GatedTx, ProcessTx>({\n gatedTxes: seq,\n activityRegistry,\n processTx,\n cache,\n userInteractionCallbacks,\n fn,\n });\n results.push(result);\n }\n\n return results;\n};\n"]}
@@ -46,13 +46,18 @@ var checkGatedTransaction = /* @__PURE__ */ __name(async ({ registry, gatedTrans
46
46
  };
47
47
  }, "checkGatedTransaction");
48
48
  var extractGatedTransactionUnderlyingTransaction = /* @__PURE__ */ __name(async ({ registry, gatedTransaction, deps }) => {
49
+ let tx;
49
50
  if (gatedTransaction.transactionType === "literal") {
50
- return gatedTransaction.transaction;
51
+ tx = gatedTransaction.transaction;
51
52
  } else {
52
- return await registry.callByPointer(gatedTransaction.getTransactionPointer, [
53
+ tx = await registry.callByPointer(gatedTransaction.getTransactionPointer, [
53
54
  deps
54
55
  ]);
55
56
  }
57
+ if (!tx.parallelizingKey) {
58
+ tx.parallelizingKey = `MISSING_PARALLELIZING_KEY-${getIdForGatedTransaction(gatedTransaction)}`;
59
+ }
60
+ return tx;
56
61
  }, "extractGatedTransactionUnderlyingTransaction");
57
62
  var resolveGatedTransaction = /* @__PURE__ */ __name(async ({ activityRegistry, gatedTx, getTransactionResult, processTx, confirmationCallback, fn, cache }) => {
58
63
  const baseGatedTx = {
@@ -230,5 +235,5 @@ var resolveSequencedGatedTransactions = /* @__PURE__ */ __name(async ({ activity
230
235
  }, "resolveSequencedGatedTransactions");
231
236
 
232
237
  export { resolveGatedTransactions, resolveSequencedGatedTransactions };
233
- //# sourceMappingURL=UR6B6V6H.js.map
234
- //# sourceMappingURL=UR6B6V6H.js.map
238
+ //# sourceMappingURL=GZTW336Z.js.map
239
+ //# sourceMappingURL=GZTW336Z.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resolver.ts"],"names":["checkGatedTransaction","registry","gatedTransaction","cachedCheckResult","submittedTransaction","onChainData","undefined","params","check","callByPointer","functionPointer","expectationMet","expectedResult","operator","isEqual","comparisonValue","Error","extractGatedTransactionUnderlyingTransaction","deps","tx","transactionType","transaction","getTransactionPointer","parallelizingKey","getIdForGatedTransaction","resolveGatedTransaction","activityRegistry","gatedTx","getTransactionResult","processTx","confirmationCallback","fn","cache","baseGatedTx","name","chainName","bundleName","dependencies","cacheable","uniqueIdKeys","metadata","dependencyIds","map","dependenciesAreAllProcessed","every","id","condition","dependenciesWereSuccessful","checkResult","resolvedGatedTransaction","result","status","GatedTransactionStatus","DEPENDENCY_FAILED","lastCheckResult","initialCheckResult","getCachedTxCheckData","cacheSuccessfulTxCheckData","NO_OP","confirmation","DENIED","depsResults","dep","resolved","underlying","processResult","finalCheckResult","SUCCESS","stringify","o","JSON","_","v","toString","console","error","FINAL_CHECK_FAILED","finalOnChainState","e","TRANSACTION_FAILED","transactionError","resolveGatedTransactions","gatedTxes","userInteractionCallbacks","allInternalIds","allDeps","flatMap","allExternalDeps","filter","includes","results","Object","fromEntries","Promise","all","gtxId","txFunctions","resId","onResultCallback","func","resolveSequencedGatedTransactions","seq","push"],"mappings":";;;;;AA4BA,IAAMA,wCAAwB,MAAA,CAAA,OAG5B,EACEC,UACAC,gBAAAA,EACAC,iBAAAA,EACAC,sBAAoB,KAMvB;AACG,EAAA,IAAIC,WAAAA;AACJ,EAAA,IAAIF,sBAAsBG,MAAAA,EAAW;AACjCD,IAAAA,WAAAA,GAAcF,iBAAAA;EAClB,CAAA,MAAO;AAEH,IAAA,IAAII,MAAAA,GAASL,iBAAiBM,KAAAA,CAAMD,MAAAA;AACpC,IAAA,IAAIH,yBAAyBE,MAAAA,EAAW;AACpCC,MAAAA,MAAAA,GAAS;AAAIL,QAAAA,GAAAA,gBAAAA,CAAiBM,KAAAA,CAAMD,MAAAA;AAAQH,QAAAA;;AAChD,IAAA;AAEAC,IAAAA,WAAAA,GAAc,MAAMJ,QAAAA,CAASQ,aAAAA,CAAcP,gBAAAA,CAAiBM,KAAAA,CAAME,iBAAiBH,MAAAA,CAAAA;AACvF,EAAA;AAEA,EAAA,IAAII,cAAAA;AAEJ,EAAA,QAAQT,gBAAAA,CAAiBM,KAAAA,CAAMI,cAAAA,CAAeC,QAAAA;IAC1C,KAAK,GAAA;AACDF,MAAAA,cAAAA,GAAiBG,OAAAA,CACbT,WAAAA,EACAH,gBAAAA,CAAiBM,KAAAA,CAAMI,eAAeG,eAAe,CAAA;AAEzD,MAAA;IACJ,KAAK,IAAA;AACDJ,MAAAA,cAAAA,GAAiB,CAACG,OAAAA,CACdT,WAAAA,EACAH,gBAAAA,CAAiBM,KAAAA,CAAMI,eAAeG,eAAe,CAAA;AAEzD,MAAA;IACJ,KAAK,GAAA;AACDJ,MAAAA,cAAAA,GACKN,WAAAA,GACAH,gBAAAA,CAAiBM,KAAAA,CAAMI,cAAAA,CAAeG,eAAAA;AAC3C,MAAA;IACJ,KAAK,IAAA;AACDJ,MAAAA,cAAAA,GACKN,WAAAA,IACAH,gBAAAA,CAAiBM,KAAAA,CAAMI,cAAAA,CAAeG,eAAAA;AAC3C,MAAA;IACJ,KAAK,GAAA;AACDJ,MAAAA,cAAAA,GACKN,WAAAA,GACAH,gBAAAA,CAAiBM,KAAAA,CAAMI,cAAAA,CAAeG,eAAAA;AAC3C,MAAA;IACJ,KAAK,IAAA;AACDJ,MAAAA,cAAAA,GACKN,WAAAA,IACAH,gBAAAA,CAAiBM,KAAAA,CAAMI,cAAAA,CAAeG,eAAAA;AAC3C,MAAA;AACJ,IAAA;AACI,MAAA,MAAM,IAAIC,KAAAA,CACN,CAAA,4BAAA,EAA+Bd,iBAAiBM,KAAAA,CAAMI,cAAAA,CAAeC,QAAQ,CAAA,kBAAA,CAAoB,CAAA;AAE7G;AAEA,EAAA,OAAO;AACHF,IAAAA,cAAAA;AACAN,IAAAA;AACJ,GAAA;AACJ,CAAA,EAxE8B,uBAAA,CAAA;AA0E9B,IAAMY,+DAA+C,MAAA,CAAA,OAGnD,EACEhB,QAAAA,EACAC,gBAAAA,EACAgB,MAAI,KAKP;AACG,EAAA,IAAIC,EAAAA;AACJ,EAAA,IAAIjB,gBAAAA,CAAiBkB,oBAAoB,SAAA,EAAW;AAChDD,IAAAA,EAAAA,GAAKjB,gBAAAA,CAAiBmB,WAAAA;EAC1B,CAAA,MAAO;AACHF,IAAAA,EAAAA,GAAK,MAAMlB,QAAAA,CAASQ,aAAAA,CAAcP,gBAAAA,CAAiBoB,qBAAAA,EAAuB;AAACJ,MAAAA;AAAK,KAAA,CAAA;AACpF,EAAA;AAEA,EAAA,IAAI,CAACC,GAAGI,gBAAAA,EAAkB;AACtBJ,IAAAA,EAAAA,CAAGI,gBAAAA,GAAmB,CAAA,0BAAA,EAA6BC,wBAAAA,CAAyBtB,gBAAAA,CAAAA,CAAAA,CAAAA;AAChF,EAAA;AAEA,EAAA,OAAOiB,EAAAA;AACX,CAAA,EAxBqD,8CAAA,CAAA;AA0BrD,IAAMM,uBAAAA,mBAA0B,MAAA,CAAA,OAI9B,EACEC,gBAAAA,EACAC,OAAAA,EACAC,sBACAC,SAAAA,EACAC,oBAAAA,EACAC,EAAAA,EACAC,KAAAA,EAAK,KAcR;AAIG,EAAA,MAAMC,WAAAA,GAAc;AAChBC,IAAAA,IAAAA,EAAMP,OAAAA,CAAQO,IAAAA;AACdC,IAAAA,SAAAA,EAAWR,OAAAA,CAAQQ,SAAAA;AACnBC,IAAAA,UAAAA,EAAYT,OAAAA,CAAQS,UAAAA;AACpB5B,IAAAA,KAAAA,EAAOmB,OAAAA,CAAQnB,KAAAA;AACf6B,IAAAA,YAAAA,EAAcV,OAAAA,CAAQU,YAAAA;AACtBC,IAAAA,SAAAA,EAAWX,OAAAA,CAAQW,SAAAA;AACnBC,IAAAA,YAAAA,EAAcZ,OAAAA,CAAQY,YAAAA;AACtBC,IAAAA,QAAAA,EAAUb,OAAAA,CAAQa;AACtB,GAAA;AAEA,EAAA,MAAMC,aAAAA,GAAAA,CAAiBd,OAAAA,CAAQU,YAAAA,IAAgB,EAAA,EAAIK,IAAI,CAACvB,EAAAA,KAAOK,wBAAAA,CAAyBL,EAAAA,CAAAA,CAAAA;AAExF,EAAA,MAAMwB,2BAAAA,gCAAoCF,aAAAA,CAAcG,KAAAA,CAAM,CAACC,EAAAA,KAAOjB,oBAAAA,CAAqBiB,EAAAA,CAAAA,CAAAA,EAAvD,6BAAA,CAAA;AAEpC,EAAA,MAAMd,EAAAA,CAAGe,UAAUH,2BAAAA,CAAAA;AAGnB,EAAA,MAAMI,0BAAAA,GAA6BN,cAAcG,KAAAA,CAC7C,CAACC,OAAOjB,oBAAAA,CAAqBiB,EAAAA,CAAAA,EAAKG,WAAAA,CAAYrC,cAAAA,CAAAA;AAGlD,EAAA,IAAI,CAACoC,0BAAAA,EAA4B;AAC7B,IAAA,OAAO;MACHE,wBAAAA,EAA0B;QACtB,GAAGhB,WAAAA;QACHiB,MAAAA,EAAQ;AACJC,UAAAA,MAAAA,EAAQC,sBAAAA,CAAuBC;AACnC;AACJ,OAAA;MACAC,eAAAA,EAAiB;AACrB,KAAA;AACJ,EAAA;AAEA,EAAA,MAAMC,kBAAAA,GAAqB,MAAMvD,qBAAAA,CAAsB;IACnDE,gBAAAA,EAAkByB,OAAAA;IAClB1B,QAAAA,EAAUyB,gBAAAA;IACVvB,iBAAAA,EAAmB,MAAM6B,KAAAA,EAAOwB,oBAAAA,GAAuB7B,OAAAA;GAC3D,CAAA;AAEA,EAAA,MAAMK,KAAAA,EAAOyB,0BAAAA,GAA6B9B,OAAAA,EAAS4B,kBAAAA,CAAmBlD,WAAW,CAAA;AAEjF,EAAA,IAAIkD,mBAAmB5C,cAAAA,EAAgB;AAEnC,IAAA,OAAO;MACHsC,wBAAAA,EAA0B;QACtB,GAAGhB,WAAAA;QACHiB,MAAAA,EAAQ;AACJC,UAAAA,MAAAA,EAAQC,sBAAAA,CAAuBM;AACnC;AACJ,OAAA;MACAJ,eAAAA,EAAiBC;AACrB,KAAA;AACJ,EAAA;AAGA,EAAA,MAAMI,YAAAA,GAAe,MAAM7B,oBAAAA,CAAqBH,OAAAA,CAAAA;AAChD,EAAA,IAAI,CAACgC,YAAAA,EAAc;AACf,IAAA,OAAO;MACHV,wBAAAA,EAA0B;QACtB,GAAGhB,WAAAA;QACHiB,MAAAA,EAAQ;AACJC,UAAAA,MAAAA,EAAQC,sBAAAA,CAAuBQ;AACnC;AACJ,OAAA;MACAN,eAAAA,EAAiBC;AACrB,KAAA;AACJ,EAAA;AAGA,EAAA,IAAI;AACA,IAAA,MAAMM,WAAAA,GAAclC,OAAAA,CAAQU,YAAAA,CAAaK,GAAAA,CACrC,CAACoB,GAAAA,KAAQlC,oBAAAA,CAAqBJ,wBAAAA,CAAyBsC,GAAAA,CAAAA,CAAAA,CAAOC,QAAQ,CAAA;AAG1E,IAAA,MAAMC,UAAAA,GAAa,MAAM/C,4CAAAA,CAA8D;MACnFhB,QAAAA,EAAUyB,gBAAAA;MACVxB,gBAAAA,EAAkByB,OAAAA;MAClBT,IAAAA,EAAM2C;KACV,CAAA;AACA,IAAA,MAAMI,aAAAA,GAAgB,MAAMpC,SAAAA,CAAUmC,UAAAA,CAAAA;AACtC,IAAA,MAAM5D,oBAAAA,GAAuB;MAAE,GAAG4D,UAAAA;MAAYd,MAAAA,EAAQe;AAAc,KAAA;AACpE,IAAA,MAAMC,gBAAAA,GAAmB,MAAMlE,qBAAAA,CAAsB;MACjDC,QAAAA,EAAUyB,gBAAAA;MACVxB,gBAAAA,EAAkByB,OAAAA;AAClBvB,MAAAA;KACJ,CAAA;AAEA,IAAA,MAAM4B,KAAAA,EAAOyB,0BAAAA,GAA6B9B,OAAAA,EAASuC,gBAAAA,CAAiB7D,WAAW,CAAA;AAE/E,IAAA,IAAI6D,iBAAiBvD,cAAAA,EAAgB;AAEjC,MAAA,OAAO;QACHsC,wBAAAA,EAA0B;UACtB,GAAGhB,WAAAA;UACHiB,MAAAA,EAAQ;AACJC,YAAAA,MAAAA,EAAQC,sBAAAA,CAAuBe,OAAAA;AAC/B/D,YAAAA;AACJ;AACJ,SAAA;QACAkD,eAAAA,EAAiBY;AACrB,OAAA;IACJ,CAAA,MAAO;AAEH,MAAA,MAAME,4BAAY,MAAA,CAAA,CAACC,CAAAA,KACfC,IAAAA,CAAKF,SAAAA,CAAUC,GAAG,CAACE,CAAAA,EAAGC,CAAAA,KAAO,OAAOA,MAAM,QAAA,GAAWA,CAAAA,CAAEC,UAAQ,GAAKD,CAAAA,EAAI,CAAA,CAAA,EAD1D,WAAA,CAAA;AAElBE,MAAAA,OAAAA,CAAQC,KAAAA,CACJ,CAAA,kBAAA,EAAqBhD,OAAAA,CAAQO,IAAI,CAAA;AAAyCkC,gBAAAA,EAAAA,SAAAA,CAAUzC,OAAAA,CAAQnB,KAAAA,CAAMI,cAAAA,CAAeG,eAAe,CAAA,CAAA;EAAgBqD,SAAAA,CAAUF,gBAAAA,CAAiB7D,WAAW,CAAA,CAAA,CAAG,CAAA;AAE7L,MAAA,OAAO;QACH4C,wBAAAA,EAA0B;UACtB,GAAGhB,WAAAA;UACHiB,MAAAA,EAAQ;AACJC,YAAAA,MAAAA,EAAQC,sBAAAA,CAAuBwB,kBAAAA;AAC/BxE,YAAAA,oBAAAA;AACAyE,YAAAA,iBAAAA,EAAmBX,gBAAAA,CAAiB7D;AACxC;AACJ,SAAA;QACAiD,eAAAA,EAAiBY;AACrB,OAAA;AACJ,IAAA;AACJ,EAAA,CAAA,CAAA,OAASY,CAAAA,EAAG;AACRJ,IAAAA,OAAAA,CAAQC,KAAAA,CAAM,4BAA4BG,CAAAA,CAAAA;AAE1C,IAAA,OAAO;MACH7B,wBAAAA,EAA0B;QACtB,GAAGhB,WAAAA;QACHiB,MAAAA,EAAQ;AACJC,UAAAA,MAAAA,EAAQC,sBAAAA,CAAuB2B,kBAAAA;UAC/BC,gBAAAA,EAAkBF;AACtB;AACJ,OAAA;MACAxB,eAAAA,EAAiBC;AACrB,KAAA;AACJ,EAAA;AACJ,CAAA,EApKgC,yBAAA,CAAA;AAsKzB,IAAM0B,wBAAAA,iCAIX,EACEvD,gBAAAA,EACAwD,WACArD,SAAAA,EACAE,EAAAA,EACAC,KAAAA,EACAmD,wBAAAA,EAAwB,KAQ3B;AAEG,EAAA,MAAMC,iBAAiBF,SAAAA,CAAUxC,GAAAA,CAAI,CAACvB,EAAAA,KAAOK,wBAAAA,CAAyBL,EAAAA,CAAAA,CAAAA;AACtE,EAAA,MAAMkE,OAAAA,GAAUH,UAAUI,OAAAA,CAAQ,CAACnE,OAAOA,EAAAA,CAAGkB,YAAAA,IAAgB,EAAE,CAAA;AAC/D,EAAA,MAAMkD,eAAAA,GAAkBF,OAAAA,CAAQG,MAAAA,CAC5B,CAACrE,EAAAA,KAAO,CAACiE,cAAAA,CAAeK,QAAAA,CAASjE,wBAAAA,CAAyBL,EAAAA,CAAAA,CAAAA,CAAAA;AAK9D,EAAA,MAAMuE,OAAAA,GAMFC,OAAOC,WAAAA,CACP,MAAMC,QAAQC,GAAAA,CACVP,eAAAA,CAAgB7C,GAAAA,CAAI,OAAOvB,EAAAA,KAAAA;AACvB,IAAA,MAAM6B,WAAAA,GAAc,MAAMhD,qBAAAA,CAAsB;MAC5CE,gBAAAA,EAAkBiB,EAAAA;MAClBlB,QAAAA,EAAUyB,gBAAAA;MACVvB,iBAAAA,EAAmB,MAAM6B,KAAAA,EAAOwB,oBAAAA,GAAuBrC,EAAAA;KAC3D,CAAA;AAEA,IAAA,OAAO;AACHK,MAAAA,wBAAAA,CAAyBL,EAAAA,CAAAA;AACzB,MAAA;AACI6B,QAAAA;AACJ;;AAER,EAAA,CAAA,CAAA,CAAA,CAAA;AAIR,EAAA,MAAMpB,oBAAAA,mBAAuB,MAAA,CAAA,CAACmE,KAAAA,KAA8BL,OAAAA,CAAQK,KAAAA,CAAAA,EAAvC,sBAAA,CAAA;AAE7B,EAAA,MAAMC,WAAAA,GAAcd,SAAAA,CAAUxC,GAAAA,CAAI,CAACvB,OAAO,YAAA;AACtC,IAAA,MAAM,EAAE8B,wBAAAA,EAA0BK,eAAAA,EAAe,GAAK,MAAM7B,uBAAAA,CAI1D;MACEE,OAAAA,EAASR,EAAAA;AACTO,MAAAA,gBAAAA;AACAE,MAAAA,oBAAAA;AACAC,MAAAA,SAAAA;MACAC,oBAAAA,EACIqD,wBAAAA,EAA0BrD,yBAAyB,YAAY,IAAA,CAAA;AACnEC,MAAAA,EAAAA;AACAC,MAAAA;KACJ,CAAA;AAEA,IAAA,MAAMiE,KAAAA,GAAQzE,yBAAyByB,wBAAAA,CAAAA;AACvCyC,IAAAA,OAAAA,CAAQO,KAAAA,CAAAA,GAAS;MACblC,QAAAA,EAAUd,wBAAAA;MACVD,WAAAA,EAAa;QACTrC,cAAAA,EAAgB;UACZyC,sBAAAA,CAAuBe,OAAAA;UACvBf,sBAAAA,CAAuBM;UACzB+B,QAAAA,CAASxC,wBAAAA,CAAyBC,OAAOC,MAAM,CAAA;AACjD9C,QAAAA,WAAAA,EAAaiD,iBAAiBjD,WAAAA,IAAeC;AACjD;AACJ,KAAA;AAEA6E,IAAAA,wBAAAA,EAA0Be,mBAAmBjD,wBAAAA,CAAAA;AAC7C,IAAA,OAAOA,wBAAAA;EACX,CAAA,CAAA;AAEA,EAAA,OAAO,MAAM4C,QAAQC,GAAAA,CAAIE,WAAAA,CAAYtD,IAAI,CAACyD,IAAAA,KAASA,IAAAA,EAAAA,CAAAA,CAAAA;AACvD,CAAA,EAxFwC,0BAAA;AA0FjC,IAAMC,iCAAAA,iCAIX,EACE1E,gBAAAA,EACAwD,WACArD,SAAAA,EACAG,KAAAA,EACAmD,wBAAAA,EACApD,EAAAA,EAAE,KAQL;AACG,EAAA,MAAM2D,UAAU,EAAA;AAChB,EAAA,KAAA,MAAWW,OAAOnB,SAAAA,EAAW;AACzB,IAAA,MAAMhC,MAAAA,GAAS,MAAM+B,wBAAAA,CAAqD;MACtEC,SAAAA,EAAWmB,GAAAA;AACX3E,MAAAA,gBAAAA;AACAG,MAAAA,SAAAA;AACAG,MAAAA,KAAAA;AACAmD,MAAAA,wBAAAA;AACApD,MAAAA;KACJ,CAAA;AACA2D,IAAAA,OAAAA,CAAQY,KAAKpD,MAAAA,CAAAA;AACjB,EAAA;AAEA,EAAA,OAAOwC,OAAAA;AACX,CAAA,EAjCiD,mCAAA","file":"GZTW336Z.js","sourcesContent":["import isEqual from 'lodash.isequal';\n\nimport type { ActivityRegistry } from '@layerzerolabs/common-activities';\nimport type {\n Transaction,\n TransactionResult,\n TransactionWithResult,\n} from '@layerzerolabs/common-chain-model';\nimport type { WorkflowFunctions } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n BaseGatedTransactionFor,\n GatedTransaction,\n GatedTransactionId,\n IGatedTransactionCache,\n InferOnChainDataTypeFromGatedTransaction,\n ResolvedGatedTransaction,\n ResolvedGatedTransactionDependencies,\n UserInteractionCallbacks,\n} from './schemata';\nimport { GatedTransactionStatus } from './schemata';\n\ntype OnChainCheckResult<DataType = any> = {\n expectationMet: boolean;\n onChainData: DataType;\n};\n\nconst checkGatedTransaction = async <\n GatedTx extends GatedTransaction,\n TxWithResult extends TransactionWithResult,\n>({\n registry,\n gatedTransaction,\n cachedCheckResult,\n submittedTransaction,\n}: {\n registry: ActivityRegistry;\n gatedTransaction: GatedTx;\n cachedCheckResult?: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n submittedTransaction?: TxWithResult;\n}): Promise<OnChainCheckResult<InferOnChainDataTypeFromGatedTransaction<GatedTx>>> => {\n let onChainData: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n if (cachedCheckResult !== undefined) {\n onChainData = cachedCheckResult;\n } else {\n // Always inject the processed transaction as the last parameter when available\n let params = gatedTransaction.check.params;\n if (submittedTransaction !== undefined) {\n params = [...gatedTransaction.check.params, submittedTransaction];\n }\n\n onChainData = await registry.callByPointer(gatedTransaction.check.functionPointer, params);\n }\n\n let expectationMet: boolean;\n\n switch (gatedTransaction.check.expectedResult.operator) {\n case '=':\n expectationMet = isEqual(\n onChainData,\n gatedTransaction.check.expectedResult.comparisonValue,\n );\n break;\n case '!=':\n expectationMet = !isEqual(\n onChainData,\n gatedTransaction.check.expectedResult.comparisonValue,\n );\n break;\n case '>':\n expectationMet =\n (onChainData as number) >\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n case '>=':\n expectationMet =\n (onChainData as number) >=\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n case '<':\n expectationMet =\n (onChainData as number) <\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n case '<=':\n expectationMet =\n (onChainData as number) <=\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n default:\n throw new Error(\n `Gated transaction operator \"${gatedTransaction.check.expectedResult.operator}\" is not supported`,\n );\n }\n\n return {\n expectationMet,\n onChainData,\n };\n};\n\nconst extractGatedTransactionUnderlyingTransaction = async <\n GatedTx extends GatedTransaction,\n TxType extends Transaction,\n>({\n registry,\n gatedTransaction,\n deps,\n}: {\n registry: ActivityRegistry;\n gatedTransaction: GatedTx;\n deps: ResolvedGatedTransactionDependencies<GatedTx>;\n}): Promise<TxType> => {\n let tx: TxType;\n if (gatedTransaction.transactionType === 'literal') {\n tx = gatedTransaction.transaction as TxType;\n } else {\n tx = await registry.callByPointer(gatedTransaction.getTransactionPointer, [deps]);\n }\n\n if (!tx.parallelizingKey) {\n tx.parallelizingKey = `MISSING_PARALLELIZING_KEY-${getIdForGatedTransaction(gatedTransaction)}`;\n }\n\n return tx;\n};\n\nconst resolveGatedTransaction = async <\n TxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TransactionResult>,\n>({\n activityRegistry,\n gatedTx,\n getTransactionResult,\n processTx,\n confirmationCallback,\n fn,\n cache,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTx: GatedTx;\n processTx: ProcessTx;\n getTransactionResult: (gtxId: GatedTransactionId) =>\n | {\n resolved?: ResolvedGatedTransaction;\n checkResult: { onChainData?: any; expectationMet: boolean };\n }\n | undefined;\n confirmationCallback: NonNullable<UserInteractionCallbacks['confirmationCallback']>;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n}): Promise<{\n resolvedGatedTransaction: ResolvedGatedTransaction<GatedTx>;\n lastCheckResult: OnChainCheckResult | null;\n}> => {\n const baseGatedTx = {\n name: gatedTx.name,\n chainName: gatedTx.chainName,\n bundleName: gatedTx.bundleName,\n check: gatedTx.check,\n dependencies: gatedTx.dependencies,\n cacheable: gatedTx.cacheable,\n uniqueIdKeys: gatedTx.uniqueIdKeys,\n metadata: gatedTx.metadata,\n } as BaseGatedTransactionFor<GatedTx>;\n\n const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => getIdForGatedTransaction(tx));\n\n const dependenciesAreAllProcessed = () => dependencyIds.every((id) => getTransactionResult(id));\n\n await fn.condition(dependenciesAreAllProcessed);\n\n //check that the dependencies succeeded\n const dependenciesWereSuccessful = dependencyIds.every(\n (id) => getTransactionResult(id)?.checkResult.expectationMet,\n );\n\n if (!dependenciesWereSuccessful) {\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.DEPENDENCY_FAILED,\n },\n },\n lastCheckResult: null,\n };\n }\n\n const initialCheckResult = await checkGatedTransaction({\n gatedTransaction: gatedTx,\n registry: activityRegistry,\n cachedCheckResult: await cache?.getCachedTxCheckData?.(gatedTx),\n });\n\n await cache?.cacheSuccessfulTxCheckData?.(gatedTx, initialCheckResult.onChainData);\n\n if (initialCheckResult.expectationMet) {\n //already met\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.NO_OP,\n },\n },\n lastCheckResult: initialCheckResult,\n };\n }\n\n //get confirmation before sending\n const confirmation = await confirmationCallback(gatedTx);\n if (!confirmation) {\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.DENIED,\n },\n },\n lastCheckResult: initialCheckResult,\n };\n }\n\n //send the tx\n try {\n const depsResults = gatedTx.dependencies.map(\n (dep) => getTransactionResult(getIdForGatedTransaction(dep))!.resolved!,\n ) as ResolvedGatedTransactionDependencies<GatedTx>;\n // get the underlying calldata\n const underlying = await extractGatedTransactionUnderlyingTransaction<GatedTx, TxType>({\n registry: activityRegistry,\n gatedTransaction: gatedTx,\n deps: depsResults,\n });\n const processResult = await processTx(underlying);\n const submittedTransaction = { ...underlying, result: processResult };\n const finalCheckResult = await checkGatedTransaction({\n registry: activityRegistry,\n gatedTransaction: gatedTx,\n submittedTransaction,\n });\n\n await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);\n\n if (finalCheckResult.expectationMet) {\n //sent and successful\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.SUCCESS,\n submittedTransaction,\n },\n },\n lastCheckResult: finalCheckResult,\n };\n } else {\n //sent and unsuccessful\n const stringify = (o: any) =>\n JSON.stringify(o, (_, v) => (typeof v === 'bigint' ? v.toString() : v), 2);\n console.error(\n `Gated transaction ${gatedTx.name} final check failed:\\nExpected result ${stringify(gatedTx.check.expectedResult.comparisonValue)}, but got:\\n${stringify(finalCheckResult.onChainData)}`,\n );\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED,\n submittedTransaction,\n finalOnChainState: finalCheckResult.onChainData,\n },\n },\n lastCheckResult: finalCheckResult,\n };\n }\n } catch (e) {\n console.error('Gated transaction failed', e);\n //sent and failed\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.TRANSACTION_FAILED,\n transactionError: e,\n },\n },\n lastCheckResult: initialCheckResult,\n };\n }\n};\n\nexport const resolveGatedTransactions = async <\n TxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TransactionResult>,\n>({\n activityRegistry,\n gatedTxes,\n processTx,\n fn,\n cache,\n userInteractionCallbacks,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTxes: GatedTx[];\n processTx: ProcessTx;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n userInteractionCallbacks?: UserInteractionCallbacks;\n}): Promise<ResolvedGatedTransaction[]> => {\n //compute deps\n const allInternalIds = gatedTxes.map((tx) => getIdForGatedTransaction(tx));\n const allDeps = gatedTxes.flatMap((tx) => tx.dependencies ?? []);\n const allExternalDeps = allDeps.filter(\n (tx) => !allInternalIds.includes(getIdForGatedTransaction(tx)),\n );\n\n //prepopulate results for external dependencies\n //this map is only used for internal status tracking\n const results: Record<\n GatedTransactionId,\n {\n resolved?: ResolvedGatedTransaction;\n checkResult: { onChainData?: any; expectationMet: boolean };\n }\n > = Object.fromEntries(\n await Promise.all(\n allExternalDeps.map(async (tx) => {\n const checkResult = await checkGatedTransaction({\n gatedTransaction: tx,\n registry: activityRegistry,\n cachedCheckResult: await cache?.getCachedTxCheckData?.(tx),\n });\n\n return [\n getIdForGatedTransaction(tx),\n {\n checkResult,\n },\n ];\n }),\n ),\n );\n\n const getTransactionResult = (gtxId: GatedTransactionId) => results[gtxId];\n\n const txFunctions = gatedTxes.map((tx) => async () => {\n const { resolvedGatedTransaction, lastCheckResult } = await resolveGatedTransaction<\n TxType,\n GatedTx,\n ProcessTx\n >({\n gatedTx: tx,\n activityRegistry,\n getTransactionResult,\n processTx,\n confirmationCallback:\n userInteractionCallbacks?.confirmationCallback ?? (async () => true),\n fn,\n cache,\n });\n\n const resId = getIdForGatedTransaction(resolvedGatedTransaction);\n results[resId] = {\n resolved: resolvedGatedTransaction,\n checkResult: {\n expectationMet: [\n GatedTransactionStatus.SUCCESS,\n GatedTransactionStatus.NO_OP,\n ].includes(resolvedGatedTransaction.result.status),\n onChainData: lastCheckResult?.onChainData ?? undefined,\n },\n };\n\n userInteractionCallbacks?.onResultCallback?.(resolvedGatedTransaction);\n return resolvedGatedTransaction;\n });\n\n return await Promise.all(txFunctions.map((func) => func()));\n};\n\nexport const resolveSequencedGatedTransactions = async <\n TxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TransactionResult>,\n>({\n activityRegistry,\n gatedTxes,\n processTx,\n cache,\n userInteractionCallbacks,\n fn,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTxes: GatedTx[][];\n processTx: ProcessTx;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n userInteractionCallbacks?: UserInteractionCallbacks;\n}) => {\n const results = [];\n for (const seq of gatedTxes) {\n const result = await resolveGatedTransactions<TxType, GatedTx, ProcessTx>({\n gatedTxes: seq,\n activityRegistry,\n processTx,\n cache,\n userInteractionCallbacks,\n fn,\n });\n results.push(result);\n }\n\n return results;\n};\n"]}
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var I7JOK2BP_cjs = require('./I7JOK2BP.cjs');
4
- var _5JUAD4GY_cjs = require('./5JUAD4GY.cjs');
4
+ var _2WHEGCDB_cjs = require('./2WHEGCDB.cjs');
5
5
  var J2MWXBSK_cjs = require('./J2MWXBSK.cjs');
6
6
  var ZKCNP42T_cjs = require('./ZKCNP42T.cjs');
7
7
  require('./YJF4D23A.cjs');
@@ -22,11 +22,11 @@ Object.defineProperty(exports, "useGatedTransactionSignalLock", {
22
22
  });
23
23
  Object.defineProperty(exports, "resolveGatedTransactions", {
24
24
  enumerable: true,
25
- get: function () { return _5JUAD4GY_cjs.resolveGatedTransactions; }
25
+ get: function () { return _2WHEGCDB_cjs.resolveGatedTransactions; }
26
26
  });
27
27
  Object.defineProperty(exports, "resolveSequencedGatedTransactions", {
28
28
  enumerable: true,
29
- get: function () { return _5JUAD4GY_cjs.resolveSequencedGatedTransactions; }
29
+ get: function () { return _2WHEGCDB_cjs.resolveSequencedGatedTransactions; }
30
30
  });
31
31
  Object.defineProperty(exports, "constructGatedTransaction", {
32
32
  enumerable: true,
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { gatedTransactionGoSignal, queryGatedTransactions, useGatedTransactionSignalLock } from './7GRIENQP.js';
2
- export { resolveGatedTransactions, resolveSequencedGatedTransactions } from './UR6B6V6H.js';
2
+ export { resolveGatedTransactions, resolveSequencedGatedTransactions } from './GZTW336Z.js';
3
3
  export { constructGatedTransaction, constructGatedTransactionFromPointer, getIdForGatedTransaction } from './VJKKTCPP.js';
4
4
  export { GatedTransactionStatus, createGatedTxCheckActivitySchema, createTxDependentActivitySchema, gatedTransactionCacheSchema, gatedTransactionResultSchema, gatedTransactionSchema, resolvedGatedTransactionSchema } from './L6WLN6U3.js';
5
5
  import './VUOMXK5T.js';
package/dist/resolver.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var _5JUAD4GY_cjs = require('./5JUAD4GY.cjs');
3
+ var _2WHEGCDB_cjs = require('./2WHEGCDB.cjs');
4
4
  require('./J2MWXBSK.cjs');
5
5
  require('./ZKCNP42T.cjs');
6
6
  require('./YJF4D23A.cjs');
@@ -9,11 +9,11 @@ require('./YJF4D23A.cjs');
9
9
 
10
10
  Object.defineProperty(exports, "resolveGatedTransactions", {
11
11
  enumerable: true,
12
- get: function () { return _5JUAD4GY_cjs.resolveGatedTransactions; }
12
+ get: function () { return _2WHEGCDB_cjs.resolveGatedTransactions; }
13
13
  });
14
14
  Object.defineProperty(exports, "resolveSequencedGatedTransactions", {
15
15
  enumerable: true,
16
- get: function () { return _5JUAD4GY_cjs.resolveSequencedGatedTransactions; }
16
+ get: function () { return _2WHEGCDB_cjs.resolveSequencedGatedTransactions; }
17
17
  });
18
18
  //# sourceMappingURL=resolver.cjs.map
19
19
  //# sourceMappingURL=resolver.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EACR,WAAW,EACX,iBAAiB,EAEpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,OAAO,KAAK,EAER,gBAAgB,EAEhB,sBAAsB,EAEtB,wBAAwB,EAExB,wBAAwB,EAC3B,MAAM,YAAY,CAAC;AA2QpB,eAAO,MAAM,wBAAwB,GACjC,MAAM,SAAS,WAAW,EAC1B,OAAO,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrD,SAAS,SAAS,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,EACvE,kFAOC;IACC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,EAAE,EAAE,iBAAiB,CAAC;IACtB,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAC/B,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;CACvD,KAAG,OAAO,CAAC,wBAAwB,EAAE,CAsErC,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC1C,MAAM,SAAS,WAAW,EAC1B,OAAO,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrD,SAAS,SAAS,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,EACvE,kFAOC;IACC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,EAAE,EAAE,iBAAiB,CAAC;IACtB,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAC/B,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;CACvD,0CAeA,CAAC"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EACR,WAAW,EACX,iBAAiB,EAEpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,OAAO,KAAK,EAER,gBAAgB,EAEhB,sBAAsB,EAEtB,wBAAwB,EAExB,wBAAwB,EAC3B,MAAM,YAAY,CAAC;AAkRpB,eAAO,MAAM,wBAAwB,GACjC,MAAM,SAAS,WAAW,EAC1B,OAAO,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrD,SAAS,SAAS,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,EACvE,kFAOC;IACC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,EAAE,EAAE,iBAAiB,CAAC;IACtB,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAC/B,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;CACvD,KAAG,OAAO,CAAC,wBAAwB,EAAE,CAsErC,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC1C,MAAM,SAAS,WAAW,EAC1B,OAAO,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrD,SAAS,SAAS,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,EACvE,kFAOC;IACC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,EAAE,EAAE,iBAAiB,CAAC;IACtB,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAC/B,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;CACvD,0CAeA,CAAC"}
package/dist/resolver.js CHANGED
@@ -1,4 +1,4 @@
1
- export { resolveGatedTransactions, resolveSequencedGatedTransactions } from './UR6B6V6H.js';
1
+ export { resolveGatedTransactions, resolveSequencedGatedTransactions } from './GZTW336Z.js';
2
2
  import './VJKKTCPP.js';
3
3
  import './L6WLN6U3.js';
4
4
  import './VUOMXK5T.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerzerolabs/gated-transaction",
3
- "version": "0.0.39",
3
+ "version": "0.0.40",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "sideEffects": false,
@@ -17,19 +17,19 @@
17
17
  "dependencies": {
18
18
  "lodash.isequal": "^4.5.0",
19
19
  "zod": "^3.23.8",
20
- "@layerzerolabs/common-activities": "0.0.39",
21
- "@layerzerolabs/common-chain-model": "0.0.39",
22
- "@layerzerolabs/common-workflow": "0.0.39",
23
- "@layerzerolabs/zod-utils": "0.0.39",
24
- "@layerzerolabs/common-utils": "0.0.39"
20
+ "@layerzerolabs/common-activities": "0.0.40",
21
+ "@layerzerolabs/common-chain-model": "0.0.40",
22
+ "@layerzerolabs/common-workflow": "0.0.40",
23
+ "@layerzerolabs/common-utils": "0.0.40",
24
+ "@layerzerolabs/zod-utils": "0.0.40"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/lodash.isequal": "^4.5.8",
28
28
  "tsup": "^8.4.0",
29
29
  "vitest": "^3.2.3",
30
- "@layerzerolabs/tsup-configuration": "0.0.39",
31
- "@layerzerolabs/typescript-configuration": "0.0.39",
32
- "@layerzerolabs/typescript-utils": "0.0.39"
30
+ "@layerzerolabs/tsup-configuration": "0.0.40",
31
+ "@layerzerolabs/typescript-utils": "0.0.40",
32
+ "@layerzerolabs/typescript-configuration": "0.0.40"
33
33
  },
34
34
  "publishConfig": {
35
35
  "access": "restricted",
package/src/resolver.ts CHANGED
@@ -112,11 +112,18 @@ const extractGatedTransactionUnderlyingTransaction = async <
112
112
  gatedTransaction: GatedTx;
113
113
  deps: ResolvedGatedTransactionDependencies<GatedTx>;
114
114
  }): Promise<TxType> => {
115
+ let tx: TxType;
115
116
  if (gatedTransaction.transactionType === 'literal') {
116
- return gatedTransaction.transaction as TxType;
117
+ tx = gatedTransaction.transaction as TxType;
117
118
  } else {
118
- return await registry.callByPointer(gatedTransaction.getTransactionPointer, [deps]);
119
+ tx = await registry.callByPointer(gatedTransaction.getTransactionPointer, [deps]);
119
120
  }
121
+
122
+ if (!tx.parallelizingKey) {
123
+ tx.parallelizingKey = `MISSING_PARALLELIZING_KEY-${getIdForGatedTransaction(gatedTransaction)}`;
124
+ }
125
+
126
+ return tx;
120
127
  };
121
128
 
122
129
  const resolveGatedTransaction = async <
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/resolver.ts"],"names":["checkGatedTransaction","__name","registry","gatedTransaction","cachedCheckResult","submittedTransaction","onChainData","undefined","params","check","callByPointer","functionPointer","expectationMet","expectedResult","operator","isEqual","comparisonValue","Error","extractGatedTransactionUnderlyingTransaction","deps","transactionType","transaction","getTransactionPointer","resolveGatedTransaction","activityRegistry","gatedTx","getTransactionResult","processTx","confirmationCallback","fn","cache","baseGatedTx","name","chainName","bundleName","dependencies","cacheable","uniqueIdKeys","metadata","dependencyIds","map","tx","getIdForGatedTransaction","dependenciesAreAllProcessed","every","id","condition","dependenciesWereSuccessful","checkResult","resolvedGatedTransaction","result","status","GatedTransactionStatus","DEPENDENCY_FAILED","lastCheckResult","initialCheckResult","getCachedTxCheckData","cacheSuccessfulTxCheckData","NO_OP","confirmation","DENIED","depsResults","dep","resolved","underlying","processResult","finalCheckResult","SUCCESS","stringify","o","JSON","_","v","toString","console","error","FINAL_CHECK_FAILED","finalOnChainState","e","TRANSACTION_FAILED","transactionError","resolveGatedTransactions","gatedTxes","userInteractionCallbacks","allInternalIds","allDeps","flatMap","allExternalDeps","filter","includes","results","Object","fromEntries","Promise","all","gtxId","txFunctions","resId","onResultCallback","func","resolveSequencedGatedTransactions","seq","push"],"mappings":"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","file":"5JUAD4GY.cjs","sourcesContent":["import isEqual from 'lodash.isequal';\n\nimport type { ActivityRegistry } from '@layerzerolabs/common-activities';\nimport type {\n Transaction,\n TransactionResult,\n TransactionWithResult,\n} from '@layerzerolabs/common-chain-model';\nimport type { WorkflowFunctions } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n BaseGatedTransactionFor,\n GatedTransaction,\n GatedTransactionId,\n IGatedTransactionCache,\n InferOnChainDataTypeFromGatedTransaction,\n ResolvedGatedTransaction,\n ResolvedGatedTransactionDependencies,\n UserInteractionCallbacks,\n} from './schemata';\nimport { GatedTransactionStatus } from './schemata';\n\ntype OnChainCheckResult<DataType = any> = {\n expectationMet: boolean;\n onChainData: DataType;\n};\n\nconst checkGatedTransaction = async <\n GatedTx extends GatedTransaction,\n TxWithResult extends TransactionWithResult,\n>({\n registry,\n gatedTransaction,\n cachedCheckResult,\n submittedTransaction,\n}: {\n registry: ActivityRegistry;\n gatedTransaction: GatedTx;\n cachedCheckResult?: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n submittedTransaction?: TxWithResult;\n}): Promise<OnChainCheckResult<InferOnChainDataTypeFromGatedTransaction<GatedTx>>> => {\n let onChainData: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n if (cachedCheckResult !== undefined) {\n onChainData = cachedCheckResult;\n } else {\n // Always inject the processed transaction as the last parameter when available\n let params = gatedTransaction.check.params;\n if (submittedTransaction !== undefined) {\n params = [...gatedTransaction.check.params, submittedTransaction];\n }\n\n onChainData = await registry.callByPointer(gatedTransaction.check.functionPointer, params);\n }\n\n let expectationMet: boolean;\n\n switch (gatedTransaction.check.expectedResult.operator) {\n case '=':\n expectationMet = isEqual(\n onChainData,\n gatedTransaction.check.expectedResult.comparisonValue,\n );\n break;\n case '!=':\n expectationMet = !isEqual(\n onChainData,\n gatedTransaction.check.expectedResult.comparisonValue,\n );\n break;\n case '>':\n expectationMet =\n (onChainData as number) >\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n case '>=':\n expectationMet =\n (onChainData as number) >=\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n case '<':\n expectationMet =\n (onChainData as number) <\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n case '<=':\n expectationMet =\n (onChainData as number) <=\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n default:\n throw new Error(\n `Gated transaction operator \"${gatedTransaction.check.expectedResult.operator}\" is not supported`,\n );\n }\n\n return {\n expectationMet,\n onChainData,\n };\n};\n\nconst extractGatedTransactionUnderlyingTransaction = async <\n GatedTx extends GatedTransaction,\n TxType extends Transaction,\n>({\n registry,\n gatedTransaction,\n deps,\n}: {\n registry: ActivityRegistry;\n gatedTransaction: GatedTx;\n deps: ResolvedGatedTransactionDependencies<GatedTx>;\n}): Promise<TxType> => {\n if (gatedTransaction.transactionType === 'literal') {\n return gatedTransaction.transaction as TxType;\n } else {\n return await registry.callByPointer(gatedTransaction.getTransactionPointer, [deps]);\n }\n};\n\nconst resolveGatedTransaction = async <\n TxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TransactionResult>,\n>({\n activityRegistry,\n gatedTx,\n getTransactionResult,\n processTx,\n confirmationCallback,\n fn,\n cache,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTx: GatedTx;\n processTx: ProcessTx;\n getTransactionResult: (gtxId: GatedTransactionId) =>\n | {\n resolved?: ResolvedGatedTransaction;\n checkResult: { onChainData?: any; expectationMet: boolean };\n }\n | undefined;\n confirmationCallback: NonNullable<UserInteractionCallbacks['confirmationCallback']>;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n}): Promise<{\n resolvedGatedTransaction: ResolvedGatedTransaction<GatedTx>;\n lastCheckResult: OnChainCheckResult | null;\n}> => {\n const baseGatedTx = {\n name: gatedTx.name,\n chainName: gatedTx.chainName,\n bundleName: gatedTx.bundleName,\n check: gatedTx.check,\n dependencies: gatedTx.dependencies,\n cacheable: gatedTx.cacheable,\n uniqueIdKeys: gatedTx.uniqueIdKeys,\n metadata: gatedTx.metadata,\n } as BaseGatedTransactionFor<GatedTx>;\n\n const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => getIdForGatedTransaction(tx));\n\n const dependenciesAreAllProcessed = () => dependencyIds.every((id) => getTransactionResult(id));\n\n await fn.condition(dependenciesAreAllProcessed);\n\n //check that the dependencies succeeded\n const dependenciesWereSuccessful = dependencyIds.every(\n (id) => getTransactionResult(id)?.checkResult.expectationMet,\n );\n\n if (!dependenciesWereSuccessful) {\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.DEPENDENCY_FAILED,\n },\n },\n lastCheckResult: null,\n };\n }\n\n const initialCheckResult = await checkGatedTransaction({\n gatedTransaction: gatedTx,\n registry: activityRegistry,\n cachedCheckResult: await cache?.getCachedTxCheckData?.(gatedTx),\n });\n\n await cache?.cacheSuccessfulTxCheckData?.(gatedTx, initialCheckResult.onChainData);\n\n if (initialCheckResult.expectationMet) {\n //already met\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.NO_OP,\n },\n },\n lastCheckResult: initialCheckResult,\n };\n }\n\n //get confirmation before sending\n const confirmation = await confirmationCallback(gatedTx);\n if (!confirmation) {\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.DENIED,\n },\n },\n lastCheckResult: initialCheckResult,\n };\n }\n\n //send the tx\n try {\n const depsResults = gatedTx.dependencies.map(\n (dep) => getTransactionResult(getIdForGatedTransaction(dep))!.resolved!,\n ) as ResolvedGatedTransactionDependencies<GatedTx>;\n // get the underlying calldata\n const underlying = await extractGatedTransactionUnderlyingTransaction<GatedTx, TxType>({\n registry: activityRegistry,\n gatedTransaction: gatedTx,\n deps: depsResults,\n });\n const processResult = await processTx(underlying);\n const submittedTransaction = { ...underlying, result: processResult };\n const finalCheckResult = await checkGatedTransaction({\n registry: activityRegistry,\n gatedTransaction: gatedTx,\n submittedTransaction,\n });\n\n await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);\n\n if (finalCheckResult.expectationMet) {\n //sent and successful\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.SUCCESS,\n submittedTransaction,\n },\n },\n lastCheckResult: finalCheckResult,\n };\n } else {\n //sent and unsuccessful\n const stringify = (o: any) =>\n JSON.stringify(o, (_, v) => (typeof v === 'bigint' ? v.toString() : v), 2);\n console.error(\n `Gated transaction ${gatedTx.name} final check failed:\\nExpected result ${stringify(gatedTx.check.expectedResult.comparisonValue)}, but got:\\n${stringify(finalCheckResult.onChainData)}`,\n );\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED,\n submittedTransaction,\n finalOnChainState: finalCheckResult.onChainData,\n },\n },\n lastCheckResult: finalCheckResult,\n };\n }\n } catch (e) {\n console.error('Gated transaction failed', e);\n //sent and failed\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.TRANSACTION_FAILED,\n transactionError: e,\n },\n },\n lastCheckResult: initialCheckResult,\n };\n }\n};\n\nexport const resolveGatedTransactions = async <\n TxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TransactionResult>,\n>({\n activityRegistry,\n gatedTxes,\n processTx,\n fn,\n cache,\n userInteractionCallbacks,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTxes: GatedTx[];\n processTx: ProcessTx;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n userInteractionCallbacks?: UserInteractionCallbacks;\n}): Promise<ResolvedGatedTransaction[]> => {\n //compute deps\n const allInternalIds = gatedTxes.map((tx) => getIdForGatedTransaction(tx));\n const allDeps = gatedTxes.flatMap((tx) => tx.dependencies ?? []);\n const allExternalDeps = allDeps.filter(\n (tx) => !allInternalIds.includes(getIdForGatedTransaction(tx)),\n );\n\n //prepopulate results for external dependencies\n //this map is only used for internal status tracking\n const results: Record<\n GatedTransactionId,\n {\n resolved?: ResolvedGatedTransaction;\n checkResult: { onChainData?: any; expectationMet: boolean };\n }\n > = Object.fromEntries(\n await Promise.all(\n allExternalDeps.map(async (tx) => {\n const checkResult = await checkGatedTransaction({\n gatedTransaction: tx,\n registry: activityRegistry,\n cachedCheckResult: await cache?.getCachedTxCheckData?.(tx),\n });\n\n return [\n getIdForGatedTransaction(tx),\n {\n checkResult,\n },\n ];\n }),\n ),\n );\n\n const getTransactionResult = (gtxId: GatedTransactionId) => results[gtxId];\n\n const txFunctions = gatedTxes.map((tx) => async () => {\n const { resolvedGatedTransaction, lastCheckResult } = await resolveGatedTransaction<\n TxType,\n GatedTx,\n ProcessTx\n >({\n gatedTx: tx,\n activityRegistry,\n getTransactionResult,\n processTx,\n confirmationCallback:\n userInteractionCallbacks?.confirmationCallback ?? (async () => true),\n fn,\n cache,\n });\n\n const resId = getIdForGatedTransaction(resolvedGatedTransaction);\n results[resId] = {\n resolved: resolvedGatedTransaction,\n checkResult: {\n expectationMet: [\n GatedTransactionStatus.SUCCESS,\n GatedTransactionStatus.NO_OP,\n ].includes(resolvedGatedTransaction.result.status),\n onChainData: lastCheckResult?.onChainData ?? undefined,\n },\n };\n\n userInteractionCallbacks?.onResultCallback?.(resolvedGatedTransaction);\n return resolvedGatedTransaction;\n });\n\n return await Promise.all(txFunctions.map((func) => func()));\n};\n\nexport const resolveSequencedGatedTransactions = async <\n TxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TransactionResult>,\n>({\n activityRegistry,\n gatedTxes,\n processTx,\n cache,\n userInteractionCallbacks,\n fn,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTxes: GatedTx[][];\n processTx: ProcessTx;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n userInteractionCallbacks?: UserInteractionCallbacks;\n}) => {\n const results = [];\n for (const seq of gatedTxes) {\n const result = await resolveGatedTransactions<TxType, GatedTx, ProcessTx>({\n gatedTxes: seq,\n activityRegistry,\n processTx,\n cache,\n userInteractionCallbacks,\n fn,\n });\n results.push(result);\n }\n\n return results;\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/resolver.ts"],"names":["checkGatedTransaction","registry","gatedTransaction","cachedCheckResult","submittedTransaction","onChainData","undefined","params","check","callByPointer","functionPointer","expectationMet","expectedResult","operator","isEqual","comparisonValue","Error","extractGatedTransactionUnderlyingTransaction","deps","transactionType","transaction","getTransactionPointer","resolveGatedTransaction","activityRegistry","gatedTx","getTransactionResult","processTx","confirmationCallback","fn","cache","baseGatedTx","name","chainName","bundleName","dependencies","cacheable","uniqueIdKeys","metadata","dependencyIds","map","tx","getIdForGatedTransaction","dependenciesAreAllProcessed","every","id","condition","dependenciesWereSuccessful","checkResult","resolvedGatedTransaction","result","status","GatedTransactionStatus","DEPENDENCY_FAILED","lastCheckResult","initialCheckResult","getCachedTxCheckData","cacheSuccessfulTxCheckData","NO_OP","confirmation","DENIED","depsResults","dep","resolved","underlying","processResult","finalCheckResult","SUCCESS","stringify","o","JSON","_","v","toString","console","error","FINAL_CHECK_FAILED","finalOnChainState","e","TRANSACTION_FAILED","transactionError","resolveGatedTransactions","gatedTxes","userInteractionCallbacks","allInternalIds","allDeps","flatMap","allExternalDeps","filter","includes","results","Object","fromEntries","Promise","all","gtxId","txFunctions","resId","onResultCallback","func","resolveSequencedGatedTransactions","seq","push"],"mappings":"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","file":"UR6B6V6H.js","sourcesContent":["import isEqual from 'lodash.isequal';\n\nimport type { ActivityRegistry } from '@layerzerolabs/common-activities';\nimport type {\n Transaction,\n TransactionResult,\n TransactionWithResult,\n} from '@layerzerolabs/common-chain-model';\nimport type { WorkflowFunctions } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n BaseGatedTransactionFor,\n GatedTransaction,\n GatedTransactionId,\n IGatedTransactionCache,\n InferOnChainDataTypeFromGatedTransaction,\n ResolvedGatedTransaction,\n ResolvedGatedTransactionDependencies,\n UserInteractionCallbacks,\n} from './schemata';\nimport { GatedTransactionStatus } from './schemata';\n\ntype OnChainCheckResult<DataType = any> = {\n expectationMet: boolean;\n onChainData: DataType;\n};\n\nconst checkGatedTransaction = async <\n GatedTx extends GatedTransaction,\n TxWithResult extends TransactionWithResult,\n>({\n registry,\n gatedTransaction,\n cachedCheckResult,\n submittedTransaction,\n}: {\n registry: ActivityRegistry;\n gatedTransaction: GatedTx;\n cachedCheckResult?: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n submittedTransaction?: TxWithResult;\n}): Promise<OnChainCheckResult<InferOnChainDataTypeFromGatedTransaction<GatedTx>>> => {\n let onChainData: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n if (cachedCheckResult !== undefined) {\n onChainData = cachedCheckResult;\n } else {\n // Always inject the processed transaction as the last parameter when available\n let params = gatedTransaction.check.params;\n if (submittedTransaction !== undefined) {\n params = [...gatedTransaction.check.params, submittedTransaction];\n }\n\n onChainData = await registry.callByPointer(gatedTransaction.check.functionPointer, params);\n }\n\n let expectationMet: boolean;\n\n switch (gatedTransaction.check.expectedResult.operator) {\n case '=':\n expectationMet = isEqual(\n onChainData,\n gatedTransaction.check.expectedResult.comparisonValue,\n );\n break;\n case '!=':\n expectationMet = !isEqual(\n onChainData,\n gatedTransaction.check.expectedResult.comparisonValue,\n );\n break;\n case '>':\n expectationMet =\n (onChainData as number) >\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n case '>=':\n expectationMet =\n (onChainData as number) >=\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n case '<':\n expectationMet =\n (onChainData as number) <\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n case '<=':\n expectationMet =\n (onChainData as number) <=\n (gatedTransaction.check.expectedResult.comparisonValue as number);\n break;\n default:\n throw new Error(\n `Gated transaction operator \"${gatedTransaction.check.expectedResult.operator}\" is not supported`,\n );\n }\n\n return {\n expectationMet,\n onChainData,\n };\n};\n\nconst extractGatedTransactionUnderlyingTransaction = async <\n GatedTx extends GatedTransaction,\n TxType extends Transaction,\n>({\n registry,\n gatedTransaction,\n deps,\n}: {\n registry: ActivityRegistry;\n gatedTransaction: GatedTx;\n deps: ResolvedGatedTransactionDependencies<GatedTx>;\n}): Promise<TxType> => {\n if (gatedTransaction.transactionType === 'literal') {\n return gatedTransaction.transaction as TxType;\n } else {\n return await registry.callByPointer(gatedTransaction.getTransactionPointer, [deps]);\n }\n};\n\nconst resolveGatedTransaction = async <\n TxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TransactionResult>,\n>({\n activityRegistry,\n gatedTx,\n getTransactionResult,\n processTx,\n confirmationCallback,\n fn,\n cache,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTx: GatedTx;\n processTx: ProcessTx;\n getTransactionResult: (gtxId: GatedTransactionId) =>\n | {\n resolved?: ResolvedGatedTransaction;\n checkResult: { onChainData?: any; expectationMet: boolean };\n }\n | undefined;\n confirmationCallback: NonNullable<UserInteractionCallbacks['confirmationCallback']>;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n}): Promise<{\n resolvedGatedTransaction: ResolvedGatedTransaction<GatedTx>;\n lastCheckResult: OnChainCheckResult | null;\n}> => {\n const baseGatedTx = {\n name: gatedTx.name,\n chainName: gatedTx.chainName,\n bundleName: gatedTx.bundleName,\n check: gatedTx.check,\n dependencies: gatedTx.dependencies,\n cacheable: gatedTx.cacheable,\n uniqueIdKeys: gatedTx.uniqueIdKeys,\n metadata: gatedTx.metadata,\n } as BaseGatedTransactionFor<GatedTx>;\n\n const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => getIdForGatedTransaction(tx));\n\n const dependenciesAreAllProcessed = () => dependencyIds.every((id) => getTransactionResult(id));\n\n await fn.condition(dependenciesAreAllProcessed);\n\n //check that the dependencies succeeded\n const dependenciesWereSuccessful = dependencyIds.every(\n (id) => getTransactionResult(id)?.checkResult.expectationMet,\n );\n\n if (!dependenciesWereSuccessful) {\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.DEPENDENCY_FAILED,\n },\n },\n lastCheckResult: null,\n };\n }\n\n const initialCheckResult = await checkGatedTransaction({\n gatedTransaction: gatedTx,\n registry: activityRegistry,\n cachedCheckResult: await cache?.getCachedTxCheckData?.(gatedTx),\n });\n\n await cache?.cacheSuccessfulTxCheckData?.(gatedTx, initialCheckResult.onChainData);\n\n if (initialCheckResult.expectationMet) {\n //already met\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.NO_OP,\n },\n },\n lastCheckResult: initialCheckResult,\n };\n }\n\n //get confirmation before sending\n const confirmation = await confirmationCallback(gatedTx);\n if (!confirmation) {\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.DENIED,\n },\n },\n lastCheckResult: initialCheckResult,\n };\n }\n\n //send the tx\n try {\n const depsResults = gatedTx.dependencies.map(\n (dep) => getTransactionResult(getIdForGatedTransaction(dep))!.resolved!,\n ) as ResolvedGatedTransactionDependencies<GatedTx>;\n // get the underlying calldata\n const underlying = await extractGatedTransactionUnderlyingTransaction<GatedTx, TxType>({\n registry: activityRegistry,\n gatedTransaction: gatedTx,\n deps: depsResults,\n });\n const processResult = await processTx(underlying);\n const submittedTransaction = { ...underlying, result: processResult };\n const finalCheckResult = await checkGatedTransaction({\n registry: activityRegistry,\n gatedTransaction: gatedTx,\n submittedTransaction,\n });\n\n await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);\n\n if (finalCheckResult.expectationMet) {\n //sent and successful\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.SUCCESS,\n submittedTransaction,\n },\n },\n lastCheckResult: finalCheckResult,\n };\n } else {\n //sent and unsuccessful\n const stringify = (o: any) =>\n JSON.stringify(o, (_, v) => (typeof v === 'bigint' ? v.toString() : v), 2);\n console.error(\n `Gated transaction ${gatedTx.name} final check failed:\\nExpected result ${stringify(gatedTx.check.expectedResult.comparisonValue)}, but got:\\n${stringify(finalCheckResult.onChainData)}`,\n );\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED,\n submittedTransaction,\n finalOnChainState: finalCheckResult.onChainData,\n },\n },\n lastCheckResult: finalCheckResult,\n };\n }\n } catch (e) {\n console.error('Gated transaction failed', e);\n //sent and failed\n return {\n resolvedGatedTransaction: {\n ...baseGatedTx,\n result: {\n status: GatedTransactionStatus.TRANSACTION_FAILED,\n transactionError: e,\n },\n },\n lastCheckResult: initialCheckResult,\n };\n }\n};\n\nexport const resolveGatedTransactions = async <\n TxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TransactionResult>,\n>({\n activityRegistry,\n gatedTxes,\n processTx,\n fn,\n cache,\n userInteractionCallbacks,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTxes: GatedTx[];\n processTx: ProcessTx;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n userInteractionCallbacks?: UserInteractionCallbacks;\n}): Promise<ResolvedGatedTransaction[]> => {\n //compute deps\n const allInternalIds = gatedTxes.map((tx) => getIdForGatedTransaction(tx));\n const allDeps = gatedTxes.flatMap((tx) => tx.dependencies ?? []);\n const allExternalDeps = allDeps.filter(\n (tx) => !allInternalIds.includes(getIdForGatedTransaction(tx)),\n );\n\n //prepopulate results for external dependencies\n //this map is only used for internal status tracking\n const results: Record<\n GatedTransactionId,\n {\n resolved?: ResolvedGatedTransaction;\n checkResult: { onChainData?: any; expectationMet: boolean };\n }\n > = Object.fromEntries(\n await Promise.all(\n allExternalDeps.map(async (tx) => {\n const checkResult = await checkGatedTransaction({\n gatedTransaction: tx,\n registry: activityRegistry,\n cachedCheckResult: await cache?.getCachedTxCheckData?.(tx),\n });\n\n return [\n getIdForGatedTransaction(tx),\n {\n checkResult,\n },\n ];\n }),\n ),\n );\n\n const getTransactionResult = (gtxId: GatedTransactionId) => results[gtxId];\n\n const txFunctions = gatedTxes.map((tx) => async () => {\n const { resolvedGatedTransaction, lastCheckResult } = await resolveGatedTransaction<\n TxType,\n GatedTx,\n ProcessTx\n >({\n gatedTx: tx,\n activityRegistry,\n getTransactionResult,\n processTx,\n confirmationCallback:\n userInteractionCallbacks?.confirmationCallback ?? (async () => true),\n fn,\n cache,\n });\n\n const resId = getIdForGatedTransaction(resolvedGatedTransaction);\n results[resId] = {\n resolved: resolvedGatedTransaction,\n checkResult: {\n expectationMet: [\n GatedTransactionStatus.SUCCESS,\n GatedTransactionStatus.NO_OP,\n ].includes(resolvedGatedTransaction.result.status),\n onChainData: lastCheckResult?.onChainData ?? undefined,\n },\n };\n\n userInteractionCallbacks?.onResultCallback?.(resolvedGatedTransaction);\n return resolvedGatedTransaction;\n });\n\n return await Promise.all(txFunctions.map((func) => func()));\n};\n\nexport const resolveSequencedGatedTransactions = async <\n TxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TransactionResult>,\n>({\n activityRegistry,\n gatedTxes,\n processTx,\n cache,\n userInteractionCallbacks,\n fn,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTxes: GatedTx[][];\n processTx: ProcessTx;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n userInteractionCallbacks?: UserInteractionCallbacks;\n}) => {\n const results = [];\n for (const seq of gatedTxes) {\n const result = await resolveGatedTransactions<TxType, GatedTx, ProcessTx>({\n gatedTxes: seq,\n activityRegistry,\n processTx,\n cache,\n userInteractionCallbacks,\n fn,\n });\n results.push(result);\n }\n\n return results;\n};\n"]}