@layerzerolabs/gated-transaction 0.2.66 → 0.2.67

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.
@@ -14,26 +14,26 @@
14
14
  ESM dist/gatedTx.js 250.00 B
15
15
  ESM dist/schemata.js 483.00 B
16
16
  ESM dist/index.js 632.00 B
17
- ESM dist/GJCZND5J.js 4.46 KB
18
17
  ESM dist/VUOMXK5T.js 222.00 B
18
+ ESM dist/VO5L7KKO.js 4.47 KB
19
19
  ESM dist/S7M4M3JS.js 1.25 KB
20
20
  ESM dist/gatedTx.js.map 71.00 B
21
21
  ESM dist/schemata.js.map 72.00 B
22
22
  ESM dist/index.js.map 69.00 B
23
23
  ESM dist/VUOMXK5T.js.map 72.00 B
24
- ESM dist/GJCZND5J.js.map 21.76 KB
24
+ ESM dist/VO5L7KKO.js.map 21.76 KB
25
25
  ESM dist/S7M4M3JS.js.map 5.79 KB
26
- ESM ⚡️ Build success in 225ms
27
- CJS dist/gatedTx.cjs 818.00 B
26
+ ESM ⚡️ Build success in 256ms
27
+ CJS dist/index.cjs 2.74 KB
28
28
  CJS dist/VE67DSPF.cjs 1.47 KB
29
- CJS dist/index.cjs 2.73 KB
29
+ CJS dist/gatedTx.cjs 818.00 B
30
30
  CJS dist/YJF4D23A.cjs 245.00 B
31
- CJS dist/schemata.cjs 2.05 KB
32
- CJS dist/RMQA3ELT.cjs 5.81 KB
33
- CJS dist/gatedTx.cjs.map 72.00 B
31
+ CJS dist/schemata.cjs 2.06 KB
32
+ CJS dist/64Q22BPU.cjs 5.81 KB
34
33
  CJS dist/index.cjs.map 70.00 B
35
34
  CJS dist/VE67DSPF.cjs.map 5.80 KB
36
- CJS dist/schemata.cjs.map 73.00 B
37
- CJS dist/RMQA3ELT.cjs.map 21.83 KB
38
35
  CJS dist/YJF4D23A.cjs.map 73.00 B
39
- CJS ⚡️ Build success in 227ms
36
+ CJS dist/schemata.cjs.map 73.00 B
37
+ CJS dist/64Q22BPU.cjs.map 21.83 KB
38
+ CJS dist/gatedTx.cjs.map 72.00 B
39
+ CJS ⚡️ Build success in 258ms
@@ -2,7 +2,7 @@
2
2
  > @layerzerolabs/gated-transaction@0.0.0 lint /home/runner/work/monorepo-internal/monorepo-internal/packages/gated-transaction
3
3
  > eslint . --max-warnings 0 || (eslint . --fix --max-warnings 0 && false)
4
4
 
5
- (node:125531) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///home/runner/work/monorepo-internal/monorepo-internal/eslint.config.js?mtime=1775694520701 is not specified and it doesn't parse as CommonJS.
5
+ (node:68424) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///home/runner/work/monorepo-internal/monorepo-internal/eslint.config.js?mtime=1775770562286 is not specified and it doesn't parse as CommonJS.
6
6
  Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
7
7
  To eliminate this warning, add "type": "module" to /home/runner/work/monorepo-internal/monorepo-internal/package.json.
8
8
  (Use `node --trace-warnings ...` to show where the warning was created)
package/LICENSE ADDED
@@ -0,0 +1,23 @@
1
+ Copyright (c) 2026 - LayerZero Labs Ltd.
2
+
3
+ Permission is hereby granted, free of charge, to any
4
+ person obtaining a copy of this software and associated
5
+ documentation files (the "Software"), to deal in the
6
+ Software without restriction, including without
7
+ limitation the rights to use, copy, modify, merge,
8
+ publish, distribute, sublicense, and/or sell copies of
9
+ the Software, and to permit persons to whom the Software
10
+ is furnished to do so, subject to the following
11
+ conditions:
12
+ The above copyright notice and this permission notice
13
+ shall be included in all copies or substantial portions
14
+ of the Software.
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
16
+ ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
17
+ TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
18
+ PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
19
+ SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
22
+ IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
23
+ DEALINGS IN THE SOFTWARE.
@@ -10,7 +10,7 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
10
  var z__default = /*#__PURE__*/_interopDefault(z);
11
11
 
12
12
  var gatedTransactionResultSchema = /* @__PURE__ */ YJF4D23A_cjs.__name((txWithResultSchema, onchainDataSchema) => (
13
- // FIXME use this as source of truth for GatedTransactionResult type
13
+ // TODO: use this schema as source of truth for GatedTransactionResult type
14
14
  z__default.default.union([
15
15
  z__default.default.object({
16
16
  status: z__default.default.literal("no_op")
@@ -132,5 +132,5 @@ exports.isResolvedGtx = isResolvedGtx;
132
132
  exports.isSuccessfulGatedTransaction = isSuccessfulGatedTransaction;
133
133
  exports.resolvedGatedTransactionSchema = resolvedGatedTransactionSchema;
134
134
  exports.successfulGatedTransactionSchema = successfulGatedTransactionSchema;
135
- //# sourceMappingURL=RMQA3ELT.cjs.map
136
- //# sourceMappingURL=RMQA3ELT.cjs.map
135
+ //# sourceMappingURL=64Q22BPU.cjs.map
136
+ //# sourceMappingURL=64Q22BPU.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/schemata.ts"],"names":["gatedTransactionResultSchema","txWithResultSchema","onchainDataSchema","z","union","object","status","literal","submittedTransaction","transactionError","any","finalOnChainState","GatedTransactionStatus","isResolvedGtx","__name","gtx","result","gatedTransactionSchema","_","customSchema","meta","title","description","resolvedGatedTransactionSchema","successfulGatedTransactionSchema","createTxArrayDependentActivitySchema","transactionSchema","extraArgs","functionSchema","input","tuple","def","items","array","output","promise","createTxTupleDependentActivitySchema","txNumber","txs","Array","from","length","createGatedTxCheckActivitySchema","transactionWithResultSchema","_transactionWithResultSchema","optional","gatedTxCheckResultSchema","expectationMet","boolean","data","isSuccessfulGatedTransaction","gatedTransactionCacheSchema","getCachedTxCheckData","cacheSuccessfulTxCheckData"],"mappings":"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","file":"64Q22BPU.cjs","sourcesContent":["import z from 'zod';\n\nimport type {\n transactionSchema as _transactionSchema,\n TransactionWithResult,\n} from '@layerzerolabs/common-chain-model';\nimport {\n type Transaction,\n type TransactionWithResultFor,\n transactionWithResultSchema as _transactionWithResultSchema,\n} from '@layerzerolabs/common-chain-model';\nimport type { FunctionPointer } from '@layerzerolabs/function-pointer';\nimport type {\n BrandedError,\n BuildTuple,\n DecimalString,\n IsAny,\n Or,\n} from '@layerzerolabs/typescript-utils';\nimport type { InferredArray } from '@layerzerolabs/zod-utils';\nimport { customSchema, functionSchema } from '@layerzerolabs/zod-utils';\n\nexport type OnChainDataComparisonOperator<OnChainDataType> =\n Or<\n [OnChainDataType extends number | DecimalString ? true : false, IsAny<OnChainDataType>]\n > extends true\n ? '<' | '<=' | '=' | '!=' | '>' | '>='\n : OnChainDataType extends string | object | boolean\n ? '=' | '!='\n : BrandedError<'Unsupported comparison type'>;\n\nexport type OnChainDataComparison<OnChainDataType extends string | number | boolean | object> = {\n operator: OnChainDataComparisonOperator<OnChainDataType>;\n comparisonValue: OnChainDataType;\n};\n\nexport type GatedTransactionCheck<CheckOutput extends Promise<any> = Promise<any>> = {\n functionPointer: FunctionPointer<[tx?: TransactionWithResult], CheckOutput>;\n expectedResult: OnChainDataComparison<Awaited<CheckOutput>>;\n};\n\n// Schema for gated transaction results\nexport const gatedTransactionResultSchema = <\n TxWithResultSchema extends typeof _transactionWithResultSchema,\n OnchainDataSchema extends z.ZodType,\n>(\n txWithResultSchema: TxWithResultSchema,\n onchainDataSchema: OnchainDataSchema,\n) =>\n // TODO: use this schema as source of truth for GatedTransactionResult type\n z.union([\n z.object({\n status: z.literal(GatedTransactionStatus.NO_OP),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.SUCCESS),\n submittedTransaction: txWithResultSchema,\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.TRANSACTION_FAILED),\n transactionError: z.any(),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.FINAL_CHECK_FAILED),\n submittedTransaction: txWithResultSchema,\n finalOnChainState: onchainDataSchema,\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DEPENDENCY_FAILED),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DENIED),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DEFERRED_SUCCESS),\n }),\n ]);\n\nexport type InferOnChainDataTypeFromCheck<Check> = Check extends (...args: any[]) => infer Ret\n ? Awaited<Ret>\n : unknown;\nexport type InferOnChainDataTypeFromGatedTransaction<GatedTx extends GatedTransaction> =\n InferOnChainDataTypeFromCheck<GatedTx['check']>;\n\nexport type GatedTransactionDependencies = GatedTransaction[];\n\n/**\n * Pointer configuration for extracting a deployment artifact from a resolved GTX.\n * - FunctionPointer: Custom pointer to activity factory function\n * - 'DEFAULT': Use the default deployment activity factory function\n * - null: Don't save this artifact\n */\nexport type DeploymentArtifactPointer = FunctionPointer | 'DEFAULT' | null;\n\n/**\n * Pointer configuration for extracting a verification artifact from a resolved GTX.\n * - FunctionPointer: Custom pointer to activity factory function\n * - null: Don't save this artifact\n * Note: No 'DEFAULT' option - verification requires custom implementation per contract type.\n */\nexport type VerificationArtifactPointer = FunctionPointer | null;\n\n// TODO: type FunctionPointer generics on DeploymentArtifactPointer/VerificationArtifactPointer (at least output types), consider converting ContractArtifactPointers to interface\nexport type ContractArtifactPointers = {\n extractDeploymentArtifactPointer: DeploymentArtifactPointer;\n extractVerificationArtifactPointer: VerificationArtifactPointer;\n};\n\nexport type BaseGatedTransaction<\n Name extends string = string,\n CheckOutput extends Promise<any> = Promise<any>,\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = {\n name: Name;\n description?: string;\n bundleName?: string;\n metadata?: {\n deployInfo?: {\n contracts: { [contractName: string]: ContractArtifactPointers };\n alwaysResolve?: boolean;\n };\n };\n chainName: string;\n check: GatedTransactionCheck<CheckOutput>;\n dependencies: _Dependencies;\n /**\n * Ordering-only dependencies: this transaction must be executed after these transactions,\n * but does not require their resolved output. If a transaction appears in both\n * `dependencies` and `orderingDependencies`, the regular dependency semantics take precedence.\n */\n orderingDependencies?: GatedTransactionDependencies;\n cacheable?: boolean;\n uniqueIdKeys?: Record<string, string | number | boolean>;\n};\n\nexport type LiteralGatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckOutput extends Promise<any> = Promise<any>,\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = BaseGatedTransaction<Name, CheckOutput, _Dependencies> & {\n transactionType: 'literal';\n transaction: TxType;\n};\n\nexport type FunctionalGatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckOutput extends Promise<any> = Promise<any>,\n DepInput extends [...args: any[], txes: any] = [txes: any],\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = BaseGatedTransaction<Name, CheckOutput, _Dependencies> & {\n transactionType: 'functional';\n getTransaction: {\n functionPointer: FunctionPointer<DepInput, Promise<TxType>>;\n };\n};\n\nexport type GatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckOutput extends Promise<any> = Promise<any>,\n DepInput extends [...args: any[], txes: any] = [txes: any],\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> =\n | LiteralGatedTransaction<Name, TxType, CheckOutput, _Dependencies>\n | FunctionalGatedTransaction<Name, TxType, CheckOutput, DepInput, _Dependencies>;\n\nexport type BaseGatedTransactionFor<GatedTx extends GatedTransaction> =\n GatedTx extends GatedTransaction<infer Name, any, infer CheckOutput, any, infer _Dependencies>\n ? BaseGatedTransaction<Name, CheckOutput, _Dependencies>\n : never;\n\nexport enum GatedTransactionStatus {\n // precheck passed, no need to send the tx\n NO_OP = 'no_op',\n // precheck failed, tx was sent, postcheck passed\n SUCCESS = 'success',\n // precheck failed, tx was sent but sender returned an error\n TRANSACTION_FAILED = 'transaction_failed',\n // precheck failed, tx was sent, postcheck failed\n FINAL_CHECK_FAILED = 'final_check_failed',\n // the tx couldn't be resolved because one of its dependencies resolved to a failed state\n DEPENDENCY_FAILED = 'dependency_failed',\n // approval to send the tx was explicitly denied\n DENIED = 'denied',\n // precheck failed, tx was sent but indeterminate, deferred execution passed on a recheck\n DEFERRED_SUCCESS = 'deferred_success',\n}\n\ntype NoOpGatedTransaction = {\n status: GatedTransactionStatus.NO_OP;\n};\n\nexport type SuccessfulGatedTransaction<TxType extends Transaction> = {\n status: GatedTransactionStatus.SUCCESS;\n submittedTransaction: TransactionWithResultFor<TxType>;\n};\n\ntype TxFailedGatedTransaction = {\n status: GatedTransactionStatus.TRANSACTION_FAILED;\n transactionError: any;\n};\n\ntype CheckFailedGatedTransaction<GatedTx extends GatedTransaction, TxType extends Transaction> = {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED;\n submittedTransaction: TransactionWithResultFor<TxType>;\n finalOnChainState: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n};\n\ntype DependencyFailedGatedTransaction = {\n status: GatedTransactionStatus.DEPENDENCY_FAILED;\n};\n\ntype DeniedGatedTransaction = {\n status: GatedTransactionStatus.DENIED;\n};\n\ntype DeferredSuccessfulGatedTransaction = {\n status: GatedTransactionStatus.DEFERRED_SUCCESS;\n};\n\nexport type GatedTransactionResult<\n GatedTx extends GatedTransaction = GatedTransaction,\n TxType extends Transaction = Transaction,\n> =\n | NoOpGatedTransaction\n | SuccessfulGatedTransaction<TxType>\n | TxFailedGatedTransaction\n | CheckFailedGatedTransaction<GatedTx, TxType>\n | DependencyFailedGatedTransaction\n | DeniedGatedTransaction\n | DeferredSuccessfulGatedTransaction;\n\nexport type ResolvedGatedTransaction<\n GatedTx extends GatedTransaction = GatedTransaction,\n TxType extends Transaction = Transaction,\n> = BaseGatedTransactionFor<GatedTx> & {\n result: GatedTransactionResult<GatedTx, TxType>;\n};\n\nexport const isResolvedGtx = (\n gtx: GatedTransaction | ResolvedGatedTransaction,\n): gtx is ResolvedGatedTransaction => !!(gtx as ResolvedGatedTransaction).result;\n\nexport const gatedTransactionSchema = <\n Name extends z.ZodString | z.ZodLiteral<string> = z.ZodString,\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n>(_?: {\n name?: Name;\n transactionSchema?: TransactionSchema;\n}) =>\n customSchema<GatedTransaction<z.infer<Name>, z.infer<TransactionSchema>>>().meta({\n title: 'Gated Transaction',\n description: 'A schema for a gated transaction',\n });\n\nexport const resolvedGatedTransactionSchema = <\n Name extends z.ZodString | z.ZodLiteral<string> = z.ZodString,\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n>(_?: {\n name?: Name;\n transactionSchema?: TransactionSchema;\n}) =>\n customSchema<\n ResolvedGatedTransaction<\n GatedTransaction<z.infer<Name>, z.infer<TransactionSchema>>,\n z.infer<TransactionSchema>\n >\n >().meta({\n title: 'Resolved Gated Transaction',\n description: 'A schema for a resolved gated transaction',\n });\n\nexport const successfulGatedTransactionSchema = <\n Name extends z.ZodString | z.ZodLiteral<string> = z.ZodString,\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n>(_?: {\n name?: Name;\n transactionSchema?: TransactionSchema;\n}) =>\n customSchema<\n BaseGatedTransactionFor<GatedTransaction<z.infer<Name>, z.infer<TransactionSchema>>> & {\n result: SuccessfulGatedTransaction<z.infer<TransactionSchema>>;\n }\n >().meta({\n title: 'Successful Gated Transaction',\n description: 'A schema for a successful gated transaction',\n });\n\n/**\n * Builds a schema for an activity that builds a transaction based on the results of other transactions\n * @param transactionSchema The schema for the transaction to be built\n * @param transactionWithResultSchema The schema for the results of the transactions you're building off of\n * @param txNumber The number of transactions you're building off of\n * @param extraArgs Additional arguments that must be passed to the function after the txes\n * @returns A schema for the activity that builds the transaction\n */\nexport const createTxArrayDependentActivitySchema = <\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n ExtraArgs extends z.ZodTuple = z.ZodTuple<[]>,\n>(\n transactionSchema: TransactionSchema,\n extraArgs?: ExtraArgs,\n) => {\n return functionSchema({\n input: z.tuple([\n ...(extraArgs?.def?.items ?? []),\n z.array(\n resolvedGatedTransactionSchema({\n transactionSchema,\n }),\n ),\n ] as any),\n output: z.promise(transactionSchema),\n }) as unknown as z.ZodType<\n [] extends z.infer<ExtraArgs>\n ? (\n txs: ResolvedGatedTransaction<\n GatedTransaction<string, z.infer<TransactionSchema>>\n >[],\n ) => Promise<z.infer<TransactionSchema>>\n : (\n ...args: [\n ...extraArgs: z.infer<ExtraArgs>,\n txs: ResolvedGatedTransaction<\n GatedTransaction<string, z.infer<TransactionSchema>>\n >[],\n ]\n ) => Promise<z.infer<TransactionSchema>>\n >;\n};\n/**\n * Builds a schema for an activity that builds a transaction based on the results of other transactions\n * @param transactionSchema The schema for the transaction to be built\n * @param transactionWithResultSchema The schema for the results of the transactions you're building off of\n * @param txNumber The number of transactions you're building off of\n * @param extraArgs Additional arguments that must be passed to the function after the txes\n * @returns A schema for the activity that builds the transaction\n */\nexport const createTxTupleDependentActivitySchema = <\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n const TxNumber extends number = 1,\n ExtraArgs extends z.ZodTuple = z.ZodTuple<[]>,\n>(\n transactionSchema: TransactionSchema,\n txNumber: TxNumber,\n extraArgs?: ExtraArgs,\n) => {\n const txs = Array.from({ length: txNumber }, () =>\n resolvedGatedTransactionSchema({\n transactionSchema: transactionSchema,\n }),\n );\n\n return functionSchema({\n input: z.tuple([...(extraArgs?.def?.items ?? []), z.tuple(txs as any)] as any),\n output: z.promise(transactionSchema),\n }) as unknown as z.ZodType<\n [] extends z.infer<ExtraArgs>\n ? (\n txs: BuildTuple<\n ResolvedGatedTransaction<\n GatedTransaction<string, z.infer<TransactionSchema>>\n >,\n TxNumber\n >,\n ) => Promise<z.infer<TransactionSchema>>\n : (\n ...args: [\n ...extraArgs: z.infer<ExtraArgs>,\n txs: BuildTuple<\n ResolvedGatedTransaction<\n GatedTransaction<string, z.infer<TransactionSchema>>\n >,\n TxNumber\n >,\n ]\n ) => Promise<z.infer<TransactionSchema>>\n >;\n};\n\nexport const createGatedTxCheckActivitySchema = <\n Output extends z.ZodType,\n const Input extends z.ZodType[] = [],\n TransactionWithResultSchema extends\n typeof _transactionWithResultSchema = typeof _transactionWithResultSchema,\n>({\n input,\n output,\n transactionWithResultSchema,\n}: {\n input?: Input;\n transactionWithResultSchema?: TransactionWithResultSchema;\n output: Output;\n}) => {\n const txWithResultSchema = (\n transactionWithResultSchema ?? _transactionWithResultSchema\n ).optional();\n\n return functionSchema({\n input: z.tuple([...(input ?? []), txWithResultSchema] as any),\n output: z.promise(output),\n }) as z.ZodType<\n (\n ...args: [...InferredArray<Input>, z.infer<TransactionWithResultSchema>?]\n ) => Promise<z.infer<Output>>\n >;\n};\n\nexport type ResolvedGatedTransactionDependencies<GatedTx extends GatedTransaction> =\n GatedTx extends GatedTransaction<any, any, any, any, infer _Dependencies>\n ? {\n [K in keyof _Dependencies]?: ResolvedGatedTransaction<_Dependencies[K]>;\n }\n : never;\n\nexport interface GatedTxCheckResult {\n expectationMet: boolean;\n data: unknown;\n}\n\nexport const gatedTxCheckResultSchema = z.object({\n expectationMet: z.boolean(),\n data: z.any(),\n});\n\nexport const isSuccessfulGatedTransaction = <\n GatedTx extends GatedTransaction,\n TxType extends Transaction,\n>(\n gtx: ResolvedGatedTransaction<GatedTx, TxType>,\n): gtx is BaseGatedTransactionFor<GatedTx> & { result: SuccessfulGatedTransaction<TxType> } => {\n return gtx.result.status === GatedTransactionStatus.SUCCESS;\n};\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\n/**\n * bundleName-chain-uniqueIdKeys\n *\n * E.g., SetPeer-ton-oAppAddress:0xMY_OAPP\n */\nexport type GatedTransactionBundleId = `${string}-${string}-${string}`;\n"]}
@@ -4,7 +4,7 @@ import { transactionWithResultSchema } from '@layerzerolabs/common-chain-model';
4
4
  import { functionSchema, customSchema } from '@layerzerolabs/zod-utils';
5
5
 
6
6
  var gatedTransactionResultSchema = /* @__PURE__ */ __name((txWithResultSchema, onchainDataSchema) => (
7
- // FIXME use this as source of truth for GatedTransactionResult type
7
+ // TODO: use this schema as source of truth for GatedTransactionResult type
8
8
  z.union([
9
9
  z.object({
10
10
  status: z.literal("no_op")
@@ -115,5 +115,5 @@ var gatedTransactionCacheSchema = z.object({
115
115
  });
116
116
 
117
117
  export { GatedTransactionStatus, createGatedTxCheckActivitySchema, createTxArrayDependentActivitySchema, createTxTupleDependentActivitySchema, gatedTransactionCacheSchema, gatedTransactionResultSchema, gatedTransactionSchema, gatedTxCheckResultSchema, isResolvedGtx, isSuccessfulGatedTransaction, resolvedGatedTransactionSchema, successfulGatedTransactionSchema };
118
- //# sourceMappingURL=GJCZND5J.js.map
119
- //# sourceMappingURL=GJCZND5J.js.map
118
+ //# sourceMappingURL=VO5L7KKO.js.map
119
+ //# sourceMappingURL=VO5L7KKO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/schemata.ts"],"names":["gatedTransactionResultSchema","txWithResultSchema","onchainDataSchema","z","union","object","status","literal","submittedTransaction","transactionError","any","finalOnChainState","GatedTransactionStatus","isResolvedGtx","gtx","result","gatedTransactionSchema","_","customSchema","meta","title","description","resolvedGatedTransactionSchema","successfulGatedTransactionSchema","createTxArrayDependentActivitySchema","transactionSchema","extraArgs","functionSchema","input","tuple","def","items","array","output","promise","createTxTupleDependentActivitySchema","txNumber","txs","Array","from","length","createGatedTxCheckActivitySchema","transactionWithResultSchema","_transactionWithResultSchema","optional","gatedTxCheckResultSchema","expectationMet","boolean","data","isSuccessfulGatedTransaction","gatedTransactionCacheSchema","getCachedTxCheckData","cacheSuccessfulTxCheckData"],"mappings":"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","file":"VO5L7KKO.js","sourcesContent":["import z from 'zod';\n\nimport type {\n transactionSchema as _transactionSchema,\n TransactionWithResult,\n} from '@layerzerolabs/common-chain-model';\nimport {\n type Transaction,\n type TransactionWithResultFor,\n transactionWithResultSchema as _transactionWithResultSchema,\n} from '@layerzerolabs/common-chain-model';\nimport type { FunctionPointer } from '@layerzerolabs/function-pointer';\nimport type {\n BrandedError,\n BuildTuple,\n DecimalString,\n IsAny,\n Or,\n} from '@layerzerolabs/typescript-utils';\nimport type { InferredArray } from '@layerzerolabs/zod-utils';\nimport { customSchema, functionSchema } from '@layerzerolabs/zod-utils';\n\nexport type OnChainDataComparisonOperator<OnChainDataType> =\n Or<\n [OnChainDataType extends number | DecimalString ? true : false, IsAny<OnChainDataType>]\n > extends true\n ? '<' | '<=' | '=' | '!=' | '>' | '>='\n : OnChainDataType extends string | object | boolean\n ? '=' | '!='\n : BrandedError<'Unsupported comparison type'>;\n\nexport type OnChainDataComparison<OnChainDataType extends string | number | boolean | object> = {\n operator: OnChainDataComparisonOperator<OnChainDataType>;\n comparisonValue: OnChainDataType;\n};\n\nexport type GatedTransactionCheck<CheckOutput extends Promise<any> = Promise<any>> = {\n functionPointer: FunctionPointer<[tx?: TransactionWithResult], CheckOutput>;\n expectedResult: OnChainDataComparison<Awaited<CheckOutput>>;\n};\n\n// Schema for gated transaction results\nexport const gatedTransactionResultSchema = <\n TxWithResultSchema extends typeof _transactionWithResultSchema,\n OnchainDataSchema extends z.ZodType,\n>(\n txWithResultSchema: TxWithResultSchema,\n onchainDataSchema: OnchainDataSchema,\n) =>\n // TODO: use this schema as source of truth for GatedTransactionResult type\n z.union([\n z.object({\n status: z.literal(GatedTransactionStatus.NO_OP),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.SUCCESS),\n submittedTransaction: txWithResultSchema,\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.TRANSACTION_FAILED),\n transactionError: z.any(),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.FINAL_CHECK_FAILED),\n submittedTransaction: txWithResultSchema,\n finalOnChainState: onchainDataSchema,\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DEPENDENCY_FAILED),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DENIED),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DEFERRED_SUCCESS),\n }),\n ]);\n\nexport type InferOnChainDataTypeFromCheck<Check> = Check extends (...args: any[]) => infer Ret\n ? Awaited<Ret>\n : unknown;\nexport type InferOnChainDataTypeFromGatedTransaction<GatedTx extends GatedTransaction> =\n InferOnChainDataTypeFromCheck<GatedTx['check']>;\n\nexport type GatedTransactionDependencies = GatedTransaction[];\n\n/**\n * Pointer configuration for extracting a deployment artifact from a resolved GTX.\n * - FunctionPointer: Custom pointer to activity factory function\n * - 'DEFAULT': Use the default deployment activity factory function\n * - null: Don't save this artifact\n */\nexport type DeploymentArtifactPointer = FunctionPointer | 'DEFAULT' | null;\n\n/**\n * Pointer configuration for extracting a verification artifact from a resolved GTX.\n * - FunctionPointer: Custom pointer to activity factory function\n * - null: Don't save this artifact\n * Note: No 'DEFAULT' option - verification requires custom implementation per contract type.\n */\nexport type VerificationArtifactPointer = FunctionPointer | null;\n\n// TODO: type FunctionPointer generics on DeploymentArtifactPointer/VerificationArtifactPointer (at least output types), consider converting ContractArtifactPointers to interface\nexport type ContractArtifactPointers = {\n extractDeploymentArtifactPointer: DeploymentArtifactPointer;\n extractVerificationArtifactPointer: VerificationArtifactPointer;\n};\n\nexport type BaseGatedTransaction<\n Name extends string = string,\n CheckOutput extends Promise<any> = Promise<any>,\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = {\n name: Name;\n description?: string;\n bundleName?: string;\n metadata?: {\n deployInfo?: {\n contracts: { [contractName: string]: ContractArtifactPointers };\n alwaysResolve?: boolean;\n };\n };\n chainName: string;\n check: GatedTransactionCheck<CheckOutput>;\n dependencies: _Dependencies;\n /**\n * Ordering-only dependencies: this transaction must be executed after these transactions,\n * but does not require their resolved output. If a transaction appears in both\n * `dependencies` and `orderingDependencies`, the regular dependency semantics take precedence.\n */\n orderingDependencies?: GatedTransactionDependencies;\n cacheable?: boolean;\n uniqueIdKeys?: Record<string, string | number | boolean>;\n};\n\nexport type LiteralGatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckOutput extends Promise<any> = Promise<any>,\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = BaseGatedTransaction<Name, CheckOutput, _Dependencies> & {\n transactionType: 'literal';\n transaction: TxType;\n};\n\nexport type FunctionalGatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckOutput extends Promise<any> = Promise<any>,\n DepInput extends [...args: any[], txes: any] = [txes: any],\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = BaseGatedTransaction<Name, CheckOutput, _Dependencies> & {\n transactionType: 'functional';\n getTransaction: {\n functionPointer: FunctionPointer<DepInput, Promise<TxType>>;\n };\n};\n\nexport type GatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckOutput extends Promise<any> = Promise<any>,\n DepInput extends [...args: any[], txes: any] = [txes: any],\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> =\n | LiteralGatedTransaction<Name, TxType, CheckOutput, _Dependencies>\n | FunctionalGatedTransaction<Name, TxType, CheckOutput, DepInput, _Dependencies>;\n\nexport type BaseGatedTransactionFor<GatedTx extends GatedTransaction> =\n GatedTx extends GatedTransaction<infer Name, any, infer CheckOutput, any, infer _Dependencies>\n ? BaseGatedTransaction<Name, CheckOutput, _Dependencies>\n : never;\n\nexport enum GatedTransactionStatus {\n // precheck passed, no need to send the tx\n NO_OP = 'no_op',\n // precheck failed, tx was sent, postcheck passed\n SUCCESS = 'success',\n // precheck failed, tx was sent but sender returned an error\n TRANSACTION_FAILED = 'transaction_failed',\n // precheck failed, tx was sent, postcheck failed\n FINAL_CHECK_FAILED = 'final_check_failed',\n // the tx couldn't be resolved because one of its dependencies resolved to a failed state\n DEPENDENCY_FAILED = 'dependency_failed',\n // approval to send the tx was explicitly denied\n DENIED = 'denied',\n // precheck failed, tx was sent but indeterminate, deferred execution passed on a recheck\n DEFERRED_SUCCESS = 'deferred_success',\n}\n\ntype NoOpGatedTransaction = {\n status: GatedTransactionStatus.NO_OP;\n};\n\nexport type SuccessfulGatedTransaction<TxType extends Transaction> = {\n status: GatedTransactionStatus.SUCCESS;\n submittedTransaction: TransactionWithResultFor<TxType>;\n};\n\ntype TxFailedGatedTransaction = {\n status: GatedTransactionStatus.TRANSACTION_FAILED;\n transactionError: any;\n};\n\ntype CheckFailedGatedTransaction<GatedTx extends GatedTransaction, TxType extends Transaction> = {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED;\n submittedTransaction: TransactionWithResultFor<TxType>;\n finalOnChainState: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n};\n\ntype DependencyFailedGatedTransaction = {\n status: GatedTransactionStatus.DEPENDENCY_FAILED;\n};\n\ntype DeniedGatedTransaction = {\n status: GatedTransactionStatus.DENIED;\n};\n\ntype DeferredSuccessfulGatedTransaction = {\n status: GatedTransactionStatus.DEFERRED_SUCCESS;\n};\n\nexport type GatedTransactionResult<\n GatedTx extends GatedTransaction = GatedTransaction,\n TxType extends Transaction = Transaction,\n> =\n | NoOpGatedTransaction\n | SuccessfulGatedTransaction<TxType>\n | TxFailedGatedTransaction\n | CheckFailedGatedTransaction<GatedTx, TxType>\n | DependencyFailedGatedTransaction\n | DeniedGatedTransaction\n | DeferredSuccessfulGatedTransaction;\n\nexport type ResolvedGatedTransaction<\n GatedTx extends GatedTransaction = GatedTransaction,\n TxType extends Transaction = Transaction,\n> = BaseGatedTransactionFor<GatedTx> & {\n result: GatedTransactionResult<GatedTx, TxType>;\n};\n\nexport const isResolvedGtx = (\n gtx: GatedTransaction | ResolvedGatedTransaction,\n): gtx is ResolvedGatedTransaction => !!(gtx as ResolvedGatedTransaction).result;\n\nexport const gatedTransactionSchema = <\n Name extends z.ZodString | z.ZodLiteral<string> = z.ZodString,\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n>(_?: {\n name?: Name;\n transactionSchema?: TransactionSchema;\n}) =>\n customSchema<GatedTransaction<z.infer<Name>, z.infer<TransactionSchema>>>().meta({\n title: 'Gated Transaction',\n description: 'A schema for a gated transaction',\n });\n\nexport const resolvedGatedTransactionSchema = <\n Name extends z.ZodString | z.ZodLiteral<string> = z.ZodString,\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n>(_?: {\n name?: Name;\n transactionSchema?: TransactionSchema;\n}) =>\n customSchema<\n ResolvedGatedTransaction<\n GatedTransaction<z.infer<Name>, z.infer<TransactionSchema>>,\n z.infer<TransactionSchema>\n >\n >().meta({\n title: 'Resolved Gated Transaction',\n description: 'A schema for a resolved gated transaction',\n });\n\nexport const successfulGatedTransactionSchema = <\n Name extends z.ZodString | z.ZodLiteral<string> = z.ZodString,\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n>(_?: {\n name?: Name;\n transactionSchema?: TransactionSchema;\n}) =>\n customSchema<\n BaseGatedTransactionFor<GatedTransaction<z.infer<Name>, z.infer<TransactionSchema>>> & {\n result: SuccessfulGatedTransaction<z.infer<TransactionSchema>>;\n }\n >().meta({\n title: 'Successful Gated Transaction',\n description: 'A schema for a successful gated transaction',\n });\n\n/**\n * Builds a schema for an activity that builds a transaction based on the results of other transactions\n * @param transactionSchema The schema for the transaction to be built\n * @param transactionWithResultSchema The schema for the results of the transactions you're building off of\n * @param txNumber The number of transactions you're building off of\n * @param extraArgs Additional arguments that must be passed to the function after the txes\n * @returns A schema for the activity that builds the transaction\n */\nexport const createTxArrayDependentActivitySchema = <\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n ExtraArgs extends z.ZodTuple = z.ZodTuple<[]>,\n>(\n transactionSchema: TransactionSchema,\n extraArgs?: ExtraArgs,\n) => {\n return functionSchema({\n input: z.tuple([\n ...(extraArgs?.def?.items ?? []),\n z.array(\n resolvedGatedTransactionSchema({\n transactionSchema,\n }),\n ),\n ] as any),\n output: z.promise(transactionSchema),\n }) as unknown as z.ZodType<\n [] extends z.infer<ExtraArgs>\n ? (\n txs: ResolvedGatedTransaction<\n GatedTransaction<string, z.infer<TransactionSchema>>\n >[],\n ) => Promise<z.infer<TransactionSchema>>\n : (\n ...args: [\n ...extraArgs: z.infer<ExtraArgs>,\n txs: ResolvedGatedTransaction<\n GatedTransaction<string, z.infer<TransactionSchema>>\n >[],\n ]\n ) => Promise<z.infer<TransactionSchema>>\n >;\n};\n/**\n * Builds a schema for an activity that builds a transaction based on the results of other transactions\n * @param transactionSchema The schema for the transaction to be built\n * @param transactionWithResultSchema The schema for the results of the transactions you're building off of\n * @param txNumber The number of transactions you're building off of\n * @param extraArgs Additional arguments that must be passed to the function after the txes\n * @returns A schema for the activity that builds the transaction\n */\nexport const createTxTupleDependentActivitySchema = <\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n const TxNumber extends number = 1,\n ExtraArgs extends z.ZodTuple = z.ZodTuple<[]>,\n>(\n transactionSchema: TransactionSchema,\n txNumber: TxNumber,\n extraArgs?: ExtraArgs,\n) => {\n const txs = Array.from({ length: txNumber }, () =>\n resolvedGatedTransactionSchema({\n transactionSchema: transactionSchema,\n }),\n );\n\n return functionSchema({\n input: z.tuple([...(extraArgs?.def?.items ?? []), z.tuple(txs as any)] as any),\n output: z.promise(transactionSchema),\n }) as unknown as z.ZodType<\n [] extends z.infer<ExtraArgs>\n ? (\n txs: BuildTuple<\n ResolvedGatedTransaction<\n GatedTransaction<string, z.infer<TransactionSchema>>\n >,\n TxNumber\n >,\n ) => Promise<z.infer<TransactionSchema>>\n : (\n ...args: [\n ...extraArgs: z.infer<ExtraArgs>,\n txs: BuildTuple<\n ResolvedGatedTransaction<\n GatedTransaction<string, z.infer<TransactionSchema>>\n >,\n TxNumber\n >,\n ]\n ) => Promise<z.infer<TransactionSchema>>\n >;\n};\n\nexport const createGatedTxCheckActivitySchema = <\n Output extends z.ZodType,\n const Input extends z.ZodType[] = [],\n TransactionWithResultSchema extends\n typeof _transactionWithResultSchema = typeof _transactionWithResultSchema,\n>({\n input,\n output,\n transactionWithResultSchema,\n}: {\n input?: Input;\n transactionWithResultSchema?: TransactionWithResultSchema;\n output: Output;\n}) => {\n const txWithResultSchema = (\n transactionWithResultSchema ?? _transactionWithResultSchema\n ).optional();\n\n return functionSchema({\n input: z.tuple([...(input ?? []), txWithResultSchema] as any),\n output: z.promise(output),\n }) as z.ZodType<\n (\n ...args: [...InferredArray<Input>, z.infer<TransactionWithResultSchema>?]\n ) => Promise<z.infer<Output>>\n >;\n};\n\nexport type ResolvedGatedTransactionDependencies<GatedTx extends GatedTransaction> =\n GatedTx extends GatedTransaction<any, any, any, any, infer _Dependencies>\n ? {\n [K in keyof _Dependencies]?: ResolvedGatedTransaction<_Dependencies[K]>;\n }\n : never;\n\nexport interface GatedTxCheckResult {\n expectationMet: boolean;\n data: unknown;\n}\n\nexport const gatedTxCheckResultSchema = z.object({\n expectationMet: z.boolean(),\n data: z.any(),\n});\n\nexport const isSuccessfulGatedTransaction = <\n GatedTx extends GatedTransaction,\n TxType extends Transaction,\n>(\n gtx: ResolvedGatedTransaction<GatedTx, TxType>,\n): gtx is BaseGatedTransactionFor<GatedTx> & { result: SuccessfulGatedTransaction<TxType> } => {\n return gtx.result.status === GatedTransactionStatus.SUCCESS;\n};\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\n/**\n * bundleName-chain-uniqueIdKeys\n *\n * E.g., SetPeer-ton-oAppAddress:0xMY_OAPP\n */\nexport type GatedTransactionBundleId = `${string}-${string}-${string}`;\n"]}
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var VE67DSPF_cjs = require('./VE67DSPF.cjs');
4
- var RMQA3ELT_cjs = require('./RMQA3ELT.cjs');
4
+ var _64Q22BPU_cjs = require('./64Q22BPU.cjs');
5
5
  require('./YJF4D23A.cjs');
6
6
 
7
7
 
@@ -24,51 +24,51 @@ Object.defineProperty(exports, "getIdForGatedTransaction", {
24
24
  });
25
25
  Object.defineProperty(exports, "GatedTransactionStatus", {
26
26
  enumerable: true,
27
- get: function () { return RMQA3ELT_cjs.GatedTransactionStatus; }
27
+ get: function () { return _64Q22BPU_cjs.GatedTransactionStatus; }
28
28
  });
29
29
  Object.defineProperty(exports, "createGatedTxCheckActivitySchema", {
30
30
  enumerable: true,
31
- get: function () { return RMQA3ELT_cjs.createGatedTxCheckActivitySchema; }
31
+ get: function () { return _64Q22BPU_cjs.createGatedTxCheckActivitySchema; }
32
32
  });
33
33
  Object.defineProperty(exports, "createTxArrayDependentActivitySchema", {
34
34
  enumerable: true,
35
- get: function () { return RMQA3ELT_cjs.createTxArrayDependentActivitySchema; }
35
+ get: function () { return _64Q22BPU_cjs.createTxArrayDependentActivitySchema; }
36
36
  });
37
37
  Object.defineProperty(exports, "createTxTupleDependentActivitySchema", {
38
38
  enumerable: true,
39
- get: function () { return RMQA3ELT_cjs.createTxTupleDependentActivitySchema; }
39
+ get: function () { return _64Q22BPU_cjs.createTxTupleDependentActivitySchema; }
40
40
  });
41
41
  Object.defineProperty(exports, "gatedTransactionCacheSchema", {
42
42
  enumerable: true,
43
- get: function () { return RMQA3ELT_cjs.gatedTransactionCacheSchema; }
43
+ get: function () { return _64Q22BPU_cjs.gatedTransactionCacheSchema; }
44
44
  });
45
45
  Object.defineProperty(exports, "gatedTransactionResultSchema", {
46
46
  enumerable: true,
47
- get: function () { return RMQA3ELT_cjs.gatedTransactionResultSchema; }
47
+ get: function () { return _64Q22BPU_cjs.gatedTransactionResultSchema; }
48
48
  });
49
49
  Object.defineProperty(exports, "gatedTransactionSchema", {
50
50
  enumerable: true,
51
- get: function () { return RMQA3ELT_cjs.gatedTransactionSchema; }
51
+ get: function () { return _64Q22BPU_cjs.gatedTransactionSchema; }
52
52
  });
53
53
  Object.defineProperty(exports, "gatedTxCheckResultSchema", {
54
54
  enumerable: true,
55
- get: function () { return RMQA3ELT_cjs.gatedTxCheckResultSchema; }
55
+ get: function () { return _64Q22BPU_cjs.gatedTxCheckResultSchema; }
56
56
  });
57
57
  Object.defineProperty(exports, "isResolvedGtx", {
58
58
  enumerable: true,
59
- get: function () { return RMQA3ELT_cjs.isResolvedGtx; }
59
+ get: function () { return _64Q22BPU_cjs.isResolvedGtx; }
60
60
  });
61
61
  Object.defineProperty(exports, "isSuccessfulGatedTransaction", {
62
62
  enumerable: true,
63
- get: function () { return RMQA3ELT_cjs.isSuccessfulGatedTransaction; }
63
+ get: function () { return _64Q22BPU_cjs.isSuccessfulGatedTransaction; }
64
64
  });
65
65
  Object.defineProperty(exports, "resolvedGatedTransactionSchema", {
66
66
  enumerable: true,
67
- get: function () { return RMQA3ELT_cjs.resolvedGatedTransactionSchema; }
67
+ get: function () { return _64Q22BPU_cjs.resolvedGatedTransactionSchema; }
68
68
  });
69
69
  Object.defineProperty(exports, "successfulGatedTransactionSchema", {
70
70
  enumerable: true,
71
- get: function () { return RMQA3ELT_cjs.successfulGatedTransactionSchema; }
71
+ get: function () { return _64Q22BPU_cjs.successfulGatedTransactionSchema; }
72
72
  });
73
73
  //# sourceMappingURL=index.cjs.map
74
74
  //# sourceMappingURL=index.cjs.map
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { constructGatedTransaction, constructGatedTransactionFromPointer, getBundleIdForGatedTransaction, getIdForGatedTransaction } from './S7M4M3JS.js';
2
- export { GatedTransactionStatus, createGatedTxCheckActivitySchema, createTxArrayDependentActivitySchema, createTxTupleDependentActivitySchema, gatedTransactionCacheSchema, gatedTransactionResultSchema, gatedTransactionSchema, gatedTxCheckResultSchema, isResolvedGtx, isSuccessfulGatedTransaction, resolvedGatedTransactionSchema, successfulGatedTransactionSchema } from './GJCZND5J.js';
2
+ export { GatedTransactionStatus, createGatedTxCheckActivitySchema, createTxArrayDependentActivitySchema, createTxTupleDependentActivitySchema, gatedTransactionCacheSchema, gatedTransactionResultSchema, gatedTransactionSchema, gatedTxCheckResultSchema, isResolvedGtx, isSuccessfulGatedTransaction, resolvedGatedTransactionSchema, successfulGatedTransactionSchema } from './VO5L7KKO.js';
3
3
  import './VUOMXK5T.js';
4
4
  //# sourceMappingURL=index.js.map
5
5
  //# sourceMappingURL=index.js.map
package/dist/schemata.cjs CHANGED
@@ -1,57 +1,57 @@
1
1
  'use strict';
2
2
 
3
- var RMQA3ELT_cjs = require('./RMQA3ELT.cjs');
3
+ var _64Q22BPU_cjs = require('./64Q22BPU.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 RMQA3ELT_cjs.GatedTransactionStatus; }
10
+ get: function () { return _64Q22BPU_cjs.GatedTransactionStatus; }
11
11
  });
12
12
  Object.defineProperty(exports, "createGatedTxCheckActivitySchema", {
13
13
  enumerable: true,
14
- get: function () { return RMQA3ELT_cjs.createGatedTxCheckActivitySchema; }
14
+ get: function () { return _64Q22BPU_cjs.createGatedTxCheckActivitySchema; }
15
15
  });
16
16
  Object.defineProperty(exports, "createTxArrayDependentActivitySchema", {
17
17
  enumerable: true,
18
- get: function () { return RMQA3ELT_cjs.createTxArrayDependentActivitySchema; }
18
+ get: function () { return _64Q22BPU_cjs.createTxArrayDependentActivitySchema; }
19
19
  });
20
20
  Object.defineProperty(exports, "createTxTupleDependentActivitySchema", {
21
21
  enumerable: true,
22
- get: function () { return RMQA3ELT_cjs.createTxTupleDependentActivitySchema; }
22
+ get: function () { return _64Q22BPU_cjs.createTxTupleDependentActivitySchema; }
23
23
  });
24
24
  Object.defineProperty(exports, "gatedTransactionCacheSchema", {
25
25
  enumerable: true,
26
- get: function () { return RMQA3ELT_cjs.gatedTransactionCacheSchema; }
26
+ get: function () { return _64Q22BPU_cjs.gatedTransactionCacheSchema; }
27
27
  });
28
28
  Object.defineProperty(exports, "gatedTransactionResultSchema", {
29
29
  enumerable: true,
30
- get: function () { return RMQA3ELT_cjs.gatedTransactionResultSchema; }
30
+ get: function () { return _64Q22BPU_cjs.gatedTransactionResultSchema; }
31
31
  });
32
32
  Object.defineProperty(exports, "gatedTransactionSchema", {
33
33
  enumerable: true,
34
- get: function () { return RMQA3ELT_cjs.gatedTransactionSchema; }
34
+ get: function () { return _64Q22BPU_cjs.gatedTransactionSchema; }
35
35
  });
36
36
  Object.defineProperty(exports, "gatedTxCheckResultSchema", {
37
37
  enumerable: true,
38
- get: function () { return RMQA3ELT_cjs.gatedTxCheckResultSchema; }
38
+ get: function () { return _64Q22BPU_cjs.gatedTxCheckResultSchema; }
39
39
  });
40
40
  Object.defineProperty(exports, "isResolvedGtx", {
41
41
  enumerable: true,
42
- get: function () { return RMQA3ELT_cjs.isResolvedGtx; }
42
+ get: function () { return _64Q22BPU_cjs.isResolvedGtx; }
43
43
  });
44
44
  Object.defineProperty(exports, "isSuccessfulGatedTransaction", {
45
45
  enumerable: true,
46
- get: function () { return RMQA3ELT_cjs.isSuccessfulGatedTransaction; }
46
+ get: function () { return _64Q22BPU_cjs.isSuccessfulGatedTransaction; }
47
47
  });
48
48
  Object.defineProperty(exports, "resolvedGatedTransactionSchema", {
49
49
  enumerable: true,
50
- get: function () { return RMQA3ELT_cjs.resolvedGatedTransactionSchema; }
50
+ get: function () { return _64Q22BPU_cjs.resolvedGatedTransactionSchema; }
51
51
  });
52
52
  Object.defineProperty(exports, "successfulGatedTransactionSchema", {
53
53
  enumerable: true,
54
- get: function () { return RMQA3ELT_cjs.successfulGatedTransactionSchema; }
54
+ get: function () { return _64Q22BPU_cjs.successfulGatedTransactionSchema; }
55
55
  });
56
56
  //# sourceMappingURL=schemata.cjs.map
57
57
  //# sourceMappingURL=schemata.cjs.map
package/dist/schemata.js CHANGED
@@ -1,4 +1,4 @@
1
- export { GatedTransactionStatus, createGatedTxCheckActivitySchema, createTxArrayDependentActivitySchema, createTxTupleDependentActivitySchema, gatedTransactionCacheSchema, gatedTransactionResultSchema, gatedTransactionSchema, gatedTxCheckResultSchema, isResolvedGtx, isSuccessfulGatedTransaction, resolvedGatedTransactionSchema, successfulGatedTransactionSchema } from './GJCZND5J.js';
1
+ export { GatedTransactionStatus, createGatedTxCheckActivitySchema, createTxArrayDependentActivitySchema, createTxTupleDependentActivitySchema, gatedTransactionCacheSchema, gatedTransactionResultSchema, gatedTransactionSchema, gatedTxCheckResultSchema, isResolvedGtx, isSuccessfulGatedTransaction, resolvedGatedTransactionSchema, successfulGatedTransactionSchema } from './VO5L7KKO.js';
2
2
  import './VUOMXK5T.js';
3
3
  //# sourceMappingURL=schemata.js.map
4
4
  //# sourceMappingURL=schemata.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@layerzerolabs/gated-transaction",
3
- "version": "0.2.66",
3
+ "version": "0.2.67",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "sideEffects": false,
@@ -16,21 +16,21 @@
16
16
  "types": "./dist/index.d.ts",
17
17
  "dependencies": {
18
18
  "zod": "4.3.5",
19
- "@layerzerolabs/common-chain-model": "0.2.66",
20
- "@layerzerolabs/zod-utils": "0.2.66",
21
- "@layerzerolabs/function-pointer": "0.2.66"
19
+ "@layerzerolabs/common-chain-model": "0.2.67",
20
+ "@layerzerolabs/zod-utils": "0.2.67",
21
+ "@layerzerolabs/function-pointer": "0.2.67"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@types/lodash.isequal": "^4.5.8",
25
25
  "tsup": "^8.4.0",
26
26
  "vitest": "^3.2.3",
27
- "@layerzerolabs/tsup-configuration": "0.2.66",
28
- "@layerzerolabs/base-definitions": "0.2.66",
29
- "@layerzerolabs/typescript-utils": "0.2.66",
30
- "@layerzerolabs/typescript-configuration": "0.2.66"
27
+ "@layerzerolabs/base-definitions": "0.2.67",
28
+ "@layerzerolabs/tsup-configuration": "0.2.67",
29
+ "@layerzerolabs/typescript-configuration": "0.2.67",
30
+ "@layerzerolabs/typescript-utils": "0.2.67"
31
31
  },
32
32
  "publishConfig": {
33
- "access": "restricted",
33
+ "access": "public",
34
34
  "registry": "https://registry.npmjs.org/"
35
35
  },
36
36
  "scripts": {
package/src/schemata.ts CHANGED
@@ -47,7 +47,7 @@ export const gatedTransactionResultSchema = <
47
47
  txWithResultSchema: TxWithResultSchema,
48
48
  onchainDataSchema: OnchainDataSchema,
49
49
  ) =>
50
- // FIXME use this as source of truth for GatedTransactionResult type
50
+ // TODO: use this schema as source of truth for GatedTransactionResult type
51
51
  z.union([
52
52
  z.object({
53
53
  status: z.literal(GatedTransactionStatus.NO_OP),
@@ -100,7 +100,7 @@ export type DeploymentArtifactPointer = FunctionPointer | 'DEFAULT' | null;
100
100
  */
101
101
  export type VerificationArtifactPointer = FunctionPointer | null;
102
102
 
103
- // TODO: riley — type FunctionPointer generics on DeploymentArtifactPointer/VerificationArtifactPointer (at least output types), consider converting ContractArtifactPointers to interface
103
+ // TODO: type FunctionPointer generics on DeploymentArtifactPointer/VerificationArtifactPointer (at least output types), consider converting ContractArtifactPointers to interface
104
104
  export type ContractArtifactPointers = {
105
105
  extractDeploymentArtifactPointer: DeploymentArtifactPointer;
106
106
  extractVerificationArtifactPointer: VerificationArtifactPointer;
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/schemata.ts"],"names":["gatedTransactionResultSchema","txWithResultSchema","onchainDataSchema","z","union","object","status","literal","submittedTransaction","transactionError","any","finalOnChainState","GatedTransactionStatus","isResolvedGtx","gtx","result","gatedTransactionSchema","_","customSchema","meta","title","description","resolvedGatedTransactionSchema","successfulGatedTransactionSchema","createTxArrayDependentActivitySchema","transactionSchema","extraArgs","functionSchema","input","tuple","def","items","array","output","promise","createTxTupleDependentActivitySchema","txNumber","txs","Array","from","length","createGatedTxCheckActivitySchema","transactionWithResultSchema","_transactionWithResultSchema","optional","gatedTxCheckResultSchema","expectationMet","boolean","data","isSuccessfulGatedTransaction","gatedTransactionCacheSchema","getCachedTxCheckData","cacheSuccessfulTxCheckData"],"mappings":"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","file":"GJCZND5J.js","sourcesContent":["import z from 'zod';\n\nimport type {\n transactionSchema as _transactionSchema,\n TransactionWithResult,\n} from '@layerzerolabs/common-chain-model';\nimport {\n type Transaction,\n type TransactionWithResultFor,\n transactionWithResultSchema as _transactionWithResultSchema,\n} from '@layerzerolabs/common-chain-model';\nimport type { FunctionPointer } from '@layerzerolabs/function-pointer';\nimport type {\n BrandedError,\n BuildTuple,\n DecimalString,\n IsAny,\n Or,\n} from '@layerzerolabs/typescript-utils';\nimport type { InferredArray } from '@layerzerolabs/zod-utils';\nimport { customSchema, functionSchema } from '@layerzerolabs/zod-utils';\n\nexport type OnChainDataComparisonOperator<OnChainDataType> =\n Or<\n [OnChainDataType extends number | DecimalString ? true : false, IsAny<OnChainDataType>]\n > extends true\n ? '<' | '<=' | '=' | '!=' | '>' | '>='\n : OnChainDataType extends string | object | boolean\n ? '=' | '!='\n : BrandedError<'Unsupported comparison type'>;\n\nexport type OnChainDataComparison<OnChainDataType extends string | number | boolean | object> = {\n operator: OnChainDataComparisonOperator<OnChainDataType>;\n comparisonValue: OnChainDataType;\n};\n\nexport type GatedTransactionCheck<CheckOutput extends Promise<any> = Promise<any>> = {\n functionPointer: FunctionPointer<[tx?: TransactionWithResult], CheckOutput>;\n expectedResult: OnChainDataComparison<Awaited<CheckOutput>>;\n};\n\n// Schema for gated transaction results\nexport const gatedTransactionResultSchema = <\n TxWithResultSchema extends typeof _transactionWithResultSchema,\n OnchainDataSchema extends z.ZodType,\n>(\n txWithResultSchema: TxWithResultSchema,\n onchainDataSchema: OnchainDataSchema,\n) =>\n // FIXME use this as source of truth for GatedTransactionResult type\n z.union([\n z.object({\n status: z.literal(GatedTransactionStatus.NO_OP),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.SUCCESS),\n submittedTransaction: txWithResultSchema,\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.TRANSACTION_FAILED),\n transactionError: z.any(),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.FINAL_CHECK_FAILED),\n submittedTransaction: txWithResultSchema,\n finalOnChainState: onchainDataSchema,\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DEPENDENCY_FAILED),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DENIED),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DEFERRED_SUCCESS),\n }),\n ]);\n\nexport type InferOnChainDataTypeFromCheck<Check> = Check extends (...args: any[]) => infer Ret\n ? Awaited<Ret>\n : unknown;\nexport type InferOnChainDataTypeFromGatedTransaction<GatedTx extends GatedTransaction> =\n InferOnChainDataTypeFromCheck<GatedTx['check']>;\n\nexport type GatedTransactionDependencies = GatedTransaction[];\n\n/**\n * Pointer configuration for extracting a deployment artifact from a resolved GTX.\n * - FunctionPointer: Custom pointer to activity factory function\n * - 'DEFAULT': Use the default deployment activity factory function\n * - null: Don't save this artifact\n */\nexport type DeploymentArtifactPointer = FunctionPointer | 'DEFAULT' | null;\n\n/**\n * Pointer configuration for extracting a verification artifact from a resolved GTX.\n * - FunctionPointer: Custom pointer to activity factory function\n * - null: Don't save this artifact\n * Note: No 'DEFAULT' option - verification requires custom implementation per contract type.\n */\nexport type VerificationArtifactPointer = FunctionPointer | null;\n\n// TODO: riley — type FunctionPointer generics on DeploymentArtifactPointer/VerificationArtifactPointer (at least output types), consider converting ContractArtifactPointers to interface\nexport type ContractArtifactPointers = {\n extractDeploymentArtifactPointer: DeploymentArtifactPointer;\n extractVerificationArtifactPointer: VerificationArtifactPointer;\n};\n\nexport type BaseGatedTransaction<\n Name extends string = string,\n CheckOutput extends Promise<any> = Promise<any>,\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = {\n name: Name;\n description?: string;\n bundleName?: string;\n metadata?: {\n deployInfo?: {\n contracts: { [contractName: string]: ContractArtifactPointers };\n alwaysResolve?: boolean;\n };\n };\n chainName: string;\n check: GatedTransactionCheck<CheckOutput>;\n dependencies: _Dependencies;\n /**\n * Ordering-only dependencies: this transaction must be executed after these transactions,\n * but does not require their resolved output. If a transaction appears in both\n * `dependencies` and `orderingDependencies`, the regular dependency semantics take precedence.\n */\n orderingDependencies?: GatedTransactionDependencies;\n cacheable?: boolean;\n uniqueIdKeys?: Record<string, string | number | boolean>;\n};\n\nexport type LiteralGatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckOutput extends Promise<any> = Promise<any>,\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = BaseGatedTransaction<Name, CheckOutput, _Dependencies> & {\n transactionType: 'literal';\n transaction: TxType;\n};\n\nexport type FunctionalGatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckOutput extends Promise<any> = Promise<any>,\n DepInput extends [...args: any[], txes: any] = [txes: any],\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = BaseGatedTransaction<Name, CheckOutput, _Dependencies> & {\n transactionType: 'functional';\n getTransaction: {\n functionPointer: FunctionPointer<DepInput, Promise<TxType>>;\n };\n};\n\nexport type GatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckOutput extends Promise<any> = Promise<any>,\n DepInput extends [...args: any[], txes: any] = [txes: any],\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> =\n | LiteralGatedTransaction<Name, TxType, CheckOutput, _Dependencies>\n | FunctionalGatedTransaction<Name, TxType, CheckOutput, DepInput, _Dependencies>;\n\nexport type BaseGatedTransactionFor<GatedTx extends GatedTransaction> =\n GatedTx extends GatedTransaction<infer Name, any, infer CheckOutput, any, infer _Dependencies>\n ? BaseGatedTransaction<Name, CheckOutput, _Dependencies>\n : never;\n\nexport enum GatedTransactionStatus {\n // precheck passed, no need to send the tx\n NO_OP = 'no_op',\n // precheck failed, tx was sent, postcheck passed\n SUCCESS = 'success',\n // precheck failed, tx was sent but sender returned an error\n TRANSACTION_FAILED = 'transaction_failed',\n // precheck failed, tx was sent, postcheck failed\n FINAL_CHECK_FAILED = 'final_check_failed',\n // the tx couldn't be resolved because one of its dependencies resolved to a failed state\n DEPENDENCY_FAILED = 'dependency_failed',\n // approval to send the tx was explicitly denied\n DENIED = 'denied',\n // precheck failed, tx was sent but indeterminate, deferred execution passed on a recheck\n DEFERRED_SUCCESS = 'deferred_success',\n}\n\ntype NoOpGatedTransaction = {\n status: GatedTransactionStatus.NO_OP;\n};\n\nexport type SuccessfulGatedTransaction<TxType extends Transaction> = {\n status: GatedTransactionStatus.SUCCESS;\n submittedTransaction: TransactionWithResultFor<TxType>;\n};\n\ntype TxFailedGatedTransaction = {\n status: GatedTransactionStatus.TRANSACTION_FAILED;\n transactionError: any;\n};\n\ntype CheckFailedGatedTransaction<GatedTx extends GatedTransaction, TxType extends Transaction> = {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED;\n submittedTransaction: TransactionWithResultFor<TxType>;\n finalOnChainState: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n};\n\ntype DependencyFailedGatedTransaction = {\n status: GatedTransactionStatus.DEPENDENCY_FAILED;\n};\n\ntype DeniedGatedTransaction = {\n status: GatedTransactionStatus.DENIED;\n};\n\ntype DeferredSuccessfulGatedTransaction = {\n status: GatedTransactionStatus.DEFERRED_SUCCESS;\n};\n\nexport type GatedTransactionResult<\n GatedTx extends GatedTransaction = GatedTransaction,\n TxType extends Transaction = Transaction,\n> =\n | NoOpGatedTransaction\n | SuccessfulGatedTransaction<TxType>\n | TxFailedGatedTransaction\n | CheckFailedGatedTransaction<GatedTx, TxType>\n | DependencyFailedGatedTransaction\n | DeniedGatedTransaction\n | DeferredSuccessfulGatedTransaction;\n\nexport type ResolvedGatedTransaction<\n GatedTx extends GatedTransaction = GatedTransaction,\n TxType extends Transaction = Transaction,\n> = BaseGatedTransactionFor<GatedTx> & {\n result: GatedTransactionResult<GatedTx, TxType>;\n};\n\nexport const isResolvedGtx = (\n gtx: GatedTransaction | ResolvedGatedTransaction,\n): gtx is ResolvedGatedTransaction => !!(gtx as ResolvedGatedTransaction).result;\n\nexport const gatedTransactionSchema = <\n Name extends z.ZodString | z.ZodLiteral<string> = z.ZodString,\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n>(_?: {\n name?: Name;\n transactionSchema?: TransactionSchema;\n}) =>\n customSchema<GatedTransaction<z.infer<Name>, z.infer<TransactionSchema>>>().meta({\n title: 'Gated Transaction',\n description: 'A schema for a gated transaction',\n });\n\nexport const resolvedGatedTransactionSchema = <\n Name extends z.ZodString | z.ZodLiteral<string> = z.ZodString,\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n>(_?: {\n name?: Name;\n transactionSchema?: TransactionSchema;\n}) =>\n customSchema<\n ResolvedGatedTransaction<\n GatedTransaction<z.infer<Name>, z.infer<TransactionSchema>>,\n z.infer<TransactionSchema>\n >\n >().meta({\n title: 'Resolved Gated Transaction',\n description: 'A schema for a resolved gated transaction',\n });\n\nexport const successfulGatedTransactionSchema = <\n Name extends z.ZodString | z.ZodLiteral<string> = z.ZodString,\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n>(_?: {\n name?: Name;\n transactionSchema?: TransactionSchema;\n}) =>\n customSchema<\n BaseGatedTransactionFor<GatedTransaction<z.infer<Name>, z.infer<TransactionSchema>>> & {\n result: SuccessfulGatedTransaction<z.infer<TransactionSchema>>;\n }\n >().meta({\n title: 'Successful Gated Transaction',\n description: 'A schema for a successful gated transaction',\n });\n\n/**\n * Builds a schema for an activity that builds a transaction based on the results of other transactions\n * @param transactionSchema The schema for the transaction to be built\n * @param transactionWithResultSchema The schema for the results of the transactions you're building off of\n * @param txNumber The number of transactions you're building off of\n * @param extraArgs Additional arguments that must be passed to the function after the txes\n * @returns A schema for the activity that builds the transaction\n */\nexport const createTxArrayDependentActivitySchema = <\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n ExtraArgs extends z.ZodTuple = z.ZodTuple<[]>,\n>(\n transactionSchema: TransactionSchema,\n extraArgs?: ExtraArgs,\n) => {\n return functionSchema({\n input: z.tuple([\n ...(extraArgs?.def?.items ?? []),\n z.array(\n resolvedGatedTransactionSchema({\n transactionSchema,\n }),\n ),\n ] as any),\n output: z.promise(transactionSchema),\n }) as unknown as z.ZodType<\n [] extends z.infer<ExtraArgs>\n ? (\n txs: ResolvedGatedTransaction<\n GatedTransaction<string, z.infer<TransactionSchema>>\n >[],\n ) => Promise<z.infer<TransactionSchema>>\n : (\n ...args: [\n ...extraArgs: z.infer<ExtraArgs>,\n txs: ResolvedGatedTransaction<\n GatedTransaction<string, z.infer<TransactionSchema>>\n >[],\n ]\n ) => Promise<z.infer<TransactionSchema>>\n >;\n};\n/**\n * Builds a schema for an activity that builds a transaction based on the results of other transactions\n * @param transactionSchema The schema for the transaction to be built\n * @param transactionWithResultSchema The schema for the results of the transactions you're building off of\n * @param txNumber The number of transactions you're building off of\n * @param extraArgs Additional arguments that must be passed to the function after the txes\n * @returns A schema for the activity that builds the transaction\n */\nexport const createTxTupleDependentActivitySchema = <\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n const TxNumber extends number = 1,\n ExtraArgs extends z.ZodTuple = z.ZodTuple<[]>,\n>(\n transactionSchema: TransactionSchema,\n txNumber: TxNumber,\n extraArgs?: ExtraArgs,\n) => {\n const txs = Array.from({ length: txNumber }, () =>\n resolvedGatedTransactionSchema({\n transactionSchema: transactionSchema,\n }),\n );\n\n return functionSchema({\n input: z.tuple([...(extraArgs?.def?.items ?? []), z.tuple(txs as any)] as any),\n output: z.promise(transactionSchema),\n }) as unknown as z.ZodType<\n [] extends z.infer<ExtraArgs>\n ? (\n txs: BuildTuple<\n ResolvedGatedTransaction<\n GatedTransaction<string, z.infer<TransactionSchema>>\n >,\n TxNumber\n >,\n ) => Promise<z.infer<TransactionSchema>>\n : (\n ...args: [\n ...extraArgs: z.infer<ExtraArgs>,\n txs: BuildTuple<\n ResolvedGatedTransaction<\n GatedTransaction<string, z.infer<TransactionSchema>>\n >,\n TxNumber\n >,\n ]\n ) => Promise<z.infer<TransactionSchema>>\n >;\n};\n\nexport const createGatedTxCheckActivitySchema = <\n Output extends z.ZodType,\n const Input extends z.ZodType[] = [],\n TransactionWithResultSchema extends\n typeof _transactionWithResultSchema = typeof _transactionWithResultSchema,\n>({\n input,\n output,\n transactionWithResultSchema,\n}: {\n input?: Input;\n transactionWithResultSchema?: TransactionWithResultSchema;\n output: Output;\n}) => {\n const txWithResultSchema = (\n transactionWithResultSchema ?? _transactionWithResultSchema\n ).optional();\n\n return functionSchema({\n input: z.tuple([...(input ?? []), txWithResultSchema] as any),\n output: z.promise(output),\n }) as z.ZodType<\n (\n ...args: [...InferredArray<Input>, z.infer<TransactionWithResultSchema>?]\n ) => Promise<z.infer<Output>>\n >;\n};\n\nexport type ResolvedGatedTransactionDependencies<GatedTx extends GatedTransaction> =\n GatedTx extends GatedTransaction<any, any, any, any, infer _Dependencies>\n ? {\n [K in keyof _Dependencies]?: ResolvedGatedTransaction<_Dependencies[K]>;\n }\n : never;\n\nexport interface GatedTxCheckResult {\n expectationMet: boolean;\n data: unknown;\n}\n\nexport const gatedTxCheckResultSchema = z.object({\n expectationMet: z.boolean(),\n data: z.any(),\n});\n\nexport const isSuccessfulGatedTransaction = <\n GatedTx extends GatedTransaction,\n TxType extends Transaction,\n>(\n gtx: ResolvedGatedTransaction<GatedTx, TxType>,\n): gtx is BaseGatedTransactionFor<GatedTx> & { result: SuccessfulGatedTransaction<TxType> } => {\n return gtx.result.status === GatedTransactionStatus.SUCCESS;\n};\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\n/**\n * bundleName-chain-uniqueIdKeys\n *\n * E.g., SetPeer-ton-oAppAddress:0xMY_OAPP\n */\nexport type GatedTransactionBundleId = `${string}-${string}-${string}`;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/schemata.ts"],"names":["gatedTransactionResultSchema","txWithResultSchema","onchainDataSchema","z","union","object","status","literal","submittedTransaction","transactionError","any","finalOnChainState","GatedTransactionStatus","isResolvedGtx","__name","gtx","result","gatedTransactionSchema","_","customSchema","meta","title","description","resolvedGatedTransactionSchema","successfulGatedTransactionSchema","createTxArrayDependentActivitySchema","transactionSchema","extraArgs","functionSchema","input","tuple","def","items","array","output","promise","createTxTupleDependentActivitySchema","txNumber","txs","Array","from","length","createGatedTxCheckActivitySchema","transactionWithResultSchema","_transactionWithResultSchema","optional","gatedTxCheckResultSchema","expectationMet","boolean","data","isSuccessfulGatedTransaction","gatedTransactionCacheSchema","getCachedTxCheckData","cacheSuccessfulTxCheckData"],"mappings":"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","file":"RMQA3ELT.cjs","sourcesContent":["import z from 'zod';\n\nimport type {\n transactionSchema as _transactionSchema,\n TransactionWithResult,\n} from '@layerzerolabs/common-chain-model';\nimport {\n type Transaction,\n type TransactionWithResultFor,\n transactionWithResultSchema as _transactionWithResultSchema,\n} from '@layerzerolabs/common-chain-model';\nimport type { FunctionPointer } from '@layerzerolabs/function-pointer';\nimport type {\n BrandedError,\n BuildTuple,\n DecimalString,\n IsAny,\n Or,\n} from '@layerzerolabs/typescript-utils';\nimport type { InferredArray } from '@layerzerolabs/zod-utils';\nimport { customSchema, functionSchema } from '@layerzerolabs/zod-utils';\n\nexport type OnChainDataComparisonOperator<OnChainDataType> =\n Or<\n [OnChainDataType extends number | DecimalString ? true : false, IsAny<OnChainDataType>]\n > extends true\n ? '<' | '<=' | '=' | '!=' | '>' | '>='\n : OnChainDataType extends string | object | boolean\n ? '=' | '!='\n : BrandedError<'Unsupported comparison type'>;\n\nexport type OnChainDataComparison<OnChainDataType extends string | number | boolean | object> = {\n operator: OnChainDataComparisonOperator<OnChainDataType>;\n comparisonValue: OnChainDataType;\n};\n\nexport type GatedTransactionCheck<CheckOutput extends Promise<any> = Promise<any>> = {\n functionPointer: FunctionPointer<[tx?: TransactionWithResult], CheckOutput>;\n expectedResult: OnChainDataComparison<Awaited<CheckOutput>>;\n};\n\n// Schema for gated transaction results\nexport const gatedTransactionResultSchema = <\n TxWithResultSchema extends typeof _transactionWithResultSchema,\n OnchainDataSchema extends z.ZodType,\n>(\n txWithResultSchema: TxWithResultSchema,\n onchainDataSchema: OnchainDataSchema,\n) =>\n // FIXME use this as source of truth for GatedTransactionResult type\n z.union([\n z.object({\n status: z.literal(GatedTransactionStatus.NO_OP),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.SUCCESS),\n submittedTransaction: txWithResultSchema,\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.TRANSACTION_FAILED),\n transactionError: z.any(),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.FINAL_CHECK_FAILED),\n submittedTransaction: txWithResultSchema,\n finalOnChainState: onchainDataSchema,\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DEPENDENCY_FAILED),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DENIED),\n }),\n z.object({\n status: z.literal(GatedTransactionStatus.DEFERRED_SUCCESS),\n }),\n ]);\n\nexport type InferOnChainDataTypeFromCheck<Check> = Check extends (...args: any[]) => infer Ret\n ? Awaited<Ret>\n : unknown;\nexport type InferOnChainDataTypeFromGatedTransaction<GatedTx extends GatedTransaction> =\n InferOnChainDataTypeFromCheck<GatedTx['check']>;\n\nexport type GatedTransactionDependencies = GatedTransaction[];\n\n/**\n * Pointer configuration for extracting a deployment artifact from a resolved GTX.\n * - FunctionPointer: Custom pointer to activity factory function\n * - 'DEFAULT': Use the default deployment activity factory function\n * - null: Don't save this artifact\n */\nexport type DeploymentArtifactPointer = FunctionPointer | 'DEFAULT' | null;\n\n/**\n * Pointer configuration for extracting a verification artifact from a resolved GTX.\n * - FunctionPointer: Custom pointer to activity factory function\n * - null: Don't save this artifact\n * Note: No 'DEFAULT' option - verification requires custom implementation per contract type.\n */\nexport type VerificationArtifactPointer = FunctionPointer | null;\n\n// TODO: riley — type FunctionPointer generics on DeploymentArtifactPointer/VerificationArtifactPointer (at least output types), consider converting ContractArtifactPointers to interface\nexport type ContractArtifactPointers = {\n extractDeploymentArtifactPointer: DeploymentArtifactPointer;\n extractVerificationArtifactPointer: VerificationArtifactPointer;\n};\n\nexport type BaseGatedTransaction<\n Name extends string = string,\n CheckOutput extends Promise<any> = Promise<any>,\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = {\n name: Name;\n description?: string;\n bundleName?: string;\n metadata?: {\n deployInfo?: {\n contracts: { [contractName: string]: ContractArtifactPointers };\n alwaysResolve?: boolean;\n };\n };\n chainName: string;\n check: GatedTransactionCheck<CheckOutput>;\n dependencies: _Dependencies;\n /**\n * Ordering-only dependencies: this transaction must be executed after these transactions,\n * but does not require their resolved output. If a transaction appears in both\n * `dependencies` and `orderingDependencies`, the regular dependency semantics take precedence.\n */\n orderingDependencies?: GatedTransactionDependencies;\n cacheable?: boolean;\n uniqueIdKeys?: Record<string, string | number | boolean>;\n};\n\nexport type LiteralGatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckOutput extends Promise<any> = Promise<any>,\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = BaseGatedTransaction<Name, CheckOutput, _Dependencies> & {\n transactionType: 'literal';\n transaction: TxType;\n};\n\nexport type FunctionalGatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckOutput extends Promise<any> = Promise<any>,\n DepInput extends [...args: any[], txes: any] = [txes: any],\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> = BaseGatedTransaction<Name, CheckOutput, _Dependencies> & {\n transactionType: 'functional';\n getTransaction: {\n functionPointer: FunctionPointer<DepInput, Promise<TxType>>;\n };\n};\n\nexport type GatedTransaction<\n Name extends string = string,\n TxType extends Transaction = Transaction,\n CheckOutput extends Promise<any> = Promise<any>,\n DepInput extends [...args: any[], txes: any] = [txes: any],\n _Dependencies extends GatedTransactionDependencies = GatedTransactionDependencies,\n> =\n | LiteralGatedTransaction<Name, TxType, CheckOutput, _Dependencies>\n | FunctionalGatedTransaction<Name, TxType, CheckOutput, DepInput, _Dependencies>;\n\nexport type BaseGatedTransactionFor<GatedTx extends GatedTransaction> =\n GatedTx extends GatedTransaction<infer Name, any, infer CheckOutput, any, infer _Dependencies>\n ? BaseGatedTransaction<Name, CheckOutput, _Dependencies>\n : never;\n\nexport enum GatedTransactionStatus {\n // precheck passed, no need to send the tx\n NO_OP = 'no_op',\n // precheck failed, tx was sent, postcheck passed\n SUCCESS = 'success',\n // precheck failed, tx was sent but sender returned an error\n TRANSACTION_FAILED = 'transaction_failed',\n // precheck failed, tx was sent, postcheck failed\n FINAL_CHECK_FAILED = 'final_check_failed',\n // the tx couldn't be resolved because one of its dependencies resolved to a failed state\n DEPENDENCY_FAILED = 'dependency_failed',\n // approval to send the tx was explicitly denied\n DENIED = 'denied',\n // precheck failed, tx was sent but indeterminate, deferred execution passed on a recheck\n DEFERRED_SUCCESS = 'deferred_success',\n}\n\ntype NoOpGatedTransaction = {\n status: GatedTransactionStatus.NO_OP;\n};\n\nexport type SuccessfulGatedTransaction<TxType extends Transaction> = {\n status: GatedTransactionStatus.SUCCESS;\n submittedTransaction: TransactionWithResultFor<TxType>;\n};\n\ntype TxFailedGatedTransaction = {\n status: GatedTransactionStatus.TRANSACTION_FAILED;\n transactionError: any;\n};\n\ntype CheckFailedGatedTransaction<GatedTx extends GatedTransaction, TxType extends Transaction> = {\n status: GatedTransactionStatus.FINAL_CHECK_FAILED;\n submittedTransaction: TransactionWithResultFor<TxType>;\n finalOnChainState: InferOnChainDataTypeFromGatedTransaction<GatedTx>;\n};\n\ntype DependencyFailedGatedTransaction = {\n status: GatedTransactionStatus.DEPENDENCY_FAILED;\n};\n\ntype DeniedGatedTransaction = {\n status: GatedTransactionStatus.DENIED;\n};\n\ntype DeferredSuccessfulGatedTransaction = {\n status: GatedTransactionStatus.DEFERRED_SUCCESS;\n};\n\nexport type GatedTransactionResult<\n GatedTx extends GatedTransaction = GatedTransaction,\n TxType extends Transaction = Transaction,\n> =\n | NoOpGatedTransaction\n | SuccessfulGatedTransaction<TxType>\n | TxFailedGatedTransaction\n | CheckFailedGatedTransaction<GatedTx, TxType>\n | DependencyFailedGatedTransaction\n | DeniedGatedTransaction\n | DeferredSuccessfulGatedTransaction;\n\nexport type ResolvedGatedTransaction<\n GatedTx extends GatedTransaction = GatedTransaction,\n TxType extends Transaction = Transaction,\n> = BaseGatedTransactionFor<GatedTx> & {\n result: GatedTransactionResult<GatedTx, TxType>;\n};\n\nexport const isResolvedGtx = (\n gtx: GatedTransaction | ResolvedGatedTransaction,\n): gtx is ResolvedGatedTransaction => !!(gtx as ResolvedGatedTransaction).result;\n\nexport const gatedTransactionSchema = <\n Name extends z.ZodString | z.ZodLiteral<string> = z.ZodString,\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n>(_?: {\n name?: Name;\n transactionSchema?: TransactionSchema;\n}) =>\n customSchema<GatedTransaction<z.infer<Name>, z.infer<TransactionSchema>>>().meta({\n title: 'Gated Transaction',\n description: 'A schema for a gated transaction',\n });\n\nexport const resolvedGatedTransactionSchema = <\n Name extends z.ZodString | z.ZodLiteral<string> = z.ZodString,\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n>(_?: {\n name?: Name;\n transactionSchema?: TransactionSchema;\n}) =>\n customSchema<\n ResolvedGatedTransaction<\n GatedTransaction<z.infer<Name>, z.infer<TransactionSchema>>,\n z.infer<TransactionSchema>\n >\n >().meta({\n title: 'Resolved Gated Transaction',\n description: 'A schema for a resolved gated transaction',\n });\n\nexport const successfulGatedTransactionSchema = <\n Name extends z.ZodString | z.ZodLiteral<string> = z.ZodString,\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n>(_?: {\n name?: Name;\n transactionSchema?: TransactionSchema;\n}) =>\n customSchema<\n BaseGatedTransactionFor<GatedTransaction<z.infer<Name>, z.infer<TransactionSchema>>> & {\n result: SuccessfulGatedTransaction<z.infer<TransactionSchema>>;\n }\n >().meta({\n title: 'Successful Gated Transaction',\n description: 'A schema for a successful gated transaction',\n });\n\n/**\n * Builds a schema for an activity that builds a transaction based on the results of other transactions\n * @param transactionSchema The schema for the transaction to be built\n * @param transactionWithResultSchema The schema for the results of the transactions you're building off of\n * @param txNumber The number of transactions you're building off of\n * @param extraArgs Additional arguments that must be passed to the function after the txes\n * @returns A schema for the activity that builds the transaction\n */\nexport const createTxArrayDependentActivitySchema = <\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n ExtraArgs extends z.ZodTuple = z.ZodTuple<[]>,\n>(\n transactionSchema: TransactionSchema,\n extraArgs?: ExtraArgs,\n) => {\n return functionSchema({\n input: z.tuple([\n ...(extraArgs?.def?.items ?? []),\n z.array(\n resolvedGatedTransactionSchema({\n transactionSchema,\n }),\n ),\n ] as any),\n output: z.promise(transactionSchema),\n }) as unknown as z.ZodType<\n [] extends z.infer<ExtraArgs>\n ? (\n txs: ResolvedGatedTransaction<\n GatedTransaction<string, z.infer<TransactionSchema>>\n >[],\n ) => Promise<z.infer<TransactionSchema>>\n : (\n ...args: [\n ...extraArgs: z.infer<ExtraArgs>,\n txs: ResolvedGatedTransaction<\n GatedTransaction<string, z.infer<TransactionSchema>>\n >[],\n ]\n ) => Promise<z.infer<TransactionSchema>>\n >;\n};\n/**\n * Builds a schema for an activity that builds a transaction based on the results of other transactions\n * @param transactionSchema The schema for the transaction to be built\n * @param transactionWithResultSchema The schema for the results of the transactions you're building off of\n * @param txNumber The number of transactions you're building off of\n * @param extraArgs Additional arguments that must be passed to the function after the txes\n * @returns A schema for the activity that builds the transaction\n */\nexport const createTxTupleDependentActivitySchema = <\n TransactionSchema extends typeof _transactionSchema = typeof _transactionSchema,\n const TxNumber extends number = 1,\n ExtraArgs extends z.ZodTuple = z.ZodTuple<[]>,\n>(\n transactionSchema: TransactionSchema,\n txNumber: TxNumber,\n extraArgs?: ExtraArgs,\n) => {\n const txs = Array.from({ length: txNumber }, () =>\n resolvedGatedTransactionSchema({\n transactionSchema: transactionSchema,\n }),\n );\n\n return functionSchema({\n input: z.tuple([...(extraArgs?.def?.items ?? []), z.tuple(txs as any)] as any),\n output: z.promise(transactionSchema),\n }) as unknown as z.ZodType<\n [] extends z.infer<ExtraArgs>\n ? (\n txs: BuildTuple<\n ResolvedGatedTransaction<\n GatedTransaction<string, z.infer<TransactionSchema>>\n >,\n TxNumber\n >,\n ) => Promise<z.infer<TransactionSchema>>\n : (\n ...args: [\n ...extraArgs: z.infer<ExtraArgs>,\n txs: BuildTuple<\n ResolvedGatedTransaction<\n GatedTransaction<string, z.infer<TransactionSchema>>\n >,\n TxNumber\n >,\n ]\n ) => Promise<z.infer<TransactionSchema>>\n >;\n};\n\nexport const createGatedTxCheckActivitySchema = <\n Output extends z.ZodType,\n const Input extends z.ZodType[] = [],\n TransactionWithResultSchema extends\n typeof _transactionWithResultSchema = typeof _transactionWithResultSchema,\n>({\n input,\n output,\n transactionWithResultSchema,\n}: {\n input?: Input;\n transactionWithResultSchema?: TransactionWithResultSchema;\n output: Output;\n}) => {\n const txWithResultSchema = (\n transactionWithResultSchema ?? _transactionWithResultSchema\n ).optional();\n\n return functionSchema({\n input: z.tuple([...(input ?? []), txWithResultSchema] as any),\n output: z.promise(output),\n }) as z.ZodType<\n (\n ...args: [...InferredArray<Input>, z.infer<TransactionWithResultSchema>?]\n ) => Promise<z.infer<Output>>\n >;\n};\n\nexport type ResolvedGatedTransactionDependencies<GatedTx extends GatedTransaction> =\n GatedTx extends GatedTransaction<any, any, any, any, infer _Dependencies>\n ? {\n [K in keyof _Dependencies]?: ResolvedGatedTransaction<_Dependencies[K]>;\n }\n : never;\n\nexport interface GatedTxCheckResult {\n expectationMet: boolean;\n data: unknown;\n}\n\nexport const gatedTxCheckResultSchema = z.object({\n expectationMet: z.boolean(),\n data: z.any(),\n});\n\nexport const isSuccessfulGatedTransaction = <\n GatedTx extends GatedTransaction,\n TxType extends Transaction,\n>(\n gtx: ResolvedGatedTransaction<GatedTx, TxType>,\n): gtx is BaseGatedTransactionFor<GatedTx> & { result: SuccessfulGatedTransaction<TxType> } => {\n return gtx.result.status === GatedTransactionStatus.SUCCESS;\n};\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\n/**\n * bundleName-chain-uniqueIdKeys\n *\n * E.g., SetPeer-ton-oAppAddress:0xMY_OAPP\n */\nexport type GatedTransactionBundleId = `${string}-${string}-${string}`;\n"]}