@mysten/sui 2.30.0 → 2.31.1
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 +43 -0
- package/dist/bcs/bcs.d.mts +6 -6
- package/dist/bcs/bcs.d.mts.map +1 -1
- package/dist/bcs/bcs.mjs +5 -1
- package/dist/bcs/bcs.mjs.map +1 -1
- package/dist/bcs/index.d.mts +139 -47
- package/dist/bcs/index.d.mts.map +1 -1
- package/dist/bcs/types.d.mts.map +1 -1
- package/dist/client/core-resolver.d.mts.map +1 -1
- package/dist/client/core-resolver.mjs +5 -3
- package/dist/client/core-resolver.mjs.map +1 -1
- package/dist/client/transaction-resolver.mjs +35 -8
- package/dist/client/transaction-resolver.mjs.map +1 -1
- package/dist/graphql/generated/tada-env.d.mts +74 -0
- package/dist/grpc/proto/sui/forking/v1alpha/forking_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/input.d.mts +21 -1
- package/dist/grpc/proto/sui/rpc/v2/input.d.mts.map +1 -1
- package/dist/grpc/proto/sui/rpc/v2/input.mjs +21 -0
- package/dist/grpc/proto/sui/rpc/v2/input.mjs.map +1 -1
- package/dist/grpc/proto/sui/rpc/v2/name_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/transaction_execution_service.client.d.mts +4 -4
- package/dist/jsonRpc/core.mjs +1 -1
- package/dist/jsonRpc/core.mjs.map +1 -1
- package/dist/transactions/Transaction.d.mts +47 -42
- package/dist/transactions/Transaction.d.mts.map +1 -1
- package/dist/transactions/Transaction.mjs +65 -24
- package/dist/transactions/Transaction.mjs.map +1 -1
- package/dist/transactions/data/internal.d.mts +12 -0
- package/dist/transactions/data/internal.d.mts.map +1 -1
- package/dist/transactions/data/internal.mjs +5 -1
- package/dist/transactions/data/internal.mjs.map +1 -1
- package/dist/transactions/data/v2.d.mts +5 -0
- package/dist/transactions/data/v2.d.mts.map +1 -1
- package/dist/transactions/index.d.mts +3 -2
- package/dist/transactions/intents/AllowanceBalance.mjs +147 -0
- package/dist/transactions/intents/AllowanceBalance.mjs.map +1 -0
- package/dist/transactions/intents/BalanceIntentNames.mjs +7 -0
- package/dist/transactions/intents/BalanceIntentNames.mjs.map +1 -0
- package/dist/transactions/intents/BalanceOptions.d.mts +27 -0
- package/dist/transactions/intents/BalanceOptions.d.mts.map +1 -0
- package/dist/transactions/intents/BalanceOptions.mjs +12 -0
- package/dist/transactions/intents/BalanceOptions.mjs.map +1 -0
- package/dist/transactions/intents/CoinWithBalance.d.mts.map +1 -1
- package/dist/transactions/intents/CoinWithBalance.mjs +31 -10
- package/dist/transactions/intents/CoinWithBalance.mjs.map +1 -1
- package/dist/transactions/intents/ResolveBalances.mjs +16 -0
- package/dist/transactions/intents/ResolveBalances.mjs.map +1 -0
- package/dist/transactions/resolve.d.mts.map +1 -1
- package/dist/transactions/resolve.mjs +1 -1
- package/dist/transactions/resolve.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/llms-index.md +1 -0
- package/docs/transactions/allowances.md +176 -0
- package/docs/transactions/coins-and-balances.md +12 -9
- package/package.json +1 -1
- package/src/bcs/bcs.ts +4 -0
- package/src/bcs/types.ts +2 -1
- package/src/client/core-resolver.ts +12 -6
- package/src/client/transaction-resolver.ts +43 -9
- package/src/graphql/generated/schema.graphql +87 -42
- package/src/graphql/generated/tada-env.ts +84 -0
- package/src/grpc/proto/sui/rpc/v2/input.ts +22 -0
- package/src/jsonRpc/core.ts +3 -4
- package/src/transactions/Transaction.ts +70 -49
- package/src/transactions/data/internal.ts +4 -0
- package/src/transactions/index.ts +3 -0
- package/src/transactions/intents/AllowanceBalance.ts +204 -0
- package/src/transactions/intents/BalanceIntentNames.ts +5 -0
- package/src/transactions/intents/BalanceOptions.ts +45 -0
- package/src/transactions/intents/CoinWithBalance.ts +51 -8
- package/src/transactions/intents/ResolveBalances.ts +30 -0
- package/src/transactions/resolve.ts +6 -0
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,48 @@
|
|
|
1
1
|
# @mysten/sui.js
|
|
2
2
|
|
|
3
|
+
## 2.31.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- c3966e2: Limit automatic gas selection in the JSON-RPC transaction resolver to 256 payment
|
|
8
|
+
entries, including any address-balance reservation. Preserve the existing single-page coin fetch
|
|
9
|
+
and its default limit, then truncate the filtered coins without enforcing a combined transaction
|
|
10
|
+
input limit.
|
|
11
|
+
|
|
12
|
+
## 2.31.0
|
|
13
|
+
|
|
14
|
+
### Minor Changes
|
|
15
|
+
|
|
16
|
+
- 15eb25e: Add wire-level support for `SenderAllowance` funds withdrawals (`sui::allowance`,
|
|
17
|
+
protocol v137). `bcs.WithdrawFrom`, the transaction input schema, and `Inputs.FundsWithdrawal`
|
|
18
|
+
accept `{ $kind: 'SenderAllowance', SenderAllowance: { funder, allowance } }`, and the gRPC,
|
|
19
|
+
GraphQL, and JSON-RPC clients decode and encode the new source when reading, simulating, and
|
|
20
|
+
resolving transactions.
|
|
21
|
+
|
|
22
|
+
Add `tx.balance({ allowance, balance, type })` and `tx.coin({ allowance, balance, type })` to
|
|
23
|
+
resolve allowance IDs and redeem their withdrawals automatically. A known `{ objectId, funder }`
|
|
24
|
+
reference skips metadata lookup. Allowance spends never fall back to the sender's funds. A shared
|
|
25
|
+
resolver handles the separate allowance and coin intents, reserving allowance withdrawals before
|
|
26
|
+
ordinary coin selection. Both helpers accept decimal strings for `balance`. App-bound allowances
|
|
27
|
+
accept `{ objectId, app: { type, permit }, funder? }` with a `SpendPermit<A>` from an app
|
|
28
|
+
authorization call.
|
|
29
|
+
|
|
30
|
+
Account for allowance reservations when selecting ordinary coins and gas, including transactions
|
|
31
|
+
where the sender or gas sponsor is also the allowance's funder.
|
|
32
|
+
|
|
33
|
+
Resolve MVR coin and app types before allowance metadata checks. Require decimal digits in string
|
|
34
|
+
amounts, rejecting empty or whitespace-only values. Upgrade read-only allowance inputs to mutable
|
|
35
|
+
when spending, including with a known funder.
|
|
36
|
+
|
|
37
|
+
Add `tx.withdrawal({ amount, type, from: 'allowance', allowance, funder })` and `from: 'sponsor'`.
|
|
38
|
+
Omitting `from` defaults to the sender. Export `WithdrawalOptions` with required allowance and
|
|
39
|
+
funder fields only for allowance withdrawals.
|
|
40
|
+
|
|
41
|
+
### Patch Changes
|
|
42
|
+
|
|
43
|
+
- 15eb25e: `SuiJsonRpcClient` core transaction reads now report the genesis transaction's
|
|
44
|
+
placeholder signature, matching gRPC and GraphQL, instead of an empty signature list.
|
|
45
|
+
|
|
3
46
|
## 2.30.0
|
|
4
47
|
|
|
5
48
|
### Minor Changes
|
package/dist/bcs/bcs.d.mts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { TypeTag as TypeTag$1 } from "./types.mjs";
|
|
2
|
-
import * as
|
|
2
|
+
import * as _mysten_bcs1254 from "@mysten/bcs";
|
|
3
3
|
import { BcsType } from "@mysten/bcs";
|
|
4
4
|
|
|
5
5
|
//#region src/bcs/bcs.d.ts
|
|
6
6
|
declare const TypeTag: BcsType<string, string | TypeTag$1, string>;
|
|
7
|
-
declare function IntentMessage<T extends BcsType<any>>(T: T):
|
|
8
|
-
intent:
|
|
9
|
-
scope:
|
|
7
|
+
declare function IntentMessage<T extends BcsType<any>>(T: T): _mysten_bcs1254.BcsStruct<{
|
|
8
|
+
intent: _mysten_bcs1254.BcsStruct<{
|
|
9
|
+
scope: _mysten_bcs1254.BcsEnum<{
|
|
10
10
|
TransactionData: null;
|
|
11
11
|
TransactionEffects: null;
|
|
12
12
|
CheckpointSummary: null;
|
|
13
13
|
PersonalMessage: null;
|
|
14
14
|
}, "IntentScope">;
|
|
15
|
-
version:
|
|
15
|
+
version: _mysten_bcs1254.BcsEnum<{
|
|
16
16
|
V0: null;
|
|
17
17
|
}, "IntentVersion">;
|
|
18
|
-
appId:
|
|
18
|
+
appId: _mysten_bcs1254.BcsEnum<{
|
|
19
19
|
Sui: null;
|
|
20
20
|
}, "AppId">;
|
|
21
21
|
}, string>;
|
package/dist/bcs/bcs.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bcs.d.mts","names":[],"sources":["../../src/bcs/bcs.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"bcs.d.mts","names":[],"sources":["../../src/bcs/bcs.ts"],"mappings":";;;;;cAwIa,OAAA,EAAO,OAAA,kBAAA,SAAA;AAAA,iBAkMJ,aAAA,WAAwB,OAAA,MAAA,CAAc,CAAA,EAAG,CAAA,mBAAC,SAAA;;WAAA,eAAA,CAAA,OAAA"}
|
package/dist/bcs/bcs.mjs
CHANGED
|
@@ -63,7 +63,11 @@ const Reservation = bcs.enum("Reservation", { MaxAmountU64: bcs.u64() });
|
|
|
63
63
|
const WithdrawalType = bcs.enum("WithdrawalType", { Balance: bcs.lazy(() => TypeTag) });
|
|
64
64
|
const WithdrawFrom = bcs.enum("WithdrawFrom", {
|
|
65
65
|
Sender: null,
|
|
66
|
-
Sponsor: null
|
|
66
|
+
Sponsor: null,
|
|
67
|
+
SenderAllowance: bcs.struct("SenderAllowance", {
|
|
68
|
+
funder: Address,
|
|
69
|
+
allowance: Address
|
|
70
|
+
})
|
|
67
71
|
});
|
|
68
72
|
const FundsWithdrawal = bcs.struct("FundsWithdrawal", {
|
|
69
73
|
reservation: Reservation,
|
package/dist/bcs/bcs.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bcs.mjs","names":[],"sources":["../../src/bcs/bcs.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { BcsType, BcsTypeOptions } from '@mysten/bcs';\nimport { bcs, fromBase58, fromBase64, fromHex, toBase58, toBase64, toHex } from '@mysten/bcs';\n\nimport { isValidSuiAddress, normalizeSuiAddress, SUI_ADDRESS_LENGTH } from '../utils/sui-types.js';\nimport { TypeTagSerializer } from './type-tag-serializer.js';\nimport type { TypeTag as TypeTagType } from './types.js';\n\nfunction unsafe_u64(options?: BcsTypeOptions<number>) {\n\treturn bcs\n\t\t.u64({\n\t\t\tname: 'unsafe_u64',\n\t\t\t...(options as object),\n\t\t})\n\t\t.transform({\n\t\t\tinput: (val: number | string) => val,\n\t\t\toutput: (val) => Number(val),\n\t\t});\n}\n\nfunction optionEnum<T extends BcsType<any, any>>(type: T) {\n\treturn bcs.enum('Option', {\n\t\tNone: null,\n\t\tSome: type,\n\t});\n}\n\nexport const Address = bcs.bytes(SUI_ADDRESS_LENGTH).transform({\n\tvalidate: (val) => {\n\t\tconst address = typeof val === 'string' ? val : toHex(val);\n\t\tif (!address || !isValidSuiAddress(normalizeSuiAddress(address))) {\n\t\t\tthrow new Error(`Invalid Sui address ${address}`);\n\t\t}\n\t},\n\tinput: (val: string | Uint8Array) =>\n\t\ttypeof val === 'string' ? fromHex(normalizeSuiAddress(val)) : val,\n\toutput: (val) => normalizeSuiAddress(toHex(val)),\n});\n\nexport const ObjectDigest = bcs.byteVector().transform({\n\tname: 'ObjectDigest',\n\tinput: (value: string) => fromBase58(value),\n\toutput: (value) => toBase58(new Uint8Array(value)),\n\tvalidate: (value) => {\n\t\tif (fromBase58(value).length !== 32) {\n\t\t\tthrow new Error('ObjectDigest must be 32 bytes');\n\t\t}\n\t},\n});\n\nexport const SuiObjectRef = bcs.struct('SuiObjectRef', {\n\tobjectId: Address,\n\tversion: bcs.u64(),\n\tdigest: ObjectDigest,\n});\n\nexport const SharedObjectRef = bcs.struct('SharedObjectRef', {\n\tobjectId: Address,\n\tinitialSharedVersion: bcs.u64(),\n\tmutable: bcs.bool(),\n});\n\nexport const ObjectArg = bcs.enum('ObjectArg', {\n\tImmOrOwnedObject: SuiObjectRef,\n\tSharedObject: SharedObjectRef,\n\tReceiving: SuiObjectRef,\n});\n\n// Rust: crates/sui-types/src/object.rs\nexport const Owner = bcs.enum('Owner', {\n\tAddressOwner: Address,\n\tObjectOwner: Address,\n\tShared: bcs.struct('Shared', {\n\t\tinitialSharedVersion: bcs.u64(),\n\t}),\n\tImmutable: null,\n\tConsensusAddressOwner: bcs.struct('ConsensusAddressOwner', {\n\t\tstartVersion: bcs.u64(),\n\t\towner: Address,\n\t}),\n});\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const Reservation = bcs.enum('Reservation', {\n\tMaxAmountU64: bcs.u64(),\n});\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const WithdrawalType = bcs.enum('WithdrawalType', {\n\tBalance: bcs.lazy(() => TypeTag),\n});\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const WithdrawFrom = bcs.enum('WithdrawFrom', {\n\tSender: null,\n\tSponsor: null,\n});\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const FundsWithdrawal = bcs.struct('FundsWithdrawal', {\n\treservation: Reservation,\n\ttypeArg: WithdrawalType,\n\twithdrawFrom: WithdrawFrom,\n});\n\nexport const CallArg = bcs.enum('CallArg', {\n\tPure: bcs.struct('Pure', {\n\t\tbytes: bcs.byteVector().transform({\n\t\t\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\t\t\toutput: (val) => toBase64(new Uint8Array(val)),\n\t\t}),\n\t}),\n\tObject: ObjectArg,\n\tFundsWithdrawal: FundsWithdrawal,\n});\n\nconst InnerTypeTag: BcsType<TypeTagType, TypeTagType> = bcs.enum('TypeTag', {\n\tbool: null,\n\tu8: null,\n\tu64: null,\n\tu128: null,\n\taddress: null,\n\tsigner: null,\n\tvector: bcs.lazy(() => InnerTypeTag),\n\tstruct: bcs.lazy(() => StructTag),\n\tu16: null,\n\tu32: null,\n\tu256: null,\n}) as BcsType<TypeTagType>;\n\nexport const TypeTag = InnerTypeTag.transform({\n\tinput: (typeTag: string | TypeTagType) =>\n\t\ttypeof typeTag === 'string' ? TypeTagSerializer.parseFromStr(typeTag, true) : typeTag,\n\toutput: (typeTag: TypeTagType) => TypeTagSerializer.tagToString(typeTag),\n});\n\nexport const Argument = bcs.enum('Argument', {\n\tGasCoin: null,\n\tInput: bcs.u16(),\n\tResult: bcs.u16(),\n\tNestedResult: bcs.tuple([bcs.u16(), bcs.u16()]),\n});\n\nexport const ProgrammableMoveCall = bcs.struct('ProgrammableMoveCall', {\n\tpackage: Address,\n\tmodule: bcs.string(),\n\tfunction: bcs.string(),\n\ttypeArguments: bcs.vector(TypeTag),\n\targuments: bcs.vector(Argument),\n});\n\nexport const Command = bcs.enum('Command', {\n\t/**\n\t * A Move Call - any public Move function can be called via\n\t * this transaction. The results can be used that instant to pass\n\t * into the next transaction.\n\t */\n\tMoveCall: ProgrammableMoveCall,\n\t/**\n\t * Transfer vector of objects to a receiver.\n\t */\n\tTransferObjects: bcs.struct('TransferObjects', {\n\t\tobjects: bcs.vector(Argument),\n\t\taddress: Argument,\n\t}),\n\t// /**\n\t// * Split `amount` from a `coin`.\n\t// */\n\tSplitCoins: bcs.struct('SplitCoins', {\n\t\tcoin: Argument,\n\t\tamounts: bcs.vector(Argument),\n\t}),\n\t// /**\n\t// * Merge Vector of Coins (`sources`) into a `destination`.\n\t// */\n\tMergeCoins: bcs.struct('MergeCoins', {\n\t\tdestination: Argument,\n\t\tsources: bcs.vector(Argument),\n\t}),\n\t// /**\n\t// * Publish a Move module.\n\t// */\n\tPublish: bcs.struct('Publish', {\n\t\tmodules: bcs.vector(\n\t\t\tbcs.byteVector().transform({\n\t\t\t\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\t\t\t\toutput: (val) => toBase64(new Uint8Array(val)),\n\t\t\t}),\n\t\t),\n\t\tdependencies: bcs.vector(Address),\n\t}),\n\t// /**\n\t// * Build a vector of objects using the input arguments.\n\t// * It is impossible to export construct a `vector<T: key>` otherwise,\n\t// * so this call serves a utility function.\n\t// */\n\tMakeMoveVec: bcs.struct('MakeMoveVec', {\n\t\ttype: optionEnum(TypeTag).transform({\n\t\t\tinput: (val: string | null) =>\n\t\t\t\tval === null\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tNone: true,\n\t\t\t\t\t\t}\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tSome: val,\n\t\t\t\t\t\t},\n\t\t\toutput: (val) => val.Some ?? null,\n\t\t}),\n\t\telements: bcs.vector(Argument),\n\t}),\n\tUpgrade: bcs.struct('Upgrade', {\n\t\tmodules: bcs.vector(\n\t\t\tbcs.byteVector().transform({\n\t\t\t\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\t\t\t\toutput: (val) => toBase64(new Uint8Array(val)),\n\t\t\t}),\n\t\t),\n\t\tdependencies: bcs.vector(Address),\n\t\tpackage: Address,\n\t\tticket: Argument,\n\t}),\n});\n\nexport const ProgrammableTransaction = bcs.struct('ProgrammableTransaction', {\n\tinputs: bcs.vector(CallArg),\n\tcommands: bcs.vector(Command),\n});\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const ValidDuring = bcs.struct('ValidDuring', {\n\tminEpoch: bcs.option(bcs.u64()),\n\tmaxEpoch: bcs.option(bcs.u64()),\n\tminTimestamp: bcs.option(bcs.u64()),\n\tmaxTimestamp: bcs.option(bcs.u64()),\n\tchain: ObjectDigest,\n\tnonce: bcs.u32(),\n});\n\nexport function assertAllowedProposersNotEmpty(proposers: number[]) {\n\tif (proposers.length === 0) {\n\t\tthrow new Error('Allowed proposers must not be empty');\n\t}\n\n\treturn proposers;\n}\n\nexport function assertAllowedProposersStrictlyIncreasing(proposers: number[]) {\n\tassertAllowedProposersNotEmpty(proposers);\n\n\tfor (let i = 1; i < proposers.length; i++) {\n\t\tif (proposers[i] <= proposers[i - 1]) {\n\t\t\tthrow new Error('Allowed proposers must be strictly increasing');\n\t\t}\n\t}\n\n\treturn proposers;\n}\n\n// Upstream only checks sortedness in `validity_check`, on submission, so decoding an unsorted\n// set must succeed. Empty is a deserialization error there, and here.\nconst AllowedProposerIndices = bcs.vector(bcs.u32()).transform({\n\tinput: assertAllowedProposersStrictlyIncreasing,\n\toutput: assertAllowedProposersNotEmpty,\n});\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const AllowedProposers = bcs.struct('AllowedProposers', {\n\tepoch: bcs.u64(),\n\tproposers: AllowedProposerIndices,\n});\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const Validity = bcs.struct('Validity', {\n\tminEpoch: bcs.option(bcs.u64()),\n\tmaxEpoch: bcs.option(bcs.u64()),\n\tminTimestamp: bcs.option(bcs.u64()),\n\tmaxTimestamp: bcs.option(bcs.u64()),\n\tchain: ObjectDigest,\n\tnonce: bcs.u32(),\n\tallowedProposers: bcs.option(AllowedProposers),\n});\n\nexport const TransactionExpiration = bcs.enum('TransactionExpiration', {\n\tNone: null,\n\tEpoch: unsafe_u64(),\n\tValidDuring: ValidDuring,\n\tValidity,\n});\n\nexport const StructTag = bcs.struct('StructTag', {\n\taddress: Address,\n\tmodule: bcs.string(),\n\tname: bcs.string(),\n\ttypeParams: bcs.vector(InnerTypeTag),\n});\n\nexport const GasData = bcs.struct('GasData', {\n\tpayment: bcs.vector(SuiObjectRef),\n\towner: Address,\n\tprice: bcs.u64(),\n\tbudget: bcs.u64(),\n});\n\nexport const IntentScope = bcs.enum('IntentScope', {\n\tTransactionData: null,\n\tTransactionEffects: null,\n\tCheckpointSummary: null,\n\tPersonalMessage: null,\n});\n\nexport const IntentVersion = bcs.enum('IntentVersion', {\n\tV0: null,\n});\n\nexport const AppId = bcs.enum('AppId', {\n\tSui: null,\n});\n\nexport const Intent = bcs.struct('Intent', {\n\tscope: IntentScope,\n\tversion: IntentVersion,\n\tappId: AppId,\n});\n\nexport function IntentMessage<T extends BcsType<any>>(T: T) {\n\treturn bcs.struct(`IntentMessage<${T.name}>`, {\n\t\tintent: Intent,\n\t\tvalue: T,\n\t});\n}\n\nexport const CompressedSignature = bcs.enum('CompressedSignature', {\n\tED25519: bcs.bytes(64),\n\tSecp256k1: bcs.bytes(64),\n\tSecp256r1: bcs.bytes(64),\n\tZkLogin: bcs.byteVector(),\n\tPasskey: bcs.byteVector(),\n});\n\nexport const PublicKey = bcs.enum('PublicKey', {\n\tED25519: bcs.bytes(32),\n\tSecp256k1: bcs.bytes(33),\n\tSecp256r1: bcs.bytes(33),\n\tZkLogin: bcs.byteVector(),\n\tPasskey: bcs.bytes(33),\n});\n\nexport const MultiSigPkMap = bcs.struct('MultiSigPkMap', {\n\tpubKey: PublicKey,\n\tweight: bcs.u8(),\n});\n\nexport const MultiSigPublicKey = bcs.struct('MultiSigPublicKey', {\n\tpk_map: bcs.vector(MultiSigPkMap),\n\tthreshold: bcs.u16(),\n});\n\nexport const MultiSig = bcs.struct('MultiSig', {\n\tsigs: bcs.vector(CompressedSignature),\n\tbitmap: bcs.u16(),\n\tmultisig_pk: MultiSigPublicKey,\n});\n\nexport const base64String = bcs.byteVector().transform({\n\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\toutput: (val) => toBase64(new Uint8Array(val)),\n});\n\nexport const PasskeyAuthenticator = bcs.struct('PasskeyAuthenticator', {\n\tauthenticatorData: bcs.byteVector(),\n\tclientDataJson: bcs.string(),\n\tuserSignature: bcs.byteVector(),\n});\n\n// Rust: crates/sui-types/src/object.rs\nexport const MoveObjectType = bcs.enum('MoveObjectType', {\n\tOther: StructTag,\n\tGasCoin: null,\n\tStakedSui: null,\n\tCoin: TypeTag,\n\tAccumulatorBalanceWrapper: null,\n});\n\n// Rust: crates/sui-types/src/object.rs\nexport const TypeOrigin = bcs.struct('TypeOrigin', {\n\tmoduleName: bcs.string(),\n\tdatatypeName: bcs.string(),\n\tpackage: Address,\n});\n\n// Rust: crates/sui-types/src/object.rs\nexport const UpgradeInfo = bcs.struct('UpgradeInfo', {\n\tupgradedId: Address,\n\tupgradedVersion: bcs.u64(),\n});\n\n// Rust: crates/sui-types/src/object.rs\nexport const MovePackage = bcs.struct('MovePackage', {\n\tid: Address,\n\tversion: bcs.u64(),\n\tmoduleMap: bcs.map(bcs.string(), bcs.byteVector()),\n\ttypeOriginTable: bcs.vector(TypeOrigin),\n\tlinkageTable: bcs.map(Address, UpgradeInfo),\n});\n\n// Rust: crates/sui-types/src/object.rs\nexport const MoveObject = bcs.struct('MoveObject', {\n\ttype: MoveObjectType,\n\thasPublicTransfer: bcs.bool(),\n\tversion: bcs.u64(),\n\tcontents: bcs.byteVector(),\n});\n\n// Rust: crates/sui-types/src/object.rs\nexport const Data = bcs.enum('Data', {\n\tMove: MoveObject,\n\tPackage: MovePackage,\n});\n\n// Rust: crates/sui-types/src/object.rs\nexport const ObjectInner = bcs.struct('ObjectInner', {\n\tdata: Data,\n\towner: Owner,\n\tpreviousTransaction: ObjectDigest,\n\tstorageRebate: bcs.u64(),\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bcs.mjs","names":[],"sources":["../../src/bcs/bcs.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { BcsType, BcsTypeOptions } from '@mysten/bcs';\nimport { bcs, fromBase58, fromBase64, fromHex, toBase58, toBase64, toHex } from '@mysten/bcs';\n\nimport { isValidSuiAddress, normalizeSuiAddress, SUI_ADDRESS_LENGTH } from '../utils/sui-types.js';\nimport { TypeTagSerializer } from './type-tag-serializer.js';\nimport type { TypeTag as TypeTagType } from './types.js';\n\nfunction unsafe_u64(options?: BcsTypeOptions<number>) {\n\treturn bcs\n\t\t.u64({\n\t\t\tname: 'unsafe_u64',\n\t\t\t...(options as object),\n\t\t})\n\t\t.transform({\n\t\t\tinput: (val: number | string) => val,\n\t\t\toutput: (val) => Number(val),\n\t\t});\n}\n\nfunction optionEnum<T extends BcsType<any, any>>(type: T) {\n\treturn bcs.enum('Option', {\n\t\tNone: null,\n\t\tSome: type,\n\t});\n}\n\nexport const Address = bcs.bytes(SUI_ADDRESS_LENGTH).transform({\n\tvalidate: (val) => {\n\t\tconst address = typeof val === 'string' ? val : toHex(val);\n\t\tif (!address || !isValidSuiAddress(normalizeSuiAddress(address))) {\n\t\t\tthrow new Error(`Invalid Sui address ${address}`);\n\t\t}\n\t},\n\tinput: (val: string | Uint8Array) =>\n\t\ttypeof val === 'string' ? fromHex(normalizeSuiAddress(val)) : val,\n\toutput: (val) => normalizeSuiAddress(toHex(val)),\n});\n\nexport const ObjectDigest = bcs.byteVector().transform({\n\tname: 'ObjectDigest',\n\tinput: (value: string) => fromBase58(value),\n\toutput: (value) => toBase58(new Uint8Array(value)),\n\tvalidate: (value) => {\n\t\tif (fromBase58(value).length !== 32) {\n\t\t\tthrow new Error('ObjectDigest must be 32 bytes');\n\t\t}\n\t},\n});\n\nexport const SuiObjectRef = bcs.struct('SuiObjectRef', {\n\tobjectId: Address,\n\tversion: bcs.u64(),\n\tdigest: ObjectDigest,\n});\n\nexport const SharedObjectRef = bcs.struct('SharedObjectRef', {\n\tobjectId: Address,\n\tinitialSharedVersion: bcs.u64(),\n\tmutable: bcs.bool(),\n});\n\nexport const ObjectArg = bcs.enum('ObjectArg', {\n\tImmOrOwnedObject: SuiObjectRef,\n\tSharedObject: SharedObjectRef,\n\tReceiving: SuiObjectRef,\n});\n\n// Rust: crates/sui-types/src/object.rs\nexport const Owner = bcs.enum('Owner', {\n\tAddressOwner: Address,\n\tObjectOwner: Address,\n\tShared: bcs.struct('Shared', {\n\t\tinitialSharedVersion: bcs.u64(),\n\t}),\n\tImmutable: null,\n\tConsensusAddressOwner: bcs.struct('ConsensusAddressOwner', {\n\t\tstartVersion: bcs.u64(),\n\t\towner: Address,\n\t}),\n});\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const Reservation = bcs.enum('Reservation', {\n\tMaxAmountU64: bcs.u64(),\n});\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const WithdrawalType = bcs.enum('WithdrawalType', {\n\tBalance: bcs.lazy(() => TypeTag),\n});\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const WithdrawFrom = bcs.enum('WithdrawFrom', {\n\tSender: null,\n\tSponsor: null,\n\tSenderAllowance: bcs.struct('SenderAllowance', {\n\t\tfunder: Address,\n\t\tallowance: Address,\n\t}),\n});\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const FundsWithdrawal = bcs.struct('FundsWithdrawal', {\n\treservation: Reservation,\n\ttypeArg: WithdrawalType,\n\twithdrawFrom: WithdrawFrom,\n});\n\nexport const CallArg = bcs.enum('CallArg', {\n\tPure: bcs.struct('Pure', {\n\t\tbytes: bcs.byteVector().transform({\n\t\t\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\t\t\toutput: (val) => toBase64(new Uint8Array(val)),\n\t\t}),\n\t}),\n\tObject: ObjectArg,\n\tFundsWithdrawal: FundsWithdrawal,\n});\n\nconst InnerTypeTag: BcsType<TypeTagType, TypeTagType> = bcs.enum('TypeTag', {\n\tbool: null,\n\tu8: null,\n\tu64: null,\n\tu128: null,\n\taddress: null,\n\tsigner: null,\n\tvector: bcs.lazy(() => InnerTypeTag),\n\tstruct: bcs.lazy(() => StructTag),\n\tu16: null,\n\tu32: null,\n\tu256: null,\n}) as BcsType<TypeTagType>;\n\nexport const TypeTag = InnerTypeTag.transform({\n\tinput: (typeTag: string | TypeTagType) =>\n\t\ttypeof typeTag === 'string' ? TypeTagSerializer.parseFromStr(typeTag, true) : typeTag,\n\toutput: (typeTag: TypeTagType) => TypeTagSerializer.tagToString(typeTag),\n});\n\nexport const Argument = bcs.enum('Argument', {\n\tGasCoin: null,\n\tInput: bcs.u16(),\n\tResult: bcs.u16(),\n\tNestedResult: bcs.tuple([bcs.u16(), bcs.u16()]),\n});\n\nexport const ProgrammableMoveCall = bcs.struct('ProgrammableMoveCall', {\n\tpackage: Address,\n\tmodule: bcs.string(),\n\tfunction: bcs.string(),\n\ttypeArguments: bcs.vector(TypeTag),\n\targuments: bcs.vector(Argument),\n});\n\nexport const Command = bcs.enum('Command', {\n\t/**\n\t * A Move Call - any public Move function can be called via\n\t * this transaction. The results can be used that instant to pass\n\t * into the next transaction.\n\t */\n\tMoveCall: ProgrammableMoveCall,\n\t/**\n\t * Transfer vector of objects to a receiver.\n\t */\n\tTransferObjects: bcs.struct('TransferObjects', {\n\t\tobjects: bcs.vector(Argument),\n\t\taddress: Argument,\n\t}),\n\t// /**\n\t// * Split `amount` from a `coin`.\n\t// */\n\tSplitCoins: bcs.struct('SplitCoins', {\n\t\tcoin: Argument,\n\t\tamounts: bcs.vector(Argument),\n\t}),\n\t// /**\n\t// * Merge Vector of Coins (`sources`) into a `destination`.\n\t// */\n\tMergeCoins: bcs.struct('MergeCoins', {\n\t\tdestination: Argument,\n\t\tsources: bcs.vector(Argument),\n\t}),\n\t// /**\n\t// * Publish a Move module.\n\t// */\n\tPublish: bcs.struct('Publish', {\n\t\tmodules: bcs.vector(\n\t\t\tbcs.byteVector().transform({\n\t\t\t\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\t\t\t\toutput: (val) => toBase64(new Uint8Array(val)),\n\t\t\t}),\n\t\t),\n\t\tdependencies: bcs.vector(Address),\n\t}),\n\t// /**\n\t// * Build a vector of objects using the input arguments.\n\t// * It is impossible to export construct a `vector<T: key>` otherwise,\n\t// * so this call serves a utility function.\n\t// */\n\tMakeMoveVec: bcs.struct('MakeMoveVec', {\n\t\ttype: optionEnum(TypeTag).transform({\n\t\t\tinput: (val: string | null) =>\n\t\t\t\tval === null\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tNone: true,\n\t\t\t\t\t\t}\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tSome: val,\n\t\t\t\t\t\t},\n\t\t\toutput: (val) => val.Some ?? null,\n\t\t}),\n\t\telements: bcs.vector(Argument),\n\t}),\n\tUpgrade: bcs.struct('Upgrade', {\n\t\tmodules: bcs.vector(\n\t\t\tbcs.byteVector().transform({\n\t\t\t\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\t\t\t\toutput: (val) => toBase64(new Uint8Array(val)),\n\t\t\t}),\n\t\t),\n\t\tdependencies: bcs.vector(Address),\n\t\tpackage: Address,\n\t\tticket: Argument,\n\t}),\n});\n\nexport const ProgrammableTransaction = bcs.struct('ProgrammableTransaction', {\n\tinputs: bcs.vector(CallArg),\n\tcommands: bcs.vector(Command),\n});\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const ValidDuring = bcs.struct('ValidDuring', {\n\tminEpoch: bcs.option(bcs.u64()),\n\tmaxEpoch: bcs.option(bcs.u64()),\n\tminTimestamp: bcs.option(bcs.u64()),\n\tmaxTimestamp: bcs.option(bcs.u64()),\n\tchain: ObjectDigest,\n\tnonce: bcs.u32(),\n});\n\nexport function assertAllowedProposersNotEmpty(proposers: number[]) {\n\tif (proposers.length === 0) {\n\t\tthrow new Error('Allowed proposers must not be empty');\n\t}\n\n\treturn proposers;\n}\n\nexport function assertAllowedProposersStrictlyIncreasing(proposers: number[]) {\n\tassertAllowedProposersNotEmpty(proposers);\n\n\tfor (let i = 1; i < proposers.length; i++) {\n\t\tif (proposers[i] <= proposers[i - 1]) {\n\t\t\tthrow new Error('Allowed proposers must be strictly increasing');\n\t\t}\n\t}\n\n\treturn proposers;\n}\n\n// Upstream only checks sortedness in `validity_check`, on submission, so decoding an unsorted\n// set must succeed. Empty is a deserialization error there, and here.\nconst AllowedProposerIndices = bcs.vector(bcs.u32()).transform({\n\tinput: assertAllowedProposersStrictlyIncreasing,\n\toutput: assertAllowedProposersNotEmpty,\n});\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const AllowedProposers = bcs.struct('AllowedProposers', {\n\tepoch: bcs.u64(),\n\tproposers: AllowedProposerIndices,\n});\n\n// Rust: crates/sui-types/src/transaction.rs\nexport const Validity = bcs.struct('Validity', {\n\tminEpoch: bcs.option(bcs.u64()),\n\tmaxEpoch: bcs.option(bcs.u64()),\n\tminTimestamp: bcs.option(bcs.u64()),\n\tmaxTimestamp: bcs.option(bcs.u64()),\n\tchain: ObjectDigest,\n\tnonce: bcs.u32(),\n\tallowedProposers: bcs.option(AllowedProposers),\n});\n\nexport const TransactionExpiration = bcs.enum('TransactionExpiration', {\n\tNone: null,\n\tEpoch: unsafe_u64(),\n\tValidDuring: ValidDuring,\n\tValidity,\n});\n\nexport const StructTag = bcs.struct('StructTag', {\n\taddress: Address,\n\tmodule: bcs.string(),\n\tname: bcs.string(),\n\ttypeParams: bcs.vector(InnerTypeTag),\n});\n\nexport const GasData = bcs.struct('GasData', {\n\tpayment: bcs.vector(SuiObjectRef),\n\towner: Address,\n\tprice: bcs.u64(),\n\tbudget: bcs.u64(),\n});\n\nexport const IntentScope = bcs.enum('IntentScope', {\n\tTransactionData: null,\n\tTransactionEffects: null,\n\tCheckpointSummary: null,\n\tPersonalMessage: null,\n});\n\nexport const IntentVersion = bcs.enum('IntentVersion', {\n\tV0: null,\n});\n\nexport const AppId = bcs.enum('AppId', {\n\tSui: null,\n});\n\nexport const Intent = bcs.struct('Intent', {\n\tscope: IntentScope,\n\tversion: IntentVersion,\n\tappId: AppId,\n});\n\nexport function IntentMessage<T extends BcsType<any>>(T: T) {\n\treturn bcs.struct(`IntentMessage<${T.name}>`, {\n\t\tintent: Intent,\n\t\tvalue: T,\n\t});\n}\n\nexport const CompressedSignature = bcs.enum('CompressedSignature', {\n\tED25519: bcs.bytes(64),\n\tSecp256k1: bcs.bytes(64),\n\tSecp256r1: bcs.bytes(64),\n\tZkLogin: bcs.byteVector(),\n\tPasskey: bcs.byteVector(),\n});\n\nexport const PublicKey = bcs.enum('PublicKey', {\n\tED25519: bcs.bytes(32),\n\tSecp256k1: bcs.bytes(33),\n\tSecp256r1: bcs.bytes(33),\n\tZkLogin: bcs.byteVector(),\n\tPasskey: bcs.bytes(33),\n});\n\nexport const MultiSigPkMap = bcs.struct('MultiSigPkMap', {\n\tpubKey: PublicKey,\n\tweight: bcs.u8(),\n});\n\nexport const MultiSigPublicKey = bcs.struct('MultiSigPublicKey', {\n\tpk_map: bcs.vector(MultiSigPkMap),\n\tthreshold: bcs.u16(),\n});\n\nexport const MultiSig = bcs.struct('MultiSig', {\n\tsigs: bcs.vector(CompressedSignature),\n\tbitmap: bcs.u16(),\n\tmultisig_pk: MultiSigPublicKey,\n});\n\nexport const base64String = bcs.byteVector().transform({\n\tinput: (val: string | Uint8Array) => (typeof val === 'string' ? fromBase64(val) : val),\n\toutput: (val) => toBase64(new Uint8Array(val)),\n});\n\nexport const PasskeyAuthenticator = bcs.struct('PasskeyAuthenticator', {\n\tauthenticatorData: bcs.byteVector(),\n\tclientDataJson: bcs.string(),\n\tuserSignature: bcs.byteVector(),\n});\n\n// Rust: crates/sui-types/src/object.rs\nexport const MoveObjectType = bcs.enum('MoveObjectType', {\n\tOther: StructTag,\n\tGasCoin: null,\n\tStakedSui: null,\n\tCoin: TypeTag,\n\tAccumulatorBalanceWrapper: null,\n});\n\n// Rust: crates/sui-types/src/object.rs\nexport const TypeOrigin = bcs.struct('TypeOrigin', {\n\tmoduleName: bcs.string(),\n\tdatatypeName: bcs.string(),\n\tpackage: Address,\n});\n\n// Rust: crates/sui-types/src/object.rs\nexport const UpgradeInfo = bcs.struct('UpgradeInfo', {\n\tupgradedId: Address,\n\tupgradedVersion: bcs.u64(),\n});\n\n// Rust: crates/sui-types/src/object.rs\nexport const MovePackage = bcs.struct('MovePackage', {\n\tid: Address,\n\tversion: bcs.u64(),\n\tmoduleMap: bcs.map(bcs.string(), bcs.byteVector()),\n\ttypeOriginTable: bcs.vector(TypeOrigin),\n\tlinkageTable: bcs.map(Address, UpgradeInfo),\n});\n\n// Rust: crates/sui-types/src/object.rs\nexport const MoveObject = bcs.struct('MoveObject', {\n\ttype: MoveObjectType,\n\thasPublicTransfer: bcs.bool(),\n\tversion: bcs.u64(),\n\tcontents: bcs.byteVector(),\n});\n\n// Rust: crates/sui-types/src/object.rs\nexport const Data = bcs.enum('Data', {\n\tMove: MoveObject,\n\tPackage: MovePackage,\n});\n\n// Rust: crates/sui-types/src/object.rs\nexport const ObjectInner = bcs.struct('ObjectInner', {\n\tdata: Data,\n\towner: Owner,\n\tpreviousTransaction: ObjectDigest,\n\tstorageRebate: bcs.u64(),\n});\n"],"mappings":"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"}
|