@layerzerolabs/gated-transaction 0.0.29 → 0.0.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,45 +10,45 @@
10
10
  CLI Cleaning output folder
11
11
  CJS Build start
12
12
  ESM Build start
13
+ CJS dist/gatedTransactionSignalLock.cjs 697.00 B
14
+ CJS dist/index.cjs 2.14 KB
15
+ 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
21
+ 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
+ CJS dist/gatedTransactionSignalLock.cjs.map 91.00 B
25
+ CJS dist/gatedTx.cjs.map 72.00 B
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
+ CJS dist/resolver.cjs.map 73.00 B
33
+ CJS ⚡️ Build success in 221ms
13
34
  ESM dist/gatedTransactionSignalLock.js 270.00 B
14
- ESM dist/index.js 554.00 B
15
35
  ESM dist/gatedTx.js 180.00 B
36
+ ESM dist/index.js 554.00 B
16
37
  ESM dist/DBJG544E.js 2.17 KB
17
38
  ESM dist/resolver.js 238.00 B
18
- ESM dist/5INFRBMB.js 616.00 B
19
39
  ESM dist/types.js 263.00 B
20
- ESM dist/GMAAYDJ4.js 2.39 KB
40
+ ESM dist/5INFRBMB.js 616.00 B
41
+ ESM dist/SSSLF3RI.js 6.70 KB
42
+ ESM dist/5HWOSUJL.js 2.46 KB
21
43
  ESM dist/VUOMXK5T.js 222.00 B
22
- ESM dist/CG43CWKE.js 6.50 KB
23
44
  ESM dist/gatedTransactionSignalLock.js.map 90.00 B
24
- ESM dist/index.js.map 69.00 B
25
45
  ESM dist/gatedTx.js.map 71.00 B
26
- ESM dist/DBJG544E.js.map 5.52 KB
46
+ ESM dist/index.js.map 69.00 B
27
47
  ESM dist/resolver.js.map 72.00 B
48
+ ESM dist/DBJG544E.js.map 5.52 KB
28
49
  ESM dist/5INFRBMB.js.map 1.97 KB
29
- ESM dist/types.js.map 69.00 B
30
- ESM dist/GMAAYDJ4.js.map 9.49 KB
31
50
  ESM dist/VUOMXK5T.js.map 72.00 B
32
- ESM dist/CG43CWKE.js.map 17.90 KB
33
- ESM ⚡️ Build success in 370ms
34
- CJS dist/gatedTransactionSignalLock.cjs 697.00 B
35
- CJS dist/gatedTx.cjs 474.00 B
36
- CJS dist/resolver.cjs 546.00 B
37
- CJS dist/QGZD4SJ4.cjs 2.36 KB
38
- CJS dist/XYULD3ZM.cjs 7.00 KB
39
- CJS dist/index.cjs 2.15 KB
40
- CJS dist/AYIRG6WY.cjs 725.00 B
41
- CJS dist/YJF4D23A.cjs 245.00 B
42
- CJS dist/types.cjs 956.00 B
43
- CJS dist/6NWNACVT.cjs 3.31 KB
44
- CJS dist/gatedTransactionSignalLock.cjs.map 91.00 B
45
- CJS dist/gatedTx.cjs.map 72.00 B
46
- CJS dist/resolver.cjs.map 73.00 B
47
- CJS dist/QGZD4SJ4.cjs.map 5.54 KB
48
- CJS dist/XYULD3ZM.cjs.map 17.93 KB
49
- CJS dist/index.cjs.map 70.00 B
50
- CJS dist/AYIRG6WY.cjs.map 1.98 KB
51
- CJS dist/YJF4D23A.cjs.map 73.00 B
52
- CJS dist/types.cjs.map 70.00 B
53
- CJS dist/6NWNACVT.cjs.map 9.55 KB
54
- CJS ⚡️ Build success in 371ms
51
+ ESM dist/SSSLF3RI.js.map 18.20 KB
52
+ ESM dist/types.js.map 69.00 B
53
+ ESM dist/5HWOSUJL.js.map 9.54 KB
54
+ ESM ⚡️ Build success in 222ms
@@ -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) 357ms
8
+ ✓ test/resolver.test.ts (7 tests) 314ms
9
9
 
10
10
   Test Files  1 passed (1)
11
11
   Tests  7 passed (7)
12
-  Start at  02:22:08
13
-  Duration  2.41s (transform 599ms, setup 0ms, collect 998ms, tests 357ms, environment 0ms, prepare 474ms)
12
+  Start at  20:53:34
13
+  Duration  833ms (transform 95ms, setup 0ms, collect 155ms, tests 314ms, environment 0ms, prepare 95ms)
14
14
 
@@ -14,13 +14,13 @@ var gatedTransactionSchema = /* @__PURE__ */ __name(({ transactionSchema, name }
14
14
  })
15
15
  })
16
16
  }), "gatedTransactionSchema");
17
- var gatedTransactionResultSchema = /* @__PURE__ */ __name((transactionSchema, onchainDataSchema) => z.union([
17
+ var gatedTransactionResultSchema = /* @__PURE__ */ __name((transactionWithResultSchema, onchainDataSchema) => z.union([
18
18
  z.object({
19
19
  status: z.literal("no_op")
20
20
  }),
21
21
  z.object({
22
22
  status: z.literal("success"),
23
- submittedTransaction: transactionSchema
23
+ submittedTransaction: transactionWithResultSchema
24
24
  }),
25
25
  z.object({
26
26
  status: z.literal("transaction_failed"),
@@ -28,7 +28,7 @@ var gatedTransactionResultSchema = /* @__PURE__ */ __name((transactionSchema, on
28
28
  }),
29
29
  z.object({
30
30
  status: z.literal("final_check_failed"),
31
- submittedTransaction: transactionSchema,
31
+ submittedTransaction: transactionWithResultSchema,
32
32
  finalOnChainState: onchainDataSchema
33
33
  }),
34
34
  z.object({
@@ -38,11 +38,11 @@ var gatedTransactionResultSchema = /* @__PURE__ */ __name((transactionSchema, on
38
38
  status: z.literal("denied")
39
39
  })
40
40
  ]), "gatedTransactionResultSchema");
41
- var processedGatedTransactionSchema = /* @__PURE__ */ __name(({ transactionSchema, onchainDataSchema, name }) => gatedTransactionSchema({
41
+ var processedGatedTransactionSchema = /* @__PURE__ */ __name(({ transactionSchema, transactionWithResultSchema, onchainDataSchema, name }) => gatedTransactionSchema({
42
42
  transactionSchema,
43
43
  name
44
44
  }).and(z.object({
45
- result: gatedTransactionResultSchema(transactionSchema, onchainDataSchema)
45
+ result: gatedTransactionResultSchema(transactionWithResultSchema, onchainDataSchema)
46
46
  })), "processedGatedTransactionSchema");
47
47
  var GatedTransactionStatus = /* @__PURE__ */ (function(GatedTransactionStatus2) {
48
48
  GatedTransactionStatus2["NO_OP"] = "no_op";
@@ -70,5 +70,5 @@ var gatedTransactionCacheSchema = z.object({
70
70
  });
71
71
 
72
72
  export { GatedTransactionStatus, gatedTransactionCacheSchema, gatedTransactionResultSchema, gatedTransactionSchema, processedGatedTransactionSchema };
73
- //# sourceMappingURL=GMAAYDJ4.js.map
74
- //# sourceMappingURL=GMAAYDJ4.js.map
73
+ //# sourceMappingURL=5HWOSUJL.js.map
74
+ //# sourceMappingURL=5HWOSUJL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types.ts"],"names":["gatedTransactionSchema","transactionSchema","name","z","object","transaction","check","functionPointer","any","params","array","expectedResult","operator","custom","comparisonValue","gatedTransactionResultSchema","transactionWithResultSchema","onchainDataSchema","union","status","literal","submittedTransaction","transactionError","finalOnChainState","processedGatedTransactionSchema","and","result","GatedTransactionStatus","gatedTransactionCacheSchema","getCachedTxCheckData","functionSchema","input","tuple","output","promise","cacheSuccessfulTxCheckData"],"mappings":"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","file":"5HWOSUJL.js","sourcesContent":["import z from 'zod/v4';\n\nimport {\n type Transaction,\n type transactionSchema as _transactionSchema,\n type TransactionWithResult,\n type transactionWithResultSchema as _transactionWithResultSchema,\n} from '@layerzerolabs/common-chain-model';\nimport type { FunctionPointer } from '@layerzerolabs/common-utils';\nimport { 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[]) => any = (...args: any[]) => unknown,\n> = {\n functionPointer: FunctionPointer<Method>;\n params: any[];\n expectedResult: OnChainDataComparison<Awaited<ReturnType<Method>>>;\n};\n\nexport const gatedTransactionSchema = <TransactionSchema extends typeof _transactionSchema>({\n transactionSchema,\n name,\n}: {\n transactionSchema: TransactionSchema;\n name: z.ZodString | z.ZodLiteral<string>;\n}) =>\n z.object({\n name,\n transaction: transactionSchema,\n check: z.object({\n functionPointer: z.any(),\n params: z.array(z.any()),\n expectedResult: z.object({\n operator: z.custom<OnChainDataComparisonOperator<any>>(),\n comparisonValue: z.any(),\n }),\n }),\n });\n\n// Schema for gated transaction results\nexport const gatedTransactionResultSchema = <\n TransactionWithResultSchema extends typeof _transactionWithResultSchema,\n OnchainDataSchema extends z.ZodType,\n>(\n transactionWithResultSchema: TransactionWithResultSchema,\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: transactionWithResultSchema,\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: transactionWithResultSchema,\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\n// Schema for processed gated transactions (with results)\nexport const processedGatedTransactionSchema = <\n TransactionSchema extends typeof _transactionSchema,\n TransactionWithResultSchema extends typeof _transactionWithResultSchema,\n OnchainDataSchema extends z.ZodType,\n>({\n transactionSchema,\n transactionWithResultSchema,\n onchainDataSchema,\n name,\n}: {\n transactionSchema: TransactionSchema;\n transactionWithResultSchema: TransactionWithResultSchema;\n onchainDataSchema: OnchainDataSchema;\n name: z.ZodString | z.ZodLiteral<string>;\n}) =>\n gatedTransactionSchema({\n transactionSchema,\n name,\n }).and(\n z.object({\n result: gatedTransactionResultSchema(transactionWithResultSchema, onchainDataSchema),\n }),\n );\n\ntype GatedTransactionDependencies = GatedTransaction[];\n\nexport type GatedTransaction<\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> = {\n bundleName?: string;\n name: Name;\n transaction: TxType;\n check: GatedTransactionCheck<CheckMethod>;\n cacheable?: boolean;\n uniqueIdKeys?: Record<string, string | number | boolean>;\n dependencies?: Dependencies;\n};\n\nexport type InferOnChainDataTypeFromGatedTransaction<GatedTx extends GatedTransaction> =\n GatedTx extends GatedTransaction<any, any, infer Check> ? Awaited<ReturnType<Check>> : unknown;\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<TxWithResult extends TransactionWithResult> = {\n status: GatedTransactionStatus.SUCCESS;\n submittedTransaction: TxWithResult;\n};\n\ntype TxFailedGatedTransaction = {\n status: GatedTransactionStatus.TRANSACTION_FAILED;\n transactionError: any;\n};\n\ntype CheckFailedGatedTransaction<TxWithResult extends TransactionWithResult, State> = {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED;\n submittedTransaction: TxWithResult;\n finalOnChainState: State;\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 TxWithResult extends TransactionWithResult = TransactionWithResult,\n> =\n | NoOpGatedTransaction\n | SuccessfulGatedTransaction<TxWithResult>\n | TxFailedGatedTransaction\n | CheckFailedGatedTransaction<TxWithResult, InferOnChainDataTypeFromGatedTransaction<GatedTx>>\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 UserInteractionCallbacks = {\n confirmationCallback?: (gtx: GatedTransaction) => Promise<boolean>;\n onResultCallback?: (result: GatedTransaction & { result: GatedTransactionResult }) => void;\n};\n"]}
@@ -20,13 +20,13 @@ var gatedTransactionSchema = /* @__PURE__ */ YJF4D23A_cjs.__name(({ transactionS
20
20
  })
21
21
  })
22
22
  }), "gatedTransactionSchema");
23
- var gatedTransactionResultSchema = /* @__PURE__ */ YJF4D23A_cjs.__name((transactionSchema, onchainDataSchema) => z__default.default.union([
23
+ var gatedTransactionResultSchema = /* @__PURE__ */ YJF4D23A_cjs.__name((transactionWithResultSchema, onchainDataSchema) => z__default.default.union([
24
24
  z__default.default.object({
25
25
  status: z__default.default.literal("no_op")
26
26
  }),
27
27
  z__default.default.object({
28
28
  status: z__default.default.literal("success"),
29
- submittedTransaction: transactionSchema
29
+ submittedTransaction: transactionWithResultSchema
30
30
  }),
31
31
  z__default.default.object({
32
32
  status: z__default.default.literal("transaction_failed"),
@@ -34,7 +34,7 @@ var gatedTransactionResultSchema = /* @__PURE__ */ YJF4D23A_cjs.__name((transact
34
34
  }),
35
35
  z__default.default.object({
36
36
  status: z__default.default.literal("final_check_failed"),
37
- submittedTransaction: transactionSchema,
37
+ submittedTransaction: transactionWithResultSchema,
38
38
  finalOnChainState: onchainDataSchema
39
39
  }),
40
40
  z__default.default.object({
@@ -44,11 +44,11 @@ var gatedTransactionResultSchema = /* @__PURE__ */ YJF4D23A_cjs.__name((transact
44
44
  status: z__default.default.literal("denied")
45
45
  })
46
46
  ]), "gatedTransactionResultSchema");
47
- var processedGatedTransactionSchema = /* @__PURE__ */ YJF4D23A_cjs.__name(({ transactionSchema, onchainDataSchema, name }) => gatedTransactionSchema({
47
+ var processedGatedTransactionSchema = /* @__PURE__ */ YJF4D23A_cjs.__name(({ transactionSchema, transactionWithResultSchema, onchainDataSchema, name }) => gatedTransactionSchema({
48
48
  transactionSchema,
49
49
  name
50
50
  }).and(z__default.default.object({
51
- result: gatedTransactionResultSchema(transactionSchema, onchainDataSchema)
51
+ result: gatedTransactionResultSchema(transactionWithResultSchema, onchainDataSchema)
52
52
  })), "processedGatedTransactionSchema");
53
53
  var GatedTransactionStatus = /* @__PURE__ */ (function(GatedTransactionStatus2) {
54
54
  GatedTransactionStatus2["NO_OP"] = "no_op";
@@ -80,5 +80,5 @@ exports.gatedTransactionCacheSchema = gatedTransactionCacheSchema;
80
80
  exports.gatedTransactionResultSchema = gatedTransactionResultSchema;
81
81
  exports.gatedTransactionSchema = gatedTransactionSchema;
82
82
  exports.processedGatedTransactionSchema = processedGatedTransactionSchema;
83
- //# sourceMappingURL=6NWNACVT.cjs.map
84
- //# sourceMappingURL=6NWNACVT.cjs.map
83
+ //# sourceMappingURL=G6VJTMIX.cjs.map
84
+ //# sourceMappingURL=G6VJTMIX.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types.ts"],"names":["gatedTransactionSchema","__name","transactionSchema","name","z","object","transaction","check","functionPointer","any","params","array","expectedResult","operator","custom","comparisonValue","gatedTransactionResultSchema","transactionWithResultSchema","onchainDataSchema","union","status","literal","submittedTransaction","transactionError","finalOnChainState","processedGatedTransactionSchema","and","result","GatedTransactionStatus","gatedTransactionCacheSchema","getCachedTxCheckData","functionSchema","input","tuple","output","promise","cacheSuccessfulTxCheckData"],"mappings":"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","file":"G6VJTMIX.cjs","sourcesContent":["import z from 'zod/v4';\n\nimport {\n type Transaction,\n type transactionSchema as _transactionSchema,\n type TransactionWithResult,\n type transactionWithResultSchema as _transactionWithResultSchema,\n} from '@layerzerolabs/common-chain-model';\nimport type { FunctionPointer } from '@layerzerolabs/common-utils';\nimport { 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[]) => any = (...args: any[]) => unknown,\n> = {\n functionPointer: FunctionPointer<Method>;\n params: any[];\n expectedResult: OnChainDataComparison<Awaited<ReturnType<Method>>>;\n};\n\nexport const gatedTransactionSchema = <TransactionSchema extends typeof _transactionSchema>({\n transactionSchema,\n name,\n}: {\n transactionSchema: TransactionSchema;\n name: z.ZodString | z.ZodLiteral<string>;\n}) =>\n z.object({\n name,\n transaction: transactionSchema,\n check: z.object({\n functionPointer: z.any(),\n params: z.array(z.any()),\n expectedResult: z.object({\n operator: z.custom<OnChainDataComparisonOperator<any>>(),\n comparisonValue: z.any(),\n }),\n }),\n });\n\n// Schema for gated transaction results\nexport const gatedTransactionResultSchema = <\n TransactionWithResultSchema extends typeof _transactionWithResultSchema,\n OnchainDataSchema extends z.ZodType,\n>(\n transactionWithResultSchema: TransactionWithResultSchema,\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: transactionWithResultSchema,\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: transactionWithResultSchema,\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\n// Schema for processed gated transactions (with results)\nexport const processedGatedTransactionSchema = <\n TransactionSchema extends typeof _transactionSchema,\n TransactionWithResultSchema extends typeof _transactionWithResultSchema,\n OnchainDataSchema extends z.ZodType,\n>({\n transactionSchema,\n transactionWithResultSchema,\n onchainDataSchema,\n name,\n}: {\n transactionSchema: TransactionSchema;\n transactionWithResultSchema: TransactionWithResultSchema;\n onchainDataSchema: OnchainDataSchema;\n name: z.ZodString | z.ZodLiteral<string>;\n}) =>\n gatedTransactionSchema({\n transactionSchema,\n name,\n }).and(\n z.object({\n result: gatedTransactionResultSchema(transactionWithResultSchema, onchainDataSchema),\n }),\n );\n\ntype GatedTransactionDependencies = GatedTransaction[];\n\nexport type GatedTransaction<\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> = {\n bundleName?: string;\n name: Name;\n transaction: TxType;\n check: GatedTransactionCheck<CheckMethod>;\n cacheable?: boolean;\n uniqueIdKeys?: Record<string, string | number | boolean>;\n dependencies?: Dependencies;\n};\n\nexport type InferOnChainDataTypeFromGatedTransaction<GatedTx extends GatedTransaction> =\n GatedTx extends GatedTransaction<any, any, infer Check> ? Awaited<ReturnType<Check>> : unknown;\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<TxWithResult extends TransactionWithResult> = {\n status: GatedTransactionStatus.SUCCESS;\n submittedTransaction: TxWithResult;\n};\n\ntype TxFailedGatedTransaction = {\n status: GatedTransactionStatus.TRANSACTION_FAILED;\n transactionError: any;\n};\n\ntype CheckFailedGatedTransaction<TxWithResult extends TransactionWithResult, State> = {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED;\n submittedTransaction: TxWithResult;\n finalOnChainState: State;\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 TxWithResult extends TransactionWithResult = TransactionWithResult,\n> =\n | NoOpGatedTransaction\n | SuccessfulGatedTransaction<TxWithResult>\n | TxFailedGatedTransaction\n | CheckFailedGatedTransaction<TxWithResult, InferOnChainDataTypeFromGatedTransaction<GatedTx>>\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 UserInteractionCallbacks = {\n confirmationCallback?: (gtx: GatedTransaction) => Promise<boolean>;\n onResultCallback?: (result: GatedTransaction & { result: GatedTransactionResult }) => void;\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  import { getIdForGatedTransaction } from './5INFRBMB.js';
2
- import { GatedTransactionStatus } from './GMAAYDJ4.js';
2
+ import { GatedTransactionStatus } from './5HWOSUJL.js';
3
3
  import { __name } from './VUOMXK5T.js';
4
4
  import isEqual from 'lodash.isequal';
5
5
 
@@ -82,11 +82,14 @@ var resolveGatedTransaction = /* @__PURE__ */ __name(async ({ activityRegistry,
82
82
  };
83
83
  }
84
84
  try {
85
- const processed = await processTx(gatedTx.transaction);
85
+ const processResult = await processTx(gatedTx.transaction);
86
86
  const finalCheckResult = await checkGatedTransaction({
87
87
  registry: activityRegistry,
88
88
  gatedTransaction: gatedTx,
89
- processedTransaction: processed
89
+ processedTransaction: {
90
+ ...gatedTx.transaction,
91
+ result: processResult
92
+ }
90
93
  });
91
94
  await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);
92
95
  if (finalCheckResult.expectationMet) {
@@ -94,7 +97,10 @@ var resolveGatedTransaction = /* @__PURE__ */ __name(async ({ activityRegistry,
94
97
  ...gatedTx,
95
98
  result: {
96
99
  status: GatedTransactionStatus.SUCCESS,
97
- submittedTransaction: processed
100
+ submittedTransaction: {
101
+ ...gatedTx.transaction,
102
+ result: processResult
103
+ }
98
104
  }
99
105
  };
100
106
  } else {
@@ -106,7 +112,10 @@ ${stringify(finalCheckResult.onChainData)}`);
106
112
  ...gatedTx,
107
113
  result: {
108
114
  status: GatedTransactionStatus.FINAL_CHECK_FAILED,
109
- submittedTransaction: processed,
115
+ submittedTransaction: {
116
+ ...gatedTx.transaction,
117
+ result: processResult
118
+ },
110
119
  finalOnChainState: finalCheckResult.onChainData
111
120
  }
112
121
  };
@@ -174,5 +183,5 @@ var resolveSequencedGatedTransactions = /* @__PURE__ */ __name(async ({ activity
174
183
  }, "resolveSequencedGatedTransactions");
175
184
 
176
185
  export { resolveGatedTransactions, resolveSequencedGatedTransactions };
177
- //# sourceMappingURL=CG43CWKE.js.map
178
- //# sourceMappingURL=CG43CWKE.js.map
186
+ //# sourceMappingURL=SSSLF3RI.js.map
187
+ //# sourceMappingURL=SSSLF3RI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resolver.ts"],"names":["checkGatedTransaction","registry","gatedTransaction","cachedCheckResult","processedTransaction","onChainData","undefined","params","check","callByPointer","functionPointer","expectationMet","expectedResult","operator","isEqual","comparisonValue","Error","resolveGatedTransaction","activityRegistry","gatedTx","isTransactionSuccessful","processTx","confirmationCallback","fn","cache","dependencyIds","dependencies","map","tx","getIdForGatedTransaction","dependenciesAreAllProcessed","every","id","condition","dependenciesWereSuccessful","result","status","GatedTransactionStatus","DEPENDENCY_FAILED","initialCheckResult","getCachedTxCheckData","cacheSuccessfulTxCheckData","NO_OP","confirmation","DENIED","processResult","transaction","finalCheckResult","SUCCESS","submittedTransaction","stringify","o","JSON","_","v","toString","console","error","name","FINAL_CHECK_FAILED","finalOnChainState","e","TRANSACTION_FAILED","transactionError","resolveGatedTransactions","gatedTxes","userInteractionCallbacks","allInternalIds","allDeps","flatMap","allExternalDeps","filter","includes","results","Object","fromEntries","Promise","all","checkResult","gtxId","txFunctions","res","resId","onResultCallback","func","resolveSequencedGatedTransactions","seq","push"],"mappings":"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","file":"SSSLF3RI.js","sourcesContent":["import isEqual from 'lodash.isequal';\n\nimport type { ActivityRegistry } from '@layerzerolabs/common-activities';\nimport type { Transaction, TransactionResult } from '@layerzerolabs/common-chain-model';\nimport type { WorkflowFunctions } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n GatedTransaction,\n GatedTransactionId,\n GatedTransactionResult,\n IGatedTransactionCache,\n InferOnChainDataTypeFromGatedTransaction,\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 <GatedTx extends GatedTransaction>({\n registry,\n gatedTransaction,\n cachedCheckResult,\n processedTransaction,\n}: {\n registry: ActivityRegistry;\n gatedTransaction: GatedTx;\n cachedCheckResult?: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n processedTransaction?: any;\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 (processedTransaction !== undefined) {\n params = [...gatedTransaction.check.params, processedTransaction];\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 resolveGatedTransaction = async <\n TxType extends Transaction,\n TxResult extends TransactionResult,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TxResult>,\n>({\n activityRegistry,\n gatedTx,\n isTransactionSuccessful,\n processTx,\n confirmationCallback,\n fn,\n cache,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTx: GatedTx;\n processTx: ProcessTx;\n isTransactionSuccessful: (gtxId: GatedTransactionId) => boolean | undefined;\n confirmationCallback: NonNullable<UserInteractionCallbacks['confirmationCallback']>;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n}): Promise<\n GatedTx & { result: GatedTransactionResult<GatedTx, TxType & { result: TxResult }> }\n> => {\n const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => getIdForGatedTransaction(tx));\n\n const dependenciesAreAllProcessed = () =>\n dependencyIds.every((id) => isTransactionSuccessful(id) != null);\n\n await fn.condition(dependenciesAreAllProcessed);\n\n //check that the dependencies succeeded\n const dependenciesWereSuccessful = dependencyIds.every((id) => isTransactionSuccessful(id));\n\n if (!dependenciesWereSuccessful) {\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.DEPENDENCY_FAILED,\n },\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 ...gatedTx,\n result: {\n status: GatedTransactionStatus.NO_OP,\n },\n };\n }\n\n //get confirmation before sending\n const confirmation = await confirmationCallback(gatedTx);\n if (!confirmation) {\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.DENIED,\n },\n };\n }\n\n //send the tx\n try {\n const processResult = await processTx(gatedTx.transaction);\n const finalCheckResult = await checkGatedTransaction({\n registry: activityRegistry,\n gatedTransaction: gatedTx,\n processedTransaction: { ...gatedTx.transaction, result: processResult },\n });\n\n await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);\n\n if (finalCheckResult.expectationMet) {\n //sent and successful\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.SUCCESS,\n submittedTransaction: { ...gatedTx.transaction, result: processResult },\n },\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 ...gatedTx,\n result: {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED,\n submittedTransaction: { ...gatedTx.transaction, result: processResult },\n finalOnChainState: finalCheckResult.onChainData,\n },\n };\n }\n } catch (e) {\n //sent and failed\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.TRANSACTION_FAILED,\n transactionError: e,\n },\n };\n }\n};\n\nexport const resolveGatedTransactions = async <\n TxType extends Transaction,\n TxResult extends TransactionResult,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TxResult>,\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<(GatedTx & { result: GatedTransactionResult })[]> => {\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 //map id -> was successful\n const results: Record<GatedTransactionId, boolean> = 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 [getIdForGatedTransaction(tx), checkResult.expectationMet];\n }),\n ),\n );\n\n const isTransactionSuccessful = (gtxId: GatedTransactionId) => results[gtxId];\n\n const txFunctions = gatedTxes.map((tx) => async () => {\n const res = await resolveGatedTransaction<TxType, TxResult, GatedTx, ProcessTx>({\n gatedTx: tx,\n activityRegistry,\n isTransactionSuccessful,\n processTx,\n confirmationCallback:\n userInteractionCallbacks?.confirmationCallback ?? (async () => true),\n fn,\n cache,\n });\n\n const resId = getIdForGatedTransaction(res);\n results[resId] = [GatedTransactionStatus.SUCCESS, GatedTransactionStatus.NO_OP].includes(\n res.result.status,\n );\n\n userInteractionCallbacks?.onResultCallback?.(res);\n return res;\n });\n\n return await Promise.all(txFunctions.map((func) => func()));\n};\n\nexport const resolveSequencedGatedTransactions = async <\n TxType extends Transaction,\n TxResult extends TransactionResult,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TxResult>,\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, TxResult, GatedTx, ProcessTx>({\n gatedTxes: seq,\n activityRegistry,\n processTx,\n cache,\n userInteractionCallbacks,\n fn,\n });\n results.push(result);\n }\n\n return results;\n};\n"]}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var AYIRG6WY_cjs = require('./AYIRG6WY.cjs');
4
- var _6NWNACVT_cjs = require('./6NWNACVT.cjs');
4
+ var G6VJTMIX_cjs = require('./G6VJTMIX.cjs');
5
5
  var YJF4D23A_cjs = require('./YJF4D23A.cjs');
6
6
  var isEqual = require('lodash.isequal');
7
7
 
@@ -60,7 +60,7 @@ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activ
60
60
  return {
61
61
  ...gatedTx,
62
62
  result: {
63
- status: _6NWNACVT_cjs.GatedTransactionStatus.DEPENDENCY_FAILED
63
+ status: G6VJTMIX_cjs.GatedTransactionStatus.DEPENDENCY_FAILED
64
64
  }
65
65
  };
66
66
  }
@@ -74,7 +74,7 @@ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activ
74
74
  return {
75
75
  ...gatedTx,
76
76
  result: {
77
- status: _6NWNACVT_cjs.GatedTransactionStatus.NO_OP
77
+ status: G6VJTMIX_cjs.GatedTransactionStatus.NO_OP
78
78
  }
79
79
  };
80
80
  }
@@ -83,24 +83,30 @@ var resolveGatedTransaction = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ activ
83
83
  return {
84
84
  ...gatedTx,
85
85
  result: {
86
- status: _6NWNACVT_cjs.GatedTransactionStatus.DENIED
86
+ status: G6VJTMIX_cjs.GatedTransactionStatus.DENIED
87
87
  }
88
88
  };
89
89
  }
90
90
  try {
91
- const processed = await processTx(gatedTx.transaction);
91
+ const processResult = await processTx(gatedTx.transaction);
92
92
  const finalCheckResult = await checkGatedTransaction({
93
93
  registry: activityRegistry,
94
94
  gatedTransaction: gatedTx,
95
- processedTransaction: processed
95
+ processedTransaction: {
96
+ ...gatedTx.transaction,
97
+ result: processResult
98
+ }
96
99
  });
97
100
  await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);
98
101
  if (finalCheckResult.expectationMet) {
99
102
  return {
100
103
  ...gatedTx,
101
104
  result: {
102
- status: _6NWNACVT_cjs.GatedTransactionStatus.SUCCESS,
103
- submittedTransaction: processed
105
+ status: G6VJTMIX_cjs.GatedTransactionStatus.SUCCESS,
106
+ submittedTransaction: {
107
+ ...gatedTx.transaction,
108
+ result: processResult
109
+ }
104
110
  }
105
111
  };
106
112
  } else {
@@ -111,8 +117,11 @@ ${stringify(finalCheckResult.onChainData)}`);
111
117
  return {
112
118
  ...gatedTx,
113
119
  result: {
114
- status: _6NWNACVT_cjs.GatedTransactionStatus.FINAL_CHECK_FAILED,
115
- submittedTransaction: processed,
120
+ status: G6VJTMIX_cjs.GatedTransactionStatus.FINAL_CHECK_FAILED,
121
+ submittedTransaction: {
122
+ ...gatedTx.transaction,
123
+ result: processResult
124
+ },
116
125
  finalOnChainState: finalCheckResult.onChainData
117
126
  }
118
127
  };
@@ -121,7 +130,7 @@ ${stringify(finalCheckResult.onChainData)}`);
121
130
  return {
122
131
  ...gatedTx,
123
132
  result: {
124
- status: _6NWNACVT_cjs.GatedTransactionStatus.TRANSACTION_FAILED,
133
+ status: G6VJTMIX_cjs.GatedTransactionStatus.TRANSACTION_FAILED,
125
134
  transactionError: e
126
135
  }
127
136
  };
@@ -155,8 +164,8 @@ var resolveGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(async ({ acti
155
164
  });
156
165
  const resId = AYIRG6WY_cjs.getIdForGatedTransaction(res);
157
166
  results[resId] = [
158
- _6NWNACVT_cjs.GatedTransactionStatus.SUCCESS,
159
- _6NWNACVT_cjs.GatedTransactionStatus.NO_OP
167
+ G6VJTMIX_cjs.GatedTransactionStatus.SUCCESS,
168
+ G6VJTMIX_cjs.GatedTransactionStatus.NO_OP
160
169
  ].includes(res.result.status);
161
170
  userInteractionCallbacks?.onResultCallback?.(res);
162
171
  return res;
@@ -181,5 +190,5 @@ var resolveSequencedGatedTransactions = /* @__PURE__ */ YJF4D23A_cjs.__name(asyn
181
190
 
182
191
  exports.resolveGatedTransactions = resolveGatedTransactions;
183
192
  exports.resolveSequencedGatedTransactions = resolveSequencedGatedTransactions;
184
- //# sourceMappingURL=XYULD3ZM.cjs.map
185
- //# sourceMappingURL=XYULD3ZM.cjs.map
193
+ //# sourceMappingURL=VKTX7ABN.cjs.map
194
+ //# sourceMappingURL=VKTX7ABN.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resolver.ts"],"names":["checkGatedTransaction","__name","registry","gatedTransaction","cachedCheckResult","processedTransaction","onChainData","undefined","params","check","callByPointer","functionPointer","expectationMet","expectedResult","operator","isEqual","comparisonValue","Error","resolveGatedTransaction","activityRegistry","gatedTx","isTransactionSuccessful","processTx","confirmationCallback","fn","cache","dependencyIds","dependencies","map","tx","getIdForGatedTransaction","dependenciesAreAllProcessed","every","id","condition","dependenciesWereSuccessful","result","status","GatedTransactionStatus","DEPENDENCY_FAILED","initialCheckResult","getCachedTxCheckData","cacheSuccessfulTxCheckData","NO_OP","confirmation","DENIED","processResult","transaction","finalCheckResult","SUCCESS","submittedTransaction","stringify","o","JSON","_","v","toString","console","error","name","FINAL_CHECK_FAILED","finalOnChainState","e","TRANSACTION_FAILED","transactionError","resolveGatedTransactions","gatedTxes","userInteractionCallbacks","allInternalIds","allDeps","flatMap","allExternalDeps","filter","includes","results","Object","fromEntries","Promise","all","checkResult","gtxId","txFunctions","res","resId","onResultCallback","func","resolveSequencedGatedTransactions","seq","push"],"mappings":"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","file":"VKTX7ABN.cjs","sourcesContent":["import isEqual from 'lodash.isequal';\n\nimport type { ActivityRegistry } from '@layerzerolabs/common-activities';\nimport type { Transaction, TransactionResult } from '@layerzerolabs/common-chain-model';\nimport type { WorkflowFunctions } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n GatedTransaction,\n GatedTransactionId,\n GatedTransactionResult,\n IGatedTransactionCache,\n InferOnChainDataTypeFromGatedTransaction,\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 <GatedTx extends GatedTransaction>({\n registry,\n gatedTransaction,\n cachedCheckResult,\n processedTransaction,\n}: {\n registry: ActivityRegistry;\n gatedTransaction: GatedTx;\n cachedCheckResult?: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n processedTransaction?: any;\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 (processedTransaction !== undefined) {\n params = [...gatedTransaction.check.params, processedTransaction];\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 resolveGatedTransaction = async <\n TxType extends Transaction,\n TxResult extends TransactionResult,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TxResult>,\n>({\n activityRegistry,\n gatedTx,\n isTransactionSuccessful,\n processTx,\n confirmationCallback,\n fn,\n cache,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTx: GatedTx;\n processTx: ProcessTx;\n isTransactionSuccessful: (gtxId: GatedTransactionId) => boolean | undefined;\n confirmationCallback: NonNullable<UserInteractionCallbacks['confirmationCallback']>;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n}): Promise<\n GatedTx & { result: GatedTransactionResult<GatedTx, TxType & { result: TxResult }> }\n> => {\n const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => getIdForGatedTransaction(tx));\n\n const dependenciesAreAllProcessed = () =>\n dependencyIds.every((id) => isTransactionSuccessful(id) != null);\n\n await fn.condition(dependenciesAreAllProcessed);\n\n //check that the dependencies succeeded\n const dependenciesWereSuccessful = dependencyIds.every((id) => isTransactionSuccessful(id));\n\n if (!dependenciesWereSuccessful) {\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.DEPENDENCY_FAILED,\n },\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 ...gatedTx,\n result: {\n status: GatedTransactionStatus.NO_OP,\n },\n };\n }\n\n //get confirmation before sending\n const confirmation = await confirmationCallback(gatedTx);\n if (!confirmation) {\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.DENIED,\n },\n };\n }\n\n //send the tx\n try {\n const processResult = await processTx(gatedTx.transaction);\n const finalCheckResult = await checkGatedTransaction({\n registry: activityRegistry,\n gatedTransaction: gatedTx,\n processedTransaction: { ...gatedTx.transaction, result: processResult },\n });\n\n await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);\n\n if (finalCheckResult.expectationMet) {\n //sent and successful\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.SUCCESS,\n submittedTransaction: { ...gatedTx.transaction, result: processResult },\n },\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 ...gatedTx,\n result: {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED,\n submittedTransaction: { ...gatedTx.transaction, result: processResult },\n finalOnChainState: finalCheckResult.onChainData,\n },\n };\n }\n } catch (e) {\n //sent and failed\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.TRANSACTION_FAILED,\n transactionError: e,\n },\n };\n }\n};\n\nexport const resolveGatedTransactions = async <\n TxType extends Transaction,\n TxResult extends TransactionResult,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TxResult>,\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<(GatedTx & { result: GatedTransactionResult })[]> => {\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 //map id -> was successful\n const results: Record<GatedTransactionId, boolean> = 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 [getIdForGatedTransaction(tx), checkResult.expectationMet];\n }),\n ),\n );\n\n const isTransactionSuccessful = (gtxId: GatedTransactionId) => results[gtxId];\n\n const txFunctions = gatedTxes.map((tx) => async () => {\n const res = await resolveGatedTransaction<TxType, TxResult, GatedTx, ProcessTx>({\n gatedTx: tx,\n activityRegistry,\n isTransactionSuccessful,\n processTx,\n confirmationCallback:\n userInteractionCallbacks?.confirmationCallback ?? (async () => true),\n fn,\n cache,\n });\n\n const resId = getIdForGatedTransaction(res);\n results[resId] = [GatedTransactionStatus.SUCCESS, GatedTransactionStatus.NO_OP].includes(\n res.result.status,\n );\n\n userInteractionCallbacks?.onResultCallback?.(res);\n return res;\n });\n\n return await Promise.all(txFunctions.map((func) => func()));\n};\n\nexport const resolveSequencedGatedTransactions = async <\n TxType extends Transaction,\n TxResult extends TransactionResult,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<TxResult>,\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, TxResult, GatedTx, ProcessTx>({\n gatedTxes: seq,\n activityRegistry,\n processTx,\n cache,\n userInteractionCallbacks,\n fn,\n });\n results.push(result);\n }\n\n return results;\n};\n"]}
package/dist/index.cjs CHANGED
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
3
  var QGZD4SJ4_cjs = require('./QGZD4SJ4.cjs');
4
- var XYULD3ZM_cjs = require('./XYULD3ZM.cjs');
4
+ var VKTX7ABN_cjs = require('./VKTX7ABN.cjs');
5
5
  var AYIRG6WY_cjs = require('./AYIRG6WY.cjs');
6
- var _6NWNACVT_cjs = require('./6NWNACVT.cjs');
6
+ var G6VJTMIX_cjs = require('./G6VJTMIX.cjs');
7
7
  require('./YJF4D23A.cjs');
8
8
 
9
9
 
@@ -22,11 +22,11 @@ Object.defineProperty(exports, "useGatedTransactionSignalLock", {
22
22
  });
23
23
  Object.defineProperty(exports, "resolveGatedTransactions", {
24
24
  enumerable: true,
25
- get: function () { return XYULD3ZM_cjs.resolveGatedTransactions; }
25
+ get: function () { return VKTX7ABN_cjs.resolveGatedTransactions; }
26
26
  });
27
27
  Object.defineProperty(exports, "resolveSequencedGatedTransactions", {
28
28
  enumerable: true,
29
- get: function () { return XYULD3ZM_cjs.resolveSequencedGatedTransactions; }
29
+ get: function () { return VKTX7ABN_cjs.resolveSequencedGatedTransactions; }
30
30
  });
31
31
  Object.defineProperty(exports, "constructGatedTransaction", {
32
32
  enumerable: true,
@@ -38,23 +38,23 @@ Object.defineProperty(exports, "getIdForGatedTransaction", {
38
38
  });
39
39
  Object.defineProperty(exports, "GatedTransactionStatus", {
40
40
  enumerable: true,
41
- get: function () { return _6NWNACVT_cjs.GatedTransactionStatus; }
41
+ get: function () { return G6VJTMIX_cjs.GatedTransactionStatus; }
42
42
  });
43
43
  Object.defineProperty(exports, "gatedTransactionCacheSchema", {
44
44
  enumerable: true,
45
- get: function () { return _6NWNACVT_cjs.gatedTransactionCacheSchema; }
45
+ get: function () { return G6VJTMIX_cjs.gatedTransactionCacheSchema; }
46
46
  });
47
47
  Object.defineProperty(exports, "gatedTransactionResultSchema", {
48
48
  enumerable: true,
49
- get: function () { return _6NWNACVT_cjs.gatedTransactionResultSchema; }
49
+ get: function () { return G6VJTMIX_cjs.gatedTransactionResultSchema; }
50
50
  });
51
51
  Object.defineProperty(exports, "gatedTransactionSchema", {
52
52
  enumerable: true,
53
- get: function () { return _6NWNACVT_cjs.gatedTransactionSchema; }
53
+ get: function () { return G6VJTMIX_cjs.gatedTransactionSchema; }
54
54
  });
55
55
  Object.defineProperty(exports, "processedGatedTransactionSchema", {
56
56
  enumerable: true,
57
- get: function () { return _6NWNACVT_cjs.processedGatedTransactionSchema; }
57
+ get: function () { return G6VJTMIX_cjs.processedGatedTransactionSchema; }
58
58
  });
59
59
  //# sourceMappingURL=index.cjs.map
60
60
  //# sourceMappingURL=index.cjs.map
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export { gatedTransactionGoSignal, queryGatedTransactions, useGatedTransactionSignalLock } from './DBJG544E.js';
2
- export { resolveGatedTransactions, resolveSequencedGatedTransactions } from './CG43CWKE.js';
2
+ export { resolveGatedTransactions, resolveSequencedGatedTransactions } from './SSSLF3RI.js';
3
3
  export { constructGatedTransaction, getIdForGatedTransaction } from './5INFRBMB.js';
4
- export { GatedTransactionStatus, gatedTransactionCacheSchema, gatedTransactionResultSchema, gatedTransactionSchema, processedGatedTransactionSchema } from './GMAAYDJ4.js';
4
+ export { GatedTransactionStatus, gatedTransactionCacheSchema, gatedTransactionResultSchema, gatedTransactionSchema, processedGatedTransactionSchema } from './5HWOSUJL.js';
5
5
  import './VUOMXK5T.js';
6
6
  //# sourceMappingURL=index.js.map
7
7
  //# sourceMappingURL=index.js.map
package/dist/resolver.cjs CHANGED
@@ -1,19 +1,19 @@
1
1
  'use strict';
2
2
 
3
- var XYULD3ZM_cjs = require('./XYULD3ZM.cjs');
3
+ var VKTX7ABN_cjs = require('./VKTX7ABN.cjs');
4
4
  require('./AYIRG6WY.cjs');
5
- require('./6NWNACVT.cjs');
5
+ require('./G6VJTMIX.cjs');
6
6
  require('./YJF4D23A.cjs');
7
7
 
8
8
 
9
9
 
10
10
  Object.defineProperty(exports, "resolveGatedTransactions", {
11
11
  enumerable: true,
12
- get: function () { return XYULD3ZM_cjs.resolveGatedTransactions; }
12
+ get: function () { return VKTX7ABN_cjs.resolveGatedTransactions; }
13
13
  });
14
14
  Object.defineProperty(exports, "resolveSequencedGatedTransactions", {
15
15
  enumerable: true,
16
- get: function () { return XYULD3ZM_cjs.resolveSequencedGatedTransactions; }
16
+ get: function () { return VKTX7ABN_cjs.resolveSequencedGatedTransactions; }
17
17
  });
18
18
  //# sourceMappingURL=resolver.cjs.map
19
19
  //# sourceMappingURL=resolver.cjs.map
@@ -1,8 +1,8 @@
1
1
  import type { ActivityRegistry } from '@layerzerolabs/common-activities';
2
- import type { Transaction } from '@layerzerolabs/common-chain-model';
2
+ import type { Transaction, TransactionResult } from '@layerzerolabs/common-chain-model';
3
3
  import type { WorkflowFunctions } from '@layerzerolabs/common-workflow';
4
4
  import type { GatedTransaction, GatedTransactionResult, IGatedTransactionCache, UserInteractionCallbacks } from './types';
5
- export declare const resolveGatedTransactions: <TxType extends Transaction, ProcessedTxType extends Transaction, GatedTx extends GatedTransaction<string, TxType, any>, ProcessTx extends (transaction: TxType) => Promise<ProcessedTxType>>({ activityRegistry, gatedTxes, processTx, fn, cache, userInteractionCallbacks, }: {
5
+ export declare const resolveGatedTransactions: <TxType extends Transaction, TxResult extends TransactionResult, GatedTx extends GatedTransaction<string, TxType, any>, ProcessTx extends (transaction: TxType) => Promise<TxResult>>({ activityRegistry, gatedTxes, processTx, fn, cache, userInteractionCallbacks, }: {
6
6
  activityRegistry: ActivityRegistry;
7
7
  gatedTxes: GatedTx[];
8
8
  processTx: ProcessTx;
@@ -12,7 +12,7 @@ export declare const resolveGatedTransactions: <TxType extends Transaction, Proc
12
12
  }) => Promise<(GatedTx & {
13
13
  result: GatedTransactionResult;
14
14
  })[]>;
15
- export declare const resolveSequencedGatedTransactions: <TxType extends Transaction, ProcessedTxType extends Transaction, GatedTx extends GatedTransaction<string, TxType, any>, ProcessTx extends (transaction: TxType) => Promise<ProcessedTxType>>({ activityRegistry, gatedTxes, processTx, cache, userInteractionCallbacks, fn, }: {
15
+ export declare const resolveSequencedGatedTransactions: <TxType extends Transaction, TxResult extends TransactionResult, GatedTx extends GatedTransaction<string, TxType, any>, ProcessTx extends (transaction: TxType) => Promise<TxResult>>({ activityRegistry, gatedTxes, processTx, cache, userInteractionCallbacks, fn, }: {
16
16
  activityRegistry: ActivityRegistry;
17
17
  gatedTxes: GatedTx[][];
18
18
  processTx: ProcessTx;
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,OAAO,KAAK,EACR,gBAAgB,EAEhB,sBAAsB,EACtB,sBAAsB,EAEtB,wBAAwB,EAC3B,MAAM,SAAS,CAAC;AAqMjB,eAAO,MAAM,wBAAwB,GACjC,MAAM,SAAS,WAAW,EAC1B,eAAe,SAAS,WAAW,EACnC,OAAO,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrD,SAAS,SAAS,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,EACrE,kFAOC;IACC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,EAAE,EAAE,iBAAiB,CAAC;IACtB,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAC/B,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;CACvD,KAAG,OAAO,CAAC,CAAC,OAAO,GAAG;IAAE,MAAM,EAAE,sBAAsB,CAAA;CAAE,CAAC,EAAE,CAiD3D,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC1C,MAAM,SAAS,WAAW,EAC1B,eAAe,SAAS,WAAW,EACnC,OAAO,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrD,SAAS,SAAS,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,EACrE,kFAOC;IACC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,EAAE,EAAE,iBAAiB,CAAC;IACtB,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAC/B,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;CACvD;YAtEgC,sBAAsB;OAqFtD,CAAC"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,OAAO,KAAK,EACR,gBAAgB,EAEhB,sBAAsB,EACtB,sBAAsB,EAEtB,wBAAwB,EAC3B,MAAM,SAAS,CAAC;AAuMjB,eAAO,MAAM,wBAAwB,GACjC,MAAM,SAAS,WAAW,EAC1B,QAAQ,SAAS,iBAAiB,EAClC,OAAO,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrD,SAAS,SAAS,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,EAC9D,kFAOC;IACC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,EAAE,EAAE,iBAAiB,CAAC;IACtB,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAC/B,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;CACvD,KAAG,OAAO,CAAC,CAAC,OAAO,GAAG;IAAE,MAAM,EAAE,sBAAsB,CAAA;CAAE,CAAC,EAAE,CAiD3D,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC1C,MAAM,SAAS,WAAW,EAC1B,QAAQ,SAAS,iBAAiB,EAClC,OAAO,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EACrD,SAAS,SAAS,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,EAC9D,kFAOC;IACC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,EAAE,EAAE,iBAAiB,CAAC;IACtB,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAC/B,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;CACvD;YAtEgC,sBAAsB;OAqFtD,CAAC"}
package/dist/resolver.js CHANGED
@@ -1,6 +1,6 @@
1
- export { resolveGatedTransactions, resolveSequencedGatedTransactions } from './CG43CWKE.js';
1
+ export { resolveGatedTransactions, resolveSequencedGatedTransactions } from './SSSLF3RI.js';
2
2
  import './5INFRBMB.js';
3
- import './GMAAYDJ4.js';
3
+ import './5HWOSUJL.js';
4
4
  import './VUOMXK5T.js';
5
5
  //# sourceMappingURL=resolver.js.map
6
6
  //# sourceMappingURL=resolver.js.map
package/dist/types.cjs CHANGED
@@ -1,29 +1,29 @@
1
1
  'use strict';
2
2
 
3
- var _6NWNACVT_cjs = require('./6NWNACVT.cjs');
3
+ var G6VJTMIX_cjs = require('./G6VJTMIX.cjs');
4
4
  require('./YJF4D23A.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "GatedTransactionStatus", {
9
9
  enumerable: true,
10
- get: function () { return _6NWNACVT_cjs.GatedTransactionStatus; }
10
+ get: function () { return G6VJTMIX_cjs.GatedTransactionStatus; }
11
11
  });
12
12
  Object.defineProperty(exports, "gatedTransactionCacheSchema", {
13
13
  enumerable: true,
14
- get: function () { return _6NWNACVT_cjs.gatedTransactionCacheSchema; }
14
+ get: function () { return G6VJTMIX_cjs.gatedTransactionCacheSchema; }
15
15
  });
16
16
  Object.defineProperty(exports, "gatedTransactionResultSchema", {
17
17
  enumerable: true,
18
- get: function () { return _6NWNACVT_cjs.gatedTransactionResultSchema; }
18
+ get: function () { return G6VJTMIX_cjs.gatedTransactionResultSchema; }
19
19
  });
20
20
  Object.defineProperty(exports, "gatedTransactionSchema", {
21
21
  enumerable: true,
22
- get: function () { return _6NWNACVT_cjs.gatedTransactionSchema; }
22
+ get: function () { return G6VJTMIX_cjs.gatedTransactionSchema; }
23
23
  });
24
24
  Object.defineProperty(exports, "processedGatedTransactionSchema", {
25
25
  enumerable: true,
26
- get: function () { return _6NWNACVT_cjs.processedGatedTransactionSchema; }
26
+ get: function () { return G6VJTMIX_cjs.processedGatedTransactionSchema; }
27
27
  });
28
28
  //# sourceMappingURL=types.cjs.map
29
29
  //# sourceMappingURL=types.cjs.map
package/dist/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import z from 'zod/v4';
2
- import type { Transaction, transactionSchema as _transactionSchema } from '@layerzerolabs/common-chain-model';
2
+ import { type Transaction, type transactionSchema as _transactionSchema, type TransactionWithResult, type transactionWithResultSchema as _transactionWithResultSchema } from '@layerzerolabs/common-chain-model';
3
3
  import type { FunctionPointer } from '@layerzerolabs/common-utils';
4
4
  export type OnChainDataComparisonOperator<OnChainDataType> = OnChainDataType extends number ? '<' | '<=' | '=' | '!=' | '>' | '>=' : '=' | '!=';
5
5
  export type OnChainDataComparison<OnChainDataType> = {
@@ -26,25 +26,26 @@ export declare const gatedTransactionSchema: <TransactionSchema extends typeof _
26
26
  }, z.core.$strip>;
27
27
  }, z.core.$strip>;
28
28
  }, z.core.$strip>;
29
- export declare const gatedTransactionResultSchema: <TransactionSchema extends typeof _transactionSchema, OnchainDataSchema extends z.ZodType>(transactionSchema: TransactionSchema, onchainDataSchema: OnchainDataSchema) => z.ZodUnion<readonly [z.ZodObject<{
29
+ export declare const gatedTransactionResultSchema: <TransactionWithResultSchema extends typeof _transactionWithResultSchema, OnchainDataSchema extends z.ZodType>(transactionWithResultSchema: TransactionWithResultSchema, onchainDataSchema: OnchainDataSchema) => z.ZodUnion<readonly [z.ZodObject<{
30
30
  status: z.ZodLiteral<GatedTransactionStatus.NO_OP>;
31
31
  }, z.core.$strip>, z.ZodObject<{
32
32
  status: z.ZodLiteral<GatedTransactionStatus.SUCCESS>;
33
- submittedTransaction: TransactionSchema;
33
+ submittedTransaction: TransactionWithResultSchema;
34
34
  }, z.core.$strip>, z.ZodObject<{
35
35
  status: z.ZodLiteral<GatedTransactionStatus.TRANSACTION_FAILED>;
36
36
  transactionError: z.ZodAny;
37
37
  }, z.core.$strip>, z.ZodObject<{
38
38
  status: z.ZodLiteral<GatedTransactionStatus.FINAL_CHECK_FAILED>;
39
- submittedTransaction: TransactionSchema;
39
+ submittedTransaction: TransactionWithResultSchema;
40
40
  finalOnChainState: OnchainDataSchema;
41
41
  }, z.core.$strip>, z.ZodObject<{
42
42
  status: z.ZodLiteral<GatedTransactionStatus.DEPENDENCY_FAILED>;
43
43
  }, z.core.$strip>, z.ZodObject<{
44
44
  status: z.ZodLiteral<GatedTransactionStatus.DENIED>;
45
45
  }, z.core.$strip>]>;
46
- export declare const processedGatedTransactionSchema: <TransactionSchema extends typeof _transactionSchema, OnchainDataSchema extends z.ZodType>({ transactionSchema, onchainDataSchema, name, }: {
46
+ export declare const processedGatedTransactionSchema: <TransactionSchema extends typeof _transactionSchema, TransactionWithResultSchema extends typeof _transactionWithResultSchema, OnchainDataSchema extends z.ZodType>({ transactionSchema, transactionWithResultSchema, onchainDataSchema, name, }: {
47
47
  transactionSchema: TransactionSchema;
48
+ transactionWithResultSchema: TransactionWithResultSchema;
48
49
  onchainDataSchema: OnchainDataSchema;
49
50
  name: z.ZodString | z.ZodLiteral<string>;
50
51
  }) => z.ZodIntersection<z.ZodObject<{
@@ -63,13 +64,13 @@ export declare const processedGatedTransactionSchema: <TransactionSchema extends
63
64
  status: z.ZodLiteral<GatedTransactionStatus.NO_OP>;
64
65
  }, z.core.$strip>, z.ZodObject<{
65
66
  status: z.ZodLiteral<GatedTransactionStatus.SUCCESS>;
66
- submittedTransaction: TransactionSchema;
67
+ submittedTransaction: TransactionWithResultSchema;
67
68
  }, z.core.$strip>, z.ZodObject<{
68
69
  status: z.ZodLiteral<GatedTransactionStatus.TRANSACTION_FAILED>;
69
70
  transactionError: z.ZodAny;
70
71
  }, z.core.$strip>, z.ZodObject<{
71
72
  status: z.ZodLiteral<GatedTransactionStatus.FINAL_CHECK_FAILED>;
72
- submittedTransaction: TransactionSchema;
73
+ submittedTransaction: TransactionWithResultSchema;
73
74
  finalOnChainState: OnchainDataSchema;
74
75
  }, z.core.$strip>, z.ZodObject<{
75
76
  status: z.ZodLiteral<GatedTransactionStatus.DEPENDENCY_FAILED>;
@@ -87,9 +88,6 @@ export type GatedTransaction<Name extends string = string, TxType extends Transa
87
88
  uniqueIdKeys?: Record<string, string | number | boolean>;
88
89
  dependencies?: Dependencies;
89
90
  };
90
- export type ProcessedGatedTransaction<Name extends string = string, TxType extends Transaction = Transaction, CheckMethod extends (...args: any[]) => any = (...args: any[]) => any> = GatedTransaction<Name, TxType, CheckMethod> & {
91
- result: GatedTransactionResult<GatedTransaction<Name, TxType, CheckMethod>, TxType>;
92
- };
93
91
  export type InferOnChainDataTypeFromGatedTransaction<GatedTx extends GatedTransaction> = GatedTx extends GatedTransaction<any, any, infer Check> ? Awaited<ReturnType<Check>> : unknown;
94
92
  export declare enum GatedTransactionStatus {
95
93
  NO_OP = "no_op",
@@ -102,17 +100,17 @@ export declare enum GatedTransactionStatus {
102
100
  type NoOpGatedTransaction = {
103
101
  status: GatedTransactionStatus.NO_OP;
104
102
  };
105
- type SuccessfulGatedTransaction<ProcessedTx extends Transaction> = {
103
+ type SuccessfulGatedTransaction<TxWithResult extends TransactionWithResult> = {
106
104
  status: GatedTransactionStatus.SUCCESS;
107
- submittedTransaction: ProcessedTx;
105
+ submittedTransaction: TxWithResult;
108
106
  };
109
107
  type TxFailedGatedTransaction = {
110
108
  status: GatedTransactionStatus.TRANSACTION_FAILED;
111
109
  transactionError: any;
112
110
  };
113
- type CheckFailedGatedTransaction<ProcessedTx extends Transaction, State> = {
111
+ type CheckFailedGatedTransaction<TxWithResult extends TransactionWithResult, State> = {
114
112
  status: GatedTransactionStatus.FINAL_CHECK_FAILED;
115
- submittedTransaction: ProcessedTx;
113
+ submittedTransaction: TxWithResult;
116
114
  finalOnChainState: State;
117
115
  };
118
116
  type DependencyFailedGatedTransaction = {
@@ -121,7 +119,7 @@ type DependencyFailedGatedTransaction = {
121
119
  type DeniedGatedTransaction = {
122
120
  status: GatedTransactionStatus.DENIED;
123
121
  };
124
- export type GatedTransactionResult<GatedTx extends GatedTransaction = GatedTransaction, ProcessedTxType extends Transaction = Transaction> = NoOpGatedTransaction | SuccessfulGatedTransaction<ProcessedTxType> | TxFailedGatedTransaction | CheckFailedGatedTransaction<ProcessedTxType, InferOnChainDataTypeFromGatedTransaction<GatedTx>> | DependencyFailedGatedTransaction | DeniedGatedTransaction;
122
+ export type GatedTransactionResult<GatedTx extends GatedTransaction = GatedTransaction, TxWithResult extends TransactionWithResult = TransactionWithResult> = NoOpGatedTransaction | SuccessfulGatedTransaction<TxWithResult> | TxFailedGatedTransaction | CheckFailedGatedTransaction<TxWithResult, InferOnChainDataTypeFromGatedTransaction<GatedTx>> | DependencyFailedGatedTransaction | DeniedGatedTransaction;
125
123
  export declare const gatedTransactionCacheSchema: z.ZodObject<{
126
124
  getCachedTxCheckData: z.ZodType<(<GatedTx extends GatedTransaction>(gtx: GatedTx) => Promise<InferOnChainDataTypeFromGatedTransaction<GatedTx> | undefined>)>;
127
125
  cacheSuccessfulTxCheckData: z.ZodType<(<GatedTx extends GatedTransaction>(gtx: GatedTx, data: InferOnChainDataTypeFromGatedTransaction<GatedTx>) => Promise<void>)>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,OAAO,EACH,KAAK,WAAW,EAChB,KAAK,iBAAiB,IAAI,kBAAkB,EAC5C,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,IAAI,4BAA4B,EACnE,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGnE,MAAM,MAAM,6BAA6B,CAAC,eAAe,IAAI,eAAe,SAAS,MAAM,GACrF,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GACpC,GAAG,GAAG,IAAI,CAAC;AAEjB,MAAM,MAAM,qBAAqB,CAAC,eAAe,IAAI;IACjD,QAAQ,EAAE,6BAA6B,CAAC,eAAe,CAAC,CAAC;IACzD,eAAe,EAAE,eAAe,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAC7B,MAAM,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,IACpE;IACA,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,EAAE,CAAC;IACd,cAAc,EAAE,qBAAqB,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CACtE,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,iBAAiB,SAAS,OAAO,kBAAkB,EAAE,8BAGzF;IACC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;CAC5C;;;;;;;;;;;iBAYK,CAAC;AAGP,eAAO,MAAM,4BAA4B,GACrC,2BAA2B,SAAS,OAAO,4BAA4B,EACvE,iBAAiB,SAAS,CAAC,CAAC,OAAO,EAEnC,6BAA6B,2BAA2B,EACxD,mBAAmB,iBAAiB;;;;;;;;;;;;;;;;mBAyBlC,CAAC;AAGP,eAAO,MAAM,+BAA+B,GACxC,iBAAiB,SAAS,OAAO,kBAAkB,EACnD,2BAA2B,SAAS,OAAO,4BAA4B,EACvE,iBAAiB,SAAS,CAAC,CAAC,OAAO,EACrC,8EAKC;IACC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,2BAA2B,EAAE,2BAA2B,CAAC;IACzD,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;CAC5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAQI,CAAC;AAEN,KAAK,4BAA4B,GAAG,gBAAgB,EAAE,CAAC;AAEvD,MAAM,MAAM,gBAAgB,CACxB,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,MAAM,SAAS,WAAW,GAAG,WAAW,EACxC,WAAW,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACrE,YAAY,SAAS,4BAA4B,GAAG,4BAA4B,IAChF;IACA,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACzD,YAAY,CAAC,EAAE,YAAY,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,wCAAwC,CAAC,OAAO,SAAS,gBAAgB,IACjF,OAAO,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC;AAEnG,oBAAY,sBAAsB;IAC9B,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,kBAAkB,uBAAuB;IACzC,kBAAkB,uBAAuB;IACzC,iBAAiB,sBAAsB;IACvC,MAAM,WAAW;CACpB;AAED,KAAK,oBAAoB,GAAG;IACxB,MAAM,EAAE,sBAAsB,CAAC,KAAK,CAAC;CACxC,CAAC;AAEF,KAAK,0BAA0B,CAAC,YAAY,SAAS,qBAAqB,IAAI;IAC1E,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC;IACvC,oBAAoB,EAAE,YAAY,CAAC;CACtC,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC5B,MAAM,EAAE,sBAAsB,CAAC,kBAAkB,CAAC;IAClD,gBAAgB,EAAE,GAAG,CAAC;CACzB,CAAC;AAEF,KAAK,2BAA2B,CAAC,YAAY,SAAS,qBAAqB,EAAE,KAAK,IAAI;IAClF,MAAM,EAAE,sBAAsB,CAAC,kBAAkB,CAAC;IAClD,oBAAoB,EAAE,YAAY,CAAC;IACnC,iBAAiB,EAAE,KAAK,CAAC;CAC5B,CAAC;AAEF,KAAK,gCAAgC,GAAG;IACpC,MAAM,EAAE,sBAAsB,CAAC,iBAAiB,CAAC;CACpD,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC1B,MAAM,EAAE,sBAAsB,CAAC,MAAM,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,sBAAsB,CAC9B,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,EACnD,YAAY,SAAS,qBAAqB,GAAG,qBAAqB,IAEhE,oBAAoB,GACpB,0BAA0B,CAAC,YAAY,CAAC,GACxC,wBAAwB,GACxB,2BAA2B,CAAC,YAAY,EAAE,wCAAwC,CAAC,OAAO,CAAC,CAAC,GAC5F,gCAAgC,GAChC,sBAAsB,CAAC;AAE7B,eAAO,MAAM,2BAA2B;0BAI9B,CAAC,CAAC,OAAO,EACX,CAAC,OAAO,SAAS,gBAAgB,EAC7B,GAAG,EAAE,OAAO,KACX,OAAO,CAAC,wCAAwC,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,EAC9E;gCAIK,CAAC,CAAC,OAAO,EACX,CAAC,OAAO,SAAS,gBAAgB,EAC7B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,wCAAwC,CAAC,OAAO,CAAC,KACtD,OAAO,CAAC,IAAI,CAAC,EACrB;iBACH,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEjF;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;AAEjE,MAAM,MAAM,wBAAwB,GAAG;IACnC,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,GAAG;QAAE,MAAM,EAAE,sBAAsB,CAAA;KAAE,KAAK,IAAI,CAAC;CAC9F,CAAC"}
package/dist/types.js CHANGED
@@ -1,4 +1,4 @@
1
- export { GatedTransactionStatus, gatedTransactionCacheSchema, gatedTransactionResultSchema, gatedTransactionSchema, processedGatedTransactionSchema } from './GMAAYDJ4.js';
1
+ export { GatedTransactionStatus, gatedTransactionCacheSchema, gatedTransactionResultSchema, gatedTransactionSchema, processedGatedTransactionSchema } from './5HWOSUJL.js';
2
2
  import './VUOMXK5T.js';
3
3
  //# sourceMappingURL=types.js.map
4
4
  //# sourceMappingURL=types.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerzerolabs/gated-transaction",
3
- "version": "0.0.29",
3
+ "version": "0.0.30",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "sideEffects": false,
@@ -17,18 +17,18 @@
17
17
  "dependencies": {
18
18
  "lodash.isequal": "^4.5.0",
19
19
  "zod": "^3.23.8",
20
- "@layerzerolabs/common-activities": "0.0.29",
21
- "@layerzerolabs/common-chain-model": "0.0.29",
22
- "@layerzerolabs/common-utils": "0.0.29",
23
- "@layerzerolabs/zod-utils": "0.0.29",
24
- "@layerzerolabs/common-workflow": "0.0.29"
20
+ "@layerzerolabs/common-activities": "0.0.30",
21
+ "@layerzerolabs/common-chain-model": "0.0.30",
22
+ "@layerzerolabs/common-workflow": "0.0.30",
23
+ "@layerzerolabs/common-utils": "0.0.30",
24
+ "@layerzerolabs/zod-utils": "0.0.30"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/lodash.isequal": "^4.5.8",
28
28
  "tsup": "^8.4.0",
29
29
  "vitest": "^3.2.3",
30
- "@layerzerolabs/tsup-configuration": "0.0.29",
31
- "@layerzerolabs/typescript-configuration": "0.0.29"
30
+ "@layerzerolabs/tsup-configuration": "0.0.30",
31
+ "@layerzerolabs/typescript-configuration": "0.0.30"
32
32
  },
33
33
  "publishConfig": {
34
34
  "access": "restricted",
package/src/resolver.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import isEqual from 'lodash.isequal';
2
2
 
3
3
  import type { ActivityRegistry } from '@layerzerolabs/common-activities';
4
- import type { Transaction } from '@layerzerolabs/common-chain-model';
4
+ import type { Transaction, TransactionResult } from '@layerzerolabs/common-chain-model';
5
5
  import type { WorkflowFunctions } from '@layerzerolabs/common-workflow';
6
6
 
7
7
  import { getIdForGatedTransaction } from './gatedTx';
@@ -93,9 +93,9 @@ const checkGatedTransaction = async <GatedTx extends GatedTransaction>({
93
93
 
94
94
  const resolveGatedTransaction = async <
95
95
  TxType extends Transaction,
96
- ProcessedTxType extends Transaction,
96
+ TxResult extends TransactionResult,
97
97
  GatedTx extends GatedTransaction<string, TxType, any>,
98
- ProcessTx extends (transaction: TxType) => Promise<ProcessedTxType>,
98
+ ProcessTx extends (transaction: TxType) => Promise<TxResult>,
99
99
  >({
100
100
  activityRegistry,
101
101
  gatedTx,
@@ -112,7 +112,9 @@ const resolveGatedTransaction = async <
112
112
  confirmationCallback: NonNullable<UserInteractionCallbacks['confirmationCallback']>;
113
113
  fn: WorkflowFunctions;
114
114
  cache?: IGatedTransactionCache;
115
- }): Promise<GatedTx & { result: GatedTransactionResult<GatedTx, ProcessedTxType> }> => {
115
+ }): Promise<
116
+ GatedTx & { result: GatedTransactionResult<GatedTx, TxType & { result: TxResult }> }
117
+ > => {
116
118
  const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => getIdForGatedTransaction(tx));
117
119
 
118
120
  const dependenciesAreAllProcessed = () =>
@@ -163,11 +165,11 @@ const resolveGatedTransaction = async <
163
165
 
164
166
  //send the tx
165
167
  try {
166
- const processed = await processTx(gatedTx.transaction);
168
+ const processResult = await processTx(gatedTx.transaction);
167
169
  const finalCheckResult = await checkGatedTransaction({
168
170
  registry: activityRegistry,
169
171
  gatedTransaction: gatedTx,
170
- processedTransaction: processed,
172
+ processedTransaction: { ...gatedTx.transaction, result: processResult },
171
173
  });
172
174
 
173
175
  await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);
@@ -178,7 +180,7 @@ const resolveGatedTransaction = async <
178
180
  ...gatedTx,
179
181
  result: {
180
182
  status: GatedTransactionStatus.SUCCESS,
181
- submittedTransaction: processed,
183
+ submittedTransaction: { ...gatedTx.transaction, result: processResult },
182
184
  },
183
185
  };
184
186
  } else {
@@ -192,7 +194,7 @@ const resolveGatedTransaction = async <
192
194
  ...gatedTx,
193
195
  result: {
194
196
  status: GatedTransactionStatus.FINAL_CHECK_FAILED,
195
- submittedTransaction: processed,
197
+ submittedTransaction: { ...gatedTx.transaction, result: processResult },
196
198
  finalOnChainState: finalCheckResult.onChainData,
197
199
  },
198
200
  };
@@ -211,9 +213,9 @@ const resolveGatedTransaction = async <
211
213
 
212
214
  export const resolveGatedTransactions = async <
213
215
  TxType extends Transaction,
214
- ProcessedTxType extends Transaction,
216
+ TxResult extends TransactionResult,
215
217
  GatedTx extends GatedTransaction<string, TxType, any>,
216
- ProcessTx extends (transaction: TxType) => Promise<ProcessedTxType>,
218
+ ProcessTx extends (transaction: TxType) => Promise<TxResult>,
217
219
  >({
218
220
  activityRegistry,
219
221
  gatedTxes,
@@ -256,7 +258,7 @@ export const resolveGatedTransactions = async <
256
258
  const isTransactionSuccessful = (gtxId: GatedTransactionId) => results[gtxId];
257
259
 
258
260
  const txFunctions = gatedTxes.map((tx) => async () => {
259
- const res = await resolveGatedTransaction<TxType, ProcessedTxType, GatedTx, ProcessTx>({
261
+ const res = await resolveGatedTransaction<TxType, TxResult, GatedTx, ProcessTx>({
260
262
  gatedTx: tx,
261
263
  activityRegistry,
262
264
  isTransactionSuccessful,
@@ -281,9 +283,9 @@ export const resolveGatedTransactions = async <
281
283
 
282
284
  export const resolveSequencedGatedTransactions = async <
283
285
  TxType extends Transaction,
284
- ProcessedTxType extends Transaction,
286
+ TxResult extends TransactionResult,
285
287
  GatedTx extends GatedTransaction<string, TxType, any>,
286
- ProcessTx extends (transaction: TxType) => Promise<ProcessedTxType>,
288
+ ProcessTx extends (transaction: TxType) => Promise<TxResult>,
287
289
  >({
288
290
  activityRegistry,
289
291
  gatedTxes,
@@ -301,7 +303,7 @@ export const resolveSequencedGatedTransactions = async <
301
303
  }) => {
302
304
  const results = [];
303
305
  for (const seq of gatedTxes) {
304
- const result = await resolveGatedTransactions<TxType, ProcessedTxType, GatedTx, ProcessTx>({
306
+ const result = await resolveGatedTransactions<TxType, TxResult, GatedTx, ProcessTx>({
305
307
  gatedTxes: seq,
306
308
  activityRegistry,
307
309
  processTx,
package/src/types.ts CHANGED
@@ -1,8 +1,10 @@
1
1
  import z from 'zod/v4';
2
2
 
3
- import type {
4
- Transaction,
5
- transactionSchema as _transactionSchema,
3
+ import {
4
+ type Transaction,
5
+ type transactionSchema as _transactionSchema,
6
+ type TransactionWithResult,
7
+ type transactionWithResultSchema as _transactionWithResultSchema,
6
8
  } from '@layerzerolabs/common-chain-model';
7
9
  import type { FunctionPointer } from '@layerzerolabs/common-utils';
8
10
  import { functionSchema } from '@layerzerolabs/zod-utils';
@@ -46,10 +48,10 @@ export const gatedTransactionSchema = <TransactionSchema extends typeof _transac
46
48
 
47
49
  // Schema for gated transaction results
48
50
  export const gatedTransactionResultSchema = <
49
- TransactionSchema extends typeof _transactionSchema,
51
+ TransactionWithResultSchema extends typeof _transactionWithResultSchema,
50
52
  OnchainDataSchema extends z.ZodType,
51
53
  >(
52
- transactionSchema: TransactionSchema,
54
+ transactionWithResultSchema: TransactionWithResultSchema,
53
55
  onchainDataSchema: OnchainDataSchema,
54
56
  ) =>
55
57
  z.union([
@@ -58,7 +60,7 @@ export const gatedTransactionResultSchema = <
58
60
  }),
59
61
  z.object({
60
62
  status: z.literal(GatedTransactionStatus.SUCCESS),
61
- submittedTransaction: transactionSchema,
63
+ submittedTransaction: transactionWithResultSchema,
62
64
  }),
63
65
  z.object({
64
66
  status: z.literal(GatedTransactionStatus.TRANSACTION_FAILED),
@@ -66,7 +68,7 @@ export const gatedTransactionResultSchema = <
66
68
  }),
67
69
  z.object({
68
70
  status: z.literal(GatedTransactionStatus.FINAL_CHECK_FAILED),
69
- submittedTransaction: transactionSchema,
71
+ submittedTransaction: transactionWithResultSchema,
70
72
  finalOnChainState: onchainDataSchema,
71
73
  }),
72
74
  z.object({
@@ -80,13 +82,16 @@ export const gatedTransactionResultSchema = <
80
82
  // Schema for processed gated transactions (with results)
81
83
  export const processedGatedTransactionSchema = <
82
84
  TransactionSchema extends typeof _transactionSchema,
85
+ TransactionWithResultSchema extends typeof _transactionWithResultSchema,
83
86
  OnchainDataSchema extends z.ZodType,
84
87
  >({
85
88
  transactionSchema,
89
+ transactionWithResultSchema,
86
90
  onchainDataSchema,
87
91
  name,
88
92
  }: {
89
93
  transactionSchema: TransactionSchema;
94
+ transactionWithResultSchema: TransactionWithResultSchema;
90
95
  onchainDataSchema: OnchainDataSchema;
91
96
  name: z.ZodString | z.ZodLiteral<string>;
92
97
  }) =>
@@ -95,7 +100,7 @@ export const processedGatedTransactionSchema = <
95
100
  name,
96
101
  }).and(
97
102
  z.object({
98
- result: gatedTransactionResultSchema(transactionSchema, onchainDataSchema),
103
+ result: gatedTransactionResultSchema(transactionWithResultSchema, onchainDataSchema),
99
104
  }),
100
105
  );
101
106
 
@@ -116,14 +121,6 @@ export type GatedTransaction<
116
121
  dependencies?: Dependencies;
117
122
  };
118
123
 
119
- export type ProcessedGatedTransaction<
120
- Name extends string = string,
121
- TxType extends Transaction = Transaction,
122
- CheckMethod extends (...args: any[]) => any = (...args: any[]) => any,
123
- > = GatedTransaction<Name, TxType, CheckMethod> & {
124
- result: GatedTransactionResult<GatedTransaction<Name, TxType, CheckMethod>, TxType>;
125
- };
126
-
127
124
  export type InferOnChainDataTypeFromGatedTransaction<GatedTx extends GatedTransaction> =
128
125
  GatedTx extends GatedTransaction<any, any, infer Check> ? Awaited<ReturnType<Check>> : unknown;
129
126
 
@@ -140,9 +137,9 @@ type NoOpGatedTransaction = {
140
137
  status: GatedTransactionStatus.NO_OP;
141
138
  };
142
139
 
143
- type SuccessfulGatedTransaction<ProcessedTx extends Transaction> = {
140
+ type SuccessfulGatedTransaction<TxWithResult extends TransactionWithResult> = {
144
141
  status: GatedTransactionStatus.SUCCESS;
145
- submittedTransaction: ProcessedTx;
142
+ submittedTransaction: TxWithResult;
146
143
  };
147
144
 
148
145
  type TxFailedGatedTransaction = {
@@ -150,9 +147,9 @@ type TxFailedGatedTransaction = {
150
147
  transactionError: any;
151
148
  };
152
149
 
153
- type CheckFailedGatedTransaction<ProcessedTx extends Transaction, State> = {
150
+ type CheckFailedGatedTransaction<TxWithResult extends TransactionWithResult, State> = {
154
151
  status: GatedTransactionStatus.FINAL_CHECK_FAILED;
155
- submittedTransaction: ProcessedTx;
152
+ submittedTransaction: TxWithResult;
156
153
  finalOnChainState: State;
157
154
  };
158
155
 
@@ -166,15 +163,12 @@ type DeniedGatedTransaction = {
166
163
 
167
164
  export type GatedTransactionResult<
168
165
  GatedTx extends GatedTransaction = GatedTransaction,
169
- ProcessedTxType extends Transaction = Transaction,
166
+ TxWithResult extends TransactionWithResult = TransactionWithResult,
170
167
  > =
171
168
  | NoOpGatedTransaction
172
- | SuccessfulGatedTransaction<ProcessedTxType>
169
+ | SuccessfulGatedTransaction<TxWithResult>
173
170
  | TxFailedGatedTransaction
174
- | CheckFailedGatedTransaction<
175
- ProcessedTxType,
176
- InferOnChainDataTypeFromGatedTransaction<GatedTx>
177
- >
171
+ | CheckFailedGatedTransaction<TxWithResult, InferOnChainDataTypeFromGatedTransaction<GatedTx>>
178
172
  | DependencyFailedGatedTransaction
179
173
  | DeniedGatedTransaction;
180
174
 
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/types.ts"],"names":["gatedTransactionSchema","__name","transactionSchema","name","z","object","transaction","check","functionPointer","any","params","array","expectedResult","operator","custom","comparisonValue","gatedTransactionResultSchema","onchainDataSchema","union","status","literal","submittedTransaction","transactionError","finalOnChainState","processedGatedTransactionSchema","and","result","GatedTransactionStatus","gatedTransactionCacheSchema","getCachedTxCheckData","functionSchema","input","tuple","output","promise","cacheSuccessfulTxCheckData"],"mappings":"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","file":"6NWNACVT.cjs","sourcesContent":["import z from 'zod/v4';\n\nimport type {\n Transaction,\n transactionSchema as _transactionSchema,\n} from '@layerzerolabs/common-chain-model';\nimport type { FunctionPointer } from '@layerzerolabs/common-utils';\nimport { 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[]) => any = (...args: any[]) => unknown,\n> = {\n functionPointer: FunctionPointer<Method>;\n params: any[];\n expectedResult: OnChainDataComparison<Awaited<ReturnType<Method>>>;\n};\n\nexport const gatedTransactionSchema = <TransactionSchema extends typeof _transactionSchema>({\n transactionSchema,\n name,\n}: {\n transactionSchema: TransactionSchema;\n name: z.ZodString | z.ZodLiteral<string>;\n}) =>\n z.object({\n name,\n transaction: transactionSchema,\n check: z.object({\n functionPointer: z.any(),\n params: z.array(z.any()),\n expectedResult: z.object({\n operator: z.custom<OnChainDataComparisonOperator<any>>(),\n comparisonValue: z.any(),\n }),\n }),\n });\n\n// Schema for gated transaction results\nexport const gatedTransactionResultSchema = <\n TransactionSchema extends typeof _transactionSchema,\n OnchainDataSchema extends z.ZodType,\n>(\n transactionSchema: TransactionSchema,\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: transactionSchema,\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: transactionSchema,\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\n// Schema for processed gated transactions (with results)\nexport const processedGatedTransactionSchema = <\n TransactionSchema extends typeof _transactionSchema,\n OnchainDataSchema extends z.ZodType,\n>({\n transactionSchema,\n onchainDataSchema,\n name,\n}: {\n transactionSchema: TransactionSchema;\n onchainDataSchema: OnchainDataSchema;\n name: z.ZodString | z.ZodLiteral<string>;\n}) =>\n gatedTransactionSchema({\n transactionSchema,\n name,\n }).and(\n z.object({\n result: gatedTransactionResultSchema(transactionSchema, onchainDataSchema),\n }),\n );\n\ntype GatedTransactionDependencies = GatedTransaction[];\n\nexport type GatedTransaction<\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> = {\n bundleName?: string;\n name: Name;\n transaction: TxType;\n check: GatedTransactionCheck<CheckMethod>;\n cacheable?: boolean;\n uniqueIdKeys?: Record<string, string | number | boolean>;\n dependencies?: Dependencies;\n};\n\nexport type ProcessedGatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckMethod extends (...args: any[]) => any = (...args: any[]) => any,\n> = GatedTransaction<Name, TxType, CheckMethod> & {\n result: GatedTransactionResult<GatedTransaction<Name, TxType, CheckMethod>, TxType>;\n};\n\nexport type InferOnChainDataTypeFromGatedTransaction<GatedTx extends GatedTransaction> =\n GatedTx extends GatedTransaction<any, any, infer Check> ? Awaited<ReturnType<Check>> : unknown;\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<ProcessedTx extends Transaction> = {\n status: GatedTransactionStatus.SUCCESS;\n submittedTransaction: ProcessedTx;\n};\n\ntype TxFailedGatedTransaction = {\n status: GatedTransactionStatus.TRANSACTION_FAILED;\n transactionError: any;\n};\n\ntype CheckFailedGatedTransaction<ProcessedTx extends Transaction, State> = {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED;\n submittedTransaction: ProcessedTx;\n finalOnChainState: State;\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 ProcessedTxType extends Transaction = Transaction,\n> =\n | NoOpGatedTransaction\n | SuccessfulGatedTransaction<ProcessedTxType>\n | TxFailedGatedTransaction\n | CheckFailedGatedTransaction<\n ProcessedTxType,\n InferOnChainDataTypeFromGatedTransaction<GatedTx>\n >\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 UserInteractionCallbacks = {\n confirmationCallback?: (gtx: GatedTransaction) => Promise<boolean>;\n onResultCallback?: (result: GatedTransaction & { result: GatedTransactionResult }) => void;\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/resolver.ts"],"names":["checkGatedTransaction","registry","gatedTransaction","cachedCheckResult","processedTransaction","onChainData","undefined","params","check","callByPointer","functionPointer","expectationMet","expectedResult","operator","isEqual","comparisonValue","Error","resolveGatedTransaction","activityRegistry","gatedTx","isTransactionSuccessful","processTx","confirmationCallback","fn","cache","dependencyIds","dependencies","map","tx","getIdForGatedTransaction","dependenciesAreAllProcessed","every","id","condition","dependenciesWereSuccessful","result","status","GatedTransactionStatus","DEPENDENCY_FAILED","initialCheckResult","getCachedTxCheckData","cacheSuccessfulTxCheckData","NO_OP","confirmation","DENIED","processed","transaction","finalCheckResult","SUCCESS","submittedTransaction","stringify","o","JSON","_","v","toString","console","error","name","FINAL_CHECK_FAILED","finalOnChainState","e","TRANSACTION_FAILED","transactionError","resolveGatedTransactions","gatedTxes","userInteractionCallbacks","allInternalIds","allDeps","flatMap","allExternalDeps","filter","includes","results","Object","fromEntries","Promise","all","checkResult","gtxId","txFunctions","res","resId","onResultCallback","func","resolveSequencedGatedTransactions","seq","push"],"mappings":"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","file":"CG43CWKE.js","sourcesContent":["import isEqual from 'lodash.isequal';\n\nimport type { ActivityRegistry } from '@layerzerolabs/common-activities';\nimport type { Transaction } from '@layerzerolabs/common-chain-model';\nimport type { WorkflowFunctions } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n GatedTransaction,\n GatedTransactionId,\n GatedTransactionResult,\n IGatedTransactionCache,\n InferOnChainDataTypeFromGatedTransaction,\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 <GatedTx extends GatedTransaction>({\n registry,\n gatedTransaction,\n cachedCheckResult,\n processedTransaction,\n}: {\n registry: ActivityRegistry;\n gatedTransaction: GatedTx;\n cachedCheckResult?: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n processedTransaction?: any;\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 (processedTransaction !== undefined) {\n params = [...gatedTransaction.check.params, processedTransaction];\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 resolveGatedTransaction = async <\n TxType extends Transaction,\n ProcessedTxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<ProcessedTxType>,\n>({\n activityRegistry,\n gatedTx,\n isTransactionSuccessful,\n processTx,\n confirmationCallback,\n fn,\n cache,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTx: GatedTx;\n processTx: ProcessTx;\n isTransactionSuccessful: (gtxId: GatedTransactionId) => boolean | undefined;\n confirmationCallback: NonNullable<UserInteractionCallbacks['confirmationCallback']>;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n}): Promise<GatedTx & { result: GatedTransactionResult<GatedTx, ProcessedTxType> }> => {\n const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => getIdForGatedTransaction(tx));\n\n const dependenciesAreAllProcessed = () =>\n dependencyIds.every((id) => isTransactionSuccessful(id) != null);\n\n await fn.condition(dependenciesAreAllProcessed);\n\n //check that the dependencies succeeded\n const dependenciesWereSuccessful = dependencyIds.every((id) => isTransactionSuccessful(id));\n\n if (!dependenciesWereSuccessful) {\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.DEPENDENCY_FAILED,\n },\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 ...gatedTx,\n result: {\n status: GatedTransactionStatus.NO_OP,\n },\n };\n }\n\n //get confirmation before sending\n const confirmation = await confirmationCallback(gatedTx);\n if (!confirmation) {\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.DENIED,\n },\n };\n }\n\n //send the tx\n try {\n const processed = await processTx(gatedTx.transaction);\n const finalCheckResult = await checkGatedTransaction({\n registry: activityRegistry,\n gatedTransaction: gatedTx,\n processedTransaction: processed,\n });\n\n await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);\n\n if (finalCheckResult.expectationMet) {\n //sent and successful\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.SUCCESS,\n submittedTransaction: processed,\n },\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 ...gatedTx,\n result: {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED,\n submittedTransaction: processed,\n finalOnChainState: finalCheckResult.onChainData,\n },\n };\n }\n } catch (e) {\n //sent and failed\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.TRANSACTION_FAILED,\n transactionError: e,\n },\n };\n }\n};\n\nexport const resolveGatedTransactions = async <\n TxType extends Transaction,\n ProcessedTxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<ProcessedTxType>,\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<(GatedTx & { result: GatedTransactionResult })[]> => {\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 //map id -> was successful\n const results: Record<GatedTransactionId, boolean> = 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 [getIdForGatedTransaction(tx), checkResult.expectationMet];\n }),\n ),\n );\n\n const isTransactionSuccessful = (gtxId: GatedTransactionId) => results[gtxId];\n\n const txFunctions = gatedTxes.map((tx) => async () => {\n const res = await resolveGatedTransaction<TxType, ProcessedTxType, GatedTx, ProcessTx>({\n gatedTx: tx,\n activityRegistry,\n isTransactionSuccessful,\n processTx,\n confirmationCallback:\n userInteractionCallbacks?.confirmationCallback ?? (async () => true),\n fn,\n cache,\n });\n\n const resId = getIdForGatedTransaction(res);\n results[resId] = [GatedTransactionStatus.SUCCESS, GatedTransactionStatus.NO_OP].includes(\n res.result.status,\n );\n\n userInteractionCallbacks?.onResultCallback?.(res);\n return res;\n });\n\n return await Promise.all(txFunctions.map((func) => func()));\n};\n\nexport const resolveSequencedGatedTransactions = async <\n TxType extends Transaction,\n ProcessedTxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<ProcessedTxType>,\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, ProcessedTxType, GatedTx, ProcessTx>({\n gatedTxes: seq,\n activityRegistry,\n processTx,\n cache,\n userInteractionCallbacks,\n fn,\n });\n results.push(result);\n }\n\n return results;\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/types.ts"],"names":["gatedTransactionSchema","transactionSchema","name","z","object","transaction","check","functionPointer","any","params","array","expectedResult","operator","custom","comparisonValue","gatedTransactionResultSchema","onchainDataSchema","union","status","literal","submittedTransaction","transactionError","finalOnChainState","processedGatedTransactionSchema","and","result","GatedTransactionStatus","gatedTransactionCacheSchema","getCachedTxCheckData","functionSchema","input","tuple","output","promise","cacheSuccessfulTxCheckData"],"mappings":"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","file":"GMAAYDJ4.js","sourcesContent":["import z from 'zod/v4';\n\nimport type {\n Transaction,\n transactionSchema as _transactionSchema,\n} from '@layerzerolabs/common-chain-model';\nimport type { FunctionPointer } from '@layerzerolabs/common-utils';\nimport { 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[]) => any = (...args: any[]) => unknown,\n> = {\n functionPointer: FunctionPointer<Method>;\n params: any[];\n expectedResult: OnChainDataComparison<Awaited<ReturnType<Method>>>;\n};\n\nexport const gatedTransactionSchema = <TransactionSchema extends typeof _transactionSchema>({\n transactionSchema,\n name,\n}: {\n transactionSchema: TransactionSchema;\n name: z.ZodString | z.ZodLiteral<string>;\n}) =>\n z.object({\n name,\n transaction: transactionSchema,\n check: z.object({\n functionPointer: z.any(),\n params: z.array(z.any()),\n expectedResult: z.object({\n operator: z.custom<OnChainDataComparisonOperator<any>>(),\n comparisonValue: z.any(),\n }),\n }),\n });\n\n// Schema for gated transaction results\nexport const gatedTransactionResultSchema = <\n TransactionSchema extends typeof _transactionSchema,\n OnchainDataSchema extends z.ZodType,\n>(\n transactionSchema: TransactionSchema,\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: transactionSchema,\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: transactionSchema,\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\n// Schema for processed gated transactions (with results)\nexport const processedGatedTransactionSchema = <\n TransactionSchema extends typeof _transactionSchema,\n OnchainDataSchema extends z.ZodType,\n>({\n transactionSchema,\n onchainDataSchema,\n name,\n}: {\n transactionSchema: TransactionSchema;\n onchainDataSchema: OnchainDataSchema;\n name: z.ZodString | z.ZodLiteral<string>;\n}) =>\n gatedTransactionSchema({\n transactionSchema,\n name,\n }).and(\n z.object({\n result: gatedTransactionResultSchema(transactionSchema, onchainDataSchema),\n }),\n );\n\ntype GatedTransactionDependencies = GatedTransaction[];\n\nexport type GatedTransaction<\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> = {\n bundleName?: string;\n name: Name;\n transaction: TxType;\n check: GatedTransactionCheck<CheckMethod>;\n cacheable?: boolean;\n uniqueIdKeys?: Record<string, string | number | boolean>;\n dependencies?: Dependencies;\n};\n\nexport type ProcessedGatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckMethod extends (...args: any[]) => any = (...args: any[]) => any,\n> = GatedTransaction<Name, TxType, CheckMethod> & {\n result: GatedTransactionResult<GatedTransaction<Name, TxType, CheckMethod>, TxType>;\n};\n\nexport type InferOnChainDataTypeFromGatedTransaction<GatedTx extends GatedTransaction> =\n GatedTx extends GatedTransaction<any, any, infer Check> ? Awaited<ReturnType<Check>> : unknown;\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<ProcessedTx extends Transaction> = {\n status: GatedTransactionStatus.SUCCESS;\n submittedTransaction: ProcessedTx;\n};\n\ntype TxFailedGatedTransaction = {\n status: GatedTransactionStatus.TRANSACTION_FAILED;\n transactionError: any;\n};\n\ntype CheckFailedGatedTransaction<ProcessedTx extends Transaction, State> = {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED;\n submittedTransaction: ProcessedTx;\n finalOnChainState: State;\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 ProcessedTxType extends Transaction = Transaction,\n> =\n | NoOpGatedTransaction\n | SuccessfulGatedTransaction<ProcessedTxType>\n | TxFailedGatedTransaction\n | CheckFailedGatedTransaction<\n ProcessedTxType,\n InferOnChainDataTypeFromGatedTransaction<GatedTx>\n >\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 UserInteractionCallbacks = {\n confirmationCallback?: (gtx: GatedTransaction) => Promise<boolean>;\n onResultCallback?: (result: GatedTransaction & { result: GatedTransactionResult }) => void;\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/resolver.ts"],"names":["checkGatedTransaction","__name","registry","gatedTransaction","cachedCheckResult","processedTransaction","onChainData","undefined","params","check","callByPointer","functionPointer","expectationMet","expectedResult","operator","isEqual","comparisonValue","Error","resolveGatedTransaction","activityRegistry","gatedTx","isTransactionSuccessful","processTx","confirmationCallback","fn","cache","dependencyIds","dependencies","map","tx","getIdForGatedTransaction","dependenciesAreAllProcessed","every","id","condition","dependenciesWereSuccessful","result","status","GatedTransactionStatus","DEPENDENCY_FAILED","initialCheckResult","getCachedTxCheckData","cacheSuccessfulTxCheckData","NO_OP","confirmation","DENIED","processed","transaction","finalCheckResult","SUCCESS","submittedTransaction","stringify","o","JSON","_","v","toString","console","error","name","FINAL_CHECK_FAILED","finalOnChainState","e","TRANSACTION_FAILED","transactionError","resolveGatedTransactions","gatedTxes","userInteractionCallbacks","allInternalIds","allDeps","flatMap","allExternalDeps","filter","includes","results","Object","fromEntries","Promise","all","checkResult","gtxId","txFunctions","res","resId","onResultCallback","func","resolveSequencedGatedTransactions","seq","push"],"mappings":"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","file":"XYULD3ZM.cjs","sourcesContent":["import isEqual from 'lodash.isequal';\n\nimport type { ActivityRegistry } from '@layerzerolabs/common-activities';\nimport type { Transaction } from '@layerzerolabs/common-chain-model';\nimport type { WorkflowFunctions } from '@layerzerolabs/common-workflow';\n\nimport { getIdForGatedTransaction } from './gatedTx';\nimport type {\n GatedTransaction,\n GatedTransactionId,\n GatedTransactionResult,\n IGatedTransactionCache,\n InferOnChainDataTypeFromGatedTransaction,\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 <GatedTx extends GatedTransaction>({\n registry,\n gatedTransaction,\n cachedCheckResult,\n processedTransaction,\n}: {\n registry: ActivityRegistry;\n gatedTransaction: GatedTx;\n cachedCheckResult?: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n processedTransaction?: any;\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 (processedTransaction !== undefined) {\n params = [...gatedTransaction.check.params, processedTransaction];\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 resolveGatedTransaction = async <\n TxType extends Transaction,\n ProcessedTxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<ProcessedTxType>,\n>({\n activityRegistry,\n gatedTx,\n isTransactionSuccessful,\n processTx,\n confirmationCallback,\n fn,\n cache,\n}: {\n activityRegistry: ActivityRegistry;\n gatedTx: GatedTx;\n processTx: ProcessTx;\n isTransactionSuccessful: (gtxId: GatedTransactionId) => boolean | undefined;\n confirmationCallback: NonNullable<UserInteractionCallbacks['confirmationCallback']>;\n fn: WorkflowFunctions;\n cache?: IGatedTransactionCache;\n}): Promise<GatedTx & { result: GatedTransactionResult<GatedTx, ProcessedTxType> }> => {\n const dependencyIds = (gatedTx.dependencies ?? []).map((tx) => getIdForGatedTransaction(tx));\n\n const dependenciesAreAllProcessed = () =>\n dependencyIds.every((id) => isTransactionSuccessful(id) != null);\n\n await fn.condition(dependenciesAreAllProcessed);\n\n //check that the dependencies succeeded\n const dependenciesWereSuccessful = dependencyIds.every((id) => isTransactionSuccessful(id));\n\n if (!dependenciesWereSuccessful) {\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.DEPENDENCY_FAILED,\n },\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 ...gatedTx,\n result: {\n status: GatedTransactionStatus.NO_OP,\n },\n };\n }\n\n //get confirmation before sending\n const confirmation = await confirmationCallback(gatedTx);\n if (!confirmation) {\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.DENIED,\n },\n };\n }\n\n //send the tx\n try {\n const processed = await processTx(gatedTx.transaction);\n const finalCheckResult = await checkGatedTransaction({\n registry: activityRegistry,\n gatedTransaction: gatedTx,\n processedTransaction: processed,\n });\n\n await cache?.cacheSuccessfulTxCheckData?.(gatedTx, finalCheckResult.onChainData);\n\n if (finalCheckResult.expectationMet) {\n //sent and successful\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.SUCCESS,\n submittedTransaction: processed,\n },\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 ...gatedTx,\n result: {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED,\n submittedTransaction: processed,\n finalOnChainState: finalCheckResult.onChainData,\n },\n };\n }\n } catch (e) {\n //sent and failed\n return {\n ...gatedTx,\n result: {\n status: GatedTransactionStatus.TRANSACTION_FAILED,\n transactionError: e,\n },\n };\n }\n};\n\nexport const resolveGatedTransactions = async <\n TxType extends Transaction,\n ProcessedTxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<ProcessedTxType>,\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<(GatedTx & { result: GatedTransactionResult })[]> => {\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 //map id -> was successful\n const results: Record<GatedTransactionId, boolean> = 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 [getIdForGatedTransaction(tx), checkResult.expectationMet];\n }),\n ),\n );\n\n const isTransactionSuccessful = (gtxId: GatedTransactionId) => results[gtxId];\n\n const txFunctions = gatedTxes.map((tx) => async () => {\n const res = await resolveGatedTransaction<TxType, ProcessedTxType, GatedTx, ProcessTx>({\n gatedTx: tx,\n activityRegistry,\n isTransactionSuccessful,\n processTx,\n confirmationCallback:\n userInteractionCallbacks?.confirmationCallback ?? (async () => true),\n fn,\n cache,\n });\n\n const resId = getIdForGatedTransaction(res);\n results[resId] = [GatedTransactionStatus.SUCCESS, GatedTransactionStatus.NO_OP].includes(\n res.result.status,\n );\n\n userInteractionCallbacks?.onResultCallback?.(res);\n return res;\n });\n\n return await Promise.all(txFunctions.map((func) => func()));\n};\n\nexport const resolveSequencedGatedTransactions = async <\n TxType extends Transaction,\n ProcessedTxType extends Transaction,\n GatedTx extends GatedTransaction<string, TxType, any>,\n ProcessTx extends (transaction: TxType) => Promise<ProcessedTxType>,\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, ProcessedTxType, 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"]}