@mysten/sui 2.27.1 → 2.29.0
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.
- package/CHANGELOG.md +32 -0
- package/dist/bcs/bcs.d.mts +6 -6
- package/dist/bcs/bcs.d.mts.map +1 -1
- package/dist/bcs/bcs.mjs +29 -2
- package/dist/bcs/bcs.mjs.map +1 -1
- package/dist/bcs/effects.mjs +2 -1
- package/dist/bcs/effects.mjs.map +1 -1
- package/dist/bcs/index.d.mts +102 -6
- package/dist/bcs/index.d.mts.map +1 -1
- package/dist/bcs/transactions.mjs +2 -1
- package/dist/bcs/transactions.mjs.map +1 -1
- package/dist/client/transaction-resolver.mjs +45 -9
- package/dist/client/transaction-resolver.mjs.map +1 -1
- package/dist/cryptography/signature.d.mts +14 -14
- package/dist/grpc/client.d.mts +1 -1
- package/dist/grpc/client.d.mts.map +1 -1
- package/dist/grpc/client.mjs +3 -5
- package/dist/grpc/client.mjs.map +1 -1
- package/dist/grpc/core.d.mts.map +1 -1
- package/dist/grpc/core.mjs +10 -10
- package/dist/grpc/core.mjs.map +1 -1
- package/dist/grpc/index.d.mts +4 -3
- package/dist/grpc/index.mjs +4 -2
- package/dist/grpc/proto/sui/forking/v1alpha/forking_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/execution_status.d.mts +9 -1
- package/dist/grpc/proto/sui/rpc/v2/execution_status.d.mts.map +1 -1
- package/dist/grpc/proto/sui/rpc/v2/execution_status.mjs +8 -0
- package/dist/grpc/proto/sui/rpc/v2/execution_status.mjs.map +1 -1
- package/dist/grpc/proto/sui/rpc/v2/ledger_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/move_package_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/name_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/signature_verification_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/state_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/subscription_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/transaction.d.mts +50 -2
- package/dist/grpc/proto/sui/rpc/v2/transaction.d.mts.map +1 -1
- package/dist/grpc/proto/sui/rpc/v2/transaction.mjs +36 -1
- package/dist/grpc/proto/sui/rpc/v2/transaction.mjs.map +1 -1
- package/dist/grpc/proto/sui/rpc/v2/transaction_execution_service.client.d.mts +4 -4
- package/dist/grpc/proto/types.d.mts +2 -2
- package/dist/grpc/proto/types.mjs +2 -1
- package/dist/grpc/transport.d.mts +18 -0
- package/dist/grpc/transport.d.mts.map +1 -0
- package/dist/grpc/transport.mjs +97 -0
- package/dist/grpc/transport.mjs.map +1 -0
- package/dist/transactions/Transaction.d.mts +19 -7
- package/dist/transactions/Transaction.d.mts.map +1 -1
- package/dist/transactions/data/internal.d.mts +133 -109
- package/dist/transactions/data/internal.d.mts.map +1 -1
- package/dist/transactions/data/internal.mjs +11 -2
- package/dist/transactions/data/internal.mjs.map +1 -1
- package/dist/transactions/data/v1.d.mts +22 -0
- package/dist/transactions/data/v1.d.mts.map +1 -1
- package/dist/transactions/data/v1.mjs +27 -4
- package/dist/transactions/data/v1.mjs.map +1 -1
- package/dist/transactions/data/v2.d.mts +12 -0
- package/dist/transactions/data/v2.d.mts.map +1 -1
- package/dist/transactions/data/v2.mjs +3 -2
- package/dist/transactions/data/v2.mjs.map +1 -1
- package/dist/version.mjs +1 -1
- package/dist/version.mjs.map +1 -1
- package/dist/zklogin/bcs.d.mts +14 -14
- package/docs/clients/grpc.md +31 -7
- package/package.json +1 -1
- package/src/bcs/bcs.ts +45 -0
- package/src/bcs/effects.ts +3 -0
- package/src/bcs/transactions.ts +1 -0
- package/src/bcs/types.ts +10 -1
- package/src/client/transaction-resolver.ts +79 -9
- package/src/grpc/client.ts +12 -4
- package/src/grpc/core.ts +18 -14
- package/src/grpc/index.ts +7 -3
- package/src/grpc/proto/sui/rpc/v2/execution_status.ts +8 -0
- package/src/grpc/proto/sui/rpc/v2/transaction.ts +68 -0
- package/src/grpc/transport.ts +160 -0
- package/src/transactions/data/internal.ts +19 -0
- package/src/transactions/data/v1.ts +51 -12
- package/src/transactions/data/v2.ts +2 -0
- package/src/version.ts +1 -1
|
@@ -178,10 +178,19 @@ const ValidDuringSchema = object({
|
|
|
178
178
|
chain: string(),
|
|
179
179
|
nonce: U32
|
|
180
180
|
});
|
|
181
|
+
const AllowedProposersSchema = object({
|
|
182
|
+
epoch: JsonU64,
|
|
183
|
+
proposers: pipe(array(U32), check((proposers) => proposers.length > 0, "Allowed proposers must not be empty"))
|
|
184
|
+
});
|
|
185
|
+
const ValiditySchema = object({
|
|
186
|
+
...ValidDuringSchema.entries,
|
|
187
|
+
allowedProposers: nullable(AllowedProposersSchema)
|
|
188
|
+
});
|
|
181
189
|
const TransactionExpiration = safeEnum({
|
|
182
190
|
None: literal(true),
|
|
183
191
|
Epoch: JsonU64,
|
|
184
|
-
ValidDuring: ValidDuringSchema
|
|
192
|
+
ValidDuring: ValidDuringSchema,
|
|
193
|
+
Validity: ValiditySchema
|
|
185
194
|
});
|
|
186
195
|
const TransactionDataSchema = object({
|
|
187
196
|
version: literal(2),
|
|
@@ -193,5 +202,5 @@ const TransactionDataSchema = object({
|
|
|
193
202
|
});
|
|
194
203
|
|
|
195
204
|
//#endregion
|
|
196
|
-
export { ArgumentSchema, BCSBytes, FundsWithdrawalArgSchema, JsonU64, NormalizedCallArg, ObjectID, ObjectRefSchema, SuiAddress, TransactionDataSchema, TransactionExpiration, ValidDuringSchema, safeEnum };
|
|
205
|
+
export { ArgumentSchema, BCSBytes, FundsWithdrawalArgSchema, JsonU64, NormalizedCallArg, ObjectID, ObjectRefSchema, SuiAddress, TransactionDataSchema, TransactionExpiration, ValidDuringSchema, ValiditySchema, safeEnum };
|
|
197
206
|
//# sourceMappingURL=internal.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.mjs","names":[],"sources":["../../../src/transactions/data/internal.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { EnumInputShape, EnumOutputShape } from '@mysten/bcs';\nimport type { GenericSchema, InferInput, InferOutput, ObjectEntries, ObjectSchema } from 'valibot';\nimport {\n\tarray,\n\tboolean,\n\tcheck,\n\tinteger,\n\tlazy,\n\tliteral,\n\tnullable,\n\tnullish,\n\tnumber,\n\tobject,\n\toptional,\n\tpipe,\n\trecord,\n\tstring,\n\ttransform,\n\ttuple,\n\tunion,\n\tunknown,\n} from 'valibot';\n\nimport { isValidSuiAddress, normalizeSuiAddress } from '../../utils/sui-types.js';\nimport type { Simplify } from '@mysten/utils';\nimport type { SuiClientTypes } from '../../client/types.js';\n\ntype EnumSchemaInput<T extends Record<string, GenericSchema<any>>> = EnumInputShape<\n\tSimplify<{\n\t\t[K in keyof T]: InferInput<T[K]>;\n\t}>\n>;\n\ntype EnumSchemaOutput<T extends Record<string, GenericSchema<any>>> = EnumOutputShape<\n\tSimplify<{\n\t\t[K in keyof T]: InferOutput<T[K]>;\n\t}>\n>;\n\ntype EnumSchema<T extends Record<string, GenericSchema<any>>> = GenericSchema<\n\tEnumSchemaInput<T>,\n\tEnumSchemaOutput<T>\n>;\n\nexport function safeEnum<T extends Record<string, GenericSchema<any>>>(options: T): EnumSchema<T> {\n\treturn union(\n\t\tObject.keys(options).map(\n\t\t\t(key) =>\n\t\t\t\twithKind(\n\t\t\t\t\tkey,\n\t\t\t\t\tobject({\n\t\t\t\t\t\t[key]: options[key],\n\t\t\t\t\t}),\n\t\t\t\t) as GenericSchema<EnumOutputShape<T>>,\n\t\t),\n\t) as EnumSchema<T>;\n}\n\nfunction withKind<K extends string, TEntries extends ObjectEntries>(\n\tkey: K,\n\tschema: ObjectSchema<TEntries, undefined>,\n) {\n\treturn pipe(\n\t\tobject({\n\t\t\t...schema.entries,\n\t\t\t$kind: optional(literal(key)),\n\t\t}),\n\t\ttransform((value) => ({ ...value, $kind: key })),\n\t) as GenericSchema<\n\t\tSimplify<InferInput<ObjectSchema<TEntries, undefined>> & { $kind?: K }>,\n\t\tSimplify<InferOutput<ObjectSchema<TEntries, undefined>> & { $kind: K }>\n\t>;\n}\n\nexport const SuiAddress = pipe(\n\tstring(),\n\ttransform((value) => normalizeSuiAddress(value)),\n\tcheck(isValidSuiAddress),\n);\nexport const ObjectID = SuiAddress;\nexport const BCSBytes = string();\nexport const JsonU64 = pipe(\n\tunion([string(), pipe(number(), integer())]),\n\n\tcheck((val) => {\n\t\ttry {\n\t\t\tBigInt(val);\n\t\t\treturn BigInt(val) >= 0 && BigInt(val) <= 18446744073709551615n;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}, 'Invalid u64'),\n);\n\nexport const U32 = pipe(\n\tnumber(),\n\tinteger(),\n\tcheck((val) => val >= 0 && val < 2 ** 32, 'Invalid u32'),\n);\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/base_types.rs#L138\n// Implemented as a tuple in rust\nexport const ObjectRefSchema = object({\n\tobjectId: SuiAddress,\n\tversion: JsonU64,\n\tdigest: string(),\n});\nexport type ObjectRef = InferOutput<typeof ObjectRefSchema>;\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L690-L702\nexport const ArgumentSchema = union([\n\twithKind('GasCoin', object({ GasCoin: literal(true) })),\n\twithKind(\n\t\t'Input',\n\t\tobject({\n\t\t\tInput: pipe(number(), integer()),\n\t\t\ttype: optional(union([literal('pure'), literal('object'), literal('withdrawal')])),\n\t\t}),\n\t),\n\twithKind('Result', object({ Result: pipe(number(), integer()) })),\n\twithKind(\n\t\t'NestedResult',\n\t\tobject({ NestedResult: tuple([pipe(number(), integer()), pipe(number(), integer())]) }),\n\t),\n]);\n\nexport type Argument = InferOutput<typeof ArgumentSchema>;\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L1387-L1392\nexport const GasDataSchema = object({\n\tbudget: nullable(JsonU64),\n\tprice: nullable(JsonU64),\n\towner: nullable(SuiAddress),\n\tpayment: nullable(array(ObjectRefSchema)),\n});\nexport type GasData = InferOutput<typeof GasDataSchema>;\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/external-crates/move/crates/move-core-types/src/language_storage.rs#L140-L147\nexport const StructTagSchema = object({\n\taddress: string(),\n\tmodule: string(),\n\tname: string(),\n\t// type_params in rust, should be updated to use camelCase\n\ttypeParams: array(string()),\n});\nexport type StructTag = InferOutput<typeof StructTagSchema>;\n\nexport const OpenSignatureBodySchema: GenericSchema<SuiClientTypes.OpenSignatureBody> = union([\n\tobject({ $kind: literal('address') }),\n\tobject({ $kind: literal('bool') }),\n\tobject({ $kind: literal('u8') }),\n\tobject({ $kind: literal('u16') }),\n\tobject({ $kind: literal('u32') }),\n\tobject({ $kind: literal('u64') }),\n\tobject({ $kind: literal('u128') }),\n\tobject({ $kind: literal('u256') }),\n\tobject({ $kind: literal('unknown') }),\n\tobject({ $kind: literal('vector'), vector: lazy(() => OpenSignatureBodySchema) }),\n\tobject({\n\t\t$kind: literal('datatype'),\n\t\tdatatype: object({\n\t\t\ttypeName: string(),\n\t\t\ttypeParameters: array(lazy(() => OpenSignatureBodySchema)),\n\t\t}),\n\t}),\n\tobject({ $kind: literal('typeParameter'), index: pipe(number(), integer()) }),\n]);\n\nexport const OpenSignatureSchema = object({\n\treference: nullable(union([literal('mutable'), literal('immutable'), literal('unknown')])),\n\tbody: OpenSignatureBodySchema,\n});\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L707-L718\nconst ProgrammableMoveCallSchema = object({\n\tpackage: ObjectID,\n\tmodule: string(),\n\tfunction: string(),\n\t// snake case in rust\n\ttypeArguments: array(string()),\n\targuments: array(ArgumentSchema),\n\t_argumentTypes: optional(nullable(array(OpenSignatureSchema))),\n});\nexport type ProgrammableMoveCall = InferOutput<typeof ProgrammableMoveCallSchema>;\n\nexport const $Intent = object({\n\tname: string(),\n\tinputs: record(string(), union([ArgumentSchema, array(ArgumentSchema)])),\n\tdata: record(string(), unknown()),\n});\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L657-L685\nexport const CommandSchema = safeEnum({\n\tMoveCall: ProgrammableMoveCallSchema,\n\tTransferObjects: object({\n\t\tobjects: array(ArgumentSchema),\n\t\taddress: ArgumentSchema,\n\t}),\n\tSplitCoins: object({\n\t\tcoin: ArgumentSchema,\n\t\tamounts: array(ArgumentSchema),\n\t}),\n\tMergeCoins: object({\n\t\tdestination: ArgumentSchema,\n\t\tsources: array(ArgumentSchema),\n\t}),\n\tPublish: object({\n\t\tmodules: array(BCSBytes),\n\t\tdependencies: array(ObjectID),\n\t}),\n\tMakeMoveVec: object({\n\t\ttype: nullable(string()),\n\t\telements: array(ArgumentSchema),\n\t}),\n\tUpgrade: object({\n\t\tmodules: array(BCSBytes),\n\t\tdependencies: array(ObjectID),\n\t\tpackage: ObjectID,\n\t\tticket: ArgumentSchema,\n\t}),\n\t$Intent,\n});\n\nexport type Command<Arg = Argument> = EnumOutputShape<{\n\tMoveCall: {\n\t\tpackage: string;\n\t\tmodule: string;\n\t\tfunction: string;\n\t\ttypeArguments: string[];\n\t\targuments: Arg[];\n\t\t_argumentTypes?: SuiClientTypes.OpenSignature[] | null;\n\t};\n\tTransferObjects: {\n\t\tobjects: Arg[];\n\t\taddress: Arg;\n\t};\n\tSplitCoins: {\n\t\tcoin: Arg;\n\t\tamounts: Arg[];\n\t};\n\tMergeCoins: {\n\t\tdestination: Arg;\n\t\tsources: Arg[];\n\t};\n\tPublish: {\n\t\tmodules: string[];\n\t\tdependencies: string[];\n\t};\n\tMakeMoveVec: {\n\t\ttype: string | null;\n\t\telements: Arg[];\n\t};\n\tUpgrade: {\n\t\tmodules: string[];\n\t\tdependencies: string[];\n\t\tpackage: string;\n\t\tticket: Arg;\n\t};\n\t$Intent: {\n\t\tname: string;\n\t\tinputs: Record<string, Argument | Argument[]>;\n\t\tdata: Record<string, unknown>;\n\t};\n}>;\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L102-L114\nexport const ObjectArgSchema = safeEnum({\n\tImmOrOwnedObject: ObjectRefSchema,\n\tSharedObject: object({\n\t\tobjectId: ObjectID,\n\t\t// snake case in rust\n\t\tinitialSharedVersion: JsonU64,\n\t\tmutable: boolean(),\n\t}),\n\tReceiving: ObjectRefSchema,\n});\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const ReservationSchema = safeEnum({\n\tMaxAmountU64: JsonU64,\n});\nexport type Reservation = InferOutput<typeof ReservationSchema>;\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const WithdrawalTypeArgSchema = safeEnum({\n\tBalance: string(),\n});\nexport type WithdrawalTypeArg = InferOutput<typeof WithdrawalTypeArgSchema>;\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const WithdrawFromSchema = safeEnum({\n\tSender: literal(true),\n\tSponsor: literal(true),\n});\nexport type WithdrawFrom = InferOutput<typeof WithdrawFromSchema>;\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const FundsWithdrawalArgSchema = object({\n\treservation: ReservationSchema,\n\ttypeArg: WithdrawalTypeArgSchema,\n\twithdrawFrom: WithdrawFromSchema,\n});\nexport type FundsWithdrawalArg = InferOutput<typeof FundsWithdrawalArgSchema>;\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L75-L80\nconst CallArgSchema = safeEnum({\n\tObject: ObjectArgSchema,\n\tPure: object({\n\t\tbytes: BCSBytes,\n\t}),\n\tUnresolvedPure: object({\n\t\tvalue: unknown(),\n\t}),\n\tUnresolvedObject: object({\n\t\tobjectId: ObjectID,\n\t\tversion: optional(nullable(JsonU64)),\n\t\tdigest: optional(nullable(string())),\n\t\tinitialSharedVersion: optional(nullable(JsonU64)),\n\t\tmutable: optional(nullable(boolean())),\n\t}),\n\tFundsWithdrawal: FundsWithdrawalArgSchema,\n});\nexport type CallArg = InferOutput<typeof CallArgSchema>;\n\nexport const NormalizedCallArg = safeEnum({\n\tObject: ObjectArgSchema,\n\tPure: object({\n\t\tbytes: BCSBytes,\n\t}),\n});\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const ValidDuringSchema = object({\n\tminEpoch: nullable(JsonU64),\n\tmaxEpoch: nullable(JsonU64),\n\tminTimestamp: nullable(JsonU64),\n\tmaxTimestamp: nullable(JsonU64),\n\tchain: string(),\n\tnonce: U32,\n});\nexport type ValidDuring = InferOutput<typeof ValidDuringSchema>;\n\nexport const TransactionExpiration = safeEnum({\n\tNone: literal(true),\n\tEpoch: JsonU64,\n\tValidDuring: ValidDuringSchema,\n});\n\nexport type TransactionExpiration = InferOutput<typeof TransactionExpiration>;\n\nexport const TransactionDataSchema = object({\n\tversion: literal(2),\n\tsender: nullish(SuiAddress),\n\texpiration: nullish(TransactionExpiration),\n\tgasData: GasDataSchema,\n\tinputs: array(CallArgSchema),\n\tcommands: array(CommandSchema),\n});\n\nexport type TransactionData = InferOutput<typeof TransactionDataSchema>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"internal.mjs","names":[],"sources":["../../../src/transactions/data/internal.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { EnumInputShape, EnumOutputShape } from '@mysten/bcs';\nimport type { GenericSchema, InferInput, InferOutput, ObjectEntries, ObjectSchema } from 'valibot';\nimport {\n\tarray,\n\tboolean,\n\tcheck,\n\tinteger,\n\tlazy,\n\tliteral,\n\tnullable,\n\tnullish,\n\tnumber,\n\tobject,\n\toptional,\n\tpipe,\n\trecord,\n\tstring,\n\ttransform,\n\ttuple,\n\tunion,\n\tunknown,\n} from 'valibot';\n\nimport { isValidSuiAddress, normalizeSuiAddress } from '../../utils/sui-types.js';\nimport type { Simplify } from '@mysten/utils';\nimport type { SuiClientTypes } from '../../client/types.js';\n\ntype EnumSchemaInput<T extends Record<string, GenericSchema<any>>> = EnumInputShape<\n\tSimplify<{\n\t\t[K in keyof T]: InferInput<T[K]>;\n\t}>\n>;\n\ntype EnumSchemaOutput<T extends Record<string, GenericSchema<any>>> = EnumOutputShape<\n\tSimplify<{\n\t\t[K in keyof T]: InferOutput<T[K]>;\n\t}>\n>;\n\ntype EnumSchema<T extends Record<string, GenericSchema<any>>> = GenericSchema<\n\tEnumSchemaInput<T>,\n\tEnumSchemaOutput<T>\n>;\n\nexport function safeEnum<T extends Record<string, GenericSchema<any>>>(options: T): EnumSchema<T> {\n\treturn union(\n\t\tObject.keys(options).map(\n\t\t\t(key) =>\n\t\t\t\twithKind(\n\t\t\t\t\tkey,\n\t\t\t\t\tobject({\n\t\t\t\t\t\t[key]: options[key],\n\t\t\t\t\t}),\n\t\t\t\t) as GenericSchema<EnumOutputShape<T>>,\n\t\t),\n\t) as EnumSchema<T>;\n}\n\nfunction withKind<K extends string, TEntries extends ObjectEntries>(\n\tkey: K,\n\tschema: ObjectSchema<TEntries, undefined>,\n) {\n\treturn pipe(\n\t\tobject({\n\t\t\t...schema.entries,\n\t\t\t$kind: optional(literal(key)),\n\t\t}),\n\t\ttransform((value) => ({ ...value, $kind: key })),\n\t) as GenericSchema<\n\t\tSimplify<InferInput<ObjectSchema<TEntries, undefined>> & { $kind?: K }>,\n\t\tSimplify<InferOutput<ObjectSchema<TEntries, undefined>> & { $kind: K }>\n\t>;\n}\n\nexport const SuiAddress = pipe(\n\tstring(),\n\ttransform((value) => normalizeSuiAddress(value)),\n\tcheck(isValidSuiAddress),\n);\nexport const ObjectID = SuiAddress;\nexport const BCSBytes = string();\nexport const JsonU64 = pipe(\n\tunion([string(), pipe(number(), integer())]),\n\n\tcheck((val) => {\n\t\ttry {\n\t\t\tBigInt(val);\n\t\t\treturn BigInt(val) >= 0 && BigInt(val) <= 18446744073709551615n;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}, 'Invalid u64'),\n);\n\nexport const U32 = pipe(\n\tnumber(),\n\tinteger(),\n\tcheck((val) => val >= 0 && val < 2 ** 32, 'Invalid u32'),\n);\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/base_types.rs#L138\n// Implemented as a tuple in rust\nexport const ObjectRefSchema = object({\n\tobjectId: SuiAddress,\n\tversion: JsonU64,\n\tdigest: string(),\n});\nexport type ObjectRef = InferOutput<typeof ObjectRefSchema>;\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L690-L702\nexport const ArgumentSchema = union([\n\twithKind('GasCoin', object({ GasCoin: literal(true) })),\n\twithKind(\n\t\t'Input',\n\t\tobject({\n\t\t\tInput: pipe(number(), integer()),\n\t\t\ttype: optional(union([literal('pure'), literal('object'), literal('withdrawal')])),\n\t\t}),\n\t),\n\twithKind('Result', object({ Result: pipe(number(), integer()) })),\n\twithKind(\n\t\t'NestedResult',\n\t\tobject({ NestedResult: tuple([pipe(number(), integer()), pipe(number(), integer())]) }),\n\t),\n]);\n\nexport type Argument = InferOutput<typeof ArgumentSchema>;\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L1387-L1392\nexport const GasDataSchema = object({\n\tbudget: nullable(JsonU64),\n\tprice: nullable(JsonU64),\n\towner: nullable(SuiAddress),\n\tpayment: nullable(array(ObjectRefSchema)),\n});\nexport type GasData = InferOutput<typeof GasDataSchema>;\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/external-crates/move/crates/move-core-types/src/language_storage.rs#L140-L147\nexport const StructTagSchema = object({\n\taddress: string(),\n\tmodule: string(),\n\tname: string(),\n\t// type_params in rust, should be updated to use camelCase\n\ttypeParams: array(string()),\n});\nexport type StructTag = InferOutput<typeof StructTagSchema>;\n\nexport const OpenSignatureBodySchema: GenericSchema<SuiClientTypes.OpenSignatureBody> = union([\n\tobject({ $kind: literal('address') }),\n\tobject({ $kind: literal('bool') }),\n\tobject({ $kind: literal('u8') }),\n\tobject({ $kind: literal('u16') }),\n\tobject({ $kind: literal('u32') }),\n\tobject({ $kind: literal('u64') }),\n\tobject({ $kind: literal('u128') }),\n\tobject({ $kind: literal('u256') }),\n\tobject({ $kind: literal('unknown') }),\n\tobject({ $kind: literal('vector'), vector: lazy(() => OpenSignatureBodySchema) }),\n\tobject({\n\t\t$kind: literal('datatype'),\n\t\tdatatype: object({\n\t\t\ttypeName: string(),\n\t\t\ttypeParameters: array(lazy(() => OpenSignatureBodySchema)),\n\t\t}),\n\t}),\n\tobject({ $kind: literal('typeParameter'), index: pipe(number(), integer()) }),\n]);\n\nexport const OpenSignatureSchema = object({\n\treference: nullable(union([literal('mutable'), literal('immutable'), literal('unknown')])),\n\tbody: OpenSignatureBodySchema,\n});\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L707-L718\nconst ProgrammableMoveCallSchema = object({\n\tpackage: ObjectID,\n\tmodule: string(),\n\tfunction: string(),\n\t// snake case in rust\n\ttypeArguments: array(string()),\n\targuments: array(ArgumentSchema),\n\t_argumentTypes: optional(nullable(array(OpenSignatureSchema))),\n});\nexport type ProgrammableMoveCall = InferOutput<typeof ProgrammableMoveCallSchema>;\n\nexport const $Intent = object({\n\tname: string(),\n\tinputs: record(string(), union([ArgumentSchema, array(ArgumentSchema)])),\n\tdata: record(string(), unknown()),\n});\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L657-L685\nexport const CommandSchema = safeEnum({\n\tMoveCall: ProgrammableMoveCallSchema,\n\tTransferObjects: object({\n\t\tobjects: array(ArgumentSchema),\n\t\taddress: ArgumentSchema,\n\t}),\n\tSplitCoins: object({\n\t\tcoin: ArgumentSchema,\n\t\tamounts: array(ArgumentSchema),\n\t}),\n\tMergeCoins: object({\n\t\tdestination: ArgumentSchema,\n\t\tsources: array(ArgumentSchema),\n\t}),\n\tPublish: object({\n\t\tmodules: array(BCSBytes),\n\t\tdependencies: array(ObjectID),\n\t}),\n\tMakeMoveVec: object({\n\t\ttype: nullable(string()),\n\t\telements: array(ArgumentSchema),\n\t}),\n\tUpgrade: object({\n\t\tmodules: array(BCSBytes),\n\t\tdependencies: array(ObjectID),\n\t\tpackage: ObjectID,\n\t\tticket: ArgumentSchema,\n\t}),\n\t$Intent,\n});\n\nexport type Command<Arg = Argument> = EnumOutputShape<{\n\tMoveCall: {\n\t\tpackage: string;\n\t\tmodule: string;\n\t\tfunction: string;\n\t\ttypeArguments: string[];\n\t\targuments: Arg[];\n\t\t_argumentTypes?: SuiClientTypes.OpenSignature[] | null;\n\t};\n\tTransferObjects: {\n\t\tobjects: Arg[];\n\t\taddress: Arg;\n\t};\n\tSplitCoins: {\n\t\tcoin: Arg;\n\t\tamounts: Arg[];\n\t};\n\tMergeCoins: {\n\t\tdestination: Arg;\n\t\tsources: Arg[];\n\t};\n\tPublish: {\n\t\tmodules: string[];\n\t\tdependencies: string[];\n\t};\n\tMakeMoveVec: {\n\t\ttype: string | null;\n\t\telements: Arg[];\n\t};\n\tUpgrade: {\n\t\tmodules: string[];\n\t\tdependencies: string[];\n\t\tpackage: string;\n\t\tticket: Arg;\n\t};\n\t$Intent: {\n\t\tname: string;\n\t\tinputs: Record<string, Argument | Argument[]>;\n\t\tdata: Record<string, unknown>;\n\t};\n}>;\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L102-L114\nexport const ObjectArgSchema = safeEnum({\n\tImmOrOwnedObject: ObjectRefSchema,\n\tSharedObject: object({\n\t\tobjectId: ObjectID,\n\t\t// snake case in rust\n\t\tinitialSharedVersion: JsonU64,\n\t\tmutable: boolean(),\n\t}),\n\tReceiving: ObjectRefSchema,\n});\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const ReservationSchema = safeEnum({\n\tMaxAmountU64: JsonU64,\n});\nexport type Reservation = InferOutput<typeof ReservationSchema>;\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const WithdrawalTypeArgSchema = safeEnum({\n\tBalance: string(),\n});\nexport type WithdrawalTypeArg = InferOutput<typeof WithdrawalTypeArgSchema>;\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const WithdrawFromSchema = safeEnum({\n\tSender: literal(true),\n\tSponsor: literal(true),\n});\nexport type WithdrawFrom = InferOutput<typeof WithdrawFromSchema>;\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const FundsWithdrawalArgSchema = object({\n\treservation: ReservationSchema,\n\ttypeArg: WithdrawalTypeArgSchema,\n\twithdrawFrom: WithdrawFromSchema,\n});\nexport type FundsWithdrawalArg = InferOutput<typeof FundsWithdrawalArgSchema>;\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L75-L80\nconst CallArgSchema = safeEnum({\n\tObject: ObjectArgSchema,\n\tPure: object({\n\t\tbytes: BCSBytes,\n\t}),\n\tUnresolvedPure: object({\n\t\tvalue: unknown(),\n\t}),\n\tUnresolvedObject: object({\n\t\tobjectId: ObjectID,\n\t\tversion: optional(nullable(JsonU64)),\n\t\tdigest: optional(nullable(string())),\n\t\tinitialSharedVersion: optional(nullable(JsonU64)),\n\t\tmutable: optional(nullable(boolean())),\n\t}),\n\tFundsWithdrawal: FundsWithdrawalArgSchema,\n});\nexport type CallArg = InferOutput<typeof CallArgSchema>;\n\nexport const NormalizedCallArg = safeEnum({\n\tObject: ObjectArgSchema,\n\tPure: object({\n\t\tbytes: BCSBytes,\n\t}),\n});\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const ValidDuringSchema = object({\n\tminEpoch: nullable(JsonU64),\n\tmaxEpoch: nullable(JsonU64),\n\tminTimestamp: nullable(JsonU64),\n\tmaxTimestamp: nullable(JsonU64),\n\tchain: string(),\n\tnonce: U32,\n});\nexport type ValidDuring = InferOutput<typeof ValidDuringSchema>;\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const AllowedProposersSchema = object({\n\tepoch: JsonU64,\n\t// Shared by `setExpiration` and `restore`, so this can only carry the invariant true on both.\n\tproposers: pipe(\n\t\tarray(U32),\n\t\tcheck((proposers) => proposers.length > 0, 'Allowed proposers must not be empty'),\n\t),\n});\nexport type AllowedProposers = InferOutput<typeof AllowedProposersSchema>;\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const ValiditySchema = object({\n\t...ValidDuringSchema.entries,\n\tallowedProposers: nullable(AllowedProposersSchema),\n});\nexport type Validity = InferOutput<typeof ValiditySchema>;\n\nexport const TransactionExpiration = safeEnum({\n\tNone: literal(true),\n\tEpoch: JsonU64,\n\tValidDuring: ValidDuringSchema,\n\tValidity: ValiditySchema,\n});\n\nexport type TransactionExpiration = InferOutput<typeof TransactionExpiration>;\n\nexport const TransactionDataSchema = object({\n\tversion: literal(2),\n\tsender: nullish(SuiAddress),\n\texpiration: nullish(TransactionExpiration),\n\tgasData: GasDataSchema,\n\tinputs: array(CallArgSchema),\n\tcommands: array(CommandSchema),\n});\n\nexport type TransactionData = InferOutput<typeof TransactionDataSchema>;\n"],"mappings":"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"}
|
|
@@ -12,6 +12,28 @@ declare const SerializedTransactionDataV1: valibot49.ObjectSchema<{
|
|
|
12
12
|
readonly Epoch: valibot49.SchemaWithPipe<readonly [valibot49.NumberSchema<undefined>, valibot49.IntegerAction<number, undefined>]>;
|
|
13
13
|
}, undefined>, valibot49.ObjectSchema<{
|
|
14
14
|
readonly None: valibot49.NullableSchema<valibot49.LiteralSchema<true, undefined>, undefined>;
|
|
15
|
+
}, undefined>, valibot49.ObjectSchema<{
|
|
16
|
+
readonly ValidDuring: valibot49.ObjectSchema<{
|
|
17
|
+
readonly minEpoch: valibot49.NullableSchema<valibot49.SchemaWithPipe<readonly [valibot49.UnionSchema<[valibot49.StringSchema<undefined>, valibot49.SchemaWithPipe<readonly [valibot49.NumberSchema<undefined>, valibot49.IntegerAction<number, undefined>]>], undefined>, valibot49.CheckAction<string | number, "Invalid u64">]>, undefined>;
|
|
18
|
+
readonly maxEpoch: valibot49.NullableSchema<valibot49.SchemaWithPipe<readonly [valibot49.UnionSchema<[valibot49.StringSchema<undefined>, valibot49.SchemaWithPipe<readonly [valibot49.NumberSchema<undefined>, valibot49.IntegerAction<number, undefined>]>], undefined>, valibot49.CheckAction<string | number, "Invalid u64">]>, undefined>;
|
|
19
|
+
readonly minTimestamp: valibot49.NullableSchema<valibot49.SchemaWithPipe<readonly [valibot49.UnionSchema<[valibot49.StringSchema<undefined>, valibot49.SchemaWithPipe<readonly [valibot49.NumberSchema<undefined>, valibot49.IntegerAction<number, undefined>]>], undefined>, valibot49.CheckAction<string | number, "Invalid u64">]>, undefined>;
|
|
20
|
+
readonly maxTimestamp: valibot49.NullableSchema<valibot49.SchemaWithPipe<readonly [valibot49.UnionSchema<[valibot49.StringSchema<undefined>, valibot49.SchemaWithPipe<readonly [valibot49.NumberSchema<undefined>, valibot49.IntegerAction<number, undefined>]>], undefined>, valibot49.CheckAction<string | number, "Invalid u64">]>, undefined>;
|
|
21
|
+
readonly chain: valibot49.StringSchema<undefined>;
|
|
22
|
+
readonly nonce: valibot49.SchemaWithPipe<readonly [valibot49.NumberSchema<undefined>, valibot49.IntegerAction<number, undefined>, valibot49.CheckAction<number, "Invalid u32">]>;
|
|
23
|
+
}, undefined>;
|
|
24
|
+
}, undefined>, valibot49.ObjectSchema<{
|
|
25
|
+
readonly Validity: valibot49.ObjectSchema<{
|
|
26
|
+
readonly allowedProposers: valibot49.NullableSchema<valibot49.ObjectSchema<{
|
|
27
|
+
readonly epoch: valibot49.SchemaWithPipe<readonly [valibot49.UnionSchema<[valibot49.StringSchema<undefined>, valibot49.SchemaWithPipe<readonly [valibot49.NumberSchema<undefined>, valibot49.IntegerAction<number, undefined>]>], undefined>, valibot49.CheckAction<string | number, "Invalid u64">]>;
|
|
28
|
+
readonly proposers: valibot49.SchemaWithPipe<readonly [valibot49.ArraySchema<valibot49.SchemaWithPipe<readonly [valibot49.NumberSchema<undefined>, valibot49.IntegerAction<number, undefined>, valibot49.CheckAction<number, "Invalid u32">]>, undefined>, valibot49.CheckAction<number[], "Allowed proposers must not be empty">]>;
|
|
29
|
+
}, undefined>, undefined>;
|
|
30
|
+
readonly minEpoch: valibot49.NullableSchema<valibot49.SchemaWithPipe<readonly [valibot49.UnionSchema<[valibot49.StringSchema<undefined>, valibot49.SchemaWithPipe<readonly [valibot49.NumberSchema<undefined>, valibot49.IntegerAction<number, undefined>]>], undefined>, valibot49.CheckAction<string | number, "Invalid u64">]>, undefined>;
|
|
31
|
+
readonly maxEpoch: valibot49.NullableSchema<valibot49.SchemaWithPipe<readonly [valibot49.UnionSchema<[valibot49.StringSchema<undefined>, valibot49.SchemaWithPipe<readonly [valibot49.NumberSchema<undefined>, valibot49.IntegerAction<number, undefined>]>], undefined>, valibot49.CheckAction<string | number, "Invalid u64">]>, undefined>;
|
|
32
|
+
readonly minTimestamp: valibot49.NullableSchema<valibot49.SchemaWithPipe<readonly [valibot49.UnionSchema<[valibot49.StringSchema<undefined>, valibot49.SchemaWithPipe<readonly [valibot49.NumberSchema<undefined>, valibot49.IntegerAction<number, undefined>]>], undefined>, valibot49.CheckAction<string | number, "Invalid u64">]>, undefined>;
|
|
33
|
+
readonly maxTimestamp: valibot49.NullableSchema<valibot49.SchemaWithPipe<readonly [valibot49.UnionSchema<[valibot49.StringSchema<undefined>, valibot49.SchemaWithPipe<readonly [valibot49.NumberSchema<undefined>, valibot49.IntegerAction<number, undefined>]>], undefined>, valibot49.CheckAction<string | number, "Invalid u64">]>, undefined>;
|
|
34
|
+
readonly chain: valibot49.StringSchema<undefined>;
|
|
35
|
+
readonly nonce: valibot49.SchemaWithPipe<readonly [valibot49.NumberSchema<undefined>, valibot49.IntegerAction<number, undefined>, valibot49.CheckAction<number, "Invalid u32">]>;
|
|
36
|
+
}, undefined>;
|
|
15
37
|
}, undefined>], undefined>, undefined>;
|
|
16
38
|
readonly gasConfig: valibot49.ObjectSchema<{
|
|
17
39
|
readonly budget: valibot49.OptionalSchema<valibot49.SchemaWithPipe<readonly [valibot49.UnionSchema<[valibot49.NumberSchema<undefined>, valibot49.StringSchema<undefined>, valibot49.BigintSchema<undefined>], undefined>, valibot49.CheckAction<string | number | bigint, undefined>]>, undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v1.d.mts","names":[],"sources":["../../../src/transactions/data/v1.ts"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"v1.d.mts","names":[],"sources":["../../../src/transactions/data/v1.ts"],"mappings":";;;;;;;cA6Oa,2BAAA,YAA2B,YAAA;EAAA,kBAOtC,SAAA,CAAA,aAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA9DI,aAAA;IAAA,8CAAa,SAAA,CAAA,YAAA;IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgEP,2BAAA,GAA8B,WAAA,QAAmB,2BAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TypeTagSerializer } from "../../bcs/type-tag-serializer.mjs";
|
|
2
|
-
import { JsonU64, ObjectID, TransactionDataSchema, safeEnum } from "./internal.mjs";
|
|
2
|
+
import { JsonU64, ObjectID, TransactionDataSchema, ValidDuringSchema, ValiditySchema, safeEnum } from "./internal.mjs";
|
|
3
3
|
import { fromBase64, toBase64 } from "@mysten/bcs";
|
|
4
4
|
import { array, bigint, boolean, check, integer, is, lazy, literal, nullable, nullish, number, object, optional, parse, pipe, string, union, unknown } from "valibot";
|
|
5
5
|
|
|
@@ -37,7 +37,30 @@ const TransactionInput = union([object({
|
|
|
37
37
|
value: unknown(),
|
|
38
38
|
type: literal("pure")
|
|
39
39
|
})]);
|
|
40
|
-
const TransactionExpiration = union([
|
|
40
|
+
const TransactionExpiration = union([
|
|
41
|
+
object({ Epoch: pipe(number(), integer()) }),
|
|
42
|
+
object({ None: nullable(literal(true)) }),
|
|
43
|
+
object({ ValidDuring: ValidDuringSchema }),
|
|
44
|
+
object({ Validity: ValiditySchema })
|
|
45
|
+
]);
|
|
46
|
+
function expirationToV1(expiration) {
|
|
47
|
+
if (!expiration) return null;
|
|
48
|
+
switch (expiration.$kind) {
|
|
49
|
+
case "Epoch": return { Epoch: Number(expiration.Epoch) };
|
|
50
|
+
case "ValidDuring": return { ValidDuring: expiration.ValidDuring };
|
|
51
|
+
case "Validity": return { Validity: expiration.Validity };
|
|
52
|
+
case "None": return { None: true };
|
|
53
|
+
default: throw new Error(`Unknown transaction expiration: ${JSON.stringify(expiration)}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function expirationFromV1(expiration) {
|
|
57
|
+
if (!expiration) return null;
|
|
58
|
+
if ("Epoch" in expiration) return { Epoch: expiration.Epoch };
|
|
59
|
+
if ("ValidDuring" in expiration) return { ValidDuring: expiration.ValidDuring };
|
|
60
|
+
if ("Validity" in expiration) return { Validity: expiration.Validity };
|
|
61
|
+
if ("None" in expiration) return { None: true };
|
|
62
|
+
throw new Error(`Unknown transaction expiration in v1 transaction data: ${Object.keys(expiration).join(", ")}`);
|
|
63
|
+
}
|
|
41
64
|
const StringEncodedBigint = pipe(union([
|
|
42
65
|
number(),
|
|
43
66
|
string(),
|
|
@@ -186,7 +209,7 @@ function serializeV1TransactionData(transactionData) {
|
|
|
186
209
|
return {
|
|
187
210
|
version: 1,
|
|
188
211
|
sender: transactionData.sender ?? void 0,
|
|
189
|
-
expiration:
|
|
212
|
+
expiration: expirationToV1(transactionData.expiration),
|
|
190
213
|
gasConfig: {
|
|
191
214
|
owner: transactionData.gasData.owner ?? void 0,
|
|
192
215
|
budget: transactionData.gasData.budget ?? void 0,
|
|
@@ -255,7 +278,7 @@ function transactionDataFromV1(data) {
|
|
|
255
278
|
return parse(TransactionDataSchema, {
|
|
256
279
|
version: 2,
|
|
257
280
|
sender: data.sender ?? null,
|
|
258
|
-
expiration: data.expiration
|
|
281
|
+
expiration: expirationFromV1(data.expiration),
|
|
259
282
|
gasData: {
|
|
260
283
|
owner: data.gasConfig.owner ?? null,
|
|
261
284
|
budget: data.gasConfig.budget?.toString() ?? null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v1.mjs","names":[],"sources":["../../../src/transactions/data/v1.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromBase64, toBase64 } from '@mysten/bcs';\nimport type { GenericSchema, InferInput, InferOutput } from 'valibot';\nimport {\n\tarray,\n\tbigint,\n\tboolean,\n\tcheck,\n\tinteger,\n\tis,\n\tlazy,\n\tliteral,\n\tnullable,\n\tnullish,\n\tnumber,\n\tobject,\n\toptional,\n\tparse,\n\tpipe,\n\tstring,\n\tunion,\n\tunknown,\n} from 'valibot';\n\nimport { TypeTagSerializer } from '../../bcs/index.js';\nimport type { StructTag as StructTagType, TypeTag as TypeTagType } from '../../bcs/types.js';\nimport { JsonU64, ObjectID, safeEnum, TransactionDataSchema } from './internal.js';\nimport type { Argument, ArgumentSchema, TransactionData } from './internal.js';\n\nexport const ObjectRef = object({\n\tdigest: string(),\n\tobjectId: string(),\n\tversion: union([pipe(number(), integer()), string(), bigint()]),\n});\n\nconst ObjectArg = safeEnum({\n\tImmOrOwned: ObjectRef,\n\tShared: object({\n\t\tobjectId: ObjectID,\n\t\tinitialSharedVersion: JsonU64,\n\t\tmutable: boolean(),\n\t}),\n\tReceiving: ObjectRef,\n});\n\nexport const NormalizedCallArg = safeEnum({\n\tObject: ObjectArg,\n\tPure: array(pipe(number(), integer())),\n});\n\nconst TransactionInput = union([\n\tobject({\n\t\tkind: literal('Input'),\n\t\tindex: pipe(number(), integer()),\n\t\tvalue: unknown(),\n\t\ttype: optional(literal('object')),\n\t}),\n\tobject({\n\t\tkind: literal('Input'),\n\t\tindex: pipe(number(), integer()),\n\t\tvalue: unknown(),\n\t\ttype: literal('pure'),\n\t}),\n]);\n\nconst TransactionExpiration = union([\n\tobject({ Epoch: pipe(number(), integer()) }),\n\tobject({ None: nullable(literal(true)) }),\n]);\n\nconst StringEncodedBigint = pipe(\n\tunion([number(), string(), bigint()]),\n\tcheck((val) => {\n\t\tif (!['string', 'number', 'bigint'].includes(typeof val)) return false;\n\n\t\ttry {\n\t\t\tBigInt(val as string);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}),\n);\n\nexport const TypeTag: GenericSchema<TypeTagType> = union([\n\tobject({ bool: nullable(literal(true)) }),\n\tobject({ u8: nullable(literal(true)) }),\n\tobject({ u64: nullable(literal(true)) }),\n\tobject({ u128: nullable(literal(true)) }),\n\tobject({ address: nullable(literal(true)) }),\n\tobject({ signer: nullable(literal(true)) }),\n\tobject({ vector: lazy(() => TypeTag) }),\n\tobject({ struct: lazy(() => StructTag) }),\n\tobject({ u16: nullable(literal(true)) }),\n\tobject({ u32: nullable(literal(true)) }),\n\tobject({ u256: nullable(literal(true)) }),\n]);\n\n// https://github.com/MystenLabs/sui/blob/cea8742e810142a8145fd83c4c142d61e561004a/external-crates/move/crates/move-core-types/src/language_storage.rs#L140-L147\nexport const StructTag: GenericSchema<StructTagType> = object({\n\taddress: string(),\n\tmodule: string(),\n\tname: string(),\n\ttypeParams: array(TypeTag),\n});\n\nconst GasConfig = object({\n\tbudget: optional(StringEncodedBigint),\n\tprice: optional(StringEncodedBigint),\n\tpayment: optional(array(ObjectRef)),\n\towner: optional(string()),\n});\n\nconst TransactionArgumentTypes = [\n\tTransactionInput,\n\tobject({ kind: literal('GasCoin') }),\n\tobject({ kind: literal('Result'), index: pipe(number(), integer()) }),\n\tobject({\n\t\tkind: literal('NestedResult'),\n\t\tindex: pipe(number(), integer()),\n\t\tresultIndex: pipe(number(), integer()),\n\t}),\n] as const;\n\n// Generic transaction argument\nexport const TransactionArgument = union([...TransactionArgumentTypes]);\n\nconst MoveCallTransaction = object({\n\tkind: literal('MoveCall'),\n\ttarget: pipe(\n\t\tstring(),\n\t\tcheck((target) => target.split('::').length === 3),\n\t) as GenericSchema<`${string}::${string}::${string}`>,\n\ttypeArguments: array(string()),\n\targuments: array(TransactionArgument),\n});\n\nconst TransferObjectsTransaction = object({\n\tkind: literal('TransferObjects'),\n\tobjects: array(TransactionArgument),\n\taddress: TransactionArgument,\n});\n\nconst SplitCoinsTransaction = object({\n\tkind: literal('SplitCoins'),\n\tcoin: TransactionArgument,\n\tamounts: array(TransactionArgument),\n});\n\nconst MergeCoinsTransaction = object({\n\tkind: literal('MergeCoins'),\n\tdestination: TransactionArgument,\n\tsources: array(TransactionArgument),\n});\n\nconst MakeMoveVecTransaction = object({\n\tkind: literal('MakeMoveVec'),\n\ttype: union([object({ Some: TypeTag }), object({ None: nullable(literal(true)) })]),\n\tobjects: array(TransactionArgument),\n});\n\nconst PublishTransaction = object({\n\tkind: literal('Publish'),\n\tmodules: array(array(pipe(number(), integer()))),\n\tdependencies: array(string()),\n});\n\nconst UpgradeTransaction = object({\n\tkind: literal('Upgrade'),\n\tmodules: array(array(pipe(number(), integer()))),\n\tdependencies: array(string()),\n\tpackageId: string(),\n\tticket: TransactionArgument,\n});\n\nconst TransactionTypes = [\n\tMoveCallTransaction,\n\tTransferObjectsTransaction,\n\tSplitCoinsTransaction,\n\tMergeCoinsTransaction,\n\tPublishTransaction,\n\tUpgradeTransaction,\n\tMakeMoveVecTransaction,\n] as const;\n\nconst TransactionType = union([...TransactionTypes]);\n\nexport const SerializedTransactionDataV1 = object({\n\tversion: literal(1),\n\tsender: optional(string()),\n\texpiration: nullish(TransactionExpiration),\n\tgasConfig: GasConfig,\n\tinputs: array(TransactionInput),\n\ttransactions: array(TransactionType),\n});\n\nexport type SerializedTransactionDataV1 = InferOutput<typeof SerializedTransactionDataV1>;\n\nexport function serializeV1TransactionData(\n\ttransactionData: TransactionData,\n): SerializedTransactionDataV1 {\n\tconst inputs: InferOutput<typeof TransactionInput>[] = transactionData.inputs.map(\n\t\t(input, index) => {\n\t\t\tif (input.Object) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'Input',\n\t\t\t\t\tindex,\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tObject: input.Object.ImmOrOwnedObject\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\tImmOrOwned: input.Object.ImmOrOwnedObject,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: input.Object.Receiving\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\tReceiving: {\n\t\t\t\t\t\t\t\t\t\t\tdigest: input.Object.Receiving.digest,\n\t\t\t\t\t\t\t\t\t\t\tversion: input.Object.Receiving.version,\n\t\t\t\t\t\t\t\t\t\t\tobjectId: input.Object.Receiving.objectId,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\tShared: {\n\t\t\t\t\t\t\t\t\t\t\tmutable: input.Object.SharedObject.mutable,\n\t\t\t\t\t\t\t\t\t\t\tinitialSharedVersion: input.Object.SharedObject.initialSharedVersion,\n\t\t\t\t\t\t\t\t\t\t\tobjectId: input.Object.SharedObject.objectId,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\ttype: 'object',\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (input.Pure) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'Input',\n\t\t\t\t\tindex,\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tPure: Array.from(fromBase64(input.Pure.bytes)),\n\t\t\t\t\t},\n\t\t\t\t\ttype: 'pure',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (input.UnresolvedPure) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'Input',\n\t\t\t\t\ttype: 'pure',\n\t\t\t\t\tindex,\n\t\t\t\t\tvalue: input.UnresolvedPure.value,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (input.UnresolvedObject) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'Input',\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tindex,\n\t\t\t\t\tvalue: input.UnresolvedObject.objectId,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthrow new Error('Invalid input');\n\t\t},\n\t);\n\n\treturn {\n\t\tversion: 1,\n\t\tsender: transactionData.sender ?? undefined,\n\t\texpiration:\n\t\t\ttransactionData.expiration?.$kind === 'Epoch'\n\t\t\t\t? { Epoch: Number(transactionData.expiration.Epoch) }\n\t\t\t\t: transactionData.expiration\n\t\t\t\t\t? { None: true }\n\t\t\t\t\t: null,\n\t\tgasConfig: {\n\t\t\towner: transactionData.gasData.owner ?? undefined,\n\t\t\tbudget: transactionData.gasData.budget ?? undefined,\n\t\t\tprice: transactionData.gasData.price ?? undefined,\n\t\t\tpayment: transactionData.gasData.payment ?? undefined,\n\t\t},\n\t\tinputs,\n\t\ttransactions: transactionData.commands.map((command): InferOutput<typeof TransactionType> => {\n\t\t\tif (command.MakeMoveVec) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'MakeMoveVec',\n\t\t\t\t\ttype:\n\t\t\t\t\t\tcommand.MakeMoveVec.type === null\n\t\t\t\t\t\t\t? { None: true }\n\t\t\t\t\t\t\t: { Some: TypeTagSerializer.parseFromStr(command.MakeMoveVec.type) },\n\t\t\t\t\tobjects: command.MakeMoveVec.elements.map((arg) =>\n\t\t\t\t\t\tconvertTransactionArgument(arg, inputs),\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (command.MergeCoins) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'MergeCoins',\n\t\t\t\t\tdestination: convertTransactionArgument(command.MergeCoins.destination, inputs),\n\t\t\t\t\tsources: command.MergeCoins.sources.map((arg) => convertTransactionArgument(arg, inputs)),\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (command.MoveCall) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'MoveCall',\n\t\t\t\t\ttarget: `${command.MoveCall.package}::${command.MoveCall.module}::${command.MoveCall.function}`,\n\t\t\t\t\ttypeArguments: command.MoveCall.typeArguments,\n\t\t\t\t\targuments: command.MoveCall.arguments.map((arg) =>\n\t\t\t\t\t\tconvertTransactionArgument(arg, inputs),\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (command.Publish) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'Publish',\n\t\t\t\t\tmodules: command.Publish.modules.map((mod) => Array.from(fromBase64(mod))),\n\t\t\t\t\tdependencies: command.Publish.dependencies,\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (command.SplitCoins) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'SplitCoins',\n\t\t\t\t\tcoin: convertTransactionArgument(command.SplitCoins.coin, inputs),\n\t\t\t\t\tamounts: command.SplitCoins.amounts.map((arg) => convertTransactionArgument(arg, inputs)),\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (command.TransferObjects) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'TransferObjects',\n\t\t\t\t\tobjects: command.TransferObjects.objects.map((arg) =>\n\t\t\t\t\t\tconvertTransactionArgument(arg, inputs),\n\t\t\t\t\t),\n\t\t\t\t\taddress: convertTransactionArgument(command.TransferObjects.address, inputs),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (command.Upgrade) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'Upgrade',\n\t\t\t\t\tmodules: command.Upgrade.modules.map((mod) => Array.from(fromBase64(mod))),\n\t\t\t\t\tdependencies: command.Upgrade.dependencies,\n\t\t\t\t\tpackageId: command.Upgrade.package,\n\t\t\t\t\tticket: convertTransactionArgument(command.Upgrade.ticket, inputs),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthrow new Error(`Unknown transaction ${Object.keys(command)}`);\n\t\t}),\n\t};\n}\n\nfunction convertTransactionArgument(\n\targ: Argument,\n\tinputs: InferOutput<typeof TransactionInput>[],\n): InferOutput<typeof TransactionArgument> {\n\tif (arg.$kind === 'GasCoin') {\n\t\treturn { kind: 'GasCoin' };\n\t}\n\tif (arg.$kind === 'Result') {\n\t\treturn { kind: 'Result', index: arg.Result };\n\t}\n\tif (arg.$kind === 'NestedResult') {\n\t\treturn { kind: 'NestedResult', index: arg.NestedResult[0], resultIndex: arg.NestedResult[1] };\n\t}\n\tif (arg.$kind === 'Input') {\n\t\treturn inputs[arg.Input];\n\t}\n\n\tthrow new Error(`Invalid argument ${Object.keys(arg)}`);\n}\n\nexport function transactionDataFromV1(data: SerializedTransactionDataV1): TransactionData {\n\treturn parse(TransactionDataSchema, {\n\t\tversion: 2,\n\t\tsender: data.sender ?? null,\n\t\texpiration: data.expiration\n\t\t\t? 'Epoch' in data.expiration\n\t\t\t\t? { Epoch: data.expiration.Epoch }\n\t\t\t\t: { None: true }\n\t\t\t: null,\n\t\tgasData: {\n\t\t\towner: data.gasConfig.owner ?? null,\n\t\t\tbudget: data.gasConfig.budget?.toString() ?? null,\n\t\t\tprice: data.gasConfig.price?.toString() ?? null,\n\t\t\tpayment:\n\t\t\t\tdata.gasConfig.payment?.map((ref) => ({\n\t\t\t\t\tdigest: ref.digest,\n\t\t\t\t\tobjectId: ref.objectId,\n\t\t\t\t\tversion: ref.version.toString(),\n\t\t\t\t})) ?? null,\n\t\t},\n\t\tinputs: data.inputs.map((input) => {\n\t\t\tif (input.kind === 'Input') {\n\t\t\t\tif (is(NormalizedCallArg, input.value)) {\n\t\t\t\t\tconst value = parse(NormalizedCallArg, input.value);\n\n\t\t\t\t\tif (value.Object) {\n\t\t\t\t\t\tif (value.Object.ImmOrOwned) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tObject: {\n\t\t\t\t\t\t\t\t\tImmOrOwnedObject: {\n\t\t\t\t\t\t\t\t\t\tobjectId: value.Object.ImmOrOwned.objectId,\n\t\t\t\t\t\t\t\t\t\tversion: String(value.Object.ImmOrOwned.version),\n\t\t\t\t\t\t\t\t\t\tdigest: value.Object.ImmOrOwned.digest,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (value.Object.Shared) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tObject: {\n\t\t\t\t\t\t\t\t\tSharedObject: {\n\t\t\t\t\t\t\t\t\t\tmutable: value.Object.Shared.mutable ?? null,\n\t\t\t\t\t\t\t\t\t\tinitialSharedVersion: value.Object.Shared.initialSharedVersion,\n\t\t\t\t\t\t\t\t\t\tobjectId: value.Object.Shared.objectId,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (value.Object.Receiving) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tObject: {\n\t\t\t\t\t\t\t\t\tReceiving: {\n\t\t\t\t\t\t\t\t\t\tdigest: value.Object.Receiving.digest,\n\t\t\t\t\t\t\t\t\t\tversion: String(value.Object.Receiving.version),\n\t\t\t\t\t\t\t\t\t\tobjectId: value.Object.Receiving.objectId,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthrow new Error('Invalid object input');\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tPure: {\n\t\t\t\t\t\t\tbytes: toBase64(new Uint8Array(value.Pure)),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (input.type === 'object') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tUnresolvedObject: {\n\t\t\t\t\t\t\tobjectId: input.value as string,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tUnresolvedPure: {\n\t\t\t\t\t\tvalue: input.value,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthrow new Error('Invalid input');\n\t\t}),\n\t\tcommands: data.transactions.map((transaction) => {\n\t\t\tswitch (transaction.kind) {\n\t\t\t\tcase 'MakeMoveVec':\n\t\t\t\t\treturn {\n\t\t\t\t\t\tMakeMoveVec: {\n\t\t\t\t\t\t\ttype:\n\t\t\t\t\t\t\t\t'Some' in transaction.type\n\t\t\t\t\t\t\t\t\t? TypeTagSerializer.tagToString(transaction.type.Some)\n\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\telements: transaction.objects.map((arg) => parseV1TransactionArgument(arg)),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\tcase 'MergeCoins': {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tMergeCoins: {\n\t\t\t\t\t\t\tdestination: parseV1TransactionArgument(transaction.destination),\n\t\t\t\t\t\t\tsources: transaction.sources.map((arg) => parseV1TransactionArgument(arg)),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase 'MoveCall': {\n\t\t\t\t\tconst [pkg, mod, fn] = transaction.target.split('::');\n\t\t\t\t\treturn {\n\t\t\t\t\t\tMoveCall: {\n\t\t\t\t\t\t\tpackage: pkg,\n\t\t\t\t\t\t\tmodule: mod,\n\t\t\t\t\t\t\tfunction: fn,\n\t\t\t\t\t\t\ttypeArguments: transaction.typeArguments,\n\t\t\t\t\t\t\targuments: transaction.arguments.map((arg) => parseV1TransactionArgument(arg)),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase 'Publish': {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tPublish: {\n\t\t\t\t\t\t\tmodules: transaction.modules.map((mod) => toBase64(Uint8Array.from(mod))),\n\t\t\t\t\t\t\tdependencies: transaction.dependencies,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase 'SplitCoins': {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tSplitCoins: {\n\t\t\t\t\t\t\tcoin: parseV1TransactionArgument(transaction.coin),\n\t\t\t\t\t\t\tamounts: transaction.amounts.map((arg) => parseV1TransactionArgument(arg)),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase 'TransferObjects': {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tTransferObjects: {\n\t\t\t\t\t\t\tobjects: transaction.objects.map((arg) => parseV1TransactionArgument(arg)),\n\t\t\t\t\t\t\taddress: parseV1TransactionArgument(transaction.address),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase 'Upgrade': {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tUpgrade: {\n\t\t\t\t\t\t\tmodules: transaction.modules.map((mod) => toBase64(Uint8Array.from(mod))),\n\t\t\t\t\t\t\tdependencies: transaction.dependencies,\n\t\t\t\t\t\t\tpackage: transaction.packageId,\n\t\t\t\t\t\t\tticket: parseV1TransactionArgument(transaction.ticket),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthrow new Error(`Unknown transaction ${Object.keys(transaction)}`);\n\t\t}),\n\t} satisfies InferInput<typeof TransactionDataSchema>);\n}\n\nfunction parseV1TransactionArgument(\n\targ: InferOutput<typeof TransactionArgument>,\n): InferInput<typeof ArgumentSchema> {\n\tswitch (arg.kind) {\n\t\tcase 'GasCoin': {\n\t\t\treturn { GasCoin: true };\n\t\t}\n\t\tcase 'Result':\n\t\t\treturn { Result: arg.index };\n\t\tcase 'NestedResult': {\n\t\t\treturn { NestedResult: [arg.index, arg.resultIndex] };\n\t\t}\n\t\tcase 'Input': {\n\t\t\treturn { Input: arg.index };\n\t\t}\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"v1.mjs","names":[],"sources":["../../../src/transactions/data/v1.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromBase64, toBase64 } from '@mysten/bcs';\nimport type { GenericSchema, InferInput, InferOutput } from 'valibot';\nimport {\n\tarray,\n\tbigint,\n\tboolean,\n\tcheck,\n\tinteger,\n\tis,\n\tlazy,\n\tliteral,\n\tnullable,\n\tnullish,\n\tnumber,\n\tobject,\n\toptional,\n\tparse,\n\tpipe,\n\tstring,\n\tunion,\n\tunknown,\n} from 'valibot';\n\nimport { TypeTagSerializer } from '../../bcs/index.js';\nimport type { StructTag as StructTagType, TypeTag as TypeTagType } from '../../bcs/types.js';\nimport {\n\tJsonU64,\n\tObjectID,\n\tsafeEnum,\n\tTransactionDataSchema,\n\tValidDuringSchema,\n\tValiditySchema,\n} from './internal.js';\nimport type { Argument, ArgumentSchema, TransactionData } from './internal.js';\n\nexport const ObjectRef = object({\n\tdigest: string(),\n\tobjectId: string(),\n\tversion: union([pipe(number(), integer()), string(), bigint()]),\n});\n\nconst ObjectArg = safeEnum({\n\tImmOrOwned: ObjectRef,\n\tShared: object({\n\t\tobjectId: ObjectID,\n\t\tinitialSharedVersion: JsonU64,\n\t\tmutable: boolean(),\n\t}),\n\tReceiving: ObjectRef,\n});\n\nexport const NormalizedCallArg = safeEnum({\n\tObject: ObjectArg,\n\tPure: array(pipe(number(), integer())),\n});\n\nconst TransactionInput = union([\n\tobject({\n\t\tkind: literal('Input'),\n\t\tindex: pipe(number(), integer()),\n\t\tvalue: unknown(),\n\t\ttype: optional(literal('object')),\n\t}),\n\tobject({\n\t\tkind: literal('Input'),\n\t\tindex: pipe(number(), integer()),\n\t\tvalue: unknown(),\n\t\ttype: literal('pure'),\n\t}),\n]);\n\n// Carried here rather than collapsed to `{ None: true }`, which silently dropped the expiration\n// (and its allowed proposers) from a `serialize()` -> `from()` round trip before signing.\nconst TransactionExpiration = union([\n\tobject({ Epoch: pipe(number(), integer()) }),\n\tobject({ None: nullable(literal(true)) }),\n\tobject({ ValidDuring: ValidDuringSchema }),\n\tobject({ Validity: ValiditySchema }),\n]);\n\nfunction expirationToV1(\n\texpiration: TransactionData['expiration'],\n): InferOutput<typeof TransactionExpiration> | null {\n\tif (!expiration) return null;\n\n\tswitch (expiration.$kind) {\n\t\tcase 'Epoch':\n\t\t\treturn { Epoch: Number(expiration.Epoch) };\n\t\tcase 'ValidDuring':\n\t\t\treturn { ValidDuring: expiration.ValidDuring };\n\t\tcase 'Validity':\n\t\t\treturn { Validity: expiration.Validity };\n\t\tcase 'None':\n\t\t\treturn { None: true };\n\t\tdefault:\n\t\t\t// Representing a new variant here is not optional: this fails to compile without it.\n\t\t\texpiration satisfies never;\n\t\t\tthrow new Error(`Unknown transaction expiration: ${JSON.stringify(expiration)}`);\n\t}\n}\n\nfunction expirationFromV1(\n\texpiration: SerializedTransactionDataV1['expiration'],\n): InferInput<typeof TransactionDataSchema>['expiration'] {\n\tif (!expiration) return null;\n\tif ('Epoch' in expiration) return { Epoch: expiration.Epoch };\n\tif ('ValidDuring' in expiration) return { ValidDuring: expiration.ValidDuring };\n\tif ('Validity' in expiration) return { Validity: expiration.Validity };\n\tif ('None' in expiration) return { None: true };\n\n\t// `restore` does not validate v1 payloads against the schema, so this is the only place an\n\t// unrecognised expiration can be caught rather than silently becoming `{ None: true }`.\n\tthrow new Error(\n\t\t`Unknown transaction expiration in v1 transaction data: ${Object.keys(expiration).join(', ')}`,\n\t);\n}\n\nconst StringEncodedBigint = pipe(\n\tunion([number(), string(), bigint()]),\n\tcheck((val) => {\n\t\tif (!['string', 'number', 'bigint'].includes(typeof val)) return false;\n\n\t\ttry {\n\t\t\tBigInt(val as string);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}),\n);\n\nexport const TypeTag: GenericSchema<TypeTagType> = union([\n\tobject({ bool: nullable(literal(true)) }),\n\tobject({ u8: nullable(literal(true)) }),\n\tobject({ u64: nullable(literal(true)) }),\n\tobject({ u128: nullable(literal(true)) }),\n\tobject({ address: nullable(literal(true)) }),\n\tobject({ signer: nullable(literal(true)) }),\n\tobject({ vector: lazy(() => TypeTag) }),\n\tobject({ struct: lazy(() => StructTag) }),\n\tobject({ u16: nullable(literal(true)) }),\n\tobject({ u32: nullable(literal(true)) }),\n\tobject({ u256: nullable(literal(true)) }),\n]);\n\n// https://github.com/MystenLabs/sui/blob/cea8742e810142a8145fd83c4c142d61e561004a/external-crates/move/crates/move-core-types/src/language_storage.rs#L140-L147\nexport const StructTag: GenericSchema<StructTagType> = object({\n\taddress: string(),\n\tmodule: string(),\n\tname: string(),\n\ttypeParams: array(TypeTag),\n});\n\nconst GasConfig = object({\n\tbudget: optional(StringEncodedBigint),\n\tprice: optional(StringEncodedBigint),\n\tpayment: optional(array(ObjectRef)),\n\towner: optional(string()),\n});\n\nconst TransactionArgumentTypes = [\n\tTransactionInput,\n\tobject({ kind: literal('GasCoin') }),\n\tobject({ kind: literal('Result'), index: pipe(number(), integer()) }),\n\tobject({\n\t\tkind: literal('NestedResult'),\n\t\tindex: pipe(number(), integer()),\n\t\tresultIndex: pipe(number(), integer()),\n\t}),\n] as const;\n\n// Generic transaction argument\nexport const TransactionArgument = union([...TransactionArgumentTypes]);\n\nconst MoveCallTransaction = object({\n\tkind: literal('MoveCall'),\n\ttarget: pipe(\n\t\tstring(),\n\t\tcheck((target) => target.split('::').length === 3),\n\t) as GenericSchema<`${string}::${string}::${string}`>,\n\ttypeArguments: array(string()),\n\targuments: array(TransactionArgument),\n});\n\nconst TransferObjectsTransaction = object({\n\tkind: literal('TransferObjects'),\n\tobjects: array(TransactionArgument),\n\taddress: TransactionArgument,\n});\n\nconst SplitCoinsTransaction = object({\n\tkind: literal('SplitCoins'),\n\tcoin: TransactionArgument,\n\tamounts: array(TransactionArgument),\n});\n\nconst MergeCoinsTransaction = object({\n\tkind: literal('MergeCoins'),\n\tdestination: TransactionArgument,\n\tsources: array(TransactionArgument),\n});\n\nconst MakeMoveVecTransaction = object({\n\tkind: literal('MakeMoveVec'),\n\ttype: union([object({ Some: TypeTag }), object({ None: nullable(literal(true)) })]),\n\tobjects: array(TransactionArgument),\n});\n\nconst PublishTransaction = object({\n\tkind: literal('Publish'),\n\tmodules: array(array(pipe(number(), integer()))),\n\tdependencies: array(string()),\n});\n\nconst UpgradeTransaction = object({\n\tkind: literal('Upgrade'),\n\tmodules: array(array(pipe(number(), integer()))),\n\tdependencies: array(string()),\n\tpackageId: string(),\n\tticket: TransactionArgument,\n});\n\nconst TransactionTypes = [\n\tMoveCallTransaction,\n\tTransferObjectsTransaction,\n\tSplitCoinsTransaction,\n\tMergeCoinsTransaction,\n\tPublishTransaction,\n\tUpgradeTransaction,\n\tMakeMoveVecTransaction,\n] as const;\n\nconst TransactionType = union([...TransactionTypes]);\n\nexport const SerializedTransactionDataV1 = object({\n\tversion: literal(1),\n\tsender: optional(string()),\n\texpiration: nullish(TransactionExpiration),\n\tgasConfig: GasConfig,\n\tinputs: array(TransactionInput),\n\ttransactions: array(TransactionType),\n});\n\nexport type SerializedTransactionDataV1 = InferOutput<typeof SerializedTransactionDataV1>;\n\nexport function serializeV1TransactionData(\n\ttransactionData: TransactionData,\n): SerializedTransactionDataV1 {\n\tconst inputs: InferOutput<typeof TransactionInput>[] = transactionData.inputs.map(\n\t\t(input, index) => {\n\t\t\tif (input.Object) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'Input',\n\t\t\t\t\tindex,\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tObject: input.Object.ImmOrOwnedObject\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\tImmOrOwned: input.Object.ImmOrOwnedObject,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: input.Object.Receiving\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\tReceiving: {\n\t\t\t\t\t\t\t\t\t\t\tdigest: input.Object.Receiving.digest,\n\t\t\t\t\t\t\t\t\t\t\tversion: input.Object.Receiving.version,\n\t\t\t\t\t\t\t\t\t\t\tobjectId: input.Object.Receiving.objectId,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\tShared: {\n\t\t\t\t\t\t\t\t\t\t\tmutable: input.Object.SharedObject.mutable,\n\t\t\t\t\t\t\t\t\t\t\tinitialSharedVersion: input.Object.SharedObject.initialSharedVersion,\n\t\t\t\t\t\t\t\t\t\t\tobjectId: input.Object.SharedObject.objectId,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\ttype: 'object',\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (input.Pure) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'Input',\n\t\t\t\t\tindex,\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tPure: Array.from(fromBase64(input.Pure.bytes)),\n\t\t\t\t\t},\n\t\t\t\t\ttype: 'pure',\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (input.UnresolvedPure) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'Input',\n\t\t\t\t\ttype: 'pure',\n\t\t\t\t\tindex,\n\t\t\t\t\tvalue: input.UnresolvedPure.value,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (input.UnresolvedObject) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'Input',\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tindex,\n\t\t\t\t\tvalue: input.UnresolvedObject.objectId,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthrow new Error('Invalid input');\n\t\t},\n\t);\n\n\treturn {\n\t\tversion: 1,\n\t\tsender: transactionData.sender ?? undefined,\n\t\texpiration: expirationToV1(transactionData.expiration),\n\t\tgasConfig: {\n\t\t\towner: transactionData.gasData.owner ?? undefined,\n\t\t\tbudget: transactionData.gasData.budget ?? undefined,\n\t\t\tprice: transactionData.gasData.price ?? undefined,\n\t\t\tpayment: transactionData.gasData.payment ?? undefined,\n\t\t},\n\t\tinputs,\n\t\ttransactions: transactionData.commands.map((command): InferOutput<typeof TransactionType> => {\n\t\t\tif (command.MakeMoveVec) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'MakeMoveVec',\n\t\t\t\t\ttype:\n\t\t\t\t\t\tcommand.MakeMoveVec.type === null\n\t\t\t\t\t\t\t? { None: true }\n\t\t\t\t\t\t\t: { Some: TypeTagSerializer.parseFromStr(command.MakeMoveVec.type) },\n\t\t\t\t\tobjects: command.MakeMoveVec.elements.map((arg) =>\n\t\t\t\t\t\tconvertTransactionArgument(arg, inputs),\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (command.MergeCoins) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'MergeCoins',\n\t\t\t\t\tdestination: convertTransactionArgument(command.MergeCoins.destination, inputs),\n\t\t\t\t\tsources: command.MergeCoins.sources.map((arg) => convertTransactionArgument(arg, inputs)),\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (command.MoveCall) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'MoveCall',\n\t\t\t\t\ttarget: `${command.MoveCall.package}::${command.MoveCall.module}::${command.MoveCall.function}`,\n\t\t\t\t\ttypeArguments: command.MoveCall.typeArguments,\n\t\t\t\t\targuments: command.MoveCall.arguments.map((arg) =>\n\t\t\t\t\t\tconvertTransactionArgument(arg, inputs),\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (command.Publish) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'Publish',\n\t\t\t\t\tmodules: command.Publish.modules.map((mod) => Array.from(fromBase64(mod))),\n\t\t\t\t\tdependencies: command.Publish.dependencies,\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (command.SplitCoins) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'SplitCoins',\n\t\t\t\t\tcoin: convertTransactionArgument(command.SplitCoins.coin, inputs),\n\t\t\t\t\tamounts: command.SplitCoins.amounts.map((arg) => convertTransactionArgument(arg, inputs)),\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (command.TransferObjects) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'TransferObjects',\n\t\t\t\t\tobjects: command.TransferObjects.objects.map((arg) =>\n\t\t\t\t\t\tconvertTransactionArgument(arg, inputs),\n\t\t\t\t\t),\n\t\t\t\t\taddress: convertTransactionArgument(command.TransferObjects.address, inputs),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (command.Upgrade) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: 'Upgrade',\n\t\t\t\t\tmodules: command.Upgrade.modules.map((mod) => Array.from(fromBase64(mod))),\n\t\t\t\t\tdependencies: command.Upgrade.dependencies,\n\t\t\t\t\tpackageId: command.Upgrade.package,\n\t\t\t\t\tticket: convertTransactionArgument(command.Upgrade.ticket, inputs),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthrow new Error(`Unknown transaction ${Object.keys(command)}`);\n\t\t}),\n\t};\n}\n\nfunction convertTransactionArgument(\n\targ: Argument,\n\tinputs: InferOutput<typeof TransactionInput>[],\n): InferOutput<typeof TransactionArgument> {\n\tif (arg.$kind === 'GasCoin') {\n\t\treturn { kind: 'GasCoin' };\n\t}\n\tif (arg.$kind === 'Result') {\n\t\treturn { kind: 'Result', index: arg.Result };\n\t}\n\tif (arg.$kind === 'NestedResult') {\n\t\treturn { kind: 'NestedResult', index: arg.NestedResult[0], resultIndex: arg.NestedResult[1] };\n\t}\n\tif (arg.$kind === 'Input') {\n\t\treturn inputs[arg.Input];\n\t}\n\n\tthrow new Error(`Invalid argument ${Object.keys(arg)}`);\n}\n\nexport function transactionDataFromV1(data: SerializedTransactionDataV1): TransactionData {\n\treturn parse(TransactionDataSchema, {\n\t\tversion: 2,\n\t\tsender: data.sender ?? null,\n\t\texpiration: expirationFromV1(data.expiration),\n\t\tgasData: {\n\t\t\towner: data.gasConfig.owner ?? null,\n\t\t\tbudget: data.gasConfig.budget?.toString() ?? null,\n\t\t\tprice: data.gasConfig.price?.toString() ?? null,\n\t\t\tpayment:\n\t\t\t\tdata.gasConfig.payment?.map((ref) => ({\n\t\t\t\t\tdigest: ref.digest,\n\t\t\t\t\tobjectId: ref.objectId,\n\t\t\t\t\tversion: ref.version.toString(),\n\t\t\t\t})) ?? null,\n\t\t},\n\t\tinputs: data.inputs.map((input) => {\n\t\t\tif (input.kind === 'Input') {\n\t\t\t\tif (is(NormalizedCallArg, input.value)) {\n\t\t\t\t\tconst value = parse(NormalizedCallArg, input.value);\n\n\t\t\t\t\tif (value.Object) {\n\t\t\t\t\t\tif (value.Object.ImmOrOwned) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tObject: {\n\t\t\t\t\t\t\t\t\tImmOrOwnedObject: {\n\t\t\t\t\t\t\t\t\t\tobjectId: value.Object.ImmOrOwned.objectId,\n\t\t\t\t\t\t\t\t\t\tversion: String(value.Object.ImmOrOwned.version),\n\t\t\t\t\t\t\t\t\t\tdigest: value.Object.ImmOrOwned.digest,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (value.Object.Shared) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tObject: {\n\t\t\t\t\t\t\t\t\tSharedObject: {\n\t\t\t\t\t\t\t\t\t\tmutable: value.Object.Shared.mutable ?? null,\n\t\t\t\t\t\t\t\t\t\tinitialSharedVersion: value.Object.Shared.initialSharedVersion,\n\t\t\t\t\t\t\t\t\t\tobjectId: value.Object.Shared.objectId,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (value.Object.Receiving) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tObject: {\n\t\t\t\t\t\t\t\t\tReceiving: {\n\t\t\t\t\t\t\t\t\t\tdigest: value.Object.Receiving.digest,\n\t\t\t\t\t\t\t\t\t\tversion: String(value.Object.Receiving.version),\n\t\t\t\t\t\t\t\t\t\tobjectId: value.Object.Receiving.objectId,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthrow new Error('Invalid object input');\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tPure: {\n\t\t\t\t\t\t\tbytes: toBase64(new Uint8Array(value.Pure)),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (input.type === 'object') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tUnresolvedObject: {\n\t\t\t\t\t\t\tobjectId: input.value as string,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tUnresolvedPure: {\n\t\t\t\t\t\tvalue: input.value,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthrow new Error('Invalid input');\n\t\t}),\n\t\tcommands: data.transactions.map((transaction) => {\n\t\t\tswitch (transaction.kind) {\n\t\t\t\tcase 'MakeMoveVec':\n\t\t\t\t\treturn {\n\t\t\t\t\t\tMakeMoveVec: {\n\t\t\t\t\t\t\ttype:\n\t\t\t\t\t\t\t\t'Some' in transaction.type\n\t\t\t\t\t\t\t\t\t? TypeTagSerializer.tagToString(transaction.type.Some)\n\t\t\t\t\t\t\t\t\t: null,\n\t\t\t\t\t\t\telements: transaction.objects.map((arg) => parseV1TransactionArgument(arg)),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\tcase 'MergeCoins': {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tMergeCoins: {\n\t\t\t\t\t\t\tdestination: parseV1TransactionArgument(transaction.destination),\n\t\t\t\t\t\t\tsources: transaction.sources.map((arg) => parseV1TransactionArgument(arg)),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase 'MoveCall': {\n\t\t\t\t\tconst [pkg, mod, fn] = transaction.target.split('::');\n\t\t\t\t\treturn {\n\t\t\t\t\t\tMoveCall: {\n\t\t\t\t\t\t\tpackage: pkg,\n\t\t\t\t\t\t\tmodule: mod,\n\t\t\t\t\t\t\tfunction: fn,\n\t\t\t\t\t\t\ttypeArguments: transaction.typeArguments,\n\t\t\t\t\t\t\targuments: transaction.arguments.map((arg) => parseV1TransactionArgument(arg)),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase 'Publish': {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tPublish: {\n\t\t\t\t\t\t\tmodules: transaction.modules.map((mod) => toBase64(Uint8Array.from(mod))),\n\t\t\t\t\t\t\tdependencies: transaction.dependencies,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase 'SplitCoins': {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tSplitCoins: {\n\t\t\t\t\t\t\tcoin: parseV1TransactionArgument(transaction.coin),\n\t\t\t\t\t\t\tamounts: transaction.amounts.map((arg) => parseV1TransactionArgument(arg)),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase 'TransferObjects': {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tTransferObjects: {\n\t\t\t\t\t\t\tobjects: transaction.objects.map((arg) => parseV1TransactionArgument(arg)),\n\t\t\t\t\t\t\taddress: parseV1TransactionArgument(transaction.address),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase 'Upgrade': {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tUpgrade: {\n\t\t\t\t\t\t\tmodules: transaction.modules.map((mod) => toBase64(Uint8Array.from(mod))),\n\t\t\t\t\t\t\tdependencies: transaction.dependencies,\n\t\t\t\t\t\t\tpackage: transaction.packageId,\n\t\t\t\t\t\t\tticket: parseV1TransactionArgument(transaction.ticket),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthrow new Error(`Unknown transaction ${Object.keys(transaction)}`);\n\t\t}),\n\t} satisfies InferInput<typeof TransactionDataSchema>);\n}\n\nfunction parseV1TransactionArgument(\n\targ: InferOutput<typeof TransactionArgument>,\n): InferInput<typeof ArgumentSchema> {\n\tswitch (arg.kind) {\n\t\tcase 'GasCoin': {\n\t\t\treturn { GasCoin: true };\n\t\t}\n\t\tcase 'Result':\n\t\t\treturn { Result: arg.index };\n\t\tcase 'NestedResult': {\n\t\t\treturn { NestedResult: [arg.index, arg.resultIndex] };\n\t\t}\n\t\tcase 'Input': {\n\t\t\treturn { Input: arg.index };\n\t\t}\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -17,6 +17,18 @@ declare const SerializedTransactionDataV2Schema: valibot0.ObjectSchema<{
|
|
|
17
17
|
chain: string;
|
|
18
18
|
nonce: number;
|
|
19
19
|
};
|
|
20
|
+
Validity: {
|
|
21
|
+
allowedProposers: {
|
|
22
|
+
epoch: string | number;
|
|
23
|
+
proposers: number[];
|
|
24
|
+
} | null;
|
|
25
|
+
minEpoch: string | number | null;
|
|
26
|
+
maxEpoch: string | number | null;
|
|
27
|
+
minTimestamp: string | number | null;
|
|
28
|
+
maxTimestamp: string | number | null;
|
|
29
|
+
chain: string;
|
|
30
|
+
nonce: number;
|
|
31
|
+
};
|
|
20
32
|
}>>, undefined>;
|
|
21
33
|
readonly gasData: valibot0.ObjectSchema<{
|
|
22
34
|
readonly budget: valibot0.NullableSchema<valibot0.SchemaWithPipe<readonly [valibot0.UnionSchema<[valibot0.StringSchema<undefined>, valibot0.SchemaWithPipe<readonly [valibot0.NumberSchema<undefined>, valibot0.IntegerAction<number, undefined>]>], undefined>, valibot0.CheckAction<string | number, "Invalid u64">]>, undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v2.d.mts","names":[],"sources":["../../../src/transactions/data/v2.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"v2.d.mts","names":[],"sources":["../../../src/transactions/data/v2.ts"],"mappings":";;;;;cAqJa,iCAAA,WAAiC,YAAA;EAAA,kBAQ5C,QAAA,CAAA,aAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAEU,2BAAA,GAA8B,WAAA,QAAmB,iCAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BCSBytes, FundsWithdrawalArgSchema, JsonU64, ObjectID, ObjectRefSchema, SuiAddress, ValidDuringSchema } from "./internal.mjs";
|
|
1
|
+
import { BCSBytes, FundsWithdrawalArgSchema, JsonU64, ObjectID, ObjectRefSchema, SuiAddress, ValidDuringSchema, ValiditySchema } from "./internal.mjs";
|
|
2
2
|
import { array, boolean, integer, literal, nullable, nullish, number, object, optional, pipe, record, string, tuple, union, unknown } from "valibot";
|
|
3
3
|
|
|
4
4
|
//#region src/transactions/data/v2.ts
|
|
@@ -83,7 +83,8 @@ const CallArg = enumUnion({
|
|
|
83
83
|
const TransactionExpiration = enumUnion({
|
|
84
84
|
None: literal(true),
|
|
85
85
|
Epoch: JsonU64,
|
|
86
|
-
ValidDuring: ValidDuringSchema
|
|
86
|
+
ValidDuring: ValidDuringSchema,
|
|
87
|
+
Validity: ValiditySchema
|
|
87
88
|
});
|
|
88
89
|
const SerializedTransactionDataV2Schema = object({
|
|
89
90
|
version: literal(2),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v2.mjs","names":[],"sources":["../../../src/transactions/data/v2.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { EnumInputShape } from '@mysten/bcs';\nimport type { GenericSchema, InferInput, InferOutput } from 'valibot';\nimport {\n\tarray,\n\tboolean,\n\tinteger,\n\tliteral,\n\tnullable,\n\tnullish,\n\tnumber,\n\tobject,\n\toptional,\n\tpipe,\n\trecord,\n\tstring,\n\ttuple,\n\tunion,\n\tunknown,\n} from 'valibot';\n\nimport {\n\tBCSBytes,\n\tFundsWithdrawalArgSchema,\n\tJsonU64,\n\tObjectID,\n\tObjectRefSchema,\n\tSuiAddress,\n\tValidDuringSchema,\n} from './internal.js';\nimport type { Simplify } from '@mysten/utils';\n\nfunction enumUnion<T extends Record<string, GenericSchema<any>>>(options: T) {\n\treturn union(\n\t\tObject.entries(options).map(([key, value]) => object({ [key]: value })),\n\t) as GenericSchema<\n\t\tEnumInputShape<\n\t\t\tSimplify<{\n\t\t\t\t[K in keyof T]: InferInput<T[K]>;\n\t\t\t}>\n\t\t>\n\t>;\n}\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L690-L702\nconst Argument = enumUnion({\n\tGasCoin: literal(true),\n\tInput: pipe(number(), integer()),\n\tResult: pipe(number(), integer()),\n\tNestedResult: tuple([pipe(number(), integer()), pipe(number(), integer())]),\n});\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L1387-L1392\nconst GasData = object({\n\tbudget: nullable(JsonU64),\n\tprice: nullable(JsonU64),\n\towner: nullable(SuiAddress),\n\tpayment: nullable(array(ObjectRefSchema)),\n});\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L707-L718\nconst ProgrammableMoveCall = object({\n\tpackage: ObjectID,\n\tmodule: string(),\n\tfunction: string(),\n\t// snake case in rust\n\ttypeArguments: array(string()),\n\targuments: array(Argument),\n});\n\nconst $Intent = object({\n\tname: string(),\n\tinputs: record(string(), union([Argument, array(Argument)])),\n\tdata: record(string(), unknown()),\n});\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L657-L685\nconst Command = enumUnion({\n\tMoveCall: ProgrammableMoveCall,\n\tTransferObjects: object({\n\t\tobjects: array(Argument),\n\t\taddress: Argument,\n\t}),\n\tSplitCoins: object({\n\t\tcoin: Argument,\n\t\tamounts: array(Argument),\n\t}),\n\tMergeCoins: object({\n\t\tdestination: Argument,\n\t\tsources: array(Argument),\n\t}),\n\tPublish: object({\n\t\tmodules: array(BCSBytes),\n\t\tdependencies: array(ObjectID),\n\t}),\n\tMakeMoveVec: object({\n\t\ttype: nullable(string()),\n\t\telements: array(Argument),\n\t}),\n\tUpgrade: object({\n\t\tmodules: array(BCSBytes),\n\t\tdependencies: array(ObjectID),\n\t\tpackage: ObjectID,\n\t\tticket: Argument,\n\t}),\n\t$Intent,\n});\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L102-L114\nconst ObjectArg = enumUnion({\n\tImmOrOwnedObject: ObjectRefSchema,\n\tSharedObject: object({\n\t\tobjectId: ObjectID,\n\t\t// snake case in rust\n\t\tinitialSharedVersion: JsonU64,\n\t\tmutable: boolean(),\n\t}),\n\tReceiving: ObjectRefSchema,\n});\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L75-L80\nconst CallArg = enumUnion({\n\tObject: ObjectArg,\n\tPure: object({\n\t\tbytes: BCSBytes,\n\t}),\n\tUnresolvedPure: object({\n\t\tvalue: unknown(),\n\t}),\n\tUnresolvedObject: object({\n\t\tobjectId: ObjectID,\n\t\tversion: optional(nullable(JsonU64)),\n\t\tdigest: optional(nullable(string())),\n\t\tinitialSharedVersion: optional(nullable(JsonU64)),\n\t\tmutable: optional(nullable(boolean())),\n\t}),\n\tFundsWithdrawal: FundsWithdrawalArgSchema,\n});\n\nconst TransactionExpiration = enumUnion({\n\tNone: literal(true),\n\tEpoch: JsonU64,\n\tValidDuring: ValidDuringSchema,\n});\n\nexport const SerializedTransactionDataV2Schema = object({\n\tversion: literal(2),\n\tsender: nullish(SuiAddress),\n\texpiration: nullish(TransactionExpiration),\n\tgasData: GasData,\n\tinputs: array(CallArg),\n\tcommands: array(Command),\n\tdigest: optional(nullable(string())),\n});\n\nexport type SerializedTransactionDataV2 = InferOutput<typeof SerializedTransactionDataV2Schema>;\n"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"v2.mjs","names":[],"sources":["../../../src/transactions/data/v2.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { EnumInputShape } from '@mysten/bcs';\nimport type { GenericSchema, InferInput, InferOutput } from 'valibot';\nimport {\n\tarray,\n\tboolean,\n\tinteger,\n\tliteral,\n\tnullable,\n\tnullish,\n\tnumber,\n\tobject,\n\toptional,\n\tpipe,\n\trecord,\n\tstring,\n\ttuple,\n\tunion,\n\tunknown,\n} from 'valibot';\n\nimport {\n\tBCSBytes,\n\tFundsWithdrawalArgSchema,\n\tJsonU64,\n\tObjectID,\n\tObjectRefSchema,\n\tSuiAddress,\n\tValidDuringSchema,\n\tValiditySchema,\n} from './internal.js';\nimport type { Simplify } from '@mysten/utils';\n\nfunction enumUnion<T extends Record<string, GenericSchema<any>>>(options: T) {\n\treturn union(\n\t\tObject.entries(options).map(([key, value]) => object({ [key]: value })),\n\t) as GenericSchema<\n\t\tEnumInputShape<\n\t\t\tSimplify<{\n\t\t\t\t[K in keyof T]: InferInput<T[K]>;\n\t\t\t}>\n\t\t>\n\t>;\n}\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L690-L702\nconst Argument = enumUnion({\n\tGasCoin: literal(true),\n\tInput: pipe(number(), integer()),\n\tResult: pipe(number(), integer()),\n\tNestedResult: tuple([pipe(number(), integer()), pipe(number(), integer())]),\n});\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L1387-L1392\nconst GasData = object({\n\tbudget: nullable(JsonU64),\n\tprice: nullable(JsonU64),\n\towner: nullable(SuiAddress),\n\tpayment: nullable(array(ObjectRefSchema)),\n});\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L707-L718\nconst ProgrammableMoveCall = object({\n\tpackage: ObjectID,\n\tmodule: string(),\n\tfunction: string(),\n\t// snake case in rust\n\ttypeArguments: array(string()),\n\targuments: array(Argument),\n});\n\nconst $Intent = object({\n\tname: string(),\n\tinputs: record(string(), union([Argument, array(Argument)])),\n\tdata: record(string(), unknown()),\n});\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L657-L685\nconst Command = enumUnion({\n\tMoveCall: ProgrammableMoveCall,\n\tTransferObjects: object({\n\t\tobjects: array(Argument),\n\t\taddress: Argument,\n\t}),\n\tSplitCoins: object({\n\t\tcoin: Argument,\n\t\tamounts: array(Argument),\n\t}),\n\tMergeCoins: object({\n\t\tdestination: Argument,\n\t\tsources: array(Argument),\n\t}),\n\tPublish: object({\n\t\tmodules: array(BCSBytes),\n\t\tdependencies: array(ObjectID),\n\t}),\n\tMakeMoveVec: object({\n\t\ttype: nullable(string()),\n\t\telements: array(Argument),\n\t}),\n\tUpgrade: object({\n\t\tmodules: array(BCSBytes),\n\t\tdependencies: array(ObjectID),\n\t\tpackage: ObjectID,\n\t\tticket: Argument,\n\t}),\n\t$Intent,\n});\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L102-L114\nconst ObjectArg = enumUnion({\n\tImmOrOwnedObject: ObjectRefSchema,\n\tSharedObject: object({\n\t\tobjectId: ObjectID,\n\t\t// snake case in rust\n\t\tinitialSharedVersion: JsonU64,\n\t\tmutable: boolean(),\n\t}),\n\tReceiving: ObjectRefSchema,\n});\n\n// https://github.com/MystenLabs/sui/blob/df41d5fa8127634ff4285671a01ead00e519f806/crates/sui-types/src/transaction.rs#L75-L80\nconst CallArg = enumUnion({\n\tObject: ObjectArg,\n\tPure: object({\n\t\tbytes: BCSBytes,\n\t}),\n\tUnresolvedPure: object({\n\t\tvalue: unknown(),\n\t}),\n\tUnresolvedObject: object({\n\t\tobjectId: ObjectID,\n\t\tversion: optional(nullable(JsonU64)),\n\t\tdigest: optional(nullable(string())),\n\t\tinitialSharedVersion: optional(nullable(JsonU64)),\n\t\tmutable: optional(nullable(boolean())),\n\t}),\n\tFundsWithdrawal: FundsWithdrawalArgSchema,\n});\n\nconst TransactionExpiration = enumUnion({\n\tNone: literal(true),\n\tEpoch: JsonU64,\n\tValidDuring: ValidDuringSchema,\n\tValidity: ValiditySchema,\n});\n\nexport const SerializedTransactionDataV2Schema = object({\n\tversion: literal(2),\n\tsender: nullish(SuiAddress),\n\texpiration: nullish(TransactionExpiration),\n\tgasData: GasData,\n\tinputs: array(CallArg),\n\tcommands: array(Command),\n\tdigest: optional(nullable(string())),\n});\n\nexport type SerializedTransactionDataV2 = InferOutput<typeof SerializedTransactionDataV2Schema>;\n"],"mappings":";;;;AAmCA,SAAS,UAAwD,SAAY;AAC5E,QAAO,MACN,OAAO,QAAQ,QAAQ,CAAC,KAAK,CAAC,KAAK,WAAW,OAAO,GAAG,MAAM,OAAO,CAAC,CAAC,CACvE;;AAUF,MAAM,WAAW,UAAU;CAC1B,SAAS,QAAQ,KAAK;CACtB,OAAO,KAAK,QAAQ,EAAE,SAAS,CAAC;CAChC,QAAQ,KAAK,QAAQ,EAAE,SAAS,CAAC;CACjC,cAAc,MAAM,CAAC,KAAK,QAAQ,EAAE,SAAS,CAAC,EAAE,KAAK,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;CAC3E,CAAC;AAGF,MAAM,UAAU,OAAO;CACtB,QAAQ,SAAS,QAAQ;CACzB,OAAO,SAAS,QAAQ;CACxB,OAAO,SAAS,WAAW;CAC3B,SAAS,SAAS,MAAM,gBAAgB,CAAC;CACzC,CAAC;AAGF,MAAM,uBAAuB,OAAO;CACnC,SAAS;CACT,QAAQ,QAAQ;CAChB,UAAU,QAAQ;CAElB,eAAe,MAAM,QAAQ,CAAC;CAC9B,WAAW,MAAM,SAAS;CAC1B,CAAC;AAEF,MAAM,UAAU,OAAO;CACtB,MAAM,QAAQ;CACd,QAAQ,OAAO,QAAQ,EAAE,MAAM,CAAC,UAAU,MAAM,SAAS,CAAC,CAAC,CAAC;CAC5D,MAAM,OAAO,QAAQ,EAAE,SAAS,CAAC;CACjC,CAAC;AAGF,MAAM,UAAU,UAAU;CACzB,UAAU;CACV,iBAAiB,OAAO;EACvB,SAAS,MAAM,SAAS;EACxB,SAAS;EACT,CAAC;CACF,YAAY,OAAO;EAClB,MAAM;EACN,SAAS,MAAM,SAAS;EACxB,CAAC;CACF,YAAY,OAAO;EAClB,aAAa;EACb,SAAS,MAAM,SAAS;EACxB,CAAC;CACF,SAAS,OAAO;EACf,SAAS,MAAM,SAAS;EACxB,cAAc,MAAM,SAAS;EAC7B,CAAC;CACF,aAAa,OAAO;EACnB,MAAM,SAAS,QAAQ,CAAC;EACxB,UAAU,MAAM,SAAS;EACzB,CAAC;CACF,SAAS,OAAO;EACf,SAAS,MAAM,SAAS;EACxB,cAAc,MAAM,SAAS;EAC7B,SAAS;EACT,QAAQ;EACR,CAAC;CACF;CACA,CAAC;AAeF,MAAM,UAAU,UAAU;CACzB,QAbiB,UAAU;EAC3B,kBAAkB;EAClB,cAAc,OAAO;GACpB,UAAU;GAEV,sBAAsB;GACtB,SAAS,SAAS;GAClB,CAAC;EACF,WAAW;EACX,CAAC;CAKD,MAAM,OAAO,EACZ,OAAO,UACP,CAAC;CACF,gBAAgB,OAAO,EACtB,OAAO,SAAS,EAChB,CAAC;CACF,kBAAkB,OAAO;EACxB,UAAU;EACV,SAAS,SAAS,SAAS,QAAQ,CAAC;EACpC,QAAQ,SAAS,SAAS,QAAQ,CAAC,CAAC;EACpC,sBAAsB,SAAS,SAAS,QAAQ,CAAC;EACjD,SAAS,SAAS,SAAS,SAAS,CAAC,CAAC;EACtC,CAAC;CACF,iBAAiB;CACjB,CAAC;AAEF,MAAM,wBAAwB,UAAU;CACvC,MAAM,QAAQ,KAAK;CACnB,OAAO;CACP,aAAa;CACb,UAAU;CACV,CAAC;AAEF,MAAa,oCAAoC,OAAO;CACvD,SAAS,QAAQ,EAAE;CACnB,QAAQ,QAAQ,WAAW;CAC3B,YAAY,QAAQ,sBAAsB;CAC1C,SAAS;CACT,QAAQ,MAAM,QAAQ;CACtB,UAAU,MAAM,QAAQ;CACxB,QAAQ,SAAS,SAAS,QAAQ,CAAC,CAAC;CACpC,CAAC"}
|
package/dist/version.mjs
CHANGED
package/dist/version.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.mjs","names":[],"sources":["../src/version.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n// This file is generated by genversion.mjs. Do not edit it directly.\n\nexport const PACKAGE_VERSION = '2.
|
|
1
|
+
{"version":3,"file":"version.mjs","names":[],"sources":["../src/version.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n// This file is generated by genversion.mjs. Do not edit it directly.\n\nexport const PACKAGE_VERSION = '2.29.0';\n"],"mappings":";AAKA,MAAa,kBAAkB"}
|
package/dist/zklogin/bcs.d.mts
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as _mysten_bcs1378 from "@mysten/bcs";
|
|
2
2
|
import { InferBcsInput } from "@mysten/bcs";
|
|
3
3
|
|
|
4
4
|
//#region src/zklogin/bcs.d.ts
|
|
5
|
-
declare const zkLoginSignature:
|
|
6
|
-
inputs:
|
|
7
|
-
proofPoints:
|
|
8
|
-
a:
|
|
5
|
+
declare const zkLoginSignature: _mysten_bcs1378.BcsStruct<{
|
|
6
|
+
inputs: _mysten_bcs1378.BcsStruct<{
|
|
7
|
+
proofPoints: _mysten_bcs1378.BcsStruct<{
|
|
8
|
+
a: _mysten_bcs1378.BcsType<string[], Iterable<string> & {
|
|
9
9
|
length: number;
|
|
10
10
|
}, string>;
|
|
11
|
-
b:
|
|
11
|
+
b: _mysten_bcs1378.BcsType<string[][], Iterable<Iterable<string> & {
|
|
12
12
|
length: number;
|
|
13
13
|
}> & {
|
|
14
14
|
length: number;
|
|
15
15
|
}, string>;
|
|
16
|
-
c:
|
|
16
|
+
c: _mysten_bcs1378.BcsType<string[], Iterable<string> & {
|
|
17
17
|
length: number;
|
|
18
18
|
}, string>;
|
|
19
19
|
}, string>;
|
|
20
|
-
issBase64Details:
|
|
21
|
-
value:
|
|
22
|
-
indexMod4:
|
|
20
|
+
issBase64Details: _mysten_bcs1378.BcsStruct<{
|
|
21
|
+
value: _mysten_bcs1378.BcsType<string, string, "string">;
|
|
22
|
+
indexMod4: _mysten_bcs1378.BcsType<number, number, "u8">;
|
|
23
23
|
}, string>;
|
|
24
|
-
headerBase64:
|
|
25
|
-
addressSeed:
|
|
24
|
+
headerBase64: _mysten_bcs1378.BcsType<string, string, "string">;
|
|
25
|
+
addressSeed: _mysten_bcs1378.BcsType<string, string, "string">;
|
|
26
26
|
}, string>;
|
|
27
|
-
maxEpoch:
|
|
28
|
-
userSignature:
|
|
27
|
+
maxEpoch: _mysten_bcs1378.BcsType<string, string | number | bigint, "u64">;
|
|
28
|
+
userSignature: _mysten_bcs1378.BcsType<Uint8Array<ArrayBufferLike>, Iterable<number>, "vector<u8>">;
|
|
29
29
|
}, string>;
|
|
30
30
|
type ZkLoginSignature = InferBcsInput<typeof zkLoginSignature>;
|
|
31
31
|
type ZkLoginSignatureInputs = ZkLoginSignature['inputs'];
|
package/docs/clients/grpc.md
CHANGED
|
@@ -55,16 +55,39 @@ console.log(transaction.digest, result.protoJson);
|
|
|
55
55
|
|
|
56
56
|
## Transport options
|
|
57
57
|
|
|
58
|
-
By default, `SuiGrpcClient` uses `GrpcWebFetchTransport
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
By default, `SuiGrpcClient` uses `GrpcWebFetchTransport`, which works in browsers and Node.js
|
|
59
|
+
through the Fetch API. `@mysten/sui/grpc` exports it alongside the `GrpcWebOptions` and
|
|
60
|
+
`RpcTransport` types, and the `RpcError` class and `GrpcStatusCode` enum that gRPC failures use, so
|
|
61
|
+
you can configure a transport and handle its errors without adding `@protobuf-ts/*` as a direct
|
|
62
|
+
dependency.
|
|
63
|
+
|
|
64
|
+
That class extends the transport of the same name from
|
|
65
|
+
[protobuf-ts](https://github.com/timostamm/protobuf-ts) and fixes two defects in it:
|
|
66
|
+
|
|
67
|
+
- It decodes status messages, rather than delivering them as `Object%20not%20found:%200x1`.
|
|
68
|
+
- It codes a call that an abort ended from the reason the abort carried: `DEADLINE_EXCEEDED` for an
|
|
69
|
+
`AbortSignal.timeout`, the status on a reason carrying one, and `CANCELLED` otherwise. Upstream
|
|
70
|
+
reports all but a standard `AbortError` cancellation as `INTERNAL`.
|
|
71
|
+
|
|
72
|
+
Build custom transports from this class. `SuiGrpcClient` uses a transport you pass it as given.
|
|
63
73
|
|
|
64
74
|
### gRPC-web transport (default)
|
|
65
75
|
|
|
66
|
-
The default transport uses the gRPC-web protocol over HTTP/1.1 or HTTP/2.
|
|
67
|
-
`
|
|
76
|
+
The default transport uses the gRPC-web protocol over HTTP/1.1 or HTTP/2. `SuiGrpcClient` passes the
|
|
77
|
+
`GrpcWebOptions` it is given to the transport it builds, so most configuration needs no transport of
|
|
78
|
+
your own. The one exception is `abort`: Core API calls each carry their own signal, so a client-wide
|
|
79
|
+
one is not forwarded.
|
|
80
|
+
|
|
81
|
+
```typescript
|
|
82
|
+
|
|
83
|
+
const client = new SuiGrpcClient({
|
|
84
|
+
network: 'testnet',
|
|
85
|
+
baseUrl: 'https://your-custom-grpc-endpoint.com',
|
|
86
|
+
format: 'binary', // default is 'text' (base64-encoded)
|
|
87
|
+
});
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Build the transport yourself to share one between clients, or to subclass it:
|
|
68
91
|
|
|
69
92
|
```typescript
|
|
70
93
|
|
|
@@ -228,6 +251,7 @@ const result = parseGrpcTransactionResponse(response.transaction!, {
|
|
|
228
251
|
| `parseGrpcTransactionResponse` | Raw `ExecutedTransaction` to the unified result shape |
|
|
229
252
|
| `parseGrpcSimulateTransactionResponse` | Raw simulation response to the unified result shape |
|
|
230
253
|
| `GrpcWebFetchTransport`, `GrpcWebOptions`, `RpcTransport` | Configuring a [transport](#transport-options) |
|
|
254
|
+
| `RpcError`, `GrpcStatusCode` | Narrowing and coding gRPC failures |
|
|
231
255
|
| `SuiGrpcClientOptions`, `GrpcTransactionInclude`, … | Typing your own wrappers around the client |
|
|
232
256
|
| `isSuiGrpcClient` | Type guard for narrowing an unknown client |
|
|
233
257
|
|
package/package.json
CHANGED
package/src/bcs/bcs.ts
CHANGED
|
@@ -238,10 +238,55 @@ export const ValidDuring = bcs.struct('ValidDuring', {
|
|
|
238
238
|
nonce: bcs.u32(),
|
|
239
239
|
});
|
|
240
240
|
|
|
241
|
+
export function assertAllowedProposersNotEmpty(proposers: number[]) {
|
|
242
|
+
if (proposers.length === 0) {
|
|
243
|
+
throw new Error('Allowed proposers must not be empty');
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
return proposers;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
export function assertAllowedProposersStrictlyIncreasing(proposers: number[]) {
|
|
250
|
+
assertAllowedProposersNotEmpty(proposers);
|
|
251
|
+
|
|
252
|
+
for (let i = 1; i < proposers.length; i++) {
|
|
253
|
+
if (proposers[i] <= proposers[i - 1]) {
|
|
254
|
+
throw new Error('Allowed proposers must be strictly increasing');
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
return proposers;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// Upstream only checks sortedness in `validity_check`, on submission, so decoding an unsorted
|
|
262
|
+
// set must succeed. Empty is a deserialization error there, and here.
|
|
263
|
+
const AllowedProposerIndices = bcs.vector(bcs.u32()).transform({
|
|
264
|
+
input: assertAllowedProposersStrictlyIncreasing,
|
|
265
|
+
output: assertAllowedProposersNotEmpty,
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
// Rust: crates/sui-types/src/transaction.rs
|
|
269
|
+
export const AllowedProposers = bcs.struct('AllowedProposers', {
|
|
270
|
+
epoch: bcs.u64(),
|
|
271
|
+
proposers: AllowedProposerIndices,
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
// Rust: crates/sui-types/src/transaction.rs
|
|
275
|
+
export const Validity = bcs.struct('Validity', {
|
|
276
|
+
minEpoch: bcs.option(bcs.u64()),
|
|
277
|
+
maxEpoch: bcs.option(bcs.u64()),
|
|
278
|
+
minTimestamp: bcs.option(bcs.u64()),
|
|
279
|
+
maxTimestamp: bcs.option(bcs.u64()),
|
|
280
|
+
chain: ObjectDigest,
|
|
281
|
+
nonce: bcs.u32(),
|
|
282
|
+
allowedProposers: bcs.option(AllowedProposers),
|
|
283
|
+
});
|
|
284
|
+
|
|
241
285
|
export const TransactionExpiration = bcs.enum('TransactionExpiration', {
|
|
242
286
|
None: null,
|
|
243
287
|
Epoch: unsafe_u64(),
|
|
244
288
|
ValidDuring: ValidDuring,
|
|
289
|
+
Validity,
|
|
245
290
|
});
|
|
246
291
|
|
|
247
292
|
export const StructTag = bcs.struct('StructTag', {
|
package/src/bcs/effects.ts
CHANGED
|
@@ -55,6 +55,7 @@ const CommandArgumentError = bcs.enum('CommandArgumentError', {
|
|
|
55
55
|
CannotMoveBorrowedValue: null,
|
|
56
56
|
CannotWriteToExtendedReference: null,
|
|
57
57
|
InvalidReferenceArgument: null,
|
|
58
|
+
InvalidTxContext: null,
|
|
58
59
|
});
|
|
59
60
|
|
|
60
61
|
// Rust: crates/sui-types/src/execution_status.rs
|
|
@@ -139,6 +140,8 @@ const ExecutionFailureStatus = bcs.enum('ExecutionFailureStatus', {
|
|
|
139
140
|
maxScaledSize: bcs.u64(),
|
|
140
141
|
}),
|
|
141
142
|
InvalidLinkage: null,
|
|
143
|
+
// Upstream renamed this to `InsufficientFundsForWithdraw`; renaming the parsed `$kind` would
|
|
144
|
+
// break the public API, and the wire representation is unchanged either way.
|
|
142
145
|
InsufficientBalanceForWithdraw: null,
|
|
143
146
|
NonExclusiveWriteInputObjectModified: bcs.struct('NonExclusiveWriteInputObjectModified', {
|
|
144
147
|
id: Address,
|