@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
@@ -1,26 +1,14 @@
1
1
  import { __name } from './VUOMXK5T.js';
2
2
  import z from 'zod/v4';
3
- import { functionSchema } from '@layerzerolabs/zod-utils';
3
+ import { functionSchema, customSchema } from '@layerzerolabs/zod-utils';
4
4
 
5
- var gatedTransactionSchema = /* @__PURE__ */ __name(({ transactionSchema, name }) => z.object({
6
- name,
7
- transaction: transactionSchema,
8
- check: z.object({
9
- functionPointer: z.any(),
10
- params: z.array(z.any()),
11
- expectedResult: z.object({
12
- operator: z.custom(),
13
- comparisonValue: z.any()
14
- })
15
- })
16
- }), "gatedTransactionSchema");
17
- var gatedTransactionResultSchema = /* @__PURE__ */ __name((transactionWithResultSchema, onchainDataSchema) => z.union([
5
+ var gatedTransactionResultSchema = /* @__PURE__ */ __name((txWithResultSchema, onchainDataSchema) => z.union([
18
6
  z.object({
19
7
  status: z.literal("no_op")
20
8
  }),
21
9
  z.object({
22
10
  status: z.literal("success"),
23
- submittedTransaction: transactionWithResultSchema
11
+ submittedTransaction: txWithResultSchema
24
12
  }),
25
13
  z.object({
26
14
  status: z.literal("transaction_failed"),
@@ -28,7 +16,7 @@ var gatedTransactionResultSchema = /* @__PURE__ */ __name((transactionWithResult
28
16
  }),
29
17
  z.object({
30
18
  status: z.literal("final_check_failed"),
31
- submittedTransaction: transactionWithResultSchema,
19
+ submittedTransaction: txWithResultSchema,
32
20
  finalOnChainState: onchainDataSchema
33
21
  }),
34
22
  z.object({
@@ -38,12 +26,6 @@ var gatedTransactionResultSchema = /* @__PURE__ */ __name((transactionWithResult
38
26
  status: z.literal("denied")
39
27
  })
40
28
  ]), "gatedTransactionResultSchema");
41
- var processedGatedTransactionSchema = /* @__PURE__ */ __name(({ transactionSchema, transactionWithResultSchema, onchainDataSchema, name }) => gatedTransactionSchema({
42
- transactionSchema,
43
- name
44
- }).and(z.object({
45
- result: gatedTransactionResultSchema(transactionWithResultSchema, onchainDataSchema)
46
- })), "processedGatedTransactionSchema");
47
29
  var GatedTransactionStatus = /* @__PURE__ */ (function(GatedTransactionStatus2) {
48
30
  GatedTransactionStatus2["NO_OP"] = "no_op";
49
31
  GatedTransactionStatus2["SUCCESS"] = "success";
@@ -68,7 +50,23 @@ var gatedTransactionCacheSchema = z.object({
68
50
  output: z.promise(z.any())
69
51
  })
70
52
  });
53
+ var gatedTransactionSchema = /* @__PURE__ */ __name((_) => customSchema(), "gatedTransactionSchema");
54
+ var resolvedGatedTransactionSchema = /* @__PURE__ */ __name((_) => customSchema(), "resolvedGatedTransactionSchema");
55
+ var createTxDependentActivitySchema = /* @__PURE__ */ __name((transactionSchema, txNumber) => {
56
+ const txs = Array.from({
57
+ length: txNumber
58
+ }, () => resolvedGatedTransactionSchema({
59
+ name: z.string(),
60
+ transactionSchema
61
+ }));
62
+ return functionSchema({
63
+ input: z.tuple([
64
+ z.tuple(txs)
65
+ ]),
66
+ output: z.promise(transactionSchema)
67
+ });
68
+ }, "createTxDependentActivitySchema");
71
69
 
72
- export { GatedTransactionStatus, gatedTransactionCacheSchema, gatedTransactionResultSchema, gatedTransactionSchema, processedGatedTransactionSchema };
73
- //# sourceMappingURL=5HWOSUJL.js.map
74
- //# sourceMappingURL=5HWOSUJL.js.map
70
+ export { GatedTransactionStatus, createTxDependentActivitySchema, gatedTransactionCacheSchema, gatedTransactionResultSchema, gatedTransactionSchema, resolvedGatedTransactionSchema };
71
+ //# sourceMappingURL=PGJAXI5M.js.map
72
+ //# sourceMappingURL=PGJAXI5M.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types.ts"],"names":["gatedTransactionResultSchema","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+B,MAAA,CAAA,CAIxCC,kBAAAA,EACAC,iBAAAA,KAEAC,EAAEC,KAAAA,CAAM;AACJD,EAAAA,CAAAA,CAAEE,MAAAA,CAAO;IACLC,MAAAA,EAAQH,CAAAA,CAAEI,QAAO,OAAA;GACrB,CAAA;AACAJ,EAAAA,CAAAA,CAAEE,MAAAA,CAAO;IACLC,MAAAA,EAAQH,CAAAA,CAAEI,QAAO,SAAA,CAAA;IACjBC,oBAAAA,EAAsBP;GAC1B,CAAA;AACAE,EAAAA,CAAAA,CAAEE,MAAAA,CAAO;IACLC,MAAAA,EAAQH,CAAAA,CAAEI,QAAO,oBAAA,CAAA;AACjBE,IAAAA,gBAAAA,EAAkBN,EAAEO,GAAAA;GACxB,CAAA;AACAP,EAAAA,CAAAA,CAAEE,MAAAA,CAAO;IACLC,MAAAA,EAAQH,CAAAA,CAAEI,QAAO,oBAAA,CAAA;IACjBC,oBAAAA,EAAsBP,kBAAAA;IACtBU,iBAAAA,EAAmBT;GACvB,CAAA;AACAC,EAAAA,CAAAA,CAAEE,MAAAA,CAAO;IACLC,MAAAA,EAAQH,CAAAA,CAAEI,QAAO,mBAAA;GACrB,CAAA;AACAJ,EAAAA,CAAAA,CAAEE,MAAAA,CAAO;IACLC,MAAAA,EAAQH,CAAAA,CAAEI,QAAO,QAAA;GACrB;CACH,CAAA,EA9BuC,8BAAA;AAyFrC,IAAKK,sBAAAA,6BAAAA,uBAAAA,EAAAA;;;;;;;AAAAA,EAAAA,OAAAA,uBAAAA;;AAgDL,IAAMC,2BAAAA,GAA8BV,EAAEE,MAAAA,CAAO;AAChDS,EAAAA,oBAAAA,EAAsBC,cAAAA,CAAe;AACjCC,IAAAA,KAAAA,EAAOb,EAAEc,KAAAA,CAAM;AAACd,MAAAA,CAAAA,CAAEO,GAAAA;AAAM,KAAA,CAAA;AACxBQ,IAAAA,MAAAA,EAAQf,CAAAA,CAAEgB,OAAAA,CAAQhB,CAAAA,CAAEO,GAAAA,EAAG;GAC3B,CAAA;AAKAU,EAAAA,0BAAAA,EAA4BL,cAAAA,CAAe;AACvCC,IAAAA,KAAAA,EAAOb,EAAEc,KAAAA,CAAM;AAACd,MAAAA,CAAAA,CAAEO,GAAAA,EAAG;AAAIP,MAAAA,CAAAA,CAAEO,GAAAA;AAAM,KAAA,CAAA;AACjCQ,IAAAA,MAAAA,EAAQf,CAAAA,CAAEgB,OAAAA,CAAQhB,CAAAA,CAAEO,GAAAA,EAAG;GAC3B;AAMJ,CAAA;AAuBO,IAAMW,sBAAAA,mBAAyB,MAAA,CAAA,CAGpCC,CAAAA,KAGIC,YAAAA,EAAAA,EANgC,wBAAA;AAQ/B,IAAMC,8BAAAA,mBAAiC,MAAA,CAAA,CAG5CF,CAAAA,KAIEC,YAAAA,EAAAA,EAP0C,gCAAA;AAqBvC,IAAME,+BAAAA,mBAAkC,MAAA,CAAA,CAI3CC,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,EAAE8B,MAAAA,EAAM;AACdP,IAAAA;AACJ,GAAA,CAAA,CAAA;AAEJ,EAAA,OAAOX,cAAAA,CAAe;AAClBC,IAAAA,KAAAA,EAAOb,EAAEc,KAAAA,CAAM;AAACd,MAAAA,CAAAA,CAAEc,MAAMW,GAAAA;AAAY,KAAA,CAAA;IACpCV,MAAAA,EAAQf,CAAAA,CAAEgB,QAAQO,iBAAAA;GACtB,CAAA;AAUJ,CAAA,EA1B+C,iCAAA","file":"PGJAXI5M.js","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,4 +1,4 @@
1
- import { getIdForGatedTransaction } from './5INFRBMB.js';
1
+ import { getIdForGatedTransaction } from './WWHK47IY.js';
2
2
  import { __name } from './VUOMXK5T.js';
3
3
  import { defineSignal, defineQuery } from '@layerzerolabs/common-workflow';
4
4
 
@@ -51,5 +51,5 @@ var useGatedTransactionSignalLock = /* @__PURE__ */ __name((fn, getPassthrough)
51
51
  }, "useGatedTransactionSignalLock");
52
52
 
53
53
  export { gatedTransactionGoSignal, queryGatedTransactions, useGatedTransactionSignalLock };
54
- //# sourceMappingURL=DBJG544E.js.map
55
- //# sourceMappingURL=DBJG544E.js.map
54
+ //# sourceMappingURL=TLPNG7S6.js.map
55
+ //# sourceMappingURL=TLPNG7S6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/gatedTransactionSignalLock.ts"],"names":["gatedTransactionGoSignal","defineSignal","queryGatedTransactions","defineQuery","useGatedTransactionSignalLock","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,aAAuC,oBAAA;AACpC,IAAMC,sBAAAA,GACTC,YAA0C,uBAAA;AAEvC,IAAMC,6BAAAA,mBAAgC,MAAA,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,CAAWX,wBAAwB,MAAA;AAClC,IAAA,MAAMY,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,CAAWb,wBAAAA,EAA0B,OAAOqB,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,OAAO3B,wBAAAA,EAA0B;AAACqB,UAAAA;AAAG,SAAA,CAAA;AACnD,MAAA,CAAA,CAAA,CAAA;AAER,IAAA;EACJ,CAAA,CAAA;AAEA,EAAA,MAAMO,oBAAAA,iCAAgFC,EAAAA,KAAAA;AAClF,IAAA,MAAMR,EAAAA,GAAKS,yBAAyBD,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,2BAAkEC,MAAAA,KAAAA;AACpE,IAAA,MAAMd,EAAAA,GAAKS,yBAAyBK,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":"TLPNG7S6.js","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"]}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var AYIRG6WY_cjs = require('./AYIRG6WY.cjs');
4
- var G6VJTMIX_cjs = require('./G6VJTMIX.cjs');
3
+ var _3SOQJCDG_cjs = require('./3SOQJCDG.cjs');
4
+ var _4ND4S3IS_cjs = require('./4ND4S3IS.cjs');
5
5
  var YJF4D23A_cjs = require('./YJF4D23A.cjs');
6
6
  var isEqual = require('lodash.isequal');
7
7
 
@@ -9,16 +9,16 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
9
 
10
10
  var isEqual__default = /*#__PURE__*/_interopDefault(isEqual);
11
11
 
12
- var checkGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ registry, gatedTransaction, cachedCheckResult, processedTransaction }) => {
12
+ var checkGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ registry, gatedTransaction, cachedCheckResult, submittedTransaction }) => {
13
13
  let onChainData;
14
14
  if (cachedCheckResult !== void 0) {
15
15
  onChainData = cachedCheckResult;
16
16
  } else {
17
17
  let params = gatedTransaction.check.params;
18
- if (processedTransaction !== void 0) {
18
+ if (submittedTransaction !== void 0) {
19
19
  params = [
20
20
  ...gatedTransaction.check.params,
21
- processedTransaction
21
+ submittedTransaction
22
22
  ];
23
23
  }
24
24
  onChainData = await registry.callByPointer(gatedTransaction.check.functionPointer, params);
@@ -51,17 +51,38 @@ var checkGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ registr
51
51
  onChainData
52
52
  };
53
53
  }, "checkGatedTransaction");
54
- var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activityRegistry, gatedTx, isTransactionSuccessful, processTx, confirmationCallback, fn, cache }) => {
55
- const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => AYIRG6WY_cjs.getIdForGatedTransaction(tx));
56
- const dependenciesAreAllProcessed = /* @__PURE__ */ YJF4D23A_cjs.__name(() => dependencyIds.every((id) => isTransactionSuccessful(id) != null), "dependenciesAreAllProcessed");
54
+ var extractGatedTransactionUnderlyingTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ registry, gatedTransaction, deps }) => {
55
+ if (gatedTransaction.transactionType === "literal") {
56
+ return gatedTransaction.transaction;
57
+ } else {
58
+ return await registry.callByPointer(gatedTransaction.getTransactionPointer, [
59
+ deps
60
+ ]);
61
+ }
62
+ }, "extractGatedTransactionUnderlyingTransaction");
63
+ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activityRegistry, gatedTx, getTransactionResult, processTx, confirmationCallback, fn, cache }) => {
64
+ const baseGatedTx = {
65
+ name: gatedTx.name,
66
+ chainName: gatedTx.chainName,
67
+ bundleName: gatedTx.bundleName,
68
+ check: gatedTx.check,
69
+ dependencies: gatedTx.dependencies,
70
+ cacheable: gatedTx.cacheable,
71
+ uniqueIdKeys: gatedTx.uniqueIdKeys
72
+ };
73
+ const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => _3SOQJCDG_cjs.getIdForGatedTransaction(tx));
74
+ const dependenciesAreAllProcessed = /* @__PURE__ */ YJF4D23A_cjs.__name(() => dependencyIds.every((id) => getTransactionResult(id)), "dependenciesAreAllProcessed");
57
75
  await fn.condition(dependenciesAreAllProcessed);
58
- const dependenciesWereSuccessful = dependencyIds.every((id) => isTransactionSuccessful(id));
76
+ const dependenciesWereSuccessful = dependencyIds.every((id) => getTransactionResult(id)?.checkResult.expectationMet);
59
77
  if (!dependenciesWereSuccessful) {
60
78
  return {
61
- ...gatedTx,
62
- result: {
63
- status: G6VJTMIX_cjs.GatedTransactionStatus.DEPENDENCY_FAILED
64
- }
79
+ resolvedGatedTransaction: {
80
+ ...baseGatedTx,
81
+ result: {
82
+ status: _4ND4S3IS_cjs.GatedTransactionStatus.DEPENDENCY_FAILED
83
+ }
84
+ },
85
+ lastCheckResult: null
65
86
  };
66
87
  }
67
88
  const initialCheckResult = await checkGatedTransaction({
@@ -72,42 +93,55 @@ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activ
72
93
  await cache?.cacheSuccessfulTxCheckData?.(gatedTx, initialCheckResult.onChainData);
73
94
  if (initialCheckResult.expectationMet) {
74
95
  return {
75
- ...gatedTx,
76
- result: {
77
- status: G6VJTMIX_cjs.GatedTransactionStatus.NO_OP
78
- }
96
+ resolvedGatedTransaction: {
97
+ ...baseGatedTx,
98
+ result: {
99
+ status: _4ND4S3IS_cjs.GatedTransactionStatus.NO_OP
100
+ }
101
+ },
102
+ lastCheckResult: initialCheckResult
79
103
  };
80
104
  }
81
105
  const confirmation = await confirmationCallback(gatedTx);
82
106
  if (!confirmation) {
83
107
  return {
84
- ...gatedTx,
85
- result: {
86
- status: G6VJTMIX_cjs.GatedTransactionStatus.DENIED
87
- }
108
+ resolvedGatedTransaction: {
109
+ ...baseGatedTx,
110
+ result: {
111
+ status: _4ND4S3IS_cjs.GatedTransactionStatus.DENIED
112
+ }
113
+ },
114
+ lastCheckResult: initialCheckResult
88
115
  };
89
116
  }
90
117
  try {
91
- const processResult = await processTx(gatedTx.transaction);
118
+ const depsResults = gatedTx.dependencies.map((dep) => getTransactionResult(_3SOQJCDG_cjs.getIdForGatedTransaction(dep)).resolved);
119
+ const underlying = await extractGatedTransactionUnderlyingTransaction({
120
+ registry: activityRegistry,
121
+ gatedTransaction: gatedTx,
122
+ deps: depsResults
123
+ });
124
+ const processResult = await processTx(underlying);
125
+ const submittedTransaction = {
126
+ ...underlying,
127
+ result: processResult
128
+ };
92
129
  const finalCheckResult = await checkGatedTransaction({
93
130
  registry: activityRegistry,
94
131
  gatedTransaction: gatedTx,
95
- processedTransaction: {
96
- ...gatedTx.transaction,
97
- result: processResult
98
- }
132
+ submittedTransaction
99
133
  });
100
134
  await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);
101
135
  if (finalCheckResult.expectationMet) {
102
136
  return {
103
- ...gatedTx,
104
- result: {
105
- status: G6VJTMIX_cjs.GatedTransactionStatus.SUCCESS,
106
- submittedTransaction: {
107
- ...gatedTx.transaction,
108
- result: processResult
137
+ resolvedGatedTransaction: {
138
+ ...baseGatedTx,
139
+ result: {
140
+ status: _4ND4S3IS_cjs.GatedTransactionStatus.SUCCESS,
141
+ submittedTransaction
109
142
  }
110
- }
143
+ },
144
+ lastCheckResult: finalCheckResult
111
145
  };
112
146
  } else {
113
147
  const stringify = /* @__PURE__ */ YJF4D23A_cjs.__name((o) => JSON.stringify(o, (_, v) => typeof v === "bigint" ? v.toString() : v, 2), "stringify");
@@ -115,31 +149,34 @@ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activ
115
149
  Expected result ${stringify(gatedTx.check.expectedResult.comparisonValue)}, but got:
116
150
  ${stringify(finalCheckResult.onChainData)}`);
117
151
  return {
118
- ...gatedTx,
119
- result: {
120
- status: G6VJTMIX_cjs.GatedTransactionStatus.FINAL_CHECK_FAILED,
121
- submittedTransaction: {
122
- ...gatedTx.transaction,
123
- result: processResult
124
- },
125
- finalOnChainState: finalCheckResult.onChainData
126
- }
152
+ resolvedGatedTransaction: {
153
+ ...baseGatedTx,
154
+ result: {
155
+ status: _4ND4S3IS_cjs.GatedTransactionStatus.FINAL_CHECK_FAILED,
156
+ submittedTransaction,
157
+ finalOnChainState: finalCheckResult.onChainData
158
+ }
159
+ },
160
+ lastCheckResult: finalCheckResult
127
161
  };
128
162
  }
129
163
  } catch (e) {
130
164
  return {
131
- ...gatedTx,
132
- result: {
133
- status: G6VJTMIX_cjs.GatedTransactionStatus.TRANSACTION_FAILED,
134
- transactionError: e
135
- }
165
+ resolvedGatedTransaction: {
166
+ ...baseGatedTx,
167
+ result: {
168
+ status: _4ND4S3IS_cjs.GatedTransactionStatus.TRANSACTION_FAILED,
169
+ transactionError: e
170
+ }
171
+ },
172
+ lastCheckResult: initialCheckResult
136
173
  };
137
174
  }
138
175
  }, "resolveGatedTransaction");
139
176
  var resolveGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activityRegistry, gatedTxes, processTx, fn, cache, userInteractionCallbacks }) => {
140
- const allInternalIds = gatedTxes.map((tx) => AYIRG6WY_cjs.getIdForGatedTransaction(tx));
177
+ const allInternalIds = gatedTxes.map((tx) => _3SOQJCDG_cjs.getIdForGatedTransaction(tx));
141
178
  const allDeps = gatedTxes.flatMap((tx) => tx.dependencies ?? []);
142
- const allExternalDeps = allDeps.filter((tx) => !allInternalIds.includes(AYIRG6WY_cjs.getIdForGatedTransaction(tx)));
179
+ const allExternalDeps = allDeps.filter((tx) => !allInternalIds.includes(_3SOQJCDG_cjs.getIdForGatedTransaction(tx)));
143
180
  const results = Object.fromEntries(await Promise.all(allExternalDeps.map(async (tx) => {
144
181
  const checkResult = await checkGatedTransaction({
145
182
  gatedTransaction: tx,
@@ -147,28 +184,36 @@ var resolveGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ acti
147
184
  cachedCheckResult: await cache?.getCachedTxCheckData?.(tx)
148
185
  });
149
186
  return [
150
- AYIRG6WY_cjs.getIdForGatedTransaction(tx),
151
- checkResult.expectationMet
187
+ _3SOQJCDG_cjs.getIdForGatedTransaction(tx),
188
+ {
189
+ checkResult
190
+ }
152
191
  ];
153
192
  })));
154
- const isTransactionSuccessful = /* @__PURE__ */ YJF4D23A_cjs.__name((gtxId) => results[gtxId], "isTransactionSuccessful");
193
+ const getTransactionResult = /* @__PURE__ */ YJF4D23A_cjs.__name((gtxId) => results[gtxId], "getTransactionResult");
155
194
  const txFunctions = gatedTxes.map((tx) => async () => {
156
- const res = await resolveGatedTransaction({
195
+ const { resolvedGatedTransaction, lastCheckResult } = await resolveGatedTransaction({
157
196
  gatedTx: tx,
158
197
  activityRegistry,
159
- isTransactionSuccessful,
198
+ getTransactionResult,
160
199
  processTx,
161
200
  confirmationCallback: userInteractionCallbacks?.confirmationCallback ?? (async () => true),
162
201
  fn,
163
202
  cache
164
203
  });
165
- const resId = AYIRG6WY_cjs.getIdForGatedTransaction(res);
166
- results[resId] = [
167
- G6VJTMIX_cjs.GatedTransactionStatus.SUCCESS,
168
- G6VJTMIX_cjs.GatedTransactionStatus.NO_OP
169
- ].includes(res.result.status);
170
- userInteractionCallbacks?.onResultCallback?.(res);
171
- return res;
204
+ const resId = _3SOQJCDG_cjs.getIdForGatedTransaction(resolvedGatedTransaction);
205
+ results[resId] = {
206
+ resolved: resolvedGatedTransaction,
207
+ checkResult: {
208
+ expectationMet: [
209
+ _4ND4S3IS_cjs.GatedTransactionStatus.SUCCESS,
210
+ _4ND4S3IS_cjs.GatedTransactionStatus.NO_OP
211
+ ].includes(resolvedGatedTransaction.result.status),
212
+ onChainData: lastCheckResult?.onChainData ?? void 0
213
+ }
214
+ };
215
+ userInteractionCallbacks?.onResultCallback?.(resolvedGatedTransaction);
216
+ return resolvedGatedTransaction;
172
217
  });
173
218
  return await Promise.all(txFunctions.map((func) => func()));
174
219
  }, "resolveGatedTransactions");
@@ -190,5 +235,5 @@ var resolveSequencedGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(asyn
190
235
 
191
236
  exports.resolveGatedTransactions = resolveGatedTransactions;
192
237
  exports.resolveSequencedGatedTransactions = resolveSequencedGatedTransactions;
193
- //# sourceMappingURL=VKTX7ABN.cjs.map
194
- //# sourceMappingURL=VKTX7ABN.cjs.map
238
+ //# sourceMappingURL=TYY6L3E5.cjs.map
239
+ //# sourceMappingURL=TYY6L3E5.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","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":"TYY6L3E5.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 './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"]}
@@ -0,0 +1,25 @@
1
+ import { __name } from './VUOMXK5T.js';
2
+
3
+ // src/gatedTx.ts
4
+ var constructGatedTransaction = /* @__PURE__ */ __name((gtx) => {
5
+ const dependencies = gtx.dependencies ?? [];
6
+ return {
7
+ ...gtx,
8
+ transactionType: "literal",
9
+ dependencies
10
+ };
11
+ }, "constructGatedTransaction");
12
+ var constructGatedTransactionFromPointer = /* @__PURE__ */ __name((gtx) => {
13
+ return {
14
+ ...gtx,
15
+ transactionType: "functional"
16
+ };
17
+ }, "constructGatedTransactionFromPointer");
18
+ var getIdForGatedTransaction = /* @__PURE__ */ __name((gtx) => {
19
+ const serializedUniqueIdKeys = gtx.uniqueIdKeys ? Object.entries(gtx.uniqueIdKeys).map(([k, v]) => `${k}:${v}`).join("-") : "";
20
+ return `${gtx.name}-${gtx.chainName}-${serializedUniqueIdKeys}`;
21
+ }, "getIdForGatedTransaction");
22
+
23
+ export { constructGatedTransaction, constructGatedTransactionFromPointer, getIdForGatedTransaction };
24
+ //# sourceMappingURL=WWHK47IY.js.map
25
+ //# sourceMappingURL=WWHK47IY.js.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,2BAKXC,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,2BAKXH,GAAAA,KAAAA;AAcE,EAAA,OAAO;IACH,GAAGA,GAAAA;IACHE,eAAAA,EAAiB;AACrB,GAAA;AACJ,CAAA,EAvBoD,sCAAA;AAyB7C,IAAME,wBAAAA,2BAA4BJ,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":"WWHK47IY.js","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,22 +1,22 @@
1
1
  'use strict';
2
2
 
3
- var QGZD4SJ4_cjs = require('./QGZD4SJ4.cjs');
4
- require('./AYIRG6WY.cjs');
3
+ var _422FLJZW_cjs = require('./422FLJZW.cjs');
4
+ require('./3SOQJCDG.cjs');
5
5
  require('./YJF4D23A.cjs');
6
6
 
7
7
 
8
8
 
9
9
  Object.defineProperty(exports, "gatedTransactionGoSignal", {
10
10
  enumerable: true,
11
- get: function () { return QGZD4SJ4_cjs.gatedTransactionGoSignal; }
11
+ get: function () { return _422FLJZW_cjs.gatedTransactionGoSignal; }
12
12
  });
13
13
  Object.defineProperty(exports, "queryGatedTransactions", {
14
14
  enumerable: true,
15
- get: function () { return QGZD4SJ4_cjs.queryGatedTransactions; }
15
+ get: function () { return _422FLJZW_cjs.queryGatedTransactions; }
16
16
  });
17
17
  Object.defineProperty(exports, "useGatedTransactionSignalLock", {
18
18
  enumerable: true,
19
- get: function () { return QGZD4SJ4_cjs.useGatedTransactionSignalLock; }
19
+ get: function () { return _422FLJZW_cjs.useGatedTransactionSignalLock; }
20
20
  });
21
21
  //# sourceMappingURL=gatedTransactionSignalLock.cjs.map
22
22
  //# sourceMappingURL=gatedTransactionSignalLock.cjs.map
@@ -1,11 +1,9 @@
1
1
  import type { WorkflowFunctions, WorkflowHandle } from '@layerzerolabs/common-workflow';
2
- import type { GatedTransaction, GatedTransactionResult, UserInteractionCallbacks } from './types';
2
+ import type { GatedTransaction, ResolvedGatedTransaction, UserInteractionCallbacks } from './types';
3
3
  export type QueryGatedTransactionsResult = {
4
4
  pendingTransactions: GatedTransaction[];
5
5
  sentTransactions: GatedTransaction[];
6
- completedTransactions: (GatedTransaction & {
7
- result: GatedTransactionResult;
8
- })[];
6
+ completedTransactions: ResolvedGatedTransaction[];
9
7
  passthroughWorkflowIds: string[];
10
8
  };
11
9
  export declare const gatedTransactionGoSignal: import("@layerzerolabs/common-workflow").SignalDefinition<[id: `${string}-${string}-${string}`], string>;
@@ -1 +1 @@
1
- {"version":3,"file":"gatedTransactionSignalLock.d.ts","sourceRoot":"","sources":["../src/gatedTransactionSignalLock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAIxF,OAAO,KAAK,EACR,gBAAgB,EAEhB,sBAAsB,EACtB,wBAAwB,EAC3B,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,4BAA4B,GAAG;IACvC,mBAAmB,EAAE,gBAAgB,EAAE,CAAC;IACxC,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,qBAAqB,EAAE,CAAC,gBAAgB,GAAG;QAAE,MAAM,EAAE,sBAAsB,CAAA;KAAE,CAAC,EAAE,CAAC;IACjF,sBAAsB,EAAE,MAAM,EAAE,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,0GAC2B,CAAC;AACjE,eAAO,MAAM,sBAAsB,oGACmC,CAAC;AAEvE,eAAO,MAAM,6BAA6B,GACtC,IAAI,iBAAiB,EACrB,iBAAiB,MAAM,cAAc,CAAC,GAAG,CAAC,EAAE,KAC7C,wBAuDF,CAAC"}
1
+ {"version":3,"file":"gatedTransactionSignalLock.d.ts","sourceRoot":"","sources":["../src/gatedTransactionSignalLock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAIxF,OAAO,KAAK,EACR,gBAAgB,EAEhB,wBAAwB,EACxB,wBAAwB,EAC3B,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,4BAA4B,GAAG;IACvC,mBAAmB,EAAE,gBAAgB,EAAE,CAAC;IACxC,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,qBAAqB,EAAE,wBAAwB,EAAE,CAAC;IAClD,sBAAsB,EAAE,MAAM,EAAE,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,0GAC2B,CAAC;AACjE,eAAO,MAAM,sBAAsB,oGACmC,CAAC;AAEvE,eAAO,MAAM,6BAA6B,GACtC,IAAI,iBAAiB,EACrB,iBAAiB,MAAM,cAAc,CAAC,GAAG,CAAC,EAAE,KAC7C,wBAoDF,CAAC"}
@@ -1,5 +1,5 @@
1
- export { gatedTransactionGoSignal, queryGatedTransactions, useGatedTransactionSignalLock } from './DBJG544E.js';
2
- import './5INFRBMB.js';
1
+ export { gatedTransactionGoSignal, queryGatedTransactions, useGatedTransactionSignalLock } from './TLPNG7S6.js';
2
+ import './WWHK47IY.js';
3
3
  import './VUOMXK5T.js';
4
4
  //# sourceMappingURL=gatedTransactionSignalLock.js.map
5
5
  //# sourceMappingURL=gatedTransactionSignalLock.js.map
package/dist/gatedTx.cjs CHANGED
@@ -1,17 +1,21 @@
1
1
  'use strict';
2
2
 
3
- var AYIRG6WY_cjs = require('./AYIRG6WY.cjs');
3
+ var _3SOQJCDG_cjs = require('./3SOQJCDG.cjs');
4
4
  require('./YJF4D23A.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "constructGatedTransaction", {
9
9
  enumerable: true,
10
- get: function () { return AYIRG6WY_cjs.constructGatedTransaction; }
10
+ get: function () { return _3SOQJCDG_cjs.constructGatedTransaction; }
11
+ });
12
+ Object.defineProperty(exports, "constructGatedTransactionFromPointer", {
13
+ enumerable: true,
14
+ get: function () { return _3SOQJCDG_cjs.constructGatedTransactionFromPointer; }
11
15
  });
12
16
  Object.defineProperty(exports, "getIdForGatedTransaction", {
13
17
  enumerable: true,
14
- get: function () { return AYIRG6WY_cjs.getIdForGatedTransaction; }
18
+ get: function () { return _3SOQJCDG_cjs.getIdForGatedTransaction; }
15
19
  });
16
20
  //# sourceMappingURL=gatedTx.cjs.map
17
21
  //# sourceMappingURL=gatedTx.cjs.map
package/dist/gatedTx.d.ts CHANGED
@@ -1,13 +1,34 @@
1
1
  import type { Transaction } from '@layerzerolabs/common-chain-model';
2
2
  import type { FunctionPointer } from '@layerzerolabs/common-utils';
3
- import type { GatedTransaction, GatedTransactionId, OnChainDataComparison } from './types';
3
+ import type { BaseGatedTransaction, GatedTransaction, GatedTransactionDependencies, GatedTransactionId, OnChainDataComparison, ResolvedGatedTransaction } from './types';
4
4
  /**
5
5
  * Builds a {@link GatedTransaction}
6
6
  */
7
- export declare const constructGatedTransaction: <const Name extends string, Tx extends Transaction, Method extends (...args: any[]) => any>(gtx: {
7
+ export declare const constructGatedTransaction: <const Name extends string, Tx extends Transaction, Method extends (...args: any[]) => any, _Dependencies extends GatedTransactionDependencies>(gtx: {
8
8
  name: Name;
9
+ chainName: string;
9
10
  bundleName?: string;
11
+ check: {
12
+ functionPointer: FunctionPointer<Method>;
13
+ params: Parameters<Method>;
14
+ expectedResult: OnChainDataComparison<Awaited<ReturnType<Method>>>;
15
+ };
16
+ uniqueIdKeys?: Record<string, string | number | boolean>;
17
+ cacheable?: boolean;
18
+ dependencies?: _Dependencies;
10
19
  transaction: Tx;
20
+ }) => GatedTransaction<Name, Tx, Method, any, _Dependencies>;
21
+ type BuildDeps<Params extends readonly ResolvedGatedTransaction[]> = Params extends [] ? [] : Params extends readonly [
22
+ ResolvedGatedTransaction<infer Gtx>,
23
+ ...infer Rest extends readonly ResolvedGatedTransaction[]
24
+ ] ? [Gtx, ...BuildDeps<readonly [...Rest]>] : Params;
25
+ /**
26
+ * Builds a {@link GatedTransaction} from a pointer
27
+ */
28
+ export declare const constructGatedTransactionFromPointer: <const Name extends string, TxType extends Transaction, Method extends (...args: any[]) => any, DepMethod extends (txs: any) => Promise<TxType>>(gtx: {
29
+ name: Name;
30
+ chainName: string;
31
+ bundleName?: string;
11
32
  check: {
12
33
  functionPointer: FunctionPointer<Method>;
13
34
  params: Parameters<Method>;
@@ -15,7 +36,9 @@ export declare const constructGatedTransaction: <const Name extends string, Tx e
15
36
  };
16
37
  uniqueIdKeys?: Record<string, string | number | boolean>;
17
38
  cacheable?: boolean;
18
- dependencies?: GatedTransaction[];
19
- }) => GatedTransaction<Name, Tx, Method>;
20
- export declare const getIdForGatedTransaction: (gtx: GatedTransaction) => GatedTransactionId;
39
+ dependencies: BuildDeps<Parameters<DepMethod>[0]>;
40
+ getTransactionPointer: FunctionPointer<DepMethod>;
41
+ }) => GatedTransaction<Name, TxType, Method, DepMethod, BuildDeps<Parameters<DepMethod>[0]>>;
42
+ export declare const getIdForGatedTransaction: (gtx: BaseGatedTransaction) => GatedTransactionId;
43
+ export {};
21
44
  //# sourceMappingURL=gatedTx.d.ts.map