@sovereign-sdk/web3 0.0.12 → 0.0.14
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/README.md +119 -0
- package/dist/index.d.mts +327 -23
- package/dist/index.d.ts +327 -23
- package/dist/index.js +221 -64
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +215 -63
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -3
package/dist/index.js
CHANGED
|
@@ -19,6 +19,18 @@ var __spreadValues = (a, b) => {
|
|
|
19
19
|
}
|
|
20
20
|
return a;
|
|
21
21
|
};
|
|
22
|
+
var __objRest = (source, exclude) => {
|
|
23
|
+
var target = {};
|
|
24
|
+
for (var prop in source)
|
|
25
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
26
|
+
target[prop] = source[prop];
|
|
27
|
+
if (source != null && __getOwnPropSymbols)
|
|
28
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
29
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
30
|
+
target[prop] = source[prop];
|
|
31
|
+
}
|
|
32
|
+
return target;
|
|
33
|
+
};
|
|
22
34
|
var __export = (target, all) => {
|
|
23
35
|
for (var name in all)
|
|
24
36
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -64,20 +76,23 @@ var __async = (__this, __arguments, generator) => {
|
|
|
64
76
|
// src/index.ts
|
|
65
77
|
var src_exports = {};
|
|
66
78
|
__export(src_exports, {
|
|
79
|
+
InvalidRollupConfigError: () => InvalidRollupConfigError,
|
|
80
|
+
Rollup: () => Rollup,
|
|
81
|
+
Schema: () => import_universal_wallet_wasm2.Schema,
|
|
67
82
|
SovereignClient: () => SovereignClient2,
|
|
68
83
|
SovereignError: () => SovereignError,
|
|
69
84
|
StandardRollup: () => StandardRollup,
|
|
70
|
-
createSerializer: () => createSerializer
|
|
85
|
+
createSerializer: () => createSerializer,
|
|
86
|
+
createStandardRollup: () => createStandardRollup,
|
|
87
|
+
standardTypeBuilder: () => standardTypeBuilder
|
|
71
88
|
});
|
|
72
89
|
module.exports = __toCommonJS(src_exports);
|
|
73
90
|
|
|
74
|
-
// src/rollup.ts
|
|
91
|
+
// src/rollup/rollup.ts
|
|
75
92
|
var import_client = __toESM(require("@sovereign-sdk/client"));
|
|
93
|
+
var import_utils = require("@sovereign-sdk/utils");
|
|
76
94
|
var import_js_base64 = require("js-base64");
|
|
77
95
|
|
|
78
|
-
// src/serialization.ts
|
|
79
|
-
var import_universal_wallet_wasm = require("@sovereign-sdk/universal-wallet-wasm");
|
|
80
|
-
|
|
81
96
|
// src/errors.ts
|
|
82
97
|
var SovereignError = class extends Error {
|
|
83
98
|
constructor(message) {
|
|
@@ -86,8 +101,11 @@ var SovereignError = class extends Error {
|
|
|
86
101
|
this.stack = new Error().stack;
|
|
87
102
|
}
|
|
88
103
|
};
|
|
104
|
+
var InvalidRollupConfigError = class extends SovereignError {
|
|
105
|
+
};
|
|
89
106
|
|
|
90
107
|
// src/serialization.ts
|
|
108
|
+
var import_universal_wallet_wasm = require("@sovereign-sdk/universal-wallet-wasm");
|
|
91
109
|
function loadSchema(schemaObject) {
|
|
92
110
|
try {
|
|
93
111
|
return import_universal_wallet_wasm.Schema.fromJSON(JSON.stringify(schemaObject));
|
|
@@ -134,26 +152,62 @@ function createSerializer(schemaObject) {
|
|
|
134
152
|
};
|
|
135
153
|
}
|
|
136
154
|
|
|
137
|
-
// src/
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
155
|
+
// src/rollup/rollup.ts
|
|
156
|
+
var Rollup = class {
|
|
157
|
+
/**
|
|
158
|
+
* Creates a new rollup client.
|
|
159
|
+
*
|
|
160
|
+
* @throws {@link InvalidRollupConfigError} - If no schema or serializer is provided.
|
|
161
|
+
*
|
|
162
|
+
* @param config - The configuration for the rollup client.
|
|
163
|
+
* @param typeBuilder - The type builder for the rollup.
|
|
164
|
+
*/
|
|
165
|
+
constructor(config, typeBuilder) {
|
|
166
|
+
var _a;
|
|
167
|
+
if (config.serializer) {
|
|
168
|
+
this._serializer = config.serializer;
|
|
169
|
+
} else {
|
|
170
|
+
if (!config.schema) {
|
|
171
|
+
throw new InvalidRollupConfigError(
|
|
172
|
+
"At least 1 of config.schema or config.serializer must be provided"
|
|
173
|
+
);
|
|
174
|
+
}
|
|
175
|
+
this._serializer = createSerializer(config.schema);
|
|
144
176
|
}
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
return hex;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// src/rollup.ts
|
|
151
|
-
var StandardRollup = class {
|
|
152
|
-
constructor(config) {
|
|
153
|
-
this._client = new import_client.default({ baseURL: config.url });
|
|
154
|
-
this._serializer = createSerializer(config.schema);
|
|
177
|
+
this._client = (_a = config.client) != null ? _a : new import_client.default({ baseURL: config.url });
|
|
155
178
|
this._config = config;
|
|
179
|
+
this._typeBuilder = typeBuilder;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Retrieve dedup information about the provided address.
|
|
183
|
+
*
|
|
184
|
+
* @param address - The public key to dedup.
|
|
185
|
+
*/
|
|
186
|
+
dedup(address) {
|
|
187
|
+
return __async(this, null, function* () {
|
|
188
|
+
const response = yield this.rollup.addresses.dedup((0, import_utils.bytesToHex)(address));
|
|
189
|
+
return response.data;
|
|
190
|
+
});
|
|
156
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Submits a batch to the rollup.
|
|
194
|
+
*
|
|
195
|
+
* @param batch - The batch of transactions to submit.
|
|
196
|
+
*/
|
|
197
|
+
submitBatch(batch) {
|
|
198
|
+
return __async(this, null, function* () {
|
|
199
|
+
const transactions = batch.map((tx) => {
|
|
200
|
+
const txBytes = this._serializer.serializeTx(tx);
|
|
201
|
+
return import_js_base64.Base64.fromUint8Array(txBytes);
|
|
202
|
+
});
|
|
203
|
+
return this.sequencer.batches.create({ transactions });
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Submits a transaction to the rollup.
|
|
208
|
+
*
|
|
209
|
+
* @param transaction - The transaction to submit.
|
|
210
|
+
*/
|
|
157
211
|
submitTransaction(transaction) {
|
|
158
212
|
return __async(this, null, function* () {
|
|
159
213
|
const serializedTx = this.serializer.serializeTx(transaction);
|
|
@@ -162,83 +216,186 @@ var StandardRollup = class {
|
|
|
162
216
|
});
|
|
163
217
|
});
|
|
164
218
|
}
|
|
219
|
+
/**
|
|
220
|
+
* Signs and submits a transaction to the rollup.
|
|
221
|
+
* Utilizes the provided signer to sign the transaction.
|
|
222
|
+
*
|
|
223
|
+
* @param unsignedTx - The unsigned transaction to sign and submit.
|
|
224
|
+
* @param {SignerParams} params - The params for signing and submitting the transaction.
|
|
225
|
+
*/
|
|
165
226
|
signAndSubmitTransaction(_0, _1) {
|
|
166
227
|
return __async(this, arguments, function* (unsignedTx, { signer }) {
|
|
167
228
|
const serializedUnsignedTx = this.serializer.serializeUnsignedTx(unsignedTx);
|
|
168
229
|
const signature = yield signer.sign(serializedUnsignedTx);
|
|
169
230
|
const publicKey = yield signer.publicKey();
|
|
170
|
-
const
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
}, unsignedTx);
|
|
231
|
+
const context = {
|
|
232
|
+
unsignedTx,
|
|
233
|
+
sender: publicKey,
|
|
234
|
+
signature,
|
|
235
|
+
rollup: this
|
|
236
|
+
};
|
|
237
|
+
const tx = yield this._typeBuilder.transaction(context);
|
|
178
238
|
const result = yield this.submitTransaction(tx);
|
|
179
239
|
return { transaction: tx, response: result };
|
|
180
240
|
});
|
|
181
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* Performs a runtime call transaction.
|
|
244
|
+
* Utilizes the provided signer to sign the transaction.
|
|
245
|
+
*
|
|
246
|
+
* @param runtimeCall - The runtime message to call.
|
|
247
|
+
* @param {CallParams<S>} params - The params for submitting a runtime call transaction.
|
|
248
|
+
*/
|
|
182
249
|
call(_0, _1) {
|
|
183
|
-
return __async(this, arguments, function* (
|
|
184
|
-
const runtimeCall = this.serializer.serializeRuntimeCall(runtimeMessage);
|
|
250
|
+
return __async(this, arguments, function* (runtimeCall, { signer, overrides }) {
|
|
185
251
|
const publicKey = yield signer.publicKey();
|
|
186
|
-
const
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
details: txDetails != null ? txDetails : this._config.defaultTxDetails
|
|
252
|
+
const context = {
|
|
253
|
+
runtimeCall,
|
|
254
|
+
sender: publicKey,
|
|
255
|
+
rollup: this,
|
|
256
|
+
overrides: overrides != null ? overrides : {}
|
|
192
257
|
};
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
signer
|
|
197
|
-
}
|
|
198
|
-
);
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
simulate(_0, _1) {
|
|
202
|
-
return __async(this, arguments, function* (runtimeMessage, { signer, txDetails }) {
|
|
203
|
-
const runtimeCall = this.serializer.serializeRuntimeCall(runtimeMessage);
|
|
204
|
-
const publicKey = yield signer.publicKey();
|
|
205
|
-
const dedup = yield this.rollup.addresses.dedup(bytesToHex(publicKey));
|
|
206
|
-
const nonce = dedup.data.nonce;
|
|
207
|
-
const response = yield this.rollup.simulate({
|
|
208
|
-
body: {
|
|
209
|
-
details: txDetails,
|
|
210
|
-
encoded_call_message: bytesToHex(runtimeCall),
|
|
211
|
-
nonce,
|
|
212
|
-
sender_pub_key: bytesToHex(publicKey)
|
|
213
|
-
}
|
|
258
|
+
const unsignedTx = yield this._typeBuilder.unsignedTransaction(context);
|
|
259
|
+
return this.signAndSubmitTransaction(unsignedTx, {
|
|
260
|
+
signer
|
|
214
261
|
});
|
|
215
|
-
return response.data;
|
|
216
262
|
});
|
|
217
263
|
}
|
|
264
|
+
/**
|
|
265
|
+
* A ledger client that can be used to query the ledger.
|
|
266
|
+
*/
|
|
218
267
|
get ledger() {
|
|
219
|
-
return this.
|
|
268
|
+
return this.http.ledger;
|
|
220
269
|
}
|
|
270
|
+
/**
|
|
271
|
+
* A sequencer client that can be used to submit transactions & batches to the rollup.
|
|
272
|
+
*/
|
|
221
273
|
get sequencer() {
|
|
222
|
-
return this.
|
|
274
|
+
return this.http.sequencer;
|
|
223
275
|
}
|
|
276
|
+
/**
|
|
277
|
+
* A rollup client that can be used to perform operations on the rollup.
|
|
278
|
+
*/
|
|
224
279
|
get rollup() {
|
|
225
|
-
return this.
|
|
280
|
+
return this.http.rollup;
|
|
226
281
|
}
|
|
282
|
+
/**
|
|
283
|
+
* A client that can be used to perform HTTP requests to the Sovereign API.
|
|
284
|
+
* This can be used as an escape hatch to execute arbitrary requests to the Sovereign API
|
|
285
|
+
* if the operation is not supported by `ledger`, `sequencer`, or `rollup` clients.
|
|
286
|
+
*/
|
|
227
287
|
get http() {
|
|
228
288
|
return this._client;
|
|
229
289
|
}
|
|
290
|
+
/**
|
|
291
|
+
* The serializer for the rollup.
|
|
292
|
+
* Can be used to serialize transactions, runtime calls, etc.
|
|
293
|
+
* See {@link RollupSerializer} for more information.
|
|
294
|
+
*/
|
|
230
295
|
get serializer() {
|
|
231
296
|
return this._serializer;
|
|
232
297
|
}
|
|
298
|
+
/**
|
|
299
|
+
* The context for the rollup.
|
|
300
|
+
*/
|
|
301
|
+
get context() {
|
|
302
|
+
return this._config.context;
|
|
303
|
+
}
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
// src/rollup/standard-rollup.ts
|
|
307
|
+
var import_utils2 = require("@sovereign-sdk/utils");
|
|
308
|
+
var useOrFetchNonce = (_0) => __async(void 0, [_0], function* ({
|
|
309
|
+
sender,
|
|
310
|
+
rollup,
|
|
311
|
+
overrides
|
|
312
|
+
}) {
|
|
313
|
+
if ((overrides == null ? void 0 : overrides.nonce) !== void 0 && overrides.nonce >= 0) {
|
|
314
|
+
return overrides.nonce;
|
|
315
|
+
}
|
|
316
|
+
const { data } = yield rollup.rollup.addresses.dedup((0, import_utils2.bytesToHex)(sender));
|
|
317
|
+
return data.nonce;
|
|
318
|
+
});
|
|
319
|
+
function standardTypeBuilder() {
|
|
320
|
+
return {
|
|
321
|
+
unsignedTransaction(context) {
|
|
322
|
+
return __async(this, null, function* () {
|
|
323
|
+
const { rollup, runtimeCall } = context;
|
|
324
|
+
const runtime_msg = rollup.serializer.serializeRuntimeCall(runtimeCall);
|
|
325
|
+
const _a2 = context.overrides, { nonce: _ } = _a2, overrides = __objRest(_a2, ["nonce"]);
|
|
326
|
+
const nonce = yield useOrFetchNonce(context);
|
|
327
|
+
const details = __spreadValues(__spreadValues({}, rollup.context.defaultTxDetails), overrides.details);
|
|
328
|
+
return {
|
|
329
|
+
runtime_msg,
|
|
330
|
+
nonce,
|
|
331
|
+
details
|
|
332
|
+
};
|
|
333
|
+
});
|
|
334
|
+
},
|
|
335
|
+
transaction(_0) {
|
|
336
|
+
return __async(this, arguments, function* ({
|
|
337
|
+
sender,
|
|
338
|
+
signature,
|
|
339
|
+
unsignedTx
|
|
340
|
+
}) {
|
|
341
|
+
return __spreadValues({
|
|
342
|
+
pub_key: {
|
|
343
|
+
pub_key: sender
|
|
344
|
+
},
|
|
345
|
+
signature: {
|
|
346
|
+
msg_sig: signature
|
|
347
|
+
}
|
|
348
|
+
}, unsignedTx);
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
var StandardRollup = class extends Rollup {
|
|
354
|
+
/**
|
|
355
|
+
* Simulates a runtime call transaction.
|
|
356
|
+
*
|
|
357
|
+
* This method can be useful to estimate the gas cost of a runtime call transaction.
|
|
358
|
+
*
|
|
359
|
+
* @param runtimeMessage - The runtime message to call.
|
|
360
|
+
*/
|
|
361
|
+
simulate(_0, _1) {
|
|
362
|
+
return __async(this, arguments, function* (runtimeMessage, { signer, txDetails, nonce: overrideNonce }) {
|
|
363
|
+
const runtimeCall = this.serializer.serializeRuntimeCall(runtimeMessage);
|
|
364
|
+
const publicKey = yield signer.publicKey();
|
|
365
|
+
const nonce = yield useOrFetchNonce({
|
|
366
|
+
sender: publicKey,
|
|
367
|
+
rollup: this,
|
|
368
|
+
overrides: { nonce: overrideNonce }
|
|
369
|
+
});
|
|
370
|
+
const response = yield this.rollup.simulate({
|
|
371
|
+
body: {
|
|
372
|
+
details: txDetails,
|
|
373
|
+
encoded_call_message: (0, import_utils2.bytesToHex)(runtimeCall),
|
|
374
|
+
nonce,
|
|
375
|
+
sender_pub_key: (0, import_utils2.bytesToHex)(publicKey)
|
|
376
|
+
}
|
|
377
|
+
});
|
|
378
|
+
return response.data;
|
|
379
|
+
});
|
|
380
|
+
}
|
|
233
381
|
};
|
|
382
|
+
function createStandardRollup(config, typeBuilderOverrides) {
|
|
383
|
+
return new StandardRollup(config, __spreadValues(__spreadValues({}, standardTypeBuilder()), typeBuilderOverrides));
|
|
384
|
+
}
|
|
234
385
|
|
|
235
386
|
// src/index.ts
|
|
236
387
|
var SovereignClient2 = __toESM(require("@sovereign-sdk/client"));
|
|
388
|
+
var import_universal_wallet_wasm2 = require("@sovereign-sdk/universal-wallet-wasm");
|
|
237
389
|
// Annotate the CommonJS export names for ESM import in node:
|
|
238
390
|
0 && (module.exports = {
|
|
391
|
+
InvalidRollupConfigError,
|
|
392
|
+
Rollup,
|
|
393
|
+
Schema,
|
|
239
394
|
SovereignClient,
|
|
240
395
|
SovereignError,
|
|
241
396
|
StandardRollup,
|
|
242
|
-
createSerializer
|
|
397
|
+
createSerializer,
|
|
398
|
+
createStandardRollup,
|
|
399
|
+
standardTypeBuilder
|
|
243
400
|
});
|
|
244
401
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/rollup.ts","../src/serialization.ts","../src/errors.ts","../src/utils.ts"],"sourcesContent":["export * from \"./rollup\";\nexport * from \"./serialization\";\nexport * from \"./errors\";\nexport * from \"./type-spec\";\nexport * as SovereignClient from \"@sovereign-sdk/client\";\n","import SovereignClient from \"@sovereign-sdk/client\";\nimport type { Signer } from \"@sovereign-sdk/signers\";\nimport { Base64 } from \"js-base64\";\nimport {\n type RollupSchema,\n type RollupSerializer,\n createSerializer,\n} from \"./serialization\";\nimport type { BaseTypeSpec } from \"./type-spec\";\nimport { bytesToHex } from \"./utils\";\n\nexport type TransactionResult<Tx> = {\n response: SovereignClient.Sequencer.TxCreateResponse;\n transaction: Tx;\n};\n\nexport type RollupConfig = {\n url?: string;\n schema: RollupSchema;\n defaultTxDetails: TxDetails;\n};\n\ntype TxDetails = {\n max_priority_fee_bips: number;\n max_fee: number;\n gas_limit?: number[];\n chain_id: number;\n};\n\ntype SignerParams = {\n signer: Signer;\n};\n\ntype CallParams = {\n txDetails?: TxDetails;\n} & SignerParams;\n\ntype SimulateParams = {\n txDetails: TxDetails;\n} & SignerParams;\n\nexport class StandardRollup<T extends BaseTypeSpec = BaseTypeSpec> {\n private readonly _config: RollupConfig;\n private readonly _client: SovereignClient;\n private readonly _serializer: RollupSerializer;\n\n constructor(config: RollupConfig) {\n this._client = new SovereignClient({ baseURL: config.url });\n this._serializer = createSerializer(config.schema);\n this._config = config;\n }\n\n async submitTransaction(\n transaction: T[\"Transaction\"],\n ): Promise<SovereignClient.Sequencer.TxCreateResponse> {\n const serializedTx = this.serializer.serializeTx(transaction);\n\n return this.sequencer.txs.create({\n body: Base64.fromUint8Array(serializedTx),\n });\n }\n\n async signAndSubmitTransaction(\n unsignedTx: T[\"UnsignedTransaction\"],\n { signer }: SignerParams,\n ): Promise<TransactionResult<T[\"Transaction\"]>> {\n const serializedUnsignedTx =\n this.serializer.serializeUnsignedTx(unsignedTx);\n const signature = await signer.sign(serializedUnsignedTx);\n const publicKey = await signer.publicKey();\n const tx = {\n pub_key: {\n pub_key: publicKey,\n },\n signature: {\n msg_sig: signature,\n },\n ...unsignedTx,\n } as T[\"Transaction\"];\n const result = await this.submitTransaction(tx);\n\n return { transaction: tx, response: result };\n }\n\n async call(\n runtimeMessage: T[\"RuntimeCall\"],\n { signer, txDetails }: CallParams,\n ): Promise<TransactionResult<T[\"Transaction\"]>> {\n const runtimeCall = this.serializer.serializeRuntimeCall(runtimeMessage);\n const publicKey = await signer.publicKey();\n const dedup = await this.rollup.addresses.dedup(bytesToHex(publicKey));\n // biome-ignore lint/suspicious/noExplicitAny: fix later\n const nonce = (dedup.data as any).nonce as number;\n const unsignedTx = {\n runtime_msg: runtimeCall,\n nonce,\n details: txDetails ?? this._config.defaultTxDetails,\n };\n\n return this.signAndSubmitTransaction(\n unsignedTx as T[\"UnsignedTransaction\"],\n {\n signer,\n },\n );\n }\n\n async simulate(\n runtimeMessage: T[\"RuntimeCall\"],\n { signer, txDetails }: SimulateParams,\n ): Promise<SovereignClient.Rollup.SimulateExecutionResponse> {\n const runtimeCall = this.serializer.serializeRuntimeCall(runtimeMessage);\n const publicKey = await signer.publicKey();\n const dedup = await this.rollup.addresses.dedup(bytesToHex(publicKey));\n // biome-ignore lint/suspicious/noExplicitAny: fix later\n const nonce = (dedup.data as any).nonce as number;\n const response = await this.rollup.simulate({\n body: {\n details: txDetails,\n encoded_call_message: bytesToHex(runtimeCall),\n nonce,\n sender_pub_key: bytesToHex(publicKey),\n },\n });\n\n // biome-ignore lint/style/noNonNullAssertion: fix later\n return response.data!;\n }\n\n get ledger(): SovereignClient.Ledger {\n return this._client.ledger;\n }\n\n get sequencer(): SovereignClient.Sequencer {\n return this._client.sequencer;\n }\n\n get rollup(): SovereignClient.Rollup {\n return this._client.rollup;\n }\n\n get http(): SovereignClient {\n return this._client;\n }\n\n get serializer(): RollupSerializer {\n return this._serializer;\n }\n}\n","import { KnownTypeId, Schema } from \"@sovereign-sdk/universal-wallet-wasm\";\nimport { SovereignError } from \"./errors\";\n\nexport type RollupSchema = object;\n\nexport type RollupSerializer = {\n serialize(input: unknown, index: number): Uint8Array;\n serializeRuntimeCall(input: unknown): Uint8Array;\n serializeUnsignedTx(input: unknown): Uint8Array;\n serializeTx(input: unknown): Uint8Array;\n};\n\nfunction loadSchema(schemaObject: RollupSchema): Schema {\n try {\n return Schema.fromJSON(JSON.stringify(schemaObject));\n } catch (err) {\n throw new SovereignError(`Failed to create runtime schema due to: ${err}`);\n }\n}\n\nexport function createSerializer(schemaObject: RollupSchema): RollupSerializer {\n const schema = loadSchema(schemaObject);\n\n return {\n serialize(input: unknown, index: number): Uint8Array {\n try {\n return schema.jsonToBorsh(\n index,\n JSON.stringify(input, (_, value) => {\n if (value instanceof Uint8Array) {\n return Array.from(value);\n }\n return value;\n }),\n );\n } catch (err) {\n throw new SovereignError(`Failed to serialize input due to: ${err}`);\n }\n },\n serializeRuntimeCall(input: unknown): Uint8Array {\n return this.serialize(\n input,\n schema.knownTypeIndex(KnownTypeId.RuntimeCall),\n );\n },\n serializeUnsignedTx(input: unknown): Uint8Array {\n return this.serialize(\n input,\n schema.knownTypeIndex(KnownTypeId.UnsignedTransaction),\n );\n },\n serializeTx(input: unknown): Uint8Array {\n return this.serialize(\n input,\n schema.knownTypeIndex(KnownTypeId.Transaction),\n );\n },\n };\n}\n","export class SovereignError extends Error {\n constructor(message: string) {\n super(message);\n\n this.name = this.constructor.name;\n this.stack = new Error().stack;\n }\n}\n","export function hexToBytes(hex: string) {\n if (hex.length && hex.length % 2 !== 0) {\n throw new Error(`Invalid hex string length: ${hex.length}`);\n }\n\n const matches = hex.match(/[\\da-f]{2}/gi);\n\n if (!matches) {\n throw new Error(\"Invalid hex string: No valid hex digits found\");\n }\n\n return new Uint8Array(matches.map((h) => Number.parseInt(h, 16)));\n}\n\nexport function bytesToHex(arr: Uint8Array): string {\n let hex = \"\";\n for (let i = 0; i < arr.length; i++) {\n let hexValue = arr[i].toString(16);\n if (hexValue.length === 1) {\n hexValue = `0${hexValue}`;\n }\n hex += hexValue;\n }\n return hex;\n}\n"],"mappings":"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","names":["SovereignClient","SovereignClient","SovereignClient"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/rollup/rollup.ts","../src/errors.ts","../src/serialization.ts","../src/rollup/standard-rollup.ts"],"sourcesContent":["export * from \"./rollup\";\nexport * from \"./serialization\";\nexport * from \"./errors\";\nexport * from \"./type-spec\";\nexport * as SovereignClient from \"@sovereign-sdk/client\";\nexport { Schema } from \"@sovereign-sdk/universal-wallet-wasm\";\n","import SovereignClient from \"@sovereign-sdk/client\";\nimport type { Signer } from \"@sovereign-sdk/signers\";\nimport { bytesToHex } from \"@sovereign-sdk/utils\";\nimport { Base64 } from \"js-base64\";\nimport { InvalidRollupConfigError } from \"../errors\";\nimport {\n type RollupSchema,\n type RollupSerializer,\n createSerializer,\n} from \"../serialization\";\nimport type { BaseTypeSpec } from \"../type-spec\";\nimport type { DeepPartial } from \"../utils\";\n\nexport type UnsignedTransactionContext<\n S extends BaseTypeSpec,\n C extends RollupContext,\n> = {\n runtimeCall: S[\"RuntimeCall\"];\n sender: Uint8Array;\n // able to override nonce\n overrides: DeepPartial<S[\"UnsignedTransaction\"]>;\n rollup: Rollup<S, C>;\n};\n\nexport type TransactionContext<\n S extends BaseTypeSpec,\n C extends RollupContext,\n> = {\n unsignedTx: S[\"UnsignedTransaction\"];\n sender: Uint8Array;\n signature: Uint8Array;\n rollup: Rollup<S, C>;\n};\n\nexport type TypeBuilder<S extends BaseTypeSpec, C extends RollupContext> = {\n unsignedTransaction: (\n context: UnsignedTransactionContext<S, C>,\n ) => Promise<S[\"UnsignedTransaction\"]>;\n\n transaction: (context: TransactionContext<S, C>) => Promise<S[\"Transaction\"]>;\n};\n\n/**\n * Arbitrary context that is associated with the rollup.\n */\nexport type RollupContext = Record<string, unknown>;\n\n/**\n * The configuration for a rollup client.\n */\nexport type RollupConfig<C extends RollupContext> = {\n /**\n * The base URL of the rollup full node API.\n */\n url?: string;\n /**\n * The Sovereign SDK client to use for the rollup.\n * If not provided, the default client will be used using {@link RollupConfig.url}.\n */\n client?: SovereignClient;\n /**\n * The schema of the rollup.\n */\n schema?: RollupSchema;\n /**\n * The serializer to use for the rollup.\n * If not provided, a serializer will be created using the provided {@link RollupConfig.schema}.\n */\n serializer?: RollupSerializer;\n /**\n * Arbitrary context that is associated with the rollup.\n */\n context: C;\n};\n\n/**\n * The result of signing and submitting a transaction.\n *\n * @template Tx The type of the transaction\n */\nexport type TransactionResult<Tx> = {\n /**\n * The response from the sequencer.\n */\n response: SovereignClient.Sequencer.TxCreateResponse;\n /**\n * The transaction that was submitted.\n */\n transaction: Tx;\n};\n\n/**\n * The parameters for signing and submitting a transaction.\n */\nexport type SignerParams = {\n /**\n * The signer to use for signing the transaction.\n */\n signer: Signer;\n};\n\n/**\n * The parameters for calling executing a runtime call transaction.\n */\nexport type CallParams<S extends BaseTypeSpec> = {\n overrides?: DeepPartial<S[\"UnsignedTransaction\"]>;\n} & SignerParams;\n\n/**\n * A generic rollup client.\n *\n * @template S - The type specification for the rollup.\n * If not provided, the base type specification will be used which uses `any` for all types.\n * @template C - The context for the rollup.\n */\nexport class Rollup<S extends BaseTypeSpec, C extends RollupContext> {\n private readonly _config: RollupConfig<C>;\n private readonly _client: SovereignClient;\n private readonly _serializer: RollupSerializer;\n private readonly _typeBuilder: TypeBuilder<S, C>;\n\n /**\n * Creates a new rollup client.\n *\n * @throws {@link InvalidRollupConfigError} - If no schema or serializer is provided.\n *\n * @param config - The configuration for the rollup client.\n * @param typeBuilder - The type builder for the rollup.\n */\n constructor(config: RollupConfig<C>, typeBuilder: TypeBuilder<S, C>) {\n if (config.serializer) {\n this._serializer = config.serializer;\n } else {\n if (!config.schema) {\n throw new InvalidRollupConfigError(\n \"At least 1 of config.schema or config.serializer must be provided\",\n );\n }\n this._serializer = createSerializer(config.schema);\n }\n\n this._client =\n config.client ?? new SovereignClient({ baseURL: config.url });\n this._config = config;\n this._typeBuilder = typeBuilder;\n }\n\n /**\n * Retrieve dedup information about the provided address.\n *\n * @param address - The public key to dedup.\n */\n async dedup(address: Uint8Array): Promise<S[\"Dedup\"]> {\n const response = await this.rollup.addresses.dedup(bytesToHex(address));\n return response.data as S[\"Dedup\"];\n }\n\n /**\n * Submits a batch to the rollup.\n *\n * @param batch - The batch of transactions to submit.\n */\n async submitBatch(\n batch: S[\"Transaction\"][],\n ): Promise<SovereignClient.Sequencer.BatchCreateResponse> {\n const transactions = batch.map((tx) => {\n const txBytes = this._serializer.serializeTx(tx);\n return Base64.fromUint8Array(txBytes);\n });\n\n return this.sequencer.batches.create({ transactions });\n }\n\n /**\n * Submits a transaction to the rollup.\n *\n * @param transaction - The transaction to submit.\n */\n async submitTransaction(\n transaction: S[\"Transaction\"],\n ): Promise<SovereignClient.Sequencer.TxCreateResponse> {\n const serializedTx = this.serializer.serializeTx(transaction);\n\n return this.sequencer.txs.create({\n body: Base64.fromUint8Array(serializedTx),\n });\n }\n\n /**\n * Signs and submits a transaction to the rollup.\n * Utilizes the provided signer to sign the transaction.\n *\n * @param unsignedTx - The unsigned transaction to sign and submit.\n * @param {SignerParams} params - The params for signing and submitting the transaction.\n */\n async signAndSubmitTransaction(\n unsignedTx: S[\"UnsignedTransaction\"],\n { signer }: SignerParams,\n ): Promise<TransactionResult<S[\"Transaction\"]>> {\n const serializedUnsignedTx =\n this.serializer.serializeUnsignedTx(unsignedTx);\n const signature = await signer.sign(serializedUnsignedTx);\n const publicKey = await signer.publicKey();\n const context = {\n unsignedTx,\n sender: publicKey,\n signature,\n rollup: this,\n };\n const tx = await this._typeBuilder.transaction(context);\n const result = await this.submitTransaction(tx);\n\n return { transaction: tx, response: result };\n }\n\n /**\n * Performs a runtime call transaction.\n * Utilizes the provided signer to sign the transaction.\n *\n * @param runtimeCall - The runtime message to call.\n * @param {CallParams<S>} params - The params for submitting a runtime call transaction.\n */\n async call(\n runtimeCall: S[\"RuntimeCall\"],\n { signer, overrides }: CallParams<S>,\n ): Promise<TransactionResult<S[\"Transaction\"]>> {\n const publicKey = await signer.publicKey();\n const context = {\n runtimeCall,\n sender: publicKey,\n rollup: this,\n overrides: overrides ?? ({} as DeepPartial<S[\"UnsignedTransaction\"]>),\n };\n const unsignedTx = await this._typeBuilder.unsignedTransaction(context);\n\n return this.signAndSubmitTransaction(unsignedTx, {\n signer,\n });\n }\n\n /**\n * A ledger client that can be used to query the ledger.\n */\n get ledger(): SovereignClient.Ledger {\n return this.http.ledger;\n }\n\n /**\n * A sequencer client that can be used to submit transactions & batches to the rollup.\n */\n get sequencer(): SovereignClient.Sequencer {\n return this.http.sequencer;\n }\n\n /**\n * A rollup client that can be used to perform operations on the rollup.\n */\n get rollup(): SovereignClient.Rollup {\n return this.http.rollup;\n }\n\n /**\n * A client that can be used to perform HTTP requests to the Sovereign API.\n * This can be used as an escape hatch to execute arbitrary requests to the Sovereign API\n * if the operation is not supported by `ledger`, `sequencer`, or `rollup` clients.\n */\n get http(): SovereignClient {\n return this._client;\n }\n\n /**\n * The serializer for the rollup.\n * Can be used to serialize transactions, runtime calls, etc.\n * See {@link RollupSerializer} for more information.\n */\n get serializer(): RollupSerializer {\n return this._serializer;\n }\n\n /**\n * The context for the rollup.\n */\n get context(): C {\n return this._config.context;\n }\n}\n","/**\n * Base error class for Sovereign SDK Web3.\n */\nexport class SovereignError extends Error {\n constructor(message: string) {\n super(message);\n\n this.name = this.constructor.name;\n this.stack = new Error().stack;\n }\n}\n\nexport class InvalidRollupConfigError extends SovereignError {}\n","import { KnownTypeId, Schema } from \"@sovereign-sdk/universal-wallet-wasm\";\nimport { SovereignError } from \"./errors\";\n\n/**\n * A rollup schema is a description of the types that are utilized in the rollup.\n * It is used to serialize and deserialize the types.\n * As well as display them in a human-readable way that is verified by the rollup.\n */\nexport type RollupSchema = object;\n\n/**\n * A serializer is used to serialize rollup types to Borsh bytes.\n *\n * @example\n * ```typescript\n * const serializer = createSerializer(yourSchema);\n * const runtimeCall = {\n * value_setter: {\n * set_value: 100,\n * },\n * };\n * const borshBytes = serializer.serializeRuntimeCall(runtimeCall);\n * ```\n */\nexport type RollupSerializer = {\n /**\n * Serialize an input to Borsh bytes.\n *\n * Treats `Uint8Array` as a plain array of numbers as this is the format used by universal-wallet-wasm\n * to represent Borsh bytes.\n *\n * @param input - The input to serialize.\n * @param index - The index of the type in the schema to serialize.\n * @returns The serialized Borsh bytes.\n */\n serialize(input: unknown, index: number): Uint8Array;\n\n /**\n * Serialize a runtime call to Borsh bytes.\n *\n * @param input - The runtime call to serialize.\n * @returns The serialized Borsh bytes.\n */\n serializeRuntimeCall(input: unknown): Uint8Array;\n\n /**\n * Serialize an unsigned transaction to Borsh bytes.\n *\n * @param input - The unsigned transaction to serialize.\n * @returns The serialized Borsh bytes.\n */\n serializeUnsignedTx(input: unknown): Uint8Array;\n\n /**\n * Serialize a transaction to Borsh bytes.\n *\n * @param input - The transaction to serialize.\n * @returns The serialized Borsh bytes.\n */\n serializeTx(input: unknown): Uint8Array;\n};\n\nfunction loadSchema(schemaObject: RollupSchema): Schema {\n try {\n return Schema.fromJSON(JSON.stringify(schemaObject));\n } catch (err) {\n throw new SovereignError(`Failed to create runtime schema due to: ${err}`);\n }\n}\n\n/**\n * Create a serializer for a rollup schema.\n *\n * @throws {@link SovereignError} - If the schema is invalid.\n * @param schemaObject - The rollup schema.\n * @returns The serializer.\n */\nexport function createSerializer(schemaObject: RollupSchema): RollupSerializer {\n const schema = loadSchema(schemaObject);\n\n return {\n serialize(input: unknown, index: number): Uint8Array {\n try {\n return schema.jsonToBorsh(\n index,\n JSON.stringify(input, (_, value) => {\n if (value instanceof Uint8Array) {\n return Array.from(value);\n }\n return value;\n }),\n );\n } catch (err) {\n throw new SovereignError(`Failed to serialize input due to: ${err}`);\n }\n },\n serializeRuntimeCall(input: unknown): Uint8Array {\n return this.serialize(\n input,\n schema.knownTypeIndex(KnownTypeId.RuntimeCall),\n );\n },\n serializeUnsignedTx(input: unknown): Uint8Array {\n return this.serialize(\n input,\n schema.knownTypeIndex(KnownTypeId.UnsignedTransaction),\n );\n },\n serializeTx(input: unknown): Uint8Array {\n return this.serialize(\n input,\n schema.knownTypeIndex(KnownTypeId.Transaction),\n );\n },\n };\n}\n","import type SovereignClient from \"@sovereign-sdk/client\";\nimport { bytesToHex } from \"@sovereign-sdk/utils\";\nimport {\n Rollup,\n type RollupConfig,\n type SignerParams,\n type TransactionContext,\n type TypeBuilder,\n type UnsignedTransactionContext,\n} from \"./rollup\";\n\nexport type TxDetails = {\n max_priority_fee_bips: number;\n max_fee: number;\n gas_limit?: number[];\n chain_id: number;\n};\n\nexport type UnsignedTransaction = {\n runtime_msg: Uint8Array;\n nonce: number;\n details: TxDetails;\n};\n\nexport type Transaction = {\n pub_key: { pub_key: Uint8Array };\n signature: { msg_sig: Uint8Array };\n} & UnsignedTransaction;\n\nexport type Dedup = {\n nonce: number;\n};\n\nexport type StandardRollupContext = {\n defaultTxDetails: TxDetails;\n};\n\nexport type StandardRollupSpec<RuntimeCall> = {\n UnsignedTransaction: UnsignedTransaction;\n Transaction: Transaction;\n RuntimeCall: RuntimeCall;\n Dedup: Dedup;\n};\n\nconst useOrFetchNonce = async <S extends StandardRollupSpec<unknown>>({\n sender,\n rollup,\n overrides,\n}: Omit<\n UnsignedTransactionContext<S, StandardRollupContext>,\n \"runtimeCall\"\n>) => {\n if (overrides?.nonce !== undefined && overrides.nonce >= 0) {\n return overrides.nonce;\n }\n const { data } = await rollup.rollup.addresses.dedup(bytesToHex(sender));\n\n return (data as S[\"Dedup\"]).nonce;\n};\n\nexport function standardTypeBuilder<\n S extends StandardRollupSpec<unknown>,\n>(): TypeBuilder<S, StandardRollupContext> {\n return {\n async unsignedTransaction(\n context: UnsignedTransactionContext<S, StandardRollupContext>,\n ) {\n const { rollup, runtimeCall } = context;\n const runtime_msg = rollup.serializer.serializeRuntimeCall(runtimeCall);\n const { nonce: _, ...overrides } = context.overrides;\n const nonce = await useOrFetchNonce(context);\n const details: TxDetails = {\n ...rollup.context.defaultTxDetails,\n ...overrides.details,\n };\n\n return {\n runtime_msg,\n nonce,\n details,\n };\n },\n async transaction({\n sender,\n signature,\n unsignedTx,\n }: TransactionContext<S, StandardRollupContext>) {\n return {\n pub_key: {\n pub_key: sender,\n },\n signature: {\n msg_sig: signature,\n },\n ...unsignedTx,\n };\n },\n };\n}\n\n/**\n * The parameters for simulating a runtime call transaction.\n */\nexport type SimulateParams = {\n /**\n * The transaction details to use for the simulation.\n */\n txDetails: TxDetails;\n\n nonce?: number;\n} & SignerParams;\n\nexport class StandardRollup<RuntimeCall> extends Rollup<\n StandardRollupSpec<RuntimeCall>,\n StandardRollupContext\n> {\n /**\n * Simulates a runtime call transaction.\n *\n * This method can be useful to estimate the gas cost of a runtime call transaction.\n *\n * @param runtimeMessage - The runtime message to call.\n */\n async simulate(\n runtimeMessage: StandardRollupSpec<RuntimeCall>[\"RuntimeCall\"],\n { signer, txDetails, nonce: overrideNonce }: SimulateParams,\n ): Promise<SovereignClient.Rollup.SimulateExecutionResponse> {\n const runtimeCall = this.serializer.serializeRuntimeCall(runtimeMessage);\n const publicKey = await signer.publicKey();\n const nonce = await useOrFetchNonce({\n sender: publicKey,\n rollup: this,\n overrides: { nonce: overrideNonce },\n });\n const response = await this.rollup.simulate({\n body: {\n details: txDetails,\n encoded_call_message: bytesToHex(runtimeCall),\n nonce,\n sender_pub_key: bytesToHex(publicKey),\n },\n });\n\n // biome-ignore lint/style/noNonNullAssertion: fix later\n return response.data!;\n }\n}\n\nexport function createStandardRollup<\n RuntimeCall,\n C extends StandardRollupContext = StandardRollupContext,\n>(\n config: RollupConfig<C>,\n typeBuilderOverrides?: Partial<\n TypeBuilder<StandardRollupSpec<RuntimeCall>, C>\n >,\n) {\n return new StandardRollup<RuntimeCall>(config, {\n ...standardTypeBuilder(),\n ...typeBuilderOverrides,\n });\n}\n"],"mappings":"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","names":["SovereignClient","SovereignClient","import_utils","_a","SovereignClient","import_universal_wallet_wasm"]}
|