@layerzerolabs/gated-transaction 0.0.30 → 0.0.31

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 (51) hide show
  1. package/.turbo/turbo-build.log +29 -29
  2. package/.turbo/turbo-test.log +4 -4
  3. package/dist/{AYIRG6WY.cjs → 3SOQJCDG.cjs} +16 -4
  4. package/dist/3SOQJCDG.cjs.map +1 -0
  5. package/dist/{QGZD4SJ4.cjs → 422FLJZW.cjs} +5 -5
  6. package/dist/422FLJZW.cjs.map +1 -0
  7. package/dist/{G6VJTMIX.cjs → 4ND4S3IS.cjs} +23 -24
  8. package/dist/4ND4S3IS.cjs.map +1 -0
  9. package/dist/{SSSLF3RI.js → BCFOKBQQ.js} +104 -59
  10. package/dist/BCFOKBQQ.js.map +1 -0
  11. package/dist/{5HWOSUJL.js → PGJAXI5M.js} +23 -25
  12. package/dist/PGJAXI5M.js.map +1 -0
  13. package/dist/{DBJG544E.js → TLPNG7S6.js} +3 -3
  14. package/dist/TLPNG7S6.js.map +1 -0
  15. package/dist/{VKTX7ABN.cjs → TYY6L3E5.cjs} +108 -63
  16. package/dist/TYY6L3E5.cjs.map +1 -0
  17. package/dist/WWHK47IY.js +25 -0
  18. package/dist/WWHK47IY.js.map +1 -0
  19. package/dist/gatedTransactionSignalLock.cjs +5 -5
  20. package/dist/gatedTransactionSignalLock.d.ts +2 -4
  21. package/dist/gatedTransactionSignalLock.d.ts.map +1 -1
  22. package/dist/gatedTransactionSignalLock.js +2 -2
  23. package/dist/gatedTx.cjs +7 -3
  24. package/dist/gatedTx.d.ts +28 -5
  25. package/dist/gatedTx.d.ts.map +1 -1
  26. package/dist/gatedTx.js +1 -1
  27. package/dist/index.cjs +25 -17
  28. package/dist/index.js +4 -4
  29. package/dist/resolver.cjs +5 -5
  30. package/dist/resolver.d.ts +5 -9
  31. package/dist/resolver.d.ts.map +1 -1
  32. package/dist/resolver.js +3 -3
  33. package/dist/types.cjs +11 -7
  34. package/dist/types.d.ts +53 -71
  35. package/dist/types.d.ts.map +1 -1
  36. package/dist/types.js +1 -1
  37. package/package.json +9 -8
  38. package/src/gatedTransactionSignalLock.ts +3 -6
  39. package/src/gatedTx.ts +53 -6
  40. package/src/resolver.ts +150 -59
  41. package/src/types.ts +135 -71
  42. package/test/resolver.test.ts +151 -6
  43. package/dist/5HWOSUJL.js.map +0 -1
  44. package/dist/5INFRBMB.js +0 -14
  45. package/dist/5INFRBMB.js.map +0 -1
  46. package/dist/AYIRG6WY.cjs.map +0 -1
  47. package/dist/DBJG544E.js.map +0 -1
  48. package/dist/G6VJTMIX.cjs.map +0 -1
  49. package/dist/QGZD4SJ4.cjs.map +0 -1
  50. package/dist/SSSLF3RI.js.map +0 -1
  51. package/dist/VKTX7ABN.cjs.map +0 -1
@@ -10,45 +10,45 @@
10
10
  CLI Cleaning output folder
11
11
  CJS Build start
12
12
  ESM Build start
13
- CJS dist/gatedTransactionSignalLock.cjs 697.00 B
14
- CJS dist/index.cjs 2.14 KB
13
+ CJS dist/gatedTransactionSignalLock.cjs 701.00 B
14
+ CJS dist/gatedTx.cjs 656.00 B
15
+ CJS dist/index.cjs 2.49 KB
16
+ CJS dist/422FLJZW.cjs 2.36 KB
15
17
  CJS dist/resolver.cjs 546.00 B
16
- CJS dist/gatedTx.cjs 474.00 B
17
- CJS dist/AYIRG6WY.cjs 725.00 B
18
- CJS dist/types.cjs 950.00 B
19
- CJS dist/VKTX7ABN.cjs 7.20 KB
20
- CJS dist/G6VJTMIX.cjs 3.38 KB
18
+ CJS dist/TYY6L3E5.cjs 8.88 KB
19
+ CJS dist/3SOQJCDG.cjs 1.08 KB
20
+ CJS dist/types.cjs 1.10 KB
21
+ CJS dist/4ND4S3IS.cjs 3.31 KB
21
22
  CJS dist/YJF4D23A.cjs 245.00 B
22
- CJS dist/QGZD4SJ4.cjs 2.36 KB
23
- CJS dist/AYIRG6WY.cjs.map 1.98 KB
24
23
  CJS dist/gatedTransactionSignalLock.cjs.map 91.00 B
25
24
  CJS dist/gatedTx.cjs.map 72.00 B
25
+ CJS dist/422FLJZW.cjs.map 5.46 KB
26
26
  CJS dist/index.cjs.map 70.00 B
27
- CJS dist/VKTX7ABN.cjs.map 18.23 KB
28
- CJS dist/YJF4D23A.cjs.map 73.00 B
29
- CJS dist/QGZD4SJ4.cjs.map 5.54 KB
30
- CJS dist/G6VJTMIX.cjs.map 9.59 KB
31
- CJS dist/types.cjs.map 70.00 B
32
27
  CJS dist/resolver.cjs.map 73.00 B
33
- CJS ⚡️ Build success in 221ms
28
+ CJS dist/TYY6L3E5.cjs.map 22.60 KB
29
+ CJS dist/3SOQJCDG.cjs.map 3.78 KB
30
+ CJS dist/types.cjs.map 70.00 B
31
+ CJS dist/4ND4S3IS.cjs.map 12.45 KB
32
+ CJS dist/YJF4D23A.cjs.map 73.00 B
33
+ CJS ⚡️ Build success in 358ms
34
34
  ESM dist/gatedTransactionSignalLock.js 270.00 B
35
- ESM dist/gatedTx.js 180.00 B
36
- ESM dist/index.js 554.00 B
37
- ESM dist/DBJG544E.js 2.17 KB
35
+ ESM dist/gatedTx.js 218.00 B
36
+ ESM dist/index.js 624.00 B
37
+ ESM dist/TLPNG7S6.js 2.17 KB
38
38
  ESM dist/resolver.js 238.00 B
39
- ESM dist/types.js 263.00 B
40
- ESM dist/5INFRBMB.js 616.00 B
41
- ESM dist/SSSLF3RI.js 6.70 KB
42
- ESM dist/5HWOSUJL.js 2.46 KB
39
+ ESM dist/BCFOKBQQ.js 8.34 KB
40
+ ESM dist/WWHK47IY.js 935.00 B
41
+ ESM dist/types.js 295.00 B
42
+ ESM dist/PGJAXI5M.js 2.40 KB
43
43
  ESM dist/VUOMXK5T.js 222.00 B
44
+ ESM dist/index.js.map 69.00 B
44
45
  ESM dist/gatedTransactionSignalLock.js.map 90.00 B
45
46
  ESM dist/gatedTx.js.map 71.00 B
46
- ESM dist/index.js.map 69.00 B
47
+ ESM dist/TLPNG7S6.js.map 5.44 KB
47
48
  ESM dist/resolver.js.map 72.00 B
48
- ESM dist/DBJG544E.js.map 5.52 KB
49
- ESM dist/5INFRBMB.js.map 1.97 KB
50
- ESM dist/VUOMXK5T.js.map 72.00 B
51
- ESM dist/SSSLF3RI.js.map 18.20 KB
49
+ ESM dist/WWHK47IY.js.map 3.78 KB
52
50
  ESM dist/types.js.map 69.00 B
53
- ESM dist/5HWOSUJL.js.map 9.54 KB
54
- ESM ⚡️ Build success in 222ms
51
+ ESM dist/PGJAXI5M.js.map 12.39 KB
52
+ ESM dist/VUOMXK5T.js.map 72.00 B
53
+ ESM dist/BCFOKBQQ.js.map 22.57 KB
54
+ ESM ⚡️ Build success in 358ms
@@ -5,10 +5,10 @@
5
5
 
6
6
   RUN  v3.2.3 /home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction
7
7
 
8
- ✓ test/resolver.test.ts (7 tests) 314ms
8
+ ✓ test/resolver.test.ts (10 tests) 444ms
9
9
 
10
10
   Test Files  1 passed (1)
11
-  Tests  7 passed (7)
12
-  Start at  20:53:34
13
-  Duration  833ms (transform 95ms, setup 0ms, collect 155ms, tests 314ms, environment 0ms, prepare 95ms)
11
+  Tests  10 passed (10)
12
+  Start at  01:01:54
13
+  Duration  1.10s (transform 160ms, setup 0ms, collect 237ms, tests 444ms, environment 0ms, prepare 148ms)
14
14
 
@@ -4,14 +4,26 @@ var YJF4D23A_cjs = require('./YJF4D23A.cjs');
4
4
 
5
5
  // src/gatedTx.ts
6
6
  var constructGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name((gtx) => {
7
- return gtx;
7
+ const dependencies = gtx.dependencies ?? [];
8
+ return {
9
+ ...gtx,
10
+ transactionType: "literal",
11
+ dependencies
12
+ };
8
13
  }, "constructGatedTransaction");
14
+ var constructGatedTransactionFromPointer = /* @__PURE__ */ YJF4D23A_cjs.__name((gtx) => {
15
+ return {
16
+ ...gtx,
17
+ transactionType: "functional"
18
+ };
19
+ }, "constructGatedTransactionFromPointer");
9
20
  var getIdForGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name((gtx) => {
10
21
  const serializedUniqueIdKeys = gtx.uniqueIdKeys ? Object.entries(gtx.uniqueIdKeys).map(([k, v]) => `${k}:${v}`).join("-") : "";
11
- return `${gtx.name}-${gtx.transaction.chainName}-${serializedUniqueIdKeys}`;
22
+ return `${gtx.name}-${gtx.chainName}-${serializedUniqueIdKeys}`;
12
23
  }, "getIdForGatedTransaction");
13
24
 
14
25
  exports.constructGatedTransaction = constructGatedTransaction;
26
+ exports.constructGatedTransactionFromPointer = constructGatedTransactionFromPointer;
15
27
  exports.getIdForGatedTransaction = getIdForGatedTransaction;
16
- //# sourceMappingURL=AYIRG6WY.cjs.map
17
- //# sourceMappingURL=AYIRG6WY.cjs.map
28
+ //# sourceMappingURL=3SOQJCDG.cjs.map
29
+ //# sourceMappingURL=3SOQJCDG.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/gatedTx.ts"],"names":["constructGatedTransaction","gtx","dependencies","transactionType","constructGatedTransactionFromPointer","getIdForGatedTransaction","serializedUniqueIdKeys","uniqueIdKeys","Object","entries","map","k","v","join","name","chainName"],"mappings":";;;;;AAeO,IAAMA,yBAAAA,wCAKXC,GAAAA,KAAAA;AAcE,EAAA,MAAMC,YAAAA,GAAeD,GAAAA,CAAIC,YAAAA,IAAiB,EAAA;AAC1C,EAAA,OAAO;IAAE,GAAGD,GAAAA;IAAKE,eAAAA,EAAiB,SAAA;AAAWD,IAAAA;AAAa,GAAA;AAC9D,CAAA,EArByC,2BAAA;AAmClC,IAAME,oCAAAA,wCAKXH,GAAAA,KAAAA;AAcE,EAAA,OAAO;IACH,GAAGA,GAAAA;IACHE,eAAAA,EAAiB;AACrB,GAAA;AACJ,CAAA,EAvBoD,sCAAA;AAyB7C,IAAME,wBAAAA,wCAA4BJ,GAAAA,KAAAA;AACrC,EAAA,MAAMK,sBAAAA,GAAyBL,IAAIM,YAAAA,GAC7BC,MAAAA,CAAOC,QAAQR,GAAAA,CAAIM,YAAY,CAAA,CAC1BG,GAAAA,CAAI,CAAC,CAACC,GAAGC,CAAAA,CAAAA,KAAO,GAAGD,CAAAA,CAAAA,CAAAA,EAAKC,CAAAA,CAAAA,CAAG,CAAA,CAC3BC,IAAAA,CAAK,GAAA,CAAA,GACV,EAAA;AAEN,EAAA,OAAO,GAAGZ,GAAAA,CAAIa,IAAI,IAAIb,GAAAA,CAAIc,SAAS,IAAIT,sBAAAA,CAAAA,CAAAA;AAC3C,CAAA,EARwC,0BAAA","file":"3SOQJCDG.cjs","sourcesContent":["import type { Transaction } from '@layerzerolabs/common-chain-model';\nimport type { FunctionPointer } from '@layerzerolabs/common-utils';\n\nimport type {\n BaseGatedTransaction,\n GatedTransaction,\n GatedTransactionDependencies,\n GatedTransactionId,\n OnChainDataComparison,\n ResolvedGatedTransaction,\n} from './types';\n\n/**\n * Builds a {@link GatedTransaction}\n */\nexport const constructGatedTransaction = <\n const Name extends string,\n Tx extends Transaction,\n Method extends (...args: any[]) => any,\n _Dependencies extends GatedTransactionDependencies,\n>(gtx: {\n name: Name;\n chainName: string;\n bundleName?: string;\n check: {\n functionPointer: FunctionPointer<Method>;\n params: Parameters<Method>;\n expectedResult: OnChainDataComparison<Awaited<ReturnType<Method>>>;\n };\n uniqueIdKeys?: Record<string, string | number | boolean>;\n cacheable?: boolean;\n dependencies?: _Dependencies;\n transaction: Tx;\n}): GatedTransaction<Name, Tx, Method, any, _Dependencies> => {\n const dependencies = gtx.dependencies ?? ([] as any);\n return { ...gtx, transactionType: 'literal', dependencies };\n};\n\ntype BuildDeps<Params extends readonly ResolvedGatedTransaction[]> = Params extends []\n ? []\n : Params extends readonly [\n ResolvedGatedTransaction<infer Gtx>,\n ...infer Rest extends readonly ResolvedGatedTransaction[],\n ]\n ? [Gtx, ...BuildDeps<readonly [...Rest]>]\n : Params;\n\n/**\n * Builds a {@link GatedTransaction} from a pointer\n */\nexport const constructGatedTransactionFromPointer = <\n const Name extends string,\n TxType extends Transaction,\n Method extends (...args: any[]) => any,\n DepMethod extends (txs: any) => Promise<TxType>,\n>(gtx: {\n name: Name;\n chainName: string;\n bundleName?: string;\n check: {\n functionPointer: FunctionPointer<Method>;\n params: Parameters<Method>;\n expectedResult: OnChainDataComparison<Awaited<ReturnType<Method>>>;\n };\n uniqueIdKeys?: Record<string, string | number | boolean>;\n cacheable?: boolean;\n dependencies: BuildDeps<Parameters<DepMethod>[0]>;\n getTransactionPointer: FunctionPointer<DepMethod>;\n}): GatedTransaction<Name, TxType, Method, DepMethod, BuildDeps<Parameters<DepMethod>[0]>> => {\n return {\n ...gtx,\n transactionType: 'functional',\n };\n};\n\nexport const getIdForGatedTransaction = (gtx: BaseGatedTransaction): GatedTransactionId => {\n const serializedUniqueIdKeys = gtx.uniqueIdKeys\n ? Object.entries(gtx.uniqueIdKeys)\n .map(([k, v]) => `${k}:${v}`)\n .join('-')\n : '';\n\n return `${gtx.name}-${gtx.chainName}-${serializedUniqueIdKeys}`;\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var AYIRG6WY_cjs = require('./AYIRG6WY.cjs');
3
+ var _3SOQJCDG_cjs = require('./3SOQJCDG.cjs');
4
4
  var YJF4D23A_cjs = require('./YJF4D23A.cjs');
5
5
  var commonWorkflow = require('@layerzerolabs/common-workflow');
6
6
 
@@ -33,7 +33,7 @@ var useGatedTransactionSignalLock = /* @__PURE__ */ YJF4D23A_cjs.__name((fn, get
33
33
  }
34
34
  });
35
35
  const confirmationCallback = /* @__PURE__ */ YJF4D23A_cjs.__name(async (tx) => {
36
- const id = AYIRG6WY_cjs.getIdForGatedTransaction(tx);
36
+ const id = _3SOQJCDG_cjs.getIdForGatedTransaction(tx);
37
37
  pendingTransactions[id] = tx;
38
38
  await fn.condition(() => approvedIds.has(id) || !!tx.bundleName && approvedBundleNames.has(tx.bundleName));
39
39
  tx.bundleName && approvedBundleNames.add(tx.bundleName);
@@ -42,7 +42,7 @@ var useGatedTransactionSignalLock = /* @__PURE__ */ YJF4D23A_cjs.__name((fn, get
42
42
  return true;
43
43
  }, "confirmationCallback");
44
44
  const onResultCallback = /* @__PURE__ */ YJF4D23A_cjs.__name((result) => {
45
- const id = AYIRG6WY_cjs.getIdForGatedTransaction(result);
45
+ const id = _3SOQJCDG_cjs.getIdForGatedTransaction(result);
46
46
  completedTransactions[id] = result;
47
47
  delete sentTransactions[id];
48
48
  }, "onResultCallback");
@@ -55,5 +55,5 @@ var useGatedTransactionSignalLock = /* @__PURE__ */ YJF4D23A_cjs.__name((fn, get
55
55
  exports.gatedTransactionGoSignal = gatedTransactionGoSignal;
56
56
  exports.queryGatedTransactions = queryGatedTransactions;
57
57
  exports.useGatedTransactionSignalLock = useGatedTransactionSignalLock;
58
- //# sourceMappingURL=QGZD4SJ4.cjs.map
59
- //# sourceMappingURL=QGZD4SJ4.cjs.map
58
+ //# sourceMappingURL=422FLJZW.cjs.map
59
+ //# sourceMappingURL=422FLJZW.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/gatedTransactionSignalLock.ts"],"names":["gatedTransactionGoSignal","defineSignal","queryGatedTransactions","defineQuery","useGatedTransactionSignalLock","__name","fn","getPassthrough","approvedIds","Set","approvedBundleNames","pendingTransactions","sentTransactions","completedTransactions","setHandler","passthroughWfIds","map","handle","workflowId","Object","values","passthroughWorkflowIds","id","add","passthrough","Promise","allSettled","wf","signal","confirmationCallback","tx","getIdForGatedTransaction","condition","has","bundleName","onResultCallback","result"],"mappings":";;;;;;AAkBO,IAAMA,wBAAAA,GACTC,4BAAuC,oBAAA;AACpC,IAAMC,sBAAAA,GACTC,2BAA0C,uBAAA;AAEvC,IAAMC,6BAAAA,mBAAgCC,mBAAA,CAAA,CACzCC,EAAAA,EACAC,cAAAA,KAAAA;AAEA,EAAA,MAAMC,WAAAA,uBAA2CC,GAAAA,EAAAA;AACjD,EAAA,MAAMC,mBAAAA,uBAAuCD,GAAAA,EAAAA;AAE7C,EAAA,MAAME,sBAAoE,EAAC;AAC3E,EAAA,MAAMC,mBAAiE,EAAC;AACxE,EAAA,MAAMC,wBAA8E,EAAC;AAErFP,EAAAA,EAAAA,CAAGQ,UAAAA,CAAWZ,wBAAwB,MAAA;AAClC,IAAA,MAAMa,mBAAmBR,cAAAA,IAAAA,CAAmBS,MAAM,CAACC,MAAAA,KAAWA,OAAOC,UAAU,CAAA;AAC/E,IAAA,OAAO;MACHP,mBAAAA,EAAqBQ,MAAAA,CAAOC,OAAOT,mBAAAA,CAAAA;MACnCC,gBAAAA,EAAkBO,MAAAA,CAAOC,OAAOR,gBAAAA,CAAAA;MAChCC,qBAAAA,EAAuBM,MAAAA,CAAOC,OAAOP,qBAAAA,CAAAA;AACrCQ,MAAAA,sBAAAA,EAAwBN,oBAAoB;AAChD,KAAA;EACJ,CAAA,CAAA;AAEAT,EAAAA,EAAAA,CAAGQ,UAAAA,CAAWd,wBAAAA,EAA0B,OAAOsB,EAAAA,KAAAA;AAC3Cd,IAAAA,WAAAA,CAAYe,IAAID,EAAAA,CAAAA;AAChB,IAAA,MAAME,cAAcjB,cAAAA,IAAAA;AACpB,IAAA,IAAIiB,WAAAA,EAAa;AACb,MAAA,MAAMC,OAAAA,CAAQC,UAAAA,CACVF,WAAAA,CAAYR,GAAAA,CAAI,CAACW,EAAAA,KAAAA;AACb,QAAA,OAAOA,EAAAA,CAAGC,OAAO5B,wBAAAA,EAA0B;AAACsB,UAAAA;AAAG,SAAA,CAAA;AACnD,MAAA,CAAA,CAAA,CAAA;AAER,IAAA;EACJ,CAAA,CAAA;AAEA,EAAA,MAAMO,oBAAAA,8CAAgFC,EAAAA,KAAAA;AAClF,IAAA,MAAMR,EAAAA,GAAKS,uCAAyBD,EAAAA,CAAAA;AACpCnB,IAAAA,mBAAAA,CAAoBW,EAAAA,CAAAA,GAAMQ,EAAAA;AAE1B,IAAA,MAAMxB,EAAAA,CAAG0B,SAAAA,CACL,MACIxB,WAAAA,CAAYyB,IAAIX,EAAAA,CAAAA,IAAQ,CAAC,CAACQ,GAAGI,UAAAA,IAAcxB,mBAAAA,CAAoBuB,GAAAA,CAAIH,EAAAA,CAAGI,UAAU,CAAA,CAAA;AAGxFJ,IAAAA,EAAAA,CAAGI,UAAAA,IAAcxB,mBAAAA,CAAoBa,GAAAA,CAAIO,EAAAA,CAAGI,UAAU,CAAA;AACtDtB,IAAAA,gBAAAA,CAAiBU,EAAAA,CAAAA,GAAMQ,EAAAA;AACvB,IAAA,OAAOnB,oBAAoBW,EAAAA,CAAAA;AAC3B,IAAA,OAAO,IAAA;EACX,CAAA,EAb+E,sBAAA,CAAA;AAe/E,EAAA,MAAMa,gBAAAA,wCAAkEC,MAAAA,KAAAA;AACpE,IAAA,MAAMd,EAAAA,GAAKS,uCAAyBK,MAAAA,CAAAA;AACpCvB,IAAAA,qBAAAA,CAAsBS,EAAAA,CAAAA,GAAMc,MAAAA;AAC5B,IAAA,OAAOxB,iBAAiBU,EAAAA,CAAAA;EAC5B,CAAA,EAJuE,kBAAA,CAAA;AAMvE,EAAA,OAAO;AAAEO,IAAAA,oBAAAA;AAAsBM,IAAAA;AAAiB,GAAA;AACpD,CAAA,EAvD6C,+BAAA","file":"422FLJZW.cjs","sourcesContent":["import type { WorkflowFunctions, WorkflowHandle } from '@layerzerolabs/common-workflow';\nimport { defineQuery, defineSignal } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n GatedTransaction,\n GatedTransactionId,\n ResolvedGatedTransaction,\n UserInteractionCallbacks,\n} from './types';\n\nexport type QueryGatedTransactionsResult = {\n pendingTransactions: GatedTransaction[];\n sentTransactions: GatedTransaction[];\n completedTransactions: ResolvedGatedTransaction[];\n passthroughWorkflowIds: string[];\n};\n\nexport const gatedTransactionGoSignal =\n defineSignal<[id: GatedTransactionId]>('GatedTransactionGo');\nexport const queryGatedTransactions =\n defineQuery<QueryGatedTransactionsResult>('GatedTransactionQuery');\n\nexport const useGatedTransactionSignalLock = (\n fn: WorkflowFunctions,\n getPassthrough?: () => WorkflowHandle<any>[],\n): UserInteractionCallbacks => {\n const approvedIds: Set<GatedTransactionId> = new Set();\n const approvedBundleNames: Set<string> = new Set();\n\n const pendingTransactions: Record<GatedTransactionId, GatedTransaction> = {};\n const sentTransactions: Record<GatedTransactionId, GatedTransaction> = {};\n const completedTransactions: Record<GatedTransactionId, ResolvedGatedTransaction> = {};\n\n fn.setHandler(queryGatedTransactions, () => {\n const passthroughWfIds = getPassthrough?.().map?.((handle) => handle.workflowId);\n return {\n pendingTransactions: Object.values(pendingTransactions),\n sentTransactions: Object.values(sentTransactions),\n completedTransactions: Object.values(completedTransactions),\n passthroughWorkflowIds: passthroughWfIds ?? [],\n };\n });\n\n fn.setHandler(gatedTransactionGoSignal, async (id) => {\n approvedIds.add(id);\n const passthrough = getPassthrough?.();\n if (passthrough) {\n await Promise.allSettled(\n passthrough.map((wf) => {\n return wf.signal(gatedTransactionGoSignal, [id]);\n }),\n );\n }\n });\n\n const confirmationCallback: UserInteractionCallbacks['confirmationCallback'] = async (tx) => {\n const id = getIdForGatedTransaction(tx);\n pendingTransactions[id] = tx;\n\n await fn.condition(\n () =>\n approvedIds.has(id) || (!!tx.bundleName && approvedBundleNames.has(tx.bundleName)),\n );\n\n tx.bundleName && approvedBundleNames.add(tx.bundleName);\n sentTransactions[id] = tx;\n delete pendingTransactions[id];\n return true;\n };\n\n const onResultCallback: UserInteractionCallbacks['onResultCallback'] = (result) => {\n const id = getIdForGatedTransaction(result);\n completedTransactions[id] = result;\n delete sentTransactions[id];\n };\n\n return { confirmationCallback, onResultCallback };\n};\n"]}
@@ -8,25 +8,13 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
8
 
9
9
  var z__default = /*#__PURE__*/_interopDefault(z);
10
10
 
11
- var gatedTransactionSchema = /* @__PURE__ */ YJF4D23A_cjs.__name(({ transactionSchema, name }) => z__default.default.object({
12
- name,
13
- transaction: transactionSchema,
14
- check: z__default.default.object({
15
- functionPointer: z__default.default.any(),
16
- params: z__default.default.array(z__default.default.any()),
17
- expectedResult: z__default.default.object({
18
- operator: z__default.default.custom(),
19
- comparisonValue: z__default.default.any()
20
- })
21
- })
22
- }), "gatedTransactionSchema");
23
- var gatedTransactionResultSchema = /* @__PURE__ */ YJF4D23A_cjs.__name((transactionWithResultSchema, onchainDataSchema) => z__default.default.union([
11
+ var gatedTransactionResultSchema = /* @__PURE__ */ YJF4D23A_cjs.__name((txWithResultSchema, onchainDataSchema) => z__default.default.union([
24
12
  z__default.default.object({
25
13
  status: z__default.default.literal("no_op")
26
14
  }),
27
15
  z__default.default.object({
28
16
  status: z__default.default.literal("success"),
29
- submittedTransaction: transactionWithResultSchema
17
+ submittedTransaction: txWithResultSchema
30
18
  }),
31
19
  z__default.default.object({
32
20
  status: z__default.default.literal("transaction_failed"),
@@ -34,7 +22,7 @@ var gatedTransactionResultSchema = /* @__PURE__ */ YJF4D23A_cjs.__name((transact
34
22
  }),
35
23
  z__default.default.object({
36
24
  status: z__default.default.literal("final_check_failed"),
37
- submittedTransaction: transactionWithResultSchema,
25
+ submittedTransaction: txWithResultSchema,
38
26
  finalOnChainState: onchainDataSchema
39
27
  }),
40
28
  z__default.default.object({
@@ -44,12 +32,6 @@ var gatedTransactionResultSchema = /* @__PURE__ */ YJF4D23A_cjs.__name((transact
44
32
  status: z__default.default.literal("denied")
45
33
  })
46
34
  ]), "gatedTransactionResultSchema");
47
- var processedGatedTransactionSchema = /* @__PURE__ */ YJF4D23A_cjs.__name(({ transactionSchema, transactionWithResultSchema, onchainDataSchema, name }) => gatedTransactionSchema({
48
- transactionSchema,
49
- name
50
- }).and(z__default.default.object({
51
- result: gatedTransactionResultSchema(transactionWithResultSchema, onchainDataSchema)
52
- })), "processedGatedTransactionSchema");
53
35
  var GatedTransactionStatus = /* @__PURE__ */ (function(GatedTransactionStatus2) {
54
36
  GatedTransactionStatus2["NO_OP"] = "no_op";
55
37
  GatedTransactionStatus2["SUCCESS"] = "success";
@@ -74,11 +56,28 @@ var gatedTransactionCacheSchema = z__default.default.object({
74
56
  output: z__default.default.promise(z__default.default.any())
75
57
  })
76
58
  });
59
+ var gatedTransactionSchema = /* @__PURE__ */ YJF4D23A_cjs.__name((_) => zodUtils.customSchema(), "gatedTransactionSchema");
60
+ var resolvedGatedTransactionSchema = /* @__PURE__ */ YJF4D23A_cjs.__name((_) => zodUtils.customSchema(), "resolvedGatedTransactionSchema");
61
+ var createTxDependentActivitySchema = /* @__PURE__ */ YJF4D23A_cjs.__name((transactionSchema, txNumber) => {
62
+ const txs = Array.from({
63
+ length: txNumber
64
+ }, () => resolvedGatedTransactionSchema({
65
+ name: z__default.default.string(),
66
+ transactionSchema
67
+ }));
68
+ return zodUtils.functionSchema({
69
+ input: z__default.default.tuple([
70
+ z__default.default.tuple(txs)
71
+ ]),
72
+ output: z__default.default.promise(transactionSchema)
73
+ });
74
+ }, "createTxDependentActivitySchema");
77
75
 
78
76
  exports.GatedTransactionStatus = GatedTransactionStatus;
77
+ exports.createTxDependentActivitySchema = createTxDependentActivitySchema;
79
78
  exports.gatedTransactionCacheSchema = gatedTransactionCacheSchema;
80
79
  exports.gatedTransactionResultSchema = gatedTransactionResultSchema;
81
80
  exports.gatedTransactionSchema = gatedTransactionSchema;
82
- exports.processedGatedTransactionSchema = processedGatedTransactionSchema;
83
- //# sourceMappingURL=G6VJTMIX.cjs.map
84
- //# sourceMappingURL=G6VJTMIX.cjs.map
81
+ exports.resolvedGatedTransactionSchema = resolvedGatedTransactionSchema;
82
+ //# sourceMappingURL=4ND4S3IS.cjs.map
83
+ //# sourceMappingURL=4ND4S3IS.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types.ts"],"names":["gatedTransactionResultSchema","__name","txWithResultSchema","onchainDataSchema","z","union","object","status","literal","submittedTransaction","transactionError","any","finalOnChainState","GatedTransactionStatus","gatedTransactionCacheSchema","getCachedTxCheckData","functionSchema","input","tuple","output","promise","cacheSuccessfulTxCheckData","gatedTransactionSchema","_","customSchema","resolvedGatedTransactionSchema","createTxDependentActivitySchema","transactionSchema","txNumber","txs","Array","from","length","name","string"],"mappings":";;;;;;;;;;AA8BO,IAAMA,4BAAAA,mBAA+BC,mBAAA,CAAA,CAIxCC,kBAAAA,EACAC,iBAAAA,KAEAC,mBAAEC,KAAAA,CAAM;AACJD,EAAAA,kBAAAA,CAAEE,MAAAA,CAAO;IACLC,MAAAA,EAAQH,kBAAAA,CAAEI,QAAO,OAAA;GACrB,CAAA;AACAJ,EAAAA,kBAAAA,CAAEE,MAAAA,CAAO;IACLC,MAAAA,EAAQH,kBAAAA,CAAEI,QAAO,SAAA,CAAA;IACjBC,oBAAAA,EAAsBP;GAC1B,CAAA;AACAE,EAAAA,kBAAAA,CAAEE,MAAAA,CAAO;IACLC,MAAAA,EAAQH,kBAAAA,CAAEI,QAAO,oBAAA,CAAA;AACjBE,IAAAA,gBAAAA,EAAkBN,mBAAEO,GAAAA;GACxB,CAAA;AACAP,EAAAA,kBAAAA,CAAEE,MAAAA,CAAO;IACLC,MAAAA,EAAQH,kBAAAA,CAAEI,QAAO,oBAAA,CAAA;IACjBC,oBAAAA,EAAsBP,kBAAAA;IACtBU,iBAAAA,EAAmBT;GACvB,CAAA;AACAC,EAAAA,kBAAAA,CAAEE,MAAAA,CAAO;IACLC,MAAAA,EAAQH,kBAAAA,CAAEI,QAAO,mBAAA;GACrB,CAAA;AACAJ,EAAAA,kBAAAA,CAAEE,MAAAA,CAAO;IACLC,MAAAA,EAAQH,kBAAAA,CAAEI,QAAO,QAAA;GACrB;CACH,CAAA,EA9BuC,8BAAA;AAyFrC,IAAKK,sBAAAA,6BAAAA,uBAAAA,EAAAA;;;;;;;AAAAA,EAAAA,OAAAA,uBAAAA;;AAgDL,IAAMC,2BAAAA,GAA8BV,mBAAEE,MAAAA,CAAO;AAChDS,EAAAA,oBAAAA,EAAsBC,uBAAAA,CAAe;AACjCC,IAAAA,KAAAA,EAAOb,mBAAEc,KAAAA,CAAM;AAACd,MAAAA,kBAAAA,CAAEO,GAAAA;AAAM,KAAA,CAAA;AACxBQ,IAAAA,MAAAA,EAAQf,kBAAAA,CAAEgB,OAAAA,CAAQhB,kBAAAA,CAAEO,GAAAA,EAAG;GAC3B,CAAA;AAKAU,EAAAA,0BAAAA,EAA4BL,uBAAAA,CAAe;AACvCC,IAAAA,KAAAA,EAAOb,mBAAEc,KAAAA,CAAM;AAACd,MAAAA,kBAAAA,CAAEO,GAAAA,EAAG;AAAIP,MAAAA,kBAAAA,CAAEO,GAAAA;AAAM,KAAA,CAAA;AACjCQ,IAAAA,MAAAA,EAAQf,kBAAAA,CAAEgB,OAAAA,CAAQhB,kBAAAA,CAAEO,GAAAA,EAAG;GAC3B;AAMJ,CAAA;AAuBO,IAAMW,sBAAAA,mBAAyBrB,mBAAA,CAAA,CAGpCsB,CAAAA,KAGIC,qBAAAA,EAAAA,EANgC,wBAAA;AAQ/B,IAAMC,8BAAAA,mBAAiCxB,mBAAA,CAAA,CAG5CsB,CAAAA,KAIEC,qBAAAA,EAAAA,EAP0C,gCAAA;AAqBvC,IAAME,+BAAAA,mBAAkCzB,mBAAA,CAAA,CAI3C0B,iBAAAA,EACAC,QAAAA,KAAAA;AAEA,EAAA,MAAMC,GAAAA,GAAMC,MAAMC,IAAAA,CAAK;IAAEC,MAAAA,EAAQJ;AAAS,GAAA,EAAG,MACzCH,8BAAAA,CAA+B;AAC3BQ,IAAAA,IAAAA,EAAM7B,mBAAE8B,MAAAA,EAAM;AACdP,IAAAA;AACJ,GAAA,CAAA,CAAA;AAEJ,EAAA,OAAOX,uBAAAA,CAAe;AAClBC,IAAAA,KAAAA,EAAOb,mBAAEc,KAAAA,CAAM;AAACd,MAAAA,kBAAAA,CAAEc,MAAMW,GAAAA;AAAY,KAAA,CAAA;IACpCV,MAAAA,EAAQf,kBAAAA,CAAEgB,QAAQO,iBAAAA;GACtB,CAAA;AAUJ,CAAA,EA1B+C,iCAAA","file":"4ND4S3IS.cjs","sourcesContent":["import z from 'zod/v4';\n\nimport {\n type Transaction,\n type transactionSchema as _transactionSchema,\n type TransactionWithResultFor,\n type transactionWithResultSchema as _transactionWithResultSchema,\n} from '@layerzerolabs/common-chain-model';\nimport type { FunctionPointer } from '@layerzerolabs/common-utils';\nimport type { BuildTuple } from '@layerzerolabs/typescript-utils';\nimport { customSchema, functionSchema } from '@layerzerolabs/zod-utils';\n\nexport type OnChainDataComparisonOperator<OnChainDataType> = OnChainDataType extends number\n ? '<' | '<=' | '=' | '!=' | '>' | '>='\n : '=' | '!=';\n\nexport type OnChainDataComparison<OnChainDataType> = {\n operator: OnChainDataComparisonOperator<OnChainDataType>;\n comparisonValue: OnChainDataType;\n};\n\nexport type GatedTransactionCheck<\n Method extends (...args: any[]) => Promise<any> = (...args: any[]) => Promise<unknown>,\n> = {\n functionPointer: FunctionPointer<Method>;\n params: Parameters<Method>;\n expectedResult: OnChainDataComparison<Awaited<ReturnType<Method>>>;\n};\n\n// Schema for gated transaction results\nexport const gatedTransactionResultSchema = <\n TxWithResultSchema extends typeof _transactionWithResultSchema,\n OnchainDataSchema extends z.ZodType,\n>(\n txWithResultSchema: TxWithResultSchema,\n onchainDataSchema: OnchainDataSchema,\n) =>\n z.union([\n z.object({\n status: z.literal(GatedTransactionStatus.NO_OP),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.SUCCESS),\n submittedTransaction: txWithResultSchema,\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.TRANSACTION_FAILED),\n transactionError: z.any(),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.FINAL_CHECK_FAILED),\n submittedTransaction: txWithResultSchema,\n finalOnChainState: onchainDataSchema,\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DEPENDENCY_FAILED),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DENIED),\n }),\n ]);\n\nexport type InferOnChainDataTypeFromCheck<Check> = Check extends (...args: any[]) => infer Ret\n ? Awaited<Ret>\n : unknown;\nexport type InferOnChainDataTypeFromGatedTransaction<GatedTx extends GatedTransaction> =\n InferOnChainDataTypeFromCheck<GatedTx['check']>;\n\nexport type GatedTransactionDependencies = GatedTransaction[];\nexport type BaseGatedTransaction<\n Name extends string = string,\n CheckMethod extends (...args: any[]) => any = (...args: any[]) => any,\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = {\n name: Name;\n bundleName?: string;\n chainName: string;\n check: GatedTransactionCheck<CheckMethod>;\n dependencies: _Dependencies;\n cacheable?: boolean;\n uniqueIdKeys?: Record<string, string | number | boolean>;\n};\n\nexport type LiteralGatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckMethod extends (...args: any[]) => any = (...args: any[]) => any,\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = BaseGatedTransaction<Name, CheckMethod, _Dependencies> & {\n transactionType: 'literal';\n transaction: TxType;\n};\n\nexport type FunctionalGatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckMethod extends (...args: any[]) => any = (...args: any[]) => any,\n DepMethod extends (txs: any) => Promise<TxType> = (txs: any) => Promise<any>,\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = BaseGatedTransaction<Name, CheckMethod, _Dependencies> & {\n transactionType: 'functional';\n getTransactionPointer: FunctionPointer<DepMethod>;\n};\n\nexport type GatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckMethod extends (...args: any[]) => any = (...args: any[]) => any,\n DepMethod extends (txs: any) => Promise<TxType> = (txs: any) => Promise<any>,\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> =\n | LiteralGatedTransaction<Name, TxType, CheckMethod, _Dependencies>\n | FunctionalGatedTransaction<Name, TxType, CheckMethod, DepMethod, _Dependencies>;\n\nexport type BaseGatedTransactionFor<GatedTx extends GatedTransaction> =\n GatedTx extends GatedTransaction<infer Name, any, infer CheckMethod, any, infer _Dependencies>\n ? BaseGatedTransaction<Name, CheckMethod, _Dependencies>\n : never;\n\nexport enum GatedTransactionStatus {\n NO_OP = 'no_op',\n SUCCESS = 'success',\n TRANSACTION_FAILED = 'transaction_failed',\n FINAL_CHECK_FAILED = 'final_check_failed',\n DEPENDENCY_FAILED = 'dependency_failed',\n DENIED = 'denied',\n}\n\ntype NoOpGatedTransaction = {\n status: GatedTransactionStatus.NO_OP;\n};\n\ntype SuccessfulGatedTransaction<TxType extends Transaction> = {\n status: GatedTransactionStatus.SUCCESS;\n submittedTransaction: TransactionWithResultFor<TxType>;\n};\n\ntype TxFailedGatedTransaction = {\n status: GatedTransactionStatus.TRANSACTION_FAILED;\n transactionError: any;\n};\n\ntype CheckFailedGatedTransaction<GatedTx extends GatedTransaction, TxType extends Transaction> = {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED;\n submittedTransaction: TransactionWithResultFor<TxType>;\n finalOnChainState: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n};\n\ntype DependencyFailedGatedTransaction = {\n status: GatedTransactionStatus.DEPENDENCY_FAILED;\n};\n\ntype DeniedGatedTransaction = {\n status: GatedTransactionStatus.DENIED;\n};\n\nexport type GatedTransactionResult<\n GatedTx extends GatedTransaction = GatedTransaction,\n TxType extends Transaction = Transaction,\n> =\n | NoOpGatedTransaction\n | SuccessfulGatedTransaction<TxType>\n | TxFailedGatedTransaction\n | CheckFailedGatedTransaction<GatedTx, TxType>\n | DependencyFailedGatedTransaction\n | DeniedGatedTransaction;\n\nexport const gatedTransactionCacheSchema = z.object({\n getCachedTxCheckData: functionSchema({\n input: z.tuple([z.any()]),\n output: z.promise(z.any()),\n }) as z.ZodType<\n <GatedTx extends GatedTransaction>(\n gtx: GatedTx,\n ) => Promise<InferOnChainDataTypeFromGatedTransaction<GatedTx> | undefined>\n >,\n cacheSuccessfulTxCheckData: functionSchema({\n input: z.tuple([z.any(), z.any()]),\n output: z.promise(z.any()),\n }) as z.ZodType<\n <GatedTx extends GatedTransaction>(\n gtx: GatedTx,\n data: InferOnChainDataTypeFromGatedTransaction<GatedTx>,\n ) => Promise<void>\n >,\n});\n\nexport type IGatedTransactionCache = z.infer<typeof gatedTransactionCacheSchema>;\n\n/**\n * name-chain-uniqueIdKeys\n *\n * E.g., setDelegate-ethereum-oAppAddress:0xMY_OAPP\n */\nexport type GatedTransactionId = `${string}-${string}-${string}`;\n\nexport type ResolvedGatedTransaction<\n GatedTx extends GatedTransaction = GatedTransaction,\n TxType extends Transaction = Transaction,\n> = BaseGatedTransactionFor<GatedTx> & {\n result: GatedTransactionResult<GatedTx, TxType>;\n};\n\nexport type UserInteractionCallbacks = {\n confirmationCallback?: (gtx: GatedTransaction) => Promise<boolean>;\n onResultCallback?: (result: ResolvedGatedTransaction) => void;\n};\n\nexport const gatedTransactionSchema = <\n Name extends z.ZodString | z.ZodLiteral<string> = z.ZodString,\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n>(_?: {\n name?: Name;\n transactionSchema?: TransactionSchema;\n}) => customSchema<GatedTransaction<z.infer<Name>, z.infer<TransactionSchema>>>();\n\nexport const resolvedGatedTransactionSchema = <\n Name extends z.ZodString | z.ZodLiteral<string> = z.ZodString,\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n>(_?: {\n name?: Name;\n transactionSchema?: TransactionSchema;\n}) =>\n customSchema<\n ResolvedGatedTransaction<\n GatedTransaction<z.infer<Name>, z.infer<TransactionSchema>>,\n z.infer<TransactionSchema>\n >\n >();\n\n/**\n * Builds a schema for an activity that builds a transaction based on the results of other transactions\n * @param transactionSchema The schema for the transaction to be built\n * @param transactionWithResultSchema The schema for the results of the transactions you're building off of\n * @param txNumber The number of transactions you're building off of\n * @returns A schema for the activity that builds the transaction\n */\nexport const createTxDependentActivitySchema = <\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n const TxNumber extends number = 1,\n>(\n transactionSchema: TransactionSchema,\n txNumber: TxNumber,\n) => {\n const txs = Array.from({ length: txNumber }, () =>\n resolvedGatedTransactionSchema({\n name: z.string(),\n transactionSchema: transactionSchema,\n }),\n );\n return functionSchema({\n input: z.tuple([z.tuple(txs as any)]),\n output: z.promise(transactionSchema),\n }) as z.ZodType<\n (\n txs: BuildTuple<\n ResolvedGatedTransaction<\n GatedTransaction<string, z.infer<TransactionSchema>, any, any, any>\n >,\n TxNumber\n >,\n ) => Promise<z.infer<TransactionSchema>>\n >;\n};\n\nexport type ResolvedGatedTransactionDependencies<GatedTx extends GatedTransaction> =\n GatedTx extends GatedTransaction<any, any, any, any, infer _Dependencies>\n ? {\n [K in keyof _Dependencies]?: ResolvedGatedTransaction<_Dependencies[K]>;\n }\n : never;\n"]}
@@ -1,18 +1,18 @@
1
- import { getIdForGatedTransaction } from './5INFRBMB.js';
2
- import { GatedTransactionStatus } from './5HWOSUJL.js';
1
+ import { getIdForGatedTransaction } from './WWHK47IY.js';
2
+ import { GatedTransactionStatus } from './PGJAXI5M.js';
3
3
  import { __name } from './VUOMXK5T.js';
4
4
  import isEqual from 'lodash.isequal';
5
5
 
6
- var checkGatedTransaction = /* @__PURE__ */ __name(async ({ registry, gatedTransaction, cachedCheckResult, processedTransaction }) => {
6
+ var checkGatedTransaction = /* @__PURE__ */ __name(async ({ registry, gatedTransaction, cachedCheckResult, submittedTransaction }) => {
7
7
  let onChainData;
8
8
  if (cachedCheckResult !== void 0) {
9
9
  onChainData = cachedCheckResult;
10
10
  } else {
11
11
  let params = gatedTransaction.check.params;
12
- if (processedTransaction !== void 0) {
12
+ if (submittedTransaction !== void 0) {
13
13
  params = [
14
14
  ...gatedTransaction.check.params,
15
- processedTransaction
15
+ submittedTransaction
16
16
  ];
17
17
  }
18
18
  onChainData = await registry.callByPointer(gatedTransaction.check.functionPointer, params);
@@ -45,17 +45,38 @@ var checkGatedTransaction = /* @__PURE__ */ __name(async ({ registry, gatedTrans
45
45
  onChainData
46
46
  };
47
47
  }, "checkGatedTransaction");
48
- var resolveGatedTransaction = /* @__PURE__ */ __name(async ({ activityRegistry, gatedTx, isTransactionSuccessful, processTx, confirmationCallback, fn, cache }) => {
48
+ var extractGatedTransactionUnderlyingTransaction = /* @__PURE__ */ __name(async ({ registry, gatedTransaction, deps }) => {
49
+ if (gatedTransaction.transactionType === "literal") {
50
+ return gatedTransaction.transaction;
51
+ } else {
52
+ return await registry.callByPointer(gatedTransaction.getTransactionPointer, [
53
+ deps
54
+ ]);
55
+ }
56
+ }, "extractGatedTransactionUnderlyingTransaction");
57
+ var resolveGatedTransaction = /* @__PURE__ */ __name(async ({ activityRegistry, gatedTx, getTransactionResult, processTx, confirmationCallback, fn, cache }) => {
58
+ const baseGatedTx = {
59
+ name: gatedTx.name,
60
+ chainName: gatedTx.chainName,
61
+ bundleName: gatedTx.bundleName,
62
+ check: gatedTx.check,
63
+ dependencies: gatedTx.dependencies,
64
+ cacheable: gatedTx.cacheable,
65
+ uniqueIdKeys: gatedTx.uniqueIdKeys
66
+ };
49
67
  const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => getIdForGatedTransaction(tx));
50
- const dependenciesAreAllProcessed = /* @__PURE__ */ __name(() => dependencyIds.every((id) => isTransactionSuccessful(id) != null), "dependenciesAreAllProcessed");
68
+ const dependenciesAreAllProcessed = /* @__PURE__ */ __name(() => dependencyIds.every((id) => getTransactionResult(id)), "dependenciesAreAllProcessed");
51
69
  await fn.condition(dependenciesAreAllProcessed);
52
- const dependenciesWereSuccessful = dependencyIds.every((id) => isTransactionSuccessful(id));
70
+ const dependenciesWereSuccessful = dependencyIds.every((id) => getTransactionResult(id)?.checkResult.expectationMet);
53
71
  if (!dependenciesWereSuccessful) {
54
72
  return {
55
- ...gatedTx,
56
- result: {
57
- status: GatedTransactionStatus.DEPENDENCY_FAILED
58
- }
73
+ resolvedGatedTransaction: {
74
+ ...baseGatedTx,
75
+ result: {
76
+ status: GatedTransactionStatus.DEPENDENCY_FAILED
77
+ }
78
+ },
79
+ lastCheckResult: null
59
80
  };
60
81
  }
61
82
  const initialCheckResult = await checkGatedTransaction({
@@ -66,42 +87,55 @@ var resolveGatedTransaction = /* @__PURE__ */ __name(async ({ activityRegistry,
66
87
  await cache?.cacheSuccessfulTxCheckData?.(gatedTx, initialCheckResult.onChainData);
67
88
  if (initialCheckResult.expectationMet) {
68
89
  return {
69
- ...gatedTx,
70
- result: {
71
- status: GatedTransactionStatus.NO_OP
72
- }
90
+ resolvedGatedTransaction: {
91
+ ...baseGatedTx,
92
+ result: {
93
+ status: GatedTransactionStatus.NO_OP
94
+ }
95
+ },
96
+ lastCheckResult: initialCheckResult
73
97
  };
74
98
  }
75
99
  const confirmation = await confirmationCallback(gatedTx);
76
100
  if (!confirmation) {
77
101
  return {
78
- ...gatedTx,
79
- result: {
80
- status: GatedTransactionStatus.DENIED
81
- }
102
+ resolvedGatedTransaction: {
103
+ ...baseGatedTx,
104
+ result: {
105
+ status: GatedTransactionStatus.DENIED
106
+ }
107
+ },
108
+ lastCheckResult: initialCheckResult
82
109
  };
83
110
  }
84
111
  try {
85
- const processResult = await processTx(gatedTx.transaction);
112
+ const depsResults = gatedTx.dependencies.map((dep) => getTransactionResult(getIdForGatedTransaction(dep)).resolved);
113
+ const underlying = await extractGatedTransactionUnderlyingTransaction({
114
+ registry: activityRegistry,
115
+ gatedTransaction: gatedTx,
116
+ deps: depsResults
117
+ });
118
+ const processResult = await processTx(underlying);
119
+ const submittedTransaction = {
120
+ ...underlying,
121
+ result: processResult
122
+ };
86
123
  const finalCheckResult = await checkGatedTransaction({
87
124
  registry: activityRegistry,
88
125
  gatedTransaction: gatedTx,
89
- processedTransaction: {
90
- ...gatedTx.transaction,
91
- result: processResult
92
- }
126
+ submittedTransaction
93
127
  });
94
128
  await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);
95
129
  if (finalCheckResult.expectationMet) {
96
130
  return {
97
- ...gatedTx,
98
- result: {
99
- status: GatedTransactionStatus.SUCCESS,
100
- submittedTransaction: {
101
- ...gatedTx.transaction,
102
- result: processResult
131
+ resolvedGatedTransaction: {
132
+ ...baseGatedTx,
133
+ result: {
134
+ status: GatedTransactionStatus.SUCCESS,
135
+ submittedTransaction
103
136
  }
104
- }
137
+ },
138
+ lastCheckResult: finalCheckResult
105
139
  };
106
140
  } else {
107
141
  const stringify = /* @__PURE__ */ __name((o) => JSON.stringify(o, (_, v) => typeof v === "bigint" ? v.toString() : v, 2), "stringify");
@@ -109,24 +143,27 @@ var resolveGatedTransaction = /* @__PURE__ */ __name(async ({ activityRegistry,
109
143
  Expected result ${stringify(gatedTx.check.expectedResult.comparisonValue)}, but got:
110
144
  ${stringify(finalCheckResult.onChainData)}`);
111
145
  return {
112
- ...gatedTx,
113
- result: {
114
- status: GatedTransactionStatus.FINAL_CHECK_FAILED,
115
- submittedTransaction: {
116
- ...gatedTx.transaction,
117
- result: processResult
118
- },
119
- finalOnChainState: finalCheckResult.onChainData
120
- }
146
+ resolvedGatedTransaction: {
147
+ ...baseGatedTx,
148
+ result: {
149
+ status: GatedTransactionStatus.FINAL_CHECK_FAILED,
150
+ submittedTransaction,
151
+ finalOnChainState: finalCheckResult.onChainData
152
+ }
153
+ },
154
+ lastCheckResult: finalCheckResult
121
155
  };
122
156
  }
123
157
  } catch (e) {
124
158
  return {
125
- ...gatedTx,
126
- result: {
127
- status: GatedTransactionStatus.TRANSACTION_FAILED,
128
- transactionError: e
129
- }
159
+ resolvedGatedTransaction: {
160
+ ...baseGatedTx,
161
+ result: {
162
+ status: GatedTransactionStatus.TRANSACTION_FAILED,
163
+ transactionError: e
164
+ }
165
+ },
166
+ lastCheckResult: initialCheckResult
130
167
  };
131
168
  }
132
169
  }, "resolveGatedTransaction");
@@ -142,27 +179,35 @@ var resolveGatedTransactions = /* @__PURE__ */ __name(async ({ activityRegistry,
142
179
  });
143
180
  return [
144
181
  getIdForGatedTransaction(tx),
145
- checkResult.expectationMet
182
+ {
183
+ checkResult
184
+ }
146
185
  ];
147
186
  })));
148
- const isTransactionSuccessful = /* @__PURE__ */ __name((gtxId) => results[gtxId], "isTransactionSuccessful");
187
+ const getTransactionResult = /* @__PURE__ */ __name((gtxId) => results[gtxId], "getTransactionResult");
149
188
  const txFunctions = gatedTxes.map((tx) => async () => {
150
- const res = await resolveGatedTransaction({
189
+ const { resolvedGatedTransaction, lastCheckResult } = await resolveGatedTransaction({
151
190
  gatedTx: tx,
152
191
  activityRegistry,
153
- isTransactionSuccessful,
192
+ getTransactionResult,
154
193
  processTx,
155
194
  confirmationCallback: userInteractionCallbacks?.confirmationCallback ?? (async () => true),
156
195
  fn,
157
196
  cache
158
197
  });
159
- const resId = getIdForGatedTransaction(res);
160
- results[resId] = [
161
- GatedTransactionStatus.SUCCESS,
162
- GatedTransactionStatus.NO_OP
163
- ].includes(res.result.status);
164
- userInteractionCallbacks?.onResultCallback?.(res);
165
- return res;
198
+ const resId = getIdForGatedTransaction(resolvedGatedTransaction);
199
+ results[resId] = {
200
+ resolved: resolvedGatedTransaction,
201
+ checkResult: {
202
+ expectationMet: [
203
+ GatedTransactionStatus.SUCCESS,
204
+ GatedTransactionStatus.NO_OP
205
+ ].includes(resolvedGatedTransaction.result.status),
206
+ onChainData: lastCheckResult?.onChainData ?? void 0
207
+ }
208
+ };
209
+ userInteractionCallbacks?.onResultCallback?.(resolvedGatedTransaction);
210
+ return resolvedGatedTransaction;
166
211
  });
167
212
  return await Promise.all(txFunctions.map((func) => func()));
168
213
  }, "resolveGatedTransactions");
@@ -183,5 +228,5 @@ var resolveSequencedGatedTransactions = /* @__PURE__ */ __name(async ({ activity
183
228
  }, "resolveSequencedGatedTransactions");
184
229
 
185
230
  export { resolveGatedTransactions, resolveSequencedGatedTransactions };
186
- //# sourceMappingURL=SSSLF3RI.js.map
187
- //# sourceMappingURL=SSSLF3RI.js.map
231
+ //# sourceMappingURL=BCFOKBQQ.js.map
232
+ //# sourceMappingURL=BCFOKBQQ.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","transactionType","transaction","getTransactionPointer","resolveGatedTransaction","activityRegistry","gatedTx","getTransactionResult","processTx","confirmationCallback","fn","cache","baseGatedTx","name","chainName","bundleName","dependencies","cacheable","uniqueIdKeys","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":"BCFOKBQQ.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 './types';\nimport { GatedTransactionStatus } from './types';\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 } 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 //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"]}