@mysten/sui 1.25.0 → 1.26.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 +6 -0
- package/dist/cjs/client/client.d.ts +12 -2
- package/dist/cjs/client/client.js +16 -4
- package/dist/cjs/client/client.js.map +2 -2
- package/dist/cjs/experimental/client.d.ts +8 -0
- package/dist/cjs/experimental/client.js +43 -0
- package/dist/cjs/experimental/client.js.map +7 -0
- package/dist/cjs/experimental/core.d.ts +14 -0
- package/dist/cjs/experimental/core.js +31 -0
- package/dist/cjs/experimental/core.js.map +7 -0
- package/dist/cjs/experimental/errors.d.ts +8 -0
- package/dist/cjs/experimental/errors.js +54 -0
- package/dist/cjs/experimental/errors.js.map +7 -0
- package/dist/cjs/experimental/transports/jsonRPC.d.ts +62 -0
- package/dist/cjs/experimental/transports/jsonRPC.js +255 -0
- package/dist/cjs/experimental/transports/jsonRPC.js.map +7 -0
- package/dist/cjs/experimental/types.d.ts +211 -0
- package/dist/cjs/experimental/types.js +17 -0
- package/dist/cjs/experimental/types.js.map +7 -0
- package/dist/cjs/transactions/executor/parallel.d.ts +1 -1
- package/dist/cjs/transactions/executor/parallel.js +4 -4
- package/dist/cjs/transactions/executor/parallel.js.map +2 -2
- package/dist/cjs/transactions/executor/serial.d.ts +1 -1
- package/dist/cjs/transactions/executor/serial.js +2 -2
- package/dist/cjs/transactions/executor/serial.js.map +2 -2
- package/dist/cjs/version.d.ts +2 -2
- package/dist/cjs/version.js +2 -2
- package/dist/cjs/version.js.map +1 -1
- package/dist/esm/client/client.d.ts +12 -2
- package/dist/esm/client/client.js +16 -4
- package/dist/esm/client/client.js.map +2 -2
- package/dist/esm/experimental/client.d.ts +8 -0
- package/dist/esm/experimental/client.js +23 -0
- package/dist/esm/experimental/client.js.map +7 -0
- package/dist/esm/experimental/core.d.ts +14 -0
- package/dist/esm/experimental/core.js +11 -0
- package/dist/esm/experimental/core.js.map +7 -0
- package/dist/esm/experimental/errors.d.ts +8 -0
- package/dist/esm/experimental/errors.js +34 -0
- package/dist/esm/experimental/errors.js.map +7 -0
- package/dist/esm/experimental/transports/jsonRPC.d.ts +62 -0
- package/dist/esm/experimental/transports/jsonRPC.js +235 -0
- package/dist/esm/experimental/transports/jsonRPC.js.map +7 -0
- package/dist/esm/experimental/types.d.ts +211 -0
- package/dist/esm/experimental/types.js +1 -0
- package/dist/esm/experimental/types.js.map +7 -0
- package/dist/esm/transactions/executor/parallel.d.ts +1 -1
- package/dist/esm/transactions/executor/parallel.js +4 -4
- package/dist/esm/transactions/executor/parallel.js.map +2 -2
- package/dist/esm/transactions/executor/serial.d.ts +1 -1
- package/dist/esm/transactions/executor/serial.js +2 -2
- package/dist/esm/transactions/executor/serial.js.map +2 -2
- package/dist/esm/version.d.ts +2 -2
- package/dist/esm/version.js +2 -2
- package/dist/esm/version.js.map +1 -1
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/client/client.ts +21 -2
- package/src/experimental/client.ts +61 -0
- package/src/experimental/core.ts +46 -0
- package/src/experimental/errors.ts +37 -0
- package/src/experimental/transports/jsonRPC.ts +263 -0
- package/src/experimental/types.ts +293 -0
- package/src/transactions/executor/parallel.ts +8 -3
- package/src/transactions/executor/serial.ts +2 -1
- package/src/version.ts +2 -2
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
class SuiClientError extends Error {
|
|
2
|
+
}
|
|
3
|
+
class ObjectError extends SuiClientError {
|
|
4
|
+
constructor(code, message) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.code = code;
|
|
7
|
+
}
|
|
8
|
+
static fromResponse(response, objectId) {
|
|
9
|
+
switch (response.code) {
|
|
10
|
+
case "notExists":
|
|
11
|
+
return new ObjectError(response.code, `Object ${response.object_id} does not exist`);
|
|
12
|
+
case "dynamicFieldNotFound":
|
|
13
|
+
return new ObjectError(
|
|
14
|
+
response.code,
|
|
15
|
+
`Dynamic field not found for object ${response.parent_object_id}`
|
|
16
|
+
);
|
|
17
|
+
case "deleted":
|
|
18
|
+
return new ObjectError(response.code, `Object ${response.object_id} has been deleted`);
|
|
19
|
+
case "displayError":
|
|
20
|
+
return new ObjectError(response.code, `Display error: ${response.error}`);
|
|
21
|
+
case "unknown":
|
|
22
|
+
default:
|
|
23
|
+
return new ObjectError(
|
|
24
|
+
response.code,
|
|
25
|
+
`Unknown error while loading object${objectId ? ` ${objectId}` : ""}`
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export {
|
|
31
|
+
ObjectError,
|
|
32
|
+
SuiClientError
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/experimental/errors.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ObjectResponseError } from '../client/index.js';\n\nexport class SuiClientError extends Error {}\n\nexport class ObjectError extends SuiClientError {\n\tcode: string;\n\n\tconstructor(code: string, message: string) {\n\t\tsuper(message);\n\t\tthis.code = code;\n\t}\n\n\tstatic fromResponse(response: ObjectResponseError, objectId?: string): ObjectError {\n\t\tswitch (response.code) {\n\t\t\tcase 'notExists':\n\t\t\t\treturn new ObjectError(response.code, `Object ${response.object_id} does not exist`);\n\t\t\tcase 'dynamicFieldNotFound':\n\t\t\t\treturn new ObjectError(\n\t\t\t\t\tresponse.code,\n\t\t\t\t\t`Dynamic field not found for object ${response.parent_object_id}`,\n\t\t\t\t);\n\t\t\tcase 'deleted':\n\t\t\t\treturn new ObjectError(response.code, `Object ${response.object_id} has been deleted`);\n\t\t\tcase 'displayError':\n\t\t\t\treturn new ObjectError(response.code, `Display error: ${response.error}`);\n\t\t\tcase 'unknown':\n\t\t\tdefault:\n\t\t\t\treturn new ObjectError(\n\t\t\t\t\tresponse.code,\n\t\t\t\t\t`Unknown error while loading object${objectId ? ` ${objectId}` : ''}`,\n\t\t\t\t);\n\t\t}\n\t}\n}\n"],
|
|
5
|
+
"mappings": "AAKO,MAAM,uBAAuB,MAAM;AAAC;AAEpC,MAAM,oBAAoB,eAAe;AAAA,EAG/C,YAAY,MAAc,SAAiB;AAC1C,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EACb;AAAA,EAEA,OAAO,aAAa,UAA+B,UAAgC;AAClF,YAAQ,SAAS,MAAM;AAAA,MACtB,KAAK;AACJ,eAAO,IAAI,YAAY,SAAS,MAAM,UAAU,SAAS,SAAS,iBAAiB;AAAA,MACpF,KAAK;AACJ,eAAO,IAAI;AAAA,UACV,SAAS;AAAA,UACT,sCAAsC,SAAS,gBAAgB;AAAA,QAChE;AAAA,MACD,KAAK;AACJ,eAAO,IAAI,YAAY,SAAS,MAAM,UAAU,SAAS,SAAS,mBAAmB;AAAA,MACtF,KAAK;AACJ,eAAO,IAAI,YAAY,SAAS,MAAM,kBAAkB,SAAS,KAAK,EAAE;AAAA,MACzE,KAAK;AAAA,MACL;AACC,eAAO,IAAI;AAAA,UACV,SAAS;AAAA,UACT,qCAAqC,WAAW,IAAI,QAAQ,KAAK,EAAE;AAAA,QACpE;AAAA,IACF;AAAA,EACD;AACD;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { SuiClient } from '../../client/index.js';
|
|
2
|
+
import { Experimental_CoreClient } from '../core.js';
|
|
3
|
+
import type { Experimental_SuiClientTypes } from '../types.js';
|
|
4
|
+
export declare class JSONRpcTransport extends Experimental_CoreClient {
|
|
5
|
+
#private;
|
|
6
|
+
constructor(jsonRpcClient: SuiClient);
|
|
7
|
+
getObjects(options: Experimental_SuiClientTypes.GetObjectsOptions): Promise<{
|
|
8
|
+
objects: (Error | Experimental_SuiClientTypes.ObjectResponse)[];
|
|
9
|
+
}>;
|
|
10
|
+
getOwnedObjects(options: Experimental_SuiClientTypes.GetOwnedObjectsOptions): Promise<{
|
|
11
|
+
objects: Experimental_SuiClientTypes.ObjectResponse[];
|
|
12
|
+
hasNextPage: boolean;
|
|
13
|
+
cursor: string | null;
|
|
14
|
+
}>;
|
|
15
|
+
getCoins(options: Experimental_SuiClientTypes.GetCoinsOptions): Promise<{
|
|
16
|
+
objects: {
|
|
17
|
+
id: string;
|
|
18
|
+
version: string;
|
|
19
|
+
digest: string;
|
|
20
|
+
balance: bigint;
|
|
21
|
+
type: string;
|
|
22
|
+
content: Uint8Array<ArrayBufferLike>;
|
|
23
|
+
owner: {
|
|
24
|
+
$kind: "ObjectOwner";
|
|
25
|
+
ObjectOwner: string;
|
|
26
|
+
};
|
|
27
|
+
}[];
|
|
28
|
+
hasNextPage: boolean;
|
|
29
|
+
cursor: string | null;
|
|
30
|
+
}>;
|
|
31
|
+
getBalance(options: Experimental_SuiClientTypes.GetBalanceOptions): Promise<{
|
|
32
|
+
balance: {
|
|
33
|
+
coinType: string;
|
|
34
|
+
balance: bigint;
|
|
35
|
+
};
|
|
36
|
+
}>;
|
|
37
|
+
getAllBalances(options: Experimental_SuiClientTypes.GetAllBalancesOptions): Promise<{
|
|
38
|
+
balances: {
|
|
39
|
+
coinType: string;
|
|
40
|
+
balance: bigint;
|
|
41
|
+
}[];
|
|
42
|
+
hasNextPage: boolean;
|
|
43
|
+
cursor: null;
|
|
44
|
+
}>;
|
|
45
|
+
getTransaction(options: Experimental_SuiClientTypes.GetTransactionOptions): Promise<{
|
|
46
|
+
transaction: Experimental_SuiClientTypes.TransactionResponse;
|
|
47
|
+
}>;
|
|
48
|
+
executeTransaction(options: Experimental_SuiClientTypes.ExecuteTransactionOptions): Promise<{
|
|
49
|
+
transaction: Experimental_SuiClientTypes.TransactionResponse;
|
|
50
|
+
}>;
|
|
51
|
+
dryRunTransaction(options: Experimental_SuiClientTypes.DryRunTransactionOptions): Promise<{
|
|
52
|
+
transaction: {
|
|
53
|
+
digest: string;
|
|
54
|
+
effects: never;
|
|
55
|
+
signatures: never[];
|
|
56
|
+
bcs: Uint8Array<ArrayBufferLike>;
|
|
57
|
+
};
|
|
58
|
+
}>;
|
|
59
|
+
getReferenceGasPrice(): Promise<{
|
|
60
|
+
referenceGasPrice: bigint;
|
|
61
|
+
}>;
|
|
62
|
+
}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
var __typeError = (msg) => {
|
|
2
|
+
throw TypeError(msg);
|
|
3
|
+
};
|
|
4
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
5
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
6
|
+
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
7
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
8
|
+
var _jsonRpcClient;
|
|
9
|
+
import { fromBase64 } from "@mysten/bcs";
|
|
10
|
+
import { bcs } from "../../bcs/index.js";
|
|
11
|
+
import { batch } from "../../transactions/plugins/utils.js";
|
|
12
|
+
import { Transaction } from "../../transactions/Transaction.js";
|
|
13
|
+
import { Experimental_CoreClient } from "../core.js";
|
|
14
|
+
import { ObjectError } from "../errors.js";
|
|
15
|
+
class JSONRpcTransport extends Experimental_CoreClient {
|
|
16
|
+
constructor(jsonRpcClient) {
|
|
17
|
+
super({ network: jsonRpcClient.network });
|
|
18
|
+
__privateAdd(this, _jsonRpcClient);
|
|
19
|
+
__privateSet(this, _jsonRpcClient, jsonRpcClient);
|
|
20
|
+
}
|
|
21
|
+
async getObjects(options) {
|
|
22
|
+
const batches = batch(options.objectIds, 50);
|
|
23
|
+
const results = [];
|
|
24
|
+
for (const batch2 of batches) {
|
|
25
|
+
const objects = await __privateGet(this, _jsonRpcClient).multiGetObjects({
|
|
26
|
+
ids: batch2,
|
|
27
|
+
options: {
|
|
28
|
+
showOwner: true,
|
|
29
|
+
showType: true
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
for (const [idx, object] of objects.entries()) {
|
|
33
|
+
if (object.error) {
|
|
34
|
+
results.push(ObjectError.fromResponse(object.error, batch2[idx]));
|
|
35
|
+
} else {
|
|
36
|
+
results.push(parseObject(object.data));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
objects: results
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
async getOwnedObjects(options) {
|
|
45
|
+
const objects = await __privateGet(this, _jsonRpcClient).getOwnedObjects({
|
|
46
|
+
owner: options.address,
|
|
47
|
+
limit: options.limit,
|
|
48
|
+
cursor: options.cursor
|
|
49
|
+
});
|
|
50
|
+
return {
|
|
51
|
+
objects: objects.data.map((result) => {
|
|
52
|
+
if (result.error) {
|
|
53
|
+
throw ObjectError.fromResponse(result.error);
|
|
54
|
+
}
|
|
55
|
+
return parseObject(result.data);
|
|
56
|
+
}),
|
|
57
|
+
hasNextPage: objects.hasNextPage,
|
|
58
|
+
cursor: objects.nextCursor ?? null
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
async getCoins(options) {
|
|
62
|
+
const coins = await __privateGet(this, _jsonRpcClient).getCoins({
|
|
63
|
+
owner: options.address,
|
|
64
|
+
coinType: options.coinType
|
|
65
|
+
});
|
|
66
|
+
return {
|
|
67
|
+
objects: coins.data.map((coin) => {
|
|
68
|
+
return {
|
|
69
|
+
id: coin.coinObjectId,
|
|
70
|
+
version: coin.version,
|
|
71
|
+
digest: coin.digest,
|
|
72
|
+
balance: BigInt(coin.balance),
|
|
73
|
+
type: `0x2::coin::Coin<${coin.coinType}>`,
|
|
74
|
+
content: Coin.serialize({
|
|
75
|
+
id: coin.coinObjectId,
|
|
76
|
+
balance: {
|
|
77
|
+
value: coin.balance
|
|
78
|
+
}
|
|
79
|
+
}).toBytes(),
|
|
80
|
+
owner: {
|
|
81
|
+
$kind: "ObjectOwner",
|
|
82
|
+
ObjectOwner: options.address
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}),
|
|
86
|
+
hasNextPage: coins.hasNextPage,
|
|
87
|
+
cursor: coins.nextCursor ?? null
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
async getBalance(options) {
|
|
91
|
+
const balance = await __privateGet(this, _jsonRpcClient).getBalance({
|
|
92
|
+
owner: options.address,
|
|
93
|
+
coinType: options.coinType
|
|
94
|
+
});
|
|
95
|
+
return {
|
|
96
|
+
balance: {
|
|
97
|
+
coinType: balance.coinType,
|
|
98
|
+
balance: BigInt(balance.totalBalance)
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
async getAllBalances(options) {
|
|
103
|
+
const balances = await __privateGet(this, _jsonRpcClient).getAllBalances({
|
|
104
|
+
owner: options.address
|
|
105
|
+
});
|
|
106
|
+
return {
|
|
107
|
+
balances: balances.map((balance) => ({
|
|
108
|
+
coinType: balance.coinType,
|
|
109
|
+
balance: BigInt(balance.totalBalance)
|
|
110
|
+
})),
|
|
111
|
+
hasNextPage: false,
|
|
112
|
+
cursor: null
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
async getTransaction(options) {
|
|
116
|
+
const transaction = await __privateGet(this, _jsonRpcClient).getTransactionBlock({
|
|
117
|
+
digest: options.digest,
|
|
118
|
+
options: {
|
|
119
|
+
showRawInput: true,
|
|
120
|
+
showObjectChanges: true,
|
|
121
|
+
showRawEffects: true,
|
|
122
|
+
showEvents: true
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
return {
|
|
126
|
+
transaction: parseTransaction(transaction)
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
async executeTransaction(options) {
|
|
130
|
+
const transaction = await __privateGet(this, _jsonRpcClient).executeTransactionBlock({
|
|
131
|
+
transactionBlock: options.transaction,
|
|
132
|
+
signature: options.signatures,
|
|
133
|
+
options: {
|
|
134
|
+
showEffects: true,
|
|
135
|
+
showEvents: true
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
return {
|
|
139
|
+
transaction: parseTransaction(transaction)
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
async dryRunTransaction(options) {
|
|
143
|
+
const tx = Transaction.from(options.transaction);
|
|
144
|
+
const result = await __privateGet(this, _jsonRpcClient).dryRunTransactionBlock({
|
|
145
|
+
transactionBlock: options.transaction
|
|
146
|
+
});
|
|
147
|
+
return {
|
|
148
|
+
transaction: {
|
|
149
|
+
digest: await tx.getDigest(),
|
|
150
|
+
// TODO: Effects aren't returned as bcs from dryRun, once we define structured effects we can return those instead
|
|
151
|
+
effects: result.effects,
|
|
152
|
+
signatures: [],
|
|
153
|
+
bcs: options.transaction
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
async getReferenceGasPrice() {
|
|
158
|
+
const referenceGasPrice = await __privateGet(this, _jsonRpcClient).getReferenceGasPrice();
|
|
159
|
+
return {
|
|
160
|
+
referenceGasPrice
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
_jsonRpcClient = new WeakMap();
|
|
165
|
+
function parseObject(object) {
|
|
166
|
+
return {
|
|
167
|
+
id: object.objectId,
|
|
168
|
+
version: object.version,
|
|
169
|
+
digest: object.digest,
|
|
170
|
+
type: object.type,
|
|
171
|
+
content: object.bcs?.dataType === "moveObject" ? fromBase64(object.bcs.bcsBytes) : new Uint8Array(),
|
|
172
|
+
owner: parseOwner(object.owner)
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
function parseOwner(owner) {
|
|
176
|
+
if (owner === "Immutable") {
|
|
177
|
+
return {
|
|
178
|
+
$kind: "Immutable",
|
|
179
|
+
Immutable: true
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
if ("ConsensusV2" in owner) {
|
|
183
|
+
return {
|
|
184
|
+
$kind: "ConsensusV2",
|
|
185
|
+
ConsensusV2Owner: {
|
|
186
|
+
authenticator: {
|
|
187
|
+
$kind: "SingleOwner",
|
|
188
|
+
SingleOwner: owner.ConsensusV2.authenticator.SingleOwner
|
|
189
|
+
},
|
|
190
|
+
startVersion: owner.ConsensusV2.start_version
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
if ("AddressOwner" in owner) {
|
|
195
|
+
return {
|
|
196
|
+
$kind: "AddressOwner",
|
|
197
|
+
AddressOwner: owner.AddressOwner
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
if ("ObjectOwner" in owner) {
|
|
201
|
+
return {
|
|
202
|
+
$kind: "ObjectOwner",
|
|
203
|
+
ObjectOwner: owner.ObjectOwner
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
if ("Shared" in owner) {
|
|
207
|
+
return {
|
|
208
|
+
$kind: "Shared",
|
|
209
|
+
Shared: {
|
|
210
|
+
initialSharedVersion: owner.Shared.initial_shared_version
|
|
211
|
+
}
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
throw new Error(`Unknown owner type: ${JSON.stringify(owner)}`);
|
|
215
|
+
}
|
|
216
|
+
function parseTransaction(transaction) {
|
|
217
|
+
const parsedTx = bcs.SenderSignedData.parse(fromBase64(transaction.rawTransaction))[0];
|
|
218
|
+
return {
|
|
219
|
+
digest: transaction.digest,
|
|
220
|
+
effects: new Uint8Array(transaction.rawEffects),
|
|
221
|
+
bcs: bcs.TransactionData.serialize(parsedTx.intentMessage.value).toBytes(),
|
|
222
|
+
signatures: parsedTx.txSignatures
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
const Balance = bcs.struct("Balance", {
|
|
226
|
+
value: bcs.u64()
|
|
227
|
+
});
|
|
228
|
+
const Coin = bcs.struct("Coin", {
|
|
229
|
+
id: bcs.Address,
|
|
230
|
+
balance: Balance
|
|
231
|
+
});
|
|
232
|
+
export {
|
|
233
|
+
JSONRpcTransport
|
|
234
|
+
};
|
|
235
|
+
//# sourceMappingURL=jsonRPC.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/experimental/transports/jsonRPC.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromBase64 } from '@mysten/bcs';\n\nimport { bcs } from '../../bcs/index.js';\nimport type {\n\tObjectOwner,\n\tSuiClient,\n\tSuiObjectData,\n\tSuiTransactionBlockResponse,\n} from '../../client/index.js';\nimport { batch } from '../../transactions/plugins/utils.js';\nimport { Transaction } from '../../transactions/Transaction.js';\nimport { Experimental_CoreClient } from '../core.js';\nimport { ObjectError } from '../errors.js';\nimport type { Experimental_SuiClientTypes } from '../types.js';\n\nexport class JSONRpcTransport extends Experimental_CoreClient {\n\t#jsonRpcClient: SuiClient;\n\n\tconstructor(jsonRpcClient: SuiClient) {\n\t\tsuper({ network: jsonRpcClient.network });\n\t\tthis.#jsonRpcClient = jsonRpcClient;\n\t}\n\n\tasync getObjects(options: Experimental_SuiClientTypes.GetObjectsOptions) {\n\t\tconst batches = batch(options.objectIds, 50);\n\t\tconst results: Experimental_SuiClientTypes.GetObjectsResponse['objects'] = [];\n\n\t\tfor (const batch of batches) {\n\t\t\tconst objects = await this.#jsonRpcClient.multiGetObjects({\n\t\t\t\tids: batch,\n\t\t\t\toptions: {\n\t\t\t\t\tshowOwner: true,\n\t\t\t\t\tshowType: true,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tfor (const [idx, object] of objects.entries()) {\n\t\t\t\tif (object.error) {\n\t\t\t\t\tresults.push(ObjectError.fromResponse(object.error, batch[idx]));\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(parseObject(object.data!));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tobjects: results,\n\t\t};\n\t}\n\tasync getOwnedObjects(options: Experimental_SuiClientTypes.GetOwnedObjectsOptions) {\n\t\tconst objects = await this.#jsonRpcClient.getOwnedObjects({\n\t\t\towner: options.address,\n\t\t\tlimit: options.limit,\n\t\t\tcursor: options.cursor,\n\t\t});\n\n\t\treturn {\n\t\t\tobjects: objects.data.map((result) => {\n\t\t\t\tif (result.error) {\n\t\t\t\t\tthrow ObjectError.fromResponse(result.error);\n\t\t\t\t}\n\n\t\t\t\treturn parseObject(result.data!);\n\t\t\t}),\n\t\t\thasNextPage: objects.hasNextPage,\n\t\t\tcursor: objects.nextCursor ?? null,\n\t\t};\n\t}\n\n\tasync getCoins(options: Experimental_SuiClientTypes.GetCoinsOptions) {\n\t\tconst coins = await this.#jsonRpcClient.getCoins({\n\t\t\towner: options.address,\n\t\t\tcoinType: options.coinType,\n\t\t});\n\n\t\treturn {\n\t\t\tobjects: coins.data.map((coin) => {\n\t\t\t\treturn {\n\t\t\t\t\tid: coin.coinObjectId,\n\t\t\t\t\tversion: coin.version,\n\t\t\t\t\tdigest: coin.digest,\n\t\t\t\t\tbalance: BigInt(coin.balance),\n\t\t\t\t\ttype: `0x2::coin::Coin<${coin.coinType}>`,\n\t\t\t\t\tcontent: Coin.serialize({\n\t\t\t\t\t\tid: coin.coinObjectId,\n\t\t\t\t\t\tbalance: {\n\t\t\t\t\t\t\tvalue: coin.balance,\n\t\t\t\t\t\t},\n\t\t\t\t\t}).toBytes(),\n\t\t\t\t\towner: {\n\t\t\t\t\t\t$kind: 'ObjectOwner' as const,\n\t\t\t\t\t\tObjectOwner: options.address,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}),\n\t\t\thasNextPage: coins.hasNextPage,\n\t\t\tcursor: coins.nextCursor ?? null,\n\t\t};\n\t}\n\n\tasync getBalance(options: Experimental_SuiClientTypes.GetBalanceOptions) {\n\t\tconst balance = await this.#jsonRpcClient.getBalance({\n\t\t\towner: options.address,\n\t\t\tcoinType: options.coinType,\n\t\t});\n\n\t\treturn {\n\t\t\tbalance: {\n\t\t\t\tcoinType: balance.coinType,\n\t\t\t\tbalance: BigInt(balance.totalBalance),\n\t\t\t},\n\t\t};\n\t}\n\tasync getAllBalances(options: Experimental_SuiClientTypes.GetAllBalancesOptions) {\n\t\tconst balances = await this.#jsonRpcClient.getAllBalances({\n\t\t\towner: options.address,\n\t\t});\n\n\t\treturn {\n\t\t\tbalances: balances.map((balance) => ({\n\t\t\t\tcoinType: balance.coinType,\n\t\t\t\tbalance: BigInt(balance.totalBalance),\n\t\t\t})),\n\t\t\thasNextPage: false,\n\t\t\tcursor: null,\n\t\t};\n\t}\n\tasync getTransaction(options: Experimental_SuiClientTypes.GetTransactionOptions) {\n\t\tconst transaction = await this.#jsonRpcClient.getTransactionBlock({\n\t\t\tdigest: options.digest,\n\t\t\toptions: {\n\t\t\t\tshowRawInput: true,\n\t\t\t\tshowObjectChanges: true,\n\t\t\t\tshowRawEffects: true,\n\t\t\t\tshowEvents: true,\n\t\t\t},\n\t\t});\n\n\t\treturn {\n\t\t\ttransaction: parseTransaction(transaction),\n\t\t};\n\t}\n\tasync executeTransaction(options: Experimental_SuiClientTypes.ExecuteTransactionOptions) {\n\t\tconst transaction = await this.#jsonRpcClient.executeTransactionBlock({\n\t\t\ttransactionBlock: options.transaction,\n\t\t\tsignature: options.signatures,\n\t\t\toptions: {\n\t\t\t\tshowEffects: true,\n\t\t\t\tshowEvents: true,\n\t\t\t},\n\t\t});\n\n\t\treturn {\n\t\t\ttransaction: parseTransaction(transaction),\n\t\t};\n\t}\n\tasync dryRunTransaction(options: Experimental_SuiClientTypes.DryRunTransactionOptions) {\n\t\tconst tx = Transaction.from(options.transaction);\n\t\tconst result = await this.#jsonRpcClient.dryRunTransactionBlock({\n\t\t\ttransactionBlock: options.transaction,\n\t\t});\n\n\t\treturn {\n\t\t\ttransaction: {\n\t\t\t\tdigest: await tx.getDigest(),\n\t\t\t\t// TODO: Effects aren't returned as bcs from dryRun, once we define structured effects we can return those instead\n\t\t\t\teffects: result.effects as never,\n\t\t\t\tsignatures: [],\n\t\t\t\tbcs: options.transaction,\n\t\t\t},\n\t\t};\n\t}\n\tasync getReferenceGasPrice() {\n\t\tconst referenceGasPrice = await this.#jsonRpcClient.getReferenceGasPrice();\n\t\treturn {\n\t\t\treferenceGasPrice,\n\t\t};\n\t}\n}\n\nfunction parseObject(object: SuiObjectData): Experimental_SuiClientTypes.ObjectResponse {\n\treturn {\n\t\tid: object.objectId,\n\t\tversion: object.version,\n\t\tdigest: object.digest,\n\t\ttype: object.type!,\n\t\tcontent:\n\t\t\tobject.bcs?.dataType === 'moveObject' ? fromBase64(object.bcs.bcsBytes) : new Uint8Array(),\n\t\towner: parseOwner(object.owner!),\n\t};\n}\n\nfunction parseOwner(owner: ObjectOwner): Experimental_SuiClientTypes.ObjectOwner {\n\tif (owner === 'Immutable') {\n\t\treturn {\n\t\t\t$kind: 'Immutable',\n\t\t\tImmutable: true,\n\t\t};\n\t}\n\n\tif ('ConsensusV2' in owner) {\n\t\treturn {\n\t\t\t$kind: 'ConsensusV2',\n\t\t\tConsensusV2Owner: {\n\t\t\t\tauthenticator: {\n\t\t\t\t\t$kind: 'SingleOwner',\n\t\t\t\t\tSingleOwner: owner.ConsensusV2.authenticator.SingleOwner,\n\t\t\t\t},\n\t\t\t\tstartVersion: owner.ConsensusV2.start_version,\n\t\t\t},\n\t\t};\n\t}\n\n\tif ('AddressOwner' in owner) {\n\t\treturn {\n\t\t\t$kind: 'AddressOwner',\n\t\t\tAddressOwner: owner.AddressOwner,\n\t\t};\n\t}\n\n\tif ('ObjectOwner' in owner) {\n\t\treturn {\n\t\t\t$kind: 'ObjectOwner',\n\t\t\tObjectOwner: owner.ObjectOwner,\n\t\t};\n\t}\n\n\tif ('Shared' in owner) {\n\t\treturn {\n\t\t\t$kind: 'Shared',\n\t\t\tShared: {\n\t\t\t\tinitialSharedVersion: owner.Shared.initial_shared_version,\n\t\t\t},\n\t\t};\n\t}\n\n\tthrow new Error(`Unknown owner type: ${JSON.stringify(owner)}`);\n}\n\nfunction parseTransaction(\n\ttransaction: SuiTransactionBlockResponse,\n): Experimental_SuiClientTypes.TransactionResponse {\n\tconst parsedTx = bcs.SenderSignedData.parse(fromBase64(transaction.rawTransaction!))[0];\n\n\treturn {\n\t\tdigest: transaction.digest,\n\t\teffects: new Uint8Array(transaction.rawEffects!),\n\t\tbcs: bcs.TransactionData.serialize(parsedTx.intentMessage.value).toBytes(),\n\t\tsignatures: parsedTx.txSignatures,\n\t};\n}\n\nconst Balance = bcs.struct('Balance', {\n\tvalue: bcs.u64(),\n});\n\nconst Coin = bcs.struct('Coin', {\n\tid: bcs.Address,\n\tbalance: Balance,\n});\n"],
|
|
5
|
+
"mappings": ";;;;;;;AAAA;AAGA,SAAS,kBAAkB;AAE3B,SAAS,WAAW;AAOpB,SAAS,aAAa;AACtB,SAAS,mBAAmB;AAC5B,SAAS,+BAA+B;AACxC,SAAS,mBAAmB;AAGrB,MAAM,yBAAyB,wBAAwB;AAAA,EAG7D,YAAY,eAA0B;AACrC,UAAM,EAAE,SAAS,cAAc,QAAQ,CAAC;AAHzC;AAIC,uBAAK,gBAAiB;AAAA,EACvB;AAAA,EAEA,MAAM,WAAW,SAAwD;AACxE,UAAM,UAAU,MAAM,QAAQ,WAAW,EAAE;AAC3C,UAAM,UAAqE,CAAC;AAE5E,eAAWA,UAAS,SAAS;AAC5B,YAAM,UAAU,MAAM,mBAAK,gBAAe,gBAAgB;AAAA,QACzD,KAAKA;AAAA,QACL,SAAS;AAAA,UACR,WAAW;AAAA,UACX,UAAU;AAAA,QACX;AAAA,MACD,CAAC;AAED,iBAAW,CAAC,KAAK,MAAM,KAAK,QAAQ,QAAQ,GAAG;AAC9C,YAAI,OAAO,OAAO;AACjB,kBAAQ,KAAK,YAAY,aAAa,OAAO,OAAOA,OAAM,GAAG,CAAC,CAAC;AAAA,QAChE,OAAO;AACN,kBAAQ,KAAK,YAAY,OAAO,IAAK,CAAC;AAAA,QACvC;AAAA,MACD;AAAA,IACD;AAEA,WAAO;AAAA,MACN,SAAS;AAAA,IACV;AAAA,EACD;AAAA,EACA,MAAM,gBAAgB,SAA6D;AAClF,UAAM,UAAU,MAAM,mBAAK,gBAAe,gBAAgB;AAAA,MACzD,OAAO,QAAQ;AAAA,MACf,OAAO,QAAQ;AAAA,MACf,QAAQ,QAAQ;AAAA,IACjB,CAAC;AAED,WAAO;AAAA,MACN,SAAS,QAAQ,KAAK,IAAI,CAAC,WAAW;AACrC,YAAI,OAAO,OAAO;AACjB,gBAAM,YAAY,aAAa,OAAO,KAAK;AAAA,QAC5C;AAEA,eAAO,YAAY,OAAO,IAAK;AAAA,MAChC,CAAC;AAAA,MACD,aAAa,QAAQ;AAAA,MACrB,QAAQ,QAAQ,cAAc;AAAA,IAC/B;AAAA,EACD;AAAA,EAEA,MAAM,SAAS,SAAsD;AACpE,UAAM,QAAQ,MAAM,mBAAK,gBAAe,SAAS;AAAA,MAChD,OAAO,QAAQ;AAAA,MACf,UAAU,QAAQ;AAAA,IACnB,CAAC;AAED,WAAO;AAAA,MACN,SAAS,MAAM,KAAK,IAAI,CAAC,SAAS;AACjC,eAAO;AAAA,UACN,IAAI,KAAK;AAAA,UACT,SAAS,KAAK;AAAA,UACd,QAAQ,KAAK;AAAA,UACb,SAAS,OAAO,KAAK,OAAO;AAAA,UAC5B,MAAM,mBAAmB,KAAK,QAAQ;AAAA,UACtC,SAAS,KAAK,UAAU;AAAA,YACvB,IAAI,KAAK;AAAA,YACT,SAAS;AAAA,cACR,OAAO,KAAK;AAAA,YACb;AAAA,UACD,CAAC,EAAE,QAAQ;AAAA,UACX,OAAO;AAAA,YACN,OAAO;AAAA,YACP,aAAa,QAAQ;AAAA,UACtB;AAAA,QACD;AAAA,MACD,CAAC;AAAA,MACD,aAAa,MAAM;AAAA,MACnB,QAAQ,MAAM,cAAc;AAAA,IAC7B;AAAA,EACD;AAAA,EAEA,MAAM,WAAW,SAAwD;AACxE,UAAM,UAAU,MAAM,mBAAK,gBAAe,WAAW;AAAA,MACpD,OAAO,QAAQ;AAAA,MACf,UAAU,QAAQ;AAAA,IACnB,CAAC;AAED,WAAO;AAAA,MACN,SAAS;AAAA,QACR,UAAU,QAAQ;AAAA,QAClB,SAAS,OAAO,QAAQ,YAAY;AAAA,MACrC;AAAA,IACD;AAAA,EACD;AAAA,EACA,MAAM,eAAe,SAA4D;AAChF,UAAM,WAAW,MAAM,mBAAK,gBAAe,eAAe;AAAA,MACzD,OAAO,QAAQ;AAAA,IAChB,CAAC;AAED,WAAO;AAAA,MACN,UAAU,SAAS,IAAI,CAAC,aAAa;AAAA,QACpC,UAAU,QAAQ;AAAA,QAClB,SAAS,OAAO,QAAQ,YAAY;AAAA,MACrC,EAAE;AAAA,MACF,aAAa;AAAA,MACb,QAAQ;AAAA,IACT;AAAA,EACD;AAAA,EACA,MAAM,eAAe,SAA4D;AAChF,UAAM,cAAc,MAAM,mBAAK,gBAAe,oBAAoB;AAAA,MACjE,QAAQ,QAAQ;AAAA,MAChB,SAAS;AAAA,QACR,cAAc;AAAA,QACd,mBAAmB;AAAA,QACnB,gBAAgB;AAAA,QAChB,YAAY;AAAA,MACb;AAAA,IACD,CAAC;AAED,WAAO;AAAA,MACN,aAAa,iBAAiB,WAAW;AAAA,IAC1C;AAAA,EACD;AAAA,EACA,MAAM,mBAAmB,SAAgE;AACxF,UAAM,cAAc,MAAM,mBAAK,gBAAe,wBAAwB;AAAA,MACrE,kBAAkB,QAAQ;AAAA,MAC1B,WAAW,QAAQ;AAAA,MACnB,SAAS;AAAA,QACR,aAAa;AAAA,QACb,YAAY;AAAA,MACb;AAAA,IACD,CAAC;AAED,WAAO;AAAA,MACN,aAAa,iBAAiB,WAAW;AAAA,IAC1C;AAAA,EACD;AAAA,EACA,MAAM,kBAAkB,SAA+D;AACtF,UAAM,KAAK,YAAY,KAAK,QAAQ,WAAW;AAC/C,UAAM,SAAS,MAAM,mBAAK,gBAAe,uBAAuB;AAAA,MAC/D,kBAAkB,QAAQ;AAAA,IAC3B,CAAC;AAED,WAAO;AAAA,MACN,aAAa;AAAA,QACZ,QAAQ,MAAM,GAAG,UAAU;AAAA;AAAA,QAE3B,SAAS,OAAO;AAAA,QAChB,YAAY,CAAC;AAAA,QACb,KAAK,QAAQ;AAAA,MACd;AAAA,IACD;AAAA,EACD;AAAA,EACA,MAAM,uBAAuB;AAC5B,UAAM,oBAAoB,MAAM,mBAAK,gBAAe,qBAAqB;AACzE,WAAO;AAAA,MACN;AAAA,IACD;AAAA,EACD;AACD;AAlKC;AAoKD,SAAS,YAAY,QAAmE;AACvF,SAAO;AAAA,IACN,IAAI,OAAO;AAAA,IACX,SAAS,OAAO;AAAA,IAChB,QAAQ,OAAO;AAAA,IACf,MAAM,OAAO;AAAA,IACb,SACC,OAAO,KAAK,aAAa,eAAe,WAAW,OAAO,IAAI,QAAQ,IAAI,IAAI,WAAW;AAAA,IAC1F,OAAO,WAAW,OAAO,KAAM;AAAA,EAChC;AACD;AAEA,SAAS,WAAW,OAA6D;AAChF,MAAI,UAAU,aAAa;AAC1B,WAAO;AAAA,MACN,OAAO;AAAA,MACP,WAAW;AAAA,IACZ;AAAA,EACD;AAEA,MAAI,iBAAiB,OAAO;AAC3B,WAAO;AAAA,MACN,OAAO;AAAA,MACP,kBAAkB;AAAA,QACjB,eAAe;AAAA,UACd,OAAO;AAAA,UACP,aAAa,MAAM,YAAY,cAAc;AAAA,QAC9C;AAAA,QACA,cAAc,MAAM,YAAY;AAAA,MACjC;AAAA,IACD;AAAA,EACD;AAEA,MAAI,kBAAkB,OAAO;AAC5B,WAAO;AAAA,MACN,OAAO;AAAA,MACP,cAAc,MAAM;AAAA,IACrB;AAAA,EACD;AAEA,MAAI,iBAAiB,OAAO;AAC3B,WAAO;AAAA,MACN,OAAO;AAAA,MACP,aAAa,MAAM;AAAA,IACpB;AAAA,EACD;AAEA,MAAI,YAAY,OAAO;AACtB,WAAO;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,QACP,sBAAsB,MAAM,OAAO;AAAA,MACpC;AAAA,IACD;AAAA,EACD;AAEA,QAAM,IAAI,MAAM,uBAAuB,KAAK,UAAU,KAAK,CAAC,EAAE;AAC/D;AAEA,SAAS,iBACR,aACkD;AAClD,QAAM,WAAW,IAAI,iBAAiB,MAAM,WAAW,YAAY,cAAe,CAAC,EAAE,CAAC;AAEtF,SAAO;AAAA,IACN,QAAQ,YAAY;AAAA,IACpB,SAAS,IAAI,WAAW,YAAY,UAAW;AAAA,IAC/C,KAAK,IAAI,gBAAgB,UAAU,SAAS,cAAc,KAAK,EAAE,QAAQ;AAAA,IACzE,YAAY,SAAS;AAAA,EACtB;AACD;AAEA,MAAM,UAAU,IAAI,OAAO,WAAW;AAAA,EACrC,OAAO,IAAI,IAAI;AAChB,CAAC;AAED,MAAM,OAAO,IAAI,OAAO,QAAQ;AAAA,EAC/B,IAAI,IAAI;AAAA,EACR,SAAS;AACV,CAAC;",
|
|
6
|
+
"names": ["batch"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import type { Experimental_SuiClient } from './client.js';
|
|
2
|
+
export type SuiClientRegistration<T extends Experimental_SuiClient = Experimental_SuiClient, Name extends string = string, Extension = unknown> = {
|
|
3
|
+
readonly name: Name;
|
|
4
|
+
readonly register: (client: T) => Extension;
|
|
5
|
+
} | SelfRegisteringClientExtension<T, Name, Extension>;
|
|
6
|
+
export interface SelfRegisteringClientExtension<T extends Experimental_SuiClient = Experimental_SuiClient, Name extends string = string, Extension = unknown> {
|
|
7
|
+
experimental_asClientExtension: () => {
|
|
8
|
+
readonly name: Name;
|
|
9
|
+
readonly register: (client: T) => Extension;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export type Simplify<T> = {
|
|
13
|
+
[K in keyof T]: T[K];
|
|
14
|
+
} & {};
|
|
15
|
+
export type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
16
|
+
export type ClientWithExtensions<T> = Experimental_SuiClient & T;
|
|
17
|
+
export declare namespace Experimental_SuiClientTypes {
|
|
18
|
+
type Network = 'mainnet' | 'testnet' | 'devnet' | 'localnet' | (string & {});
|
|
19
|
+
interface SuiClientOptions {
|
|
20
|
+
network: Network;
|
|
21
|
+
}
|
|
22
|
+
/** Object methods */
|
|
23
|
+
interface TransportMethods {
|
|
24
|
+
getObjects?: (options: GetObjectsOptions) => Promise<GetObjectsResponse>;
|
|
25
|
+
getOwnedObjects?: (options: GetOwnedObjectsOptions) => Promise<GetOwnedObjectsResponse>;
|
|
26
|
+
getCoins?: (options: GetCoinsOptions) => Promise<GetCoinsResponse>;
|
|
27
|
+
}
|
|
28
|
+
interface GetObjectsOptions {
|
|
29
|
+
objectIds: string[];
|
|
30
|
+
}
|
|
31
|
+
interface GetOwnedObjectsOptions {
|
|
32
|
+
address: string;
|
|
33
|
+
limit?: number;
|
|
34
|
+
cursor?: string | null;
|
|
35
|
+
type?: string;
|
|
36
|
+
}
|
|
37
|
+
interface GetCoinsOptions {
|
|
38
|
+
address: string;
|
|
39
|
+
coinType: string;
|
|
40
|
+
}
|
|
41
|
+
interface GetObjectsResponse {
|
|
42
|
+
objects: (ObjectResponse | Error)[];
|
|
43
|
+
}
|
|
44
|
+
interface GetOwnedObjectsResponse {
|
|
45
|
+
objects: ObjectResponse[];
|
|
46
|
+
hasNextPage: boolean;
|
|
47
|
+
cursor: string | null;
|
|
48
|
+
}
|
|
49
|
+
interface GetCoinsResponse {
|
|
50
|
+
objects: CoinResponse[];
|
|
51
|
+
hasNextPage: boolean;
|
|
52
|
+
cursor: string | null;
|
|
53
|
+
}
|
|
54
|
+
interface ObjectResponse {
|
|
55
|
+
id: string;
|
|
56
|
+
version: string;
|
|
57
|
+
digest: string;
|
|
58
|
+
owner: ObjectOwner;
|
|
59
|
+
type: string;
|
|
60
|
+
content: Uint8Array;
|
|
61
|
+
}
|
|
62
|
+
interface CoinResponse extends ObjectResponse {
|
|
63
|
+
balance: bigint;
|
|
64
|
+
}
|
|
65
|
+
/** Balance methods */
|
|
66
|
+
interface TransportMethods {
|
|
67
|
+
getBalance?: (options: GetBalanceOptions) => Promise<GetBalanceResponse>;
|
|
68
|
+
getAllBalances?: (options: GetAllBalancesOptions) => Promise<GetAllBalancesResponse>;
|
|
69
|
+
}
|
|
70
|
+
interface GetBalanceOptions {
|
|
71
|
+
address: string;
|
|
72
|
+
coinType: string;
|
|
73
|
+
}
|
|
74
|
+
interface CoinBalance {
|
|
75
|
+
coinType: string;
|
|
76
|
+
balance: bigint;
|
|
77
|
+
}
|
|
78
|
+
interface GetBalanceResponse {
|
|
79
|
+
balance: CoinBalance;
|
|
80
|
+
}
|
|
81
|
+
interface GetAllBalancesOptions {
|
|
82
|
+
address: string;
|
|
83
|
+
limit?: number;
|
|
84
|
+
cursor?: string | null;
|
|
85
|
+
}
|
|
86
|
+
interface GetAllBalancesResponse {
|
|
87
|
+
balances: CoinBalance[];
|
|
88
|
+
hasNextPage: boolean;
|
|
89
|
+
cursor: string | null;
|
|
90
|
+
}
|
|
91
|
+
/** Transaction methods */
|
|
92
|
+
interface TransportMethods {
|
|
93
|
+
getTransaction?: (options: GetTransactionOptions) => Promise<GetTransactionResponse>;
|
|
94
|
+
executeTransaction?: (options: ExecuteTransactionOptions) => Promise<ExecuteTransactionResponse>;
|
|
95
|
+
dryRunTransaction?: (options: DryRunTransactionOptions) => Promise<DryRunTransactionResponse>;
|
|
96
|
+
}
|
|
97
|
+
interface TransactionResponse {
|
|
98
|
+
digest: string;
|
|
99
|
+
signatures: string[];
|
|
100
|
+
bcs: Uint8Array;
|
|
101
|
+
effects: Uint8Array;
|
|
102
|
+
events?: Uint8Array;
|
|
103
|
+
}
|
|
104
|
+
interface GetTransactionOptions {
|
|
105
|
+
digest: string;
|
|
106
|
+
}
|
|
107
|
+
interface GetTransactionResponse {
|
|
108
|
+
transaction: TransactionResponse;
|
|
109
|
+
}
|
|
110
|
+
interface ExecuteTransactionOptions {
|
|
111
|
+
transaction: Uint8Array;
|
|
112
|
+
signatures: string[];
|
|
113
|
+
}
|
|
114
|
+
interface DryRunTransactionOptions {
|
|
115
|
+
transaction: Uint8Array;
|
|
116
|
+
}
|
|
117
|
+
interface DryRunTransactionResponse {
|
|
118
|
+
transaction: TransactionResponse;
|
|
119
|
+
}
|
|
120
|
+
interface ExecuteTransactionResponse {
|
|
121
|
+
transaction: TransactionResponse;
|
|
122
|
+
}
|
|
123
|
+
interface TransportMethods {
|
|
124
|
+
getReferenceGasPrice?: () => Promise<GetReferenceGasPriceResponse>;
|
|
125
|
+
}
|
|
126
|
+
interface GetReferenceGasPriceResponse {
|
|
127
|
+
referenceGasPrice: bigint;
|
|
128
|
+
}
|
|
129
|
+
/** ObjectOwner types */
|
|
130
|
+
interface AddressOwner {
|
|
131
|
+
$kind: 'AddressOwner';
|
|
132
|
+
AddressOwner: string;
|
|
133
|
+
}
|
|
134
|
+
interface ParentOwner {
|
|
135
|
+
$kind: 'ObjectOwner';
|
|
136
|
+
ObjectOwner: string;
|
|
137
|
+
}
|
|
138
|
+
interface SharedOwner {
|
|
139
|
+
$kind: 'Shared';
|
|
140
|
+
Shared: {
|
|
141
|
+
initialSharedVersion: string;
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
interface ImmutableOwner {
|
|
145
|
+
$kind: 'Immutable';
|
|
146
|
+
Immutable: true;
|
|
147
|
+
}
|
|
148
|
+
interface ConsensusV2Owner {
|
|
149
|
+
$kind: 'ConsensusV2';
|
|
150
|
+
ConsensusV2Owner: {
|
|
151
|
+
authenticator: ConsensusV2Authenticator;
|
|
152
|
+
startVersion: string;
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
interface SingleOwnerAuthenticator {
|
|
156
|
+
$kind: 'SingleOwner';
|
|
157
|
+
SingleOwner: string;
|
|
158
|
+
}
|
|
159
|
+
type ConsensusV2Authenticator = SingleOwnerAuthenticator;
|
|
160
|
+
type ObjectOwner = AddressOwner | ParentOwner | SharedOwner | ImmutableOwner | ConsensusV2Owner;
|
|
161
|
+
/** Effects */
|
|
162
|
+
interface TransactionEffects {
|
|
163
|
+
bcs: Uint8Array;
|
|
164
|
+
digest: string;
|
|
165
|
+
version: number;
|
|
166
|
+
status: ExecutionStatus;
|
|
167
|
+
epoch: bigint | null;
|
|
168
|
+
gasUsed: GasCostSummary;
|
|
169
|
+
transactionDigest: string;
|
|
170
|
+
gasObject: ChangedObject;
|
|
171
|
+
eventsDigest: string | null;
|
|
172
|
+
dependencies: string[];
|
|
173
|
+
lamportVersion: bigint | null;
|
|
174
|
+
changedObjects: ChangedObject[];
|
|
175
|
+
unchangedSharedObjects: UnchangedSharedObject[];
|
|
176
|
+
auxiliaryDataDigest: string | null;
|
|
177
|
+
}
|
|
178
|
+
interface ChangedObject {
|
|
179
|
+
id: string;
|
|
180
|
+
inputState: 'Unknown' | 'DoesNotExist' | 'Exists';
|
|
181
|
+
inputVersion: bigint | null;
|
|
182
|
+
inputDigest: string | null;
|
|
183
|
+
inputOwner: ObjectOwner | null;
|
|
184
|
+
outputState: 'Unknown' | 'DoesNotExist' | 'ObjectWrite' | 'PackageWrite';
|
|
185
|
+
outputVersion: bigint | null;
|
|
186
|
+
outputDigest: string | null;
|
|
187
|
+
outputOwner: ObjectOwner | null;
|
|
188
|
+
idOperation: 'Unknown' | 'None' | 'Created' | 'Deleted';
|
|
189
|
+
objectType: string | null;
|
|
190
|
+
}
|
|
191
|
+
interface GasCostSummary {
|
|
192
|
+
computationCost: bigint;
|
|
193
|
+
storageCost: bigint;
|
|
194
|
+
storageRebate: bigint;
|
|
195
|
+
nonRefundableStorageFee: bigint;
|
|
196
|
+
}
|
|
197
|
+
type ExecutionStatus = {
|
|
198
|
+
success: true;
|
|
199
|
+
error: null;
|
|
200
|
+
} | {
|
|
201
|
+
success: false;
|
|
202
|
+
error: string;
|
|
203
|
+
};
|
|
204
|
+
interface UnchangedSharedObject {
|
|
205
|
+
kind: 'Unknown' | 'ReadOnlyRoot' | 'MutateDeleted' | 'ReadDeleted' | 'Canceled' | 'PerEpochConfig';
|
|
206
|
+
objectId: string;
|
|
207
|
+
version: bigint;
|
|
208
|
+
digest: string;
|
|
209
|
+
objectType: string;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -29,7 +29,7 @@ export declare class ParallelTransactionExecutor {
|
|
|
29
29
|
constructor(options: ParallelTransactionExecutorOptions);
|
|
30
30
|
resetCache(): Promise<void>;
|
|
31
31
|
waitForLastTransaction(): Promise<void>;
|
|
32
|
-
executeTransaction(transaction: Transaction, options?: SuiTransactionBlockResponseOptions): Promise<{
|
|
32
|
+
executeTransaction(transaction: Transaction, options?: SuiTransactionBlockResponseOptions, additionalSignatures?: string[]): Promise<{
|
|
33
33
|
digest: string;
|
|
34
34
|
effects: string;
|
|
35
35
|
data: SuiTransactionBlockResponse;
|
|
@@ -72,12 +72,12 @@ class ParallelTransactionExecutor {
|
|
|
72
72
|
async waitForLastTransaction() {
|
|
73
73
|
await __privateMethod(this, _ParallelTransactionExecutor_instances, updateCache_fn).call(this, () => __privateMethod(this, _ParallelTransactionExecutor_instances, waitForLastDigest_fn).call(this));
|
|
74
74
|
}
|
|
75
|
-
async executeTransaction(transaction, options) {
|
|
75
|
+
async executeTransaction(transaction, options, additionalSignatures = []) {
|
|
76
76
|
const { promise, resolve, reject } = promiseWithResolvers();
|
|
77
77
|
const usedObjects = await __privateMethod(this, _ParallelTransactionExecutor_instances, getUsedObjects_fn).call(this, transaction);
|
|
78
78
|
const execute = () => {
|
|
79
79
|
__privateGet(this, _executeQueue).runTask(() => {
|
|
80
|
-
const promise2 = __privateMethod(this, _ParallelTransactionExecutor_instances, execute_fn).call(this, transaction, usedObjects, options);
|
|
80
|
+
const promise2 = __privateMethod(this, _ParallelTransactionExecutor_instances, execute_fn).call(this, transaction, usedObjects, options, additionalSignatures);
|
|
81
81
|
return promise2.then(resolve, reject);
|
|
82
82
|
});
|
|
83
83
|
};
|
|
@@ -143,7 +143,7 @@ getUsedObjects_fn = async function(transaction) {
|
|
|
143
143
|
await transaction.prepareForSerialization({ client: __privateGet(this, _client) });
|
|
144
144
|
return usedObjects;
|
|
145
145
|
};
|
|
146
|
-
execute_fn = async function(transaction, usedObjects, options) {
|
|
146
|
+
execute_fn = async function(transaction, usedObjects, options, additionalSignatures = []) {
|
|
147
147
|
let gasCoin;
|
|
148
148
|
try {
|
|
149
149
|
transaction.setSenderIfNotSet(__privateGet(this, _signer).toSuiAddress());
|
|
@@ -169,7 +169,7 @@ execute_fn = async function(transaction, usedObjects, options) {
|
|
|
169
169
|
const { signature } = await __privateGet(this, _signer).signTransaction(bytes);
|
|
170
170
|
const results = await __privateGet(this, _cache).executeTransaction({
|
|
171
171
|
transaction: bytes,
|
|
172
|
-
signature,
|
|
172
|
+
signature: [signature, ...additionalSignatures],
|
|
173
173
|
options: {
|
|
174
174
|
...options,
|
|
175
175
|
showEffects: true
|