@sovereign-sdk/web3 0.10.0 → 0.11.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/dist/index.d.mts +41 -20
- package/dist/index.d.ts +41 -20
- package/dist/index.js +84 -56
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +84 -56
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
package/dist/index.d.mts
CHANGED
|
@@ -159,6 +159,13 @@ type RollupConfig<C extends RollupContext> = {
|
|
|
159
159
|
* Arbitrary context that is associated with the rollup.
|
|
160
160
|
*/
|
|
161
161
|
context: C;
|
|
162
|
+
/**
|
|
163
|
+
* The endpoint path for submitting transactions.
|
|
164
|
+
* Defaults to "/sequencer/txs", the standard Sovereign SDK endpoint.
|
|
165
|
+
* Can be overridden if your rollup is configured to expose non-standard endpoints in
|
|
166
|
+
* order to support multiple different transaction encoding or authentication schemes.
|
|
167
|
+
*/
|
|
168
|
+
txSubmissionEndpoint: string;
|
|
162
169
|
};
|
|
163
170
|
/**
|
|
164
171
|
* The result of signing and submitting a transaction.
|
|
@@ -212,12 +219,16 @@ declare class Rollup<S extends BaseTypeSpec, C extends RollupContext> {
|
|
|
212
219
|
/**
|
|
213
220
|
* Retrieve dedup information about the provided address.
|
|
214
221
|
*
|
|
215
|
-
* @param
|
|
222
|
+
* @param publicKey - The public key to dedup.
|
|
223
|
+
* TODO: How to add param for generation explicitly
|
|
216
224
|
*/
|
|
217
|
-
dedup(
|
|
225
|
+
dedup(publicKey: Uint8Array): Promise<S["Dedup"]>;
|
|
218
226
|
/**
|
|
219
227
|
* Submits a transaction to the rollup.
|
|
220
228
|
*
|
|
229
|
+
* The endpoint used for submission can be overridden via the options.path parameter.
|
|
230
|
+
* If not specified, the rollup's configured txSubmissionEndpoint will be used.
|
|
231
|
+
*
|
|
221
232
|
* @param transaction - The transaction to submit.
|
|
222
233
|
* @param {SovereignClient.RequestOptions} options - The options for the request.
|
|
223
234
|
*/
|
|
@@ -229,6 +240,7 @@ declare class Rollup<S extends BaseTypeSpec, C extends RollupContext> {
|
|
|
229
240
|
* @param unsignedTx - The unsigned transaction to sign and submit.
|
|
230
241
|
* @param {SignerParams} params - The params for signing and submitting the transaction.
|
|
231
242
|
* @param {SovereignClient.RequestOptions} options - The options for the request.
|
|
243
|
+
* @param endpoint - Optional endpoint override. If not specified, uses the rollup's configured txSubmissionEndpoint.
|
|
232
244
|
*/
|
|
233
245
|
signAndSubmitTransaction(unsignedTx: S["UnsignedTransaction"], { signer }: SignerParams, options?: SovereignClient__default.RequestOptions): Promise<TransactionResult<S["Transaction"]>>;
|
|
234
246
|
/**
|
|
@@ -240,6 +252,28 @@ declare class Rollup<S extends BaseTypeSpec, C extends RollupContext> {
|
|
|
240
252
|
* @param {SovereignClient.RequestOptions} options - The options for the request.
|
|
241
253
|
*/
|
|
242
254
|
call(runtimeCall: S["RuntimeCall"], { signer, overrides }: CallParams<S>, options?: SovereignClient__default.RequestOptions): Promise<TransactionResult<S["Transaction"]>>;
|
|
255
|
+
/**
|
|
256
|
+
* Prepares a runtime call by creating and signing a transaction without submitting it.
|
|
257
|
+
* This is useful for scenarios where you need the signed transaction for later submission
|
|
258
|
+
* or for analysis purposes.
|
|
259
|
+
*
|
|
260
|
+
* @param runtimeCall - The runtime message to prepare.
|
|
261
|
+
* @param params - The parameters for preparing the call.
|
|
262
|
+
* @param params.signer - The signer to use for signing the transaction.
|
|
263
|
+
* @param params.overrides - Optional overrides for the unsigned transaction.
|
|
264
|
+
* @returns A promise that resolves to the signed transaction.
|
|
265
|
+
*/
|
|
266
|
+
prepareCall(runtimeCall: S["RuntimeCall"], { signer, overrides }: CallParams<S>): Promise<S["Transaction"]>;
|
|
267
|
+
/**
|
|
268
|
+
* Signs an unsigned transaction using the provided signer.
|
|
269
|
+
* Creates a signature by combining the serialized unsigned transaction with the chain hash,
|
|
270
|
+
* then constructs a fully signed transaction.
|
|
271
|
+
*
|
|
272
|
+
* @param unsignedTx - The unsigned transaction to sign.
|
|
273
|
+
* @param signer - The signer to use for signing the transaction.
|
|
274
|
+
* @returns A promise that resolves to the signed transaction.
|
|
275
|
+
*/
|
|
276
|
+
signTransaction(unsignedTx: S["UnsignedTransaction"], signer: Signer): Promise<S["Transaction"]>;
|
|
243
277
|
/**
|
|
244
278
|
* Create a subscription to events emitted over websockets by the rollup.
|
|
245
279
|
*/
|
|
@@ -300,17 +334,11 @@ type UnsignedTransaction<RuntimeCall> = {
|
|
|
300
334
|
details: TxDetails;
|
|
301
335
|
};
|
|
302
336
|
type TransactionV0<RuntimeCall> = {
|
|
303
|
-
pub_key:
|
|
304
|
-
|
|
305
|
-
};
|
|
306
|
-
signature: {
|
|
307
|
-
msg_sig: Uint8Array;
|
|
308
|
-
};
|
|
337
|
+
pub_key: HexString;
|
|
338
|
+
signature: HexString;
|
|
309
339
|
} & UnsignedTransaction<RuntimeCall>;
|
|
310
340
|
type Transaction<RuntimeCall> = {
|
|
311
|
-
|
|
312
|
-
V0: TransactionV0<RuntimeCall>;
|
|
313
|
-
};
|
|
341
|
+
V0: TransactionV0<RuntimeCall>;
|
|
314
342
|
};
|
|
315
343
|
type Dedup = {
|
|
316
344
|
nonce: number;
|
|
@@ -328,14 +356,7 @@ declare function standardTypeBuilder<S extends StandardRollupSpec<unknown>>(): T
|
|
|
328
356
|
/**
|
|
329
357
|
* The parameters for simulating a runtime call transaction.
|
|
330
358
|
*/
|
|
331
|
-
type SimulateParams =
|
|
332
|
-
/**
|
|
333
|
-
* The transaction details to use for the simulation.
|
|
334
|
-
*/
|
|
335
|
-
txDetails: TxDetails;
|
|
336
|
-
/** The generation of the transaction for uniquness purposes. */
|
|
337
|
-
generation?: number;
|
|
338
|
-
} & SignerParams;
|
|
359
|
+
type SimulateParams = Omit<SovereignClient__default.RollupSimulateParams, "call" | "sender"> & SignerParams;
|
|
339
360
|
declare class StandardRollup<RuntimeCall> extends Rollup<StandardRollupSpec<RuntimeCall>, StandardRollupContext> {
|
|
340
361
|
/**
|
|
341
362
|
* Simulates a runtime call transaction.
|
|
@@ -344,7 +365,7 @@ declare class StandardRollup<RuntimeCall> extends Rollup<StandardRollupSpec<Runt
|
|
|
344
365
|
*
|
|
345
366
|
* @param runtimeMessage - The runtime message to call.
|
|
346
367
|
*/
|
|
347
|
-
simulate(runtimeMessage: StandardRollupSpec<RuntimeCall>["RuntimeCall"], { signer
|
|
368
|
+
simulate(runtimeMessage: StandardRollupSpec<RuntimeCall>["RuntimeCall"], { signer }: SimulateParams): Promise<SovereignClient__default.Rollup.RollupSimulateResponse>;
|
|
348
369
|
}
|
|
349
370
|
declare const DEFAULT_TX_DETAILS: Omit<TxDetails, "chain_id">;
|
|
350
371
|
declare function createStandardRollup<RuntimeCall, C extends StandardRollupContext = StandardRollupContext>(rollupConfig?: Partial<RollupConfig<DeepPartial<C>>>, typeBuilderOverrides?: Partial<TypeBuilder<StandardRollupSpec<RuntimeCall>, C>>): Promise<StandardRollup<RuntimeCall>>;
|
package/dist/index.d.ts
CHANGED
|
@@ -159,6 +159,13 @@ type RollupConfig<C extends RollupContext> = {
|
|
|
159
159
|
* Arbitrary context that is associated with the rollup.
|
|
160
160
|
*/
|
|
161
161
|
context: C;
|
|
162
|
+
/**
|
|
163
|
+
* The endpoint path for submitting transactions.
|
|
164
|
+
* Defaults to "/sequencer/txs", the standard Sovereign SDK endpoint.
|
|
165
|
+
* Can be overridden if your rollup is configured to expose non-standard endpoints in
|
|
166
|
+
* order to support multiple different transaction encoding or authentication schemes.
|
|
167
|
+
*/
|
|
168
|
+
txSubmissionEndpoint: string;
|
|
162
169
|
};
|
|
163
170
|
/**
|
|
164
171
|
* The result of signing and submitting a transaction.
|
|
@@ -212,12 +219,16 @@ declare class Rollup<S extends BaseTypeSpec, C extends RollupContext> {
|
|
|
212
219
|
/**
|
|
213
220
|
* Retrieve dedup information about the provided address.
|
|
214
221
|
*
|
|
215
|
-
* @param
|
|
222
|
+
* @param publicKey - The public key to dedup.
|
|
223
|
+
* TODO: How to add param for generation explicitly
|
|
216
224
|
*/
|
|
217
|
-
dedup(
|
|
225
|
+
dedup(publicKey: Uint8Array): Promise<S["Dedup"]>;
|
|
218
226
|
/**
|
|
219
227
|
* Submits a transaction to the rollup.
|
|
220
228
|
*
|
|
229
|
+
* The endpoint used for submission can be overridden via the options.path parameter.
|
|
230
|
+
* If not specified, the rollup's configured txSubmissionEndpoint will be used.
|
|
231
|
+
*
|
|
221
232
|
* @param transaction - The transaction to submit.
|
|
222
233
|
* @param {SovereignClient.RequestOptions} options - The options for the request.
|
|
223
234
|
*/
|
|
@@ -229,6 +240,7 @@ declare class Rollup<S extends BaseTypeSpec, C extends RollupContext> {
|
|
|
229
240
|
* @param unsignedTx - The unsigned transaction to sign and submit.
|
|
230
241
|
* @param {SignerParams} params - The params for signing and submitting the transaction.
|
|
231
242
|
* @param {SovereignClient.RequestOptions} options - The options for the request.
|
|
243
|
+
* @param endpoint - Optional endpoint override. If not specified, uses the rollup's configured txSubmissionEndpoint.
|
|
232
244
|
*/
|
|
233
245
|
signAndSubmitTransaction(unsignedTx: S["UnsignedTransaction"], { signer }: SignerParams, options?: SovereignClient__default.RequestOptions): Promise<TransactionResult<S["Transaction"]>>;
|
|
234
246
|
/**
|
|
@@ -240,6 +252,28 @@ declare class Rollup<S extends BaseTypeSpec, C extends RollupContext> {
|
|
|
240
252
|
* @param {SovereignClient.RequestOptions} options - The options for the request.
|
|
241
253
|
*/
|
|
242
254
|
call(runtimeCall: S["RuntimeCall"], { signer, overrides }: CallParams<S>, options?: SovereignClient__default.RequestOptions): Promise<TransactionResult<S["Transaction"]>>;
|
|
255
|
+
/**
|
|
256
|
+
* Prepares a runtime call by creating and signing a transaction without submitting it.
|
|
257
|
+
* This is useful for scenarios where you need the signed transaction for later submission
|
|
258
|
+
* or for analysis purposes.
|
|
259
|
+
*
|
|
260
|
+
* @param runtimeCall - The runtime message to prepare.
|
|
261
|
+
* @param params - The parameters for preparing the call.
|
|
262
|
+
* @param params.signer - The signer to use for signing the transaction.
|
|
263
|
+
* @param params.overrides - Optional overrides for the unsigned transaction.
|
|
264
|
+
* @returns A promise that resolves to the signed transaction.
|
|
265
|
+
*/
|
|
266
|
+
prepareCall(runtimeCall: S["RuntimeCall"], { signer, overrides }: CallParams<S>): Promise<S["Transaction"]>;
|
|
267
|
+
/**
|
|
268
|
+
* Signs an unsigned transaction using the provided signer.
|
|
269
|
+
* Creates a signature by combining the serialized unsigned transaction with the chain hash,
|
|
270
|
+
* then constructs a fully signed transaction.
|
|
271
|
+
*
|
|
272
|
+
* @param unsignedTx - The unsigned transaction to sign.
|
|
273
|
+
* @param signer - The signer to use for signing the transaction.
|
|
274
|
+
* @returns A promise that resolves to the signed transaction.
|
|
275
|
+
*/
|
|
276
|
+
signTransaction(unsignedTx: S["UnsignedTransaction"], signer: Signer): Promise<S["Transaction"]>;
|
|
243
277
|
/**
|
|
244
278
|
* Create a subscription to events emitted over websockets by the rollup.
|
|
245
279
|
*/
|
|
@@ -300,17 +334,11 @@ type UnsignedTransaction<RuntimeCall> = {
|
|
|
300
334
|
details: TxDetails;
|
|
301
335
|
};
|
|
302
336
|
type TransactionV0<RuntimeCall> = {
|
|
303
|
-
pub_key:
|
|
304
|
-
|
|
305
|
-
};
|
|
306
|
-
signature: {
|
|
307
|
-
msg_sig: Uint8Array;
|
|
308
|
-
};
|
|
337
|
+
pub_key: HexString;
|
|
338
|
+
signature: HexString;
|
|
309
339
|
} & UnsignedTransaction<RuntimeCall>;
|
|
310
340
|
type Transaction<RuntimeCall> = {
|
|
311
|
-
|
|
312
|
-
V0: TransactionV0<RuntimeCall>;
|
|
313
|
-
};
|
|
341
|
+
V0: TransactionV0<RuntimeCall>;
|
|
314
342
|
};
|
|
315
343
|
type Dedup = {
|
|
316
344
|
nonce: number;
|
|
@@ -328,14 +356,7 @@ declare function standardTypeBuilder<S extends StandardRollupSpec<unknown>>(): T
|
|
|
328
356
|
/**
|
|
329
357
|
* The parameters for simulating a runtime call transaction.
|
|
330
358
|
*/
|
|
331
|
-
type SimulateParams =
|
|
332
|
-
/**
|
|
333
|
-
* The transaction details to use for the simulation.
|
|
334
|
-
*/
|
|
335
|
-
txDetails: TxDetails;
|
|
336
|
-
/** The generation of the transaction for uniquness purposes. */
|
|
337
|
-
generation?: number;
|
|
338
|
-
} & SignerParams;
|
|
359
|
+
type SimulateParams = Omit<SovereignClient__default.RollupSimulateParams, "call" | "sender"> & SignerParams;
|
|
339
360
|
declare class StandardRollup<RuntimeCall> extends Rollup<StandardRollupSpec<RuntimeCall>, StandardRollupContext> {
|
|
340
361
|
/**
|
|
341
362
|
* Simulates a runtime call transaction.
|
|
@@ -344,7 +365,7 @@ declare class StandardRollup<RuntimeCall> extends Rollup<StandardRollupSpec<Runt
|
|
|
344
365
|
*
|
|
345
366
|
* @param runtimeMessage - The runtime message to call.
|
|
346
367
|
*/
|
|
347
|
-
simulate(runtimeMessage: StandardRollupSpec<RuntimeCall>["RuntimeCall"], { signer
|
|
368
|
+
simulate(runtimeMessage: StandardRollupSpec<RuntimeCall>["RuntimeCall"], { signer }: SimulateParams): Promise<SovereignClient__default.Rollup.RollupSimulateResponse>;
|
|
348
369
|
}
|
|
349
370
|
declare const DEFAULT_TX_DETAILS: Omit<TxDetails, "chain_id">;
|
|
350
371
|
declare function createStandardRollup<RuntimeCall, C extends StandardRollupContext = StandardRollupContext>(rollupConfig?: Partial<RollupConfig<DeepPartial<C>>>, typeBuilderOverrides?: Partial<TypeBuilder<StandardRollupSpec<RuntimeCall>, C>>): Promise<StandardRollup<RuntimeCall>>;
|
package/dist/index.js
CHANGED
|
@@ -217,17 +217,22 @@ var Rollup = class {
|
|
|
217
217
|
/**
|
|
218
218
|
* Retrieve dedup information about the provided address.
|
|
219
219
|
*
|
|
220
|
-
* @param
|
|
220
|
+
* @param publicKey - The public key to dedup.
|
|
221
|
+
* TODO: How to add param for generation explicitly
|
|
221
222
|
*/
|
|
222
|
-
dedup(
|
|
223
|
+
dedup(publicKey) {
|
|
223
224
|
return __async(this, null, function* () {
|
|
224
|
-
const
|
|
225
|
+
const credentialId = (0, import_utils2.bytesToHex)(publicKey);
|
|
226
|
+
const response = yield this.rollup.addresses.dedup(credentialId);
|
|
225
227
|
return response;
|
|
226
228
|
});
|
|
227
229
|
}
|
|
228
230
|
/**
|
|
229
231
|
* Submits a transaction to the rollup.
|
|
230
232
|
*
|
|
233
|
+
* The endpoint used for submission can be overridden via the options.path parameter.
|
|
234
|
+
* If not specified, the rollup's configured txSubmissionEndpoint will be used.
|
|
235
|
+
*
|
|
231
236
|
* @param transaction - The transaction to submit.
|
|
232
237
|
* @param {SovereignClient.RequestOptions} options - The options for the request.
|
|
233
238
|
*/
|
|
@@ -235,10 +240,14 @@ var Rollup = class {
|
|
|
235
240
|
return __async(this, null, function* () {
|
|
236
241
|
const serializer = yield this.serializer();
|
|
237
242
|
const serializedTx = serializer.serializeTx(transaction);
|
|
238
|
-
|
|
243
|
+
const _a = options || {}, { body: _, query: __, path } = _a, requestOptions = __objRest(_a, ["body", "query", "path"]);
|
|
244
|
+
const txSubmissionEndpoint = path || this._config.txSubmissionEndpoint;
|
|
245
|
+
return this.http.post(txSubmissionEndpoint, __spreadValues({
|
|
246
|
+
body: { body: import_js_base64.Base64.fromUint8Array(serializedTx) }
|
|
247
|
+
}, requestOptions)).catch((e) => __async(this, null, function* () {
|
|
239
248
|
if (isVersionMismatchError(e)) {
|
|
240
249
|
const oldVersion = (0, import_utils2.bytesToHex)(yield this.chainHash());
|
|
241
|
-
const { schema, chain_hash: newVersion } = yield this.rollup.schema
|
|
250
|
+
const { schema, chain_hash: newVersion } = yield this.rollup.schema();
|
|
242
251
|
this._chainHash = (0, import_utils2.hexToBytes)(newVersion);
|
|
243
252
|
this._serializer = this._config.getSerializer(schema);
|
|
244
253
|
if (oldVersion !== newVersion) {
|
|
@@ -260,23 +269,11 @@ var Rollup = class {
|
|
|
260
269
|
* @param unsignedTx - The unsigned transaction to sign and submit.
|
|
261
270
|
* @param {SignerParams} params - The params for signing and submitting the transaction.
|
|
262
271
|
* @param {SovereignClient.RequestOptions} options - The options for the request.
|
|
272
|
+
* @param endpoint - Optional endpoint override. If not specified, uses the rollup's configured txSubmissionEndpoint.
|
|
263
273
|
*/
|
|
264
274
|
signAndSubmitTransaction(_0, _1, _2) {
|
|
265
275
|
return __async(this, arguments, function* (unsignedTx, { signer }, options) {
|
|
266
|
-
const
|
|
267
|
-
const serializedUnsignedTx = serializer.serializeUnsignedTx(unsignedTx);
|
|
268
|
-
const chainHash = yield this.chainHash();
|
|
269
|
-
const signature = yield signer.sign(
|
|
270
|
-
new Uint8Array([...serializedUnsignedTx, ...chainHash])
|
|
271
|
-
);
|
|
272
|
-
const publicKey = yield signer.publicKey();
|
|
273
|
-
const context = {
|
|
274
|
-
unsignedTx,
|
|
275
|
-
sender: publicKey,
|
|
276
|
-
signature,
|
|
277
|
-
rollup: this
|
|
278
|
-
};
|
|
279
|
-
const tx = yield this._typeBuilder.transaction(context);
|
|
276
|
+
const tx = yield this.signTransaction(unsignedTx, signer);
|
|
280
277
|
const result = yield this.submitTransaction(tx, options);
|
|
281
278
|
return { transaction: tx, response: result };
|
|
282
279
|
});
|
|
@@ -306,6 +303,55 @@ var Rollup = class {
|
|
|
306
303
|
);
|
|
307
304
|
});
|
|
308
305
|
}
|
|
306
|
+
/**
|
|
307
|
+
* Prepares a runtime call by creating and signing a transaction without submitting it.
|
|
308
|
+
* This is useful for scenarios where you need the signed transaction for later submission
|
|
309
|
+
* or for analysis purposes.
|
|
310
|
+
*
|
|
311
|
+
* @param runtimeCall - The runtime message to prepare.
|
|
312
|
+
* @param params - The parameters for preparing the call.
|
|
313
|
+
* @param params.signer - The signer to use for signing the transaction.
|
|
314
|
+
* @param params.overrides - Optional overrides for the unsigned transaction.
|
|
315
|
+
* @returns A promise that resolves to the signed transaction.
|
|
316
|
+
*/
|
|
317
|
+
prepareCall(_0, _1) {
|
|
318
|
+
return __async(this, arguments, function* (runtimeCall, { signer, overrides }) {
|
|
319
|
+
const context = {
|
|
320
|
+
runtimeCall,
|
|
321
|
+
rollup: this,
|
|
322
|
+
overrides: overrides != null ? overrides : {}
|
|
323
|
+
};
|
|
324
|
+
const unsignedTx = yield this._typeBuilder.unsignedTransaction(context);
|
|
325
|
+
return this.signTransaction(unsignedTx, signer);
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Signs an unsigned transaction using the provided signer.
|
|
330
|
+
* Creates a signature by combining the serialized unsigned transaction with the chain hash,
|
|
331
|
+
* then constructs a fully signed transaction.
|
|
332
|
+
*
|
|
333
|
+
* @param unsignedTx - The unsigned transaction to sign.
|
|
334
|
+
* @param signer - The signer to use for signing the transaction.
|
|
335
|
+
* @returns A promise that resolves to the signed transaction.
|
|
336
|
+
*/
|
|
337
|
+
signTransaction(unsignedTx, signer) {
|
|
338
|
+
return __async(this, null, function* () {
|
|
339
|
+
const serializer = yield this.serializer();
|
|
340
|
+
const serializedUnsignedTx = serializer.serializeUnsignedTx(unsignedTx);
|
|
341
|
+
const chainHash = yield this.chainHash();
|
|
342
|
+
const signature = yield signer.sign(
|
|
343
|
+
new Uint8Array([...serializedUnsignedTx, ...chainHash])
|
|
344
|
+
);
|
|
345
|
+
const publicKey = yield signer.publicKey();
|
|
346
|
+
const context = {
|
|
347
|
+
unsignedTx,
|
|
348
|
+
sender: publicKey,
|
|
349
|
+
signature,
|
|
350
|
+
rollup: this
|
|
351
|
+
};
|
|
352
|
+
return this._typeBuilder.transaction(context);
|
|
353
|
+
});
|
|
354
|
+
}
|
|
309
355
|
/**
|
|
310
356
|
* Create a subscription to events emitted over websockets by the rollup.
|
|
311
357
|
*/
|
|
@@ -361,7 +407,7 @@ var Rollup = class {
|
|
|
361
407
|
serializer() {
|
|
362
408
|
return __async(this, null, function* () {
|
|
363
409
|
if (this._serializer) return this._serializer;
|
|
364
|
-
const { schema } = yield this.rollup.schema
|
|
410
|
+
const { schema } = yield this.rollup.schema();
|
|
365
411
|
this._serializer = this._config.getSerializer(schema);
|
|
366
412
|
return this._serializer;
|
|
367
413
|
});
|
|
@@ -375,7 +421,7 @@ var Rollup = class {
|
|
|
375
421
|
chainHash() {
|
|
376
422
|
return __async(this, null, function* () {
|
|
377
423
|
if (this._chainHash) return this._chainHash;
|
|
378
|
-
const { chain_hash } = yield this.rollup.schema
|
|
424
|
+
const { chain_hash } = yield this.rollup.schema();
|
|
379
425
|
this._chainHash = (0, import_utils2.hexToBytes)(chain_hash);
|
|
380
426
|
return this._chainHash;
|
|
381
427
|
});
|
|
@@ -426,16 +472,10 @@ function standardTypeBuilder() {
|
|
|
426
472
|
unsignedTx
|
|
427
473
|
}) {
|
|
428
474
|
return {
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
},
|
|
434
|
-
signature: {
|
|
435
|
-
msg_sig: signature
|
|
436
|
-
}
|
|
437
|
-
}, unsignedTx)
|
|
438
|
-
}
|
|
475
|
+
V0: __spreadValues({
|
|
476
|
+
pub_key: (0, import_utils3.bytesToHex)(sender),
|
|
477
|
+
signature: (0, import_utils3.bytesToHex)(signature)
|
|
478
|
+
}, unsignedTx)
|
|
439
479
|
};
|
|
440
480
|
});
|
|
441
481
|
}
|
|
@@ -450,29 +490,11 @@ var StandardRollup = class extends Rollup {
|
|
|
450
490
|
* @param runtimeMessage - The runtime message to call.
|
|
451
491
|
*/
|
|
452
492
|
simulate(_0, _1) {
|
|
453
|
-
return __async(this, arguments, function* (runtimeMessage, { signer
|
|
454
|
-
const serializer = yield this.serializer();
|
|
455
|
-
const runtimeCall = serializer.serializeRuntimeCall(runtimeMessage);
|
|
493
|
+
return __async(this, arguments, function* (runtimeMessage, { signer }) {
|
|
456
494
|
const publicKey = yield signer.publicKey();
|
|
457
|
-
const
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
uniqueness: overrideGeneration ? { generation: overrideGeneration } : void 0
|
|
461
|
-
}
|
|
462
|
-
});
|
|
463
|
-
const generation = "generation" in uniqueness ? uniqueness.generation : uniqueness.nonce;
|
|
464
|
-
const response = yield this.rollup.simulate({
|
|
465
|
-
body: {
|
|
466
|
-
details: __spreadProps(__spreadValues({}, txDetails), {
|
|
467
|
-
// simulate needs this field as `undefined` currently
|
|
468
|
-
gas_limit: txDetails.gas_limit || void 0
|
|
469
|
-
}),
|
|
470
|
-
encoded_call_message: (0, import_utils3.bytesToHex)(runtimeCall),
|
|
471
|
-
generation,
|
|
472
|
-
sender_pub_key: (0, import_utils3.bytesToHex)(publicKey)
|
|
473
|
-
}
|
|
474
|
-
});
|
|
475
|
-
return response;
|
|
495
|
+
const sender = (0, import_utils3.bytesToHex)(publicKey);
|
|
496
|
+
const call = runtimeMessage;
|
|
497
|
+
return this.rollup.simulate({ sender, call });
|
|
476
498
|
});
|
|
477
499
|
}
|
|
478
500
|
};
|
|
@@ -485,7 +507,7 @@ function buildContext(client, context) {
|
|
|
485
507
|
return __async(this, null, function* () {
|
|
486
508
|
const defaultTxDetails = __spreadValues(__spreadValues({}, DEFAULT_TX_DETAILS), context == null ? void 0 : context.defaultTxDetails);
|
|
487
509
|
if (!defaultTxDetails.chain_id) {
|
|
488
|
-
const { chain_id } = yield client.rollup.constants
|
|
510
|
+
const { chain_id } = yield client.rollup.constants();
|
|
489
511
|
defaultTxDetails.chain_id = chain_id;
|
|
490
512
|
}
|
|
491
513
|
return {
|
|
@@ -495,13 +517,19 @@ function buildContext(client, context) {
|
|
|
495
517
|
}
|
|
496
518
|
function createStandardRollup(rollupConfig, typeBuilderOverrides) {
|
|
497
519
|
return __async(this, null, function* () {
|
|
498
|
-
var _a, _b;
|
|
520
|
+
var _a, _b, _c;
|
|
499
521
|
const config = rollupConfig != null ? rollupConfig : {};
|
|
500
522
|
const client = (_a = config.client) != null ? _a : new import_client2.default({ baseURL: config.url });
|
|
501
523
|
const getSerializer = (_b = config.getSerializer) != null ? _b : (schema) => new import_serializers.JsSerializer(schema);
|
|
502
524
|
const context = yield buildContext(client, config.context);
|
|
525
|
+
const txSubmissionEndpoint = (_c = config.txSubmissionEndpoint) != null ? _c : "/sequencer/txs";
|
|
503
526
|
return new StandardRollup(
|
|
504
|
-
__spreadProps(__spreadValues({}, config), {
|
|
527
|
+
__spreadProps(__spreadValues({}, config), {
|
|
528
|
+
client,
|
|
529
|
+
getSerializer,
|
|
530
|
+
context,
|
|
531
|
+
txSubmissionEndpoint
|
|
532
|
+
}),
|
|
505
533
|
__spreadValues(__spreadValues({}, standardTypeBuilder()), typeBuilderOverrides)
|
|
506
534
|
);
|
|
507
535
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/addresses.ts","../src/rollup/rollup.ts","../src/errors.ts","../src/subscriptions.ts","../src/rollup/standard-rollup.ts"],"sourcesContent":["export * from \"./addresses\";\nexport * from \"./rollup\";\nexport * from \"./errors\";\nexport * from \"./type-spec\";\nexport { type EventPayload, Subscription } from \"./subscriptions\";\nexport * as SovereignClient from \"@sovereign-sdk/client\";\n","import { type HexString, ensureBytes } from \"@sovereign-sdk/utils\";\nimport { bech32m } from \"bech32\";\n\n/**\n * Encodes a public key as a bech32m address with the given human-readable part (hrp).\n *\n * @param publicKey - The public key to encode, as a hex string or Uint8Array.\n * @param hrp - The human-readable part for the bech32m address (e.g., \"sov\").\n * @param concatPublicKey - Optional. If provided, only the first `concatPublicKey` bytes of the public key are used.\n * @returns The bech32m-encoded address as a string.\n * @throws {Error} If the public key is not a valid hex string or Uint8Array.\n */\nexport function addressFromPublicKey(\n publicKey: HexString | Uint8Array,\n hrp: string,\n concatPublicKey = 28,\n): string {\n let publicKeyBytes = ensureBytes(publicKey);\n\n if (concatPublicKey !== publicKey.length) {\n publicKeyBytes = publicKeyBytes.slice(0, concatPublicKey);\n }\n\n const words = bech32m.toWords(publicKeyBytes);\n return bech32m.encode(hrp, words);\n}\n","import SovereignClient from \"@sovereign-sdk/client\";\nimport type { APIError } from \"@sovereign-sdk/client\";\nimport type { RollupSchema, Serializer } from \"@sovereign-sdk/serializers\";\nimport type { Signer } from \"@sovereign-sdk/signers\";\nimport { bytesToHex, hexToBytes } from \"@sovereign-sdk/utils\";\nimport { Base64 } from \"js-base64\";\nimport { VersionMismatchError } from \"../errors\";\nimport {\n type Subscription,\n type SubscriptionToCallbackMap,\n createSubscription,\n} from \"../subscriptions\";\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 // Provides the ability to override the generation data instead of retrieving it automatically.\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 PartialRollupConfig.url}.\n */\n client: SovereignClient;\n /**\n * Creates the serializer instance to use for the rollup.\n *\n * This can be called more than once, for example if the chain hash changes (i.e a new rollup version)\n * is detected then it will be called again with the new rollup schema.\n */\n getSerializer: (schema: RollupSchema) => Serializer;\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 _typeBuilder: TypeBuilder<S, C>;\n private _chainHash?: Uint8Array;\n private _serializer?: Serializer;\n\n /**\n * Creates a new rollup client.\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 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 as S[\"Dedup\"];\n }\n\n /**\n * Submits a transaction to the rollup.\n *\n * @param transaction - The transaction to submit.\n * @param {SovereignClient.RequestOptions} options - The options for the request.\n */\n async submitTransaction(\n transaction: S[\"Transaction\"],\n options?: SovereignClient.RequestOptions,\n ): Promise<SovereignClient.Sequencer.TxCreateResponse> {\n const serializer = await this.serializer();\n const serializedTx = serializer.serializeTx(transaction);\n\n return this.sequencer.txs\n .create({ body: Base64.fromUint8Array(serializedTx) }, options)\n .catch(async (e) => {\n if (isVersionMismatchError(e as APIError)) {\n const oldVersion = bytesToHex(await this.chainHash());\n const { schema, chain_hash: newVersion } =\n await this.rollup.schema.retrieve();\n this._chainHash = hexToBytes(newVersion);\n this._serializer = this._config.getSerializer(schema);\n\n if (oldVersion !== newVersion) {\n throw new VersionMismatchError(\n \"Schema version mismatch when submitting transaction\",\n newVersion,\n oldVersion,\n );\n }\n }\n throw e;\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 * @param {SovereignClient.RequestOptions} options - The options for the request.\n */\n async signAndSubmitTransaction(\n unsignedTx: S[\"UnsignedTransaction\"],\n { signer }: SignerParams,\n options?: SovereignClient.RequestOptions,\n ): Promise<TransactionResult<S[\"Transaction\"]>> {\n const serializer = await this.serializer();\n const serializedUnsignedTx = serializer.serializeUnsignedTx(unsignedTx);\n const chainHash = await this.chainHash();\n const signature = await signer.sign(\n new Uint8Array([...serializedUnsignedTx, ...chainHash]),\n );\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, options);\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 * @param {SovereignClient.RequestOptions} options - The options for the request.\n */\n async call(\n runtimeCall: S[\"RuntimeCall\"],\n { signer, overrides }: CallParams<S>,\n options?: SovereignClient.RequestOptions,\n ): Promise<TransactionResult<S[\"Transaction\"]>> {\n const context = {\n runtimeCall,\n rollup: this,\n overrides: overrides ?? ({} as DeepPartial<S[\"UnsignedTransaction\"]>),\n };\n const unsignedTx = await this._typeBuilder.unsignedTransaction(context);\n\n return this.signAndSubmitTransaction(\n unsignedTx,\n {\n signer,\n },\n options,\n );\n }\n\n /**\n * Create a subscription to events emitted over websockets by the rollup.\n */\n subscribe<T extends keyof SubscriptionToCallbackMap>(\n type: T,\n callback: SubscriptionToCallbackMap[T],\n ): Subscription {\n return createSubscription(type, callback, this.http);\n }\n\n /**\n * Performs a healthcheck against the rollup to determine if it is currently healthy.\n *\n * @param timeout - Request timeout in milliseconds.\n * @returns `true` if the rollup is considered healthy otherwise `false`.\n */\n async healthcheck(timeout = 5000): Promise<boolean> {\n try {\n await this.http.get(\"/healthcheck\", { timeout, maxRetries: 1 });\n return true;\n } catch (e) {\n return !(e instanceof SovereignClient.APIConnectionError);\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._config.client;\n }\n\n /**\n * The serializer for the rollup.\n * Can be used to serialize transactions, runtime calls, etc.\n */\n async serializer(): Promise<Serializer> {\n if (this._serializer) return this._serializer;\n const { schema } = await this.rollup.schema.retrieve();\n this._serializer = this._config.getSerializer(schema);\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 async chainHash(): Promise<Uint8Array> {\n if (this._chainHash) return this._chainHash;\n const { chain_hash } = await this.rollup.schema.retrieve();\n this._chainHash = hexToBytes(chain_hash);\n return this._chainHash;\n }\n}\n\nfunction isVersionMismatchError(e: APIError): boolean {\n if (\n // biome-ignore lint/suspicious/noExplicitAny: yolo\n (e.error as any)?.details?.error?.includes(\"Signature verification failed\")\n ) {\n return true;\n }\n\n return false;\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\nexport class VersionMismatchError extends SovereignError {\n public readonly newVersion: string;\n public readonly currentVersion: string;\n public readonly retryable: boolean;\n\n constructor(message: string, newVersion: string, currentVersion: string) {\n super(message);\n\n this.newVersion = newVersion;\n this.currentVersion = currentVersion;\n this.retryable = newVersion !== currentVersion;\n }\n}\n\nexport class SchemaError extends SovereignError {\n public readonly schema: object;\n public readonly reason: string;\n\n constructor(message: string, reason: string, schema: object) {\n super(`${message}: ${reason}`);\n\n this.reason = reason;\n this.schema = schema;\n }\n}\n","import type SovereignSDK from \"@sovereign-sdk/client\";\nimport IsoWebSocket from \"isomorphic-ws\";\nimport { WebSocket } from \"partysocket\";\nimport { SovereignError } from \"./errors\";\n\ntype Url = string;\n\nexport function httpToWebSocket(url: string) {\n return url.replace(/^http(s?):\\/\\//, (_, s) => `ws${s}://`);\n}\n\nexport type Subscription = {\n /** Url providing the subscription. */\n url: Url;\n /** Unsubscribe this subscription. */\n unsubscribe: () => void;\n};\n\ntype SubscriptionEntry = {\n websocket: WebSocket;\n // biome-ignore lint/suspicious/noExplicitAny: allow\n callbacks: Array<(...args: any[]) => void>;\n};\n\nexport const _subscriptions: Record<Url, SubscriptionEntry> = {};\n\n/** Subscribe to the provided websocket url & call the provided callback on messages received. */\nexport function subscribe(\n url: Url,\n // biome-ignore lint/suspicious/noExplicitAny: allow\n callback: (...args: any[]) => void,\n): Subscription {\n const subscription = _subscriptions[url];\n\n if (!subscription) {\n const websocket = new WebSocket(url, [], { WebSocket: IsoWebSocket });\n // bun compatibility: https://github.com/partykit/partykit/issues/774\n websocket.binaryType = \"arraybuffer\";\n\n _subscriptions[url] = {\n websocket,\n callbacks: [callback],\n };\n\n websocket.addEventListener(\"message\", (message) => {\n const data = JSON.parse(message.data);\n const callbacks = _subscriptions[url]?.callbacks;\n if (callbacks) {\n for (const cb of callbacks) {\n cb(data);\n }\n }\n });\n websocket.addEventListener(\"error\", (e) =>\n console.log(\"Websocket error\", e),\n );\n } else {\n subscription.callbacks.push(callback);\n }\n\n const callbackIndex = _subscriptions[url]?.callbacks.length - 1;\n\n return {\n get url() {\n return url;\n },\n unsubscribe() {\n const subscription = _subscriptions[url];\n\n if (!subscription) {\n return;\n }\n\n subscription.callbacks.splice(callbackIndex, 1);\n\n if (!subscription.callbacks.length) {\n subscription.websocket.close();\n delete _subscriptions[url];\n }\n },\n };\n}\n\nexport type EventPayload = {\n tx_hash: string;\n type: \"event\";\n number: number;\n key: string;\n value: Record<string, unknown>;\n module: {\n type: \"moduleRef\";\n name: string;\n };\n};\n\nexport interface SubscriptionToCallbackMap {\n events: (event: EventPayload) => Promise<void>;\n}\n\nexport function createSubscription<T extends keyof SubscriptionToCallbackMap>(\n subscription: T,\n callback: SubscriptionToCallbackMap[T],\n client: SovereignSDK,\n): Subscription {\n switch (subscription) {\n case \"events\": {\n const url = client.buildURL(\"/sequencer/events/ws\", {});\n return subscribe(\n httpToWebSocket(url),\n callback as SubscriptionToCallbackMap[\"events\"],\n );\n }\n default:\n throw new SovereignError(`Invalid subscription type '${subscription}'`);\n }\n}\n","import SovereignClient from \"@sovereign-sdk/client\";\nimport { JsSerializer } from \"@sovereign-sdk/serializers\";\nimport { bytesToHex } from \"@sovereign-sdk/utils\";\nimport type { DeepPartial } from \"../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: string;\n gas_limit: number[] | null;\n chain_id: number;\n};\n\nexport type Generation = { generation: number };\nexport type Nonce = { nonce: number };\nexport type Uniqueness = Nonce | Generation;\n\nexport type UnsignedTransaction<RuntimeCall> = {\n runtime_call: RuntimeCall;\n uniqueness: Uniqueness;\n details: TxDetails;\n};\n\nexport type TransactionV0<RuntimeCall> = {\n pub_key: { pub_key: Uint8Array };\n signature: { msg_sig: Uint8Array };\n} & UnsignedTransaction<RuntimeCall>;\n\nexport type Transaction<RuntimeCall> = {\n versioned_tx: { V0: TransactionV0<RuntimeCall> };\n};\n\nexport type Dedup = {\n nonce: number;\n};\n\nexport type StandardRollupContext = {\n defaultTxDetails: TxDetails;\n};\n\nexport type StandardRollupSpec<RuntimeCall> = {\n UnsignedTransaction: UnsignedTransaction<RuntimeCall>;\n Transaction: Transaction<RuntimeCall>;\n RuntimeCall: RuntimeCall;\n Dedup: Dedup;\n};\n\nconst useOrFetchUniqueness = async <S extends StandardRollupSpec<unknown>>({\n overrides,\n}: Omit<\n UnsignedTransactionContext<S, StandardRollupContext>,\n \"runtimeCall\"\n>) => {\n if (overrides?.uniqueness) {\n return overrides.uniqueness;\n }\n\n return { generation: Date.now() };\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 { uniqueness: _, ...overrides } = context.overrides;\n const uniqueness = await useOrFetchUniqueness(context);\n const details: TxDetails = {\n ...rollup.context.defaultTxDetails,\n ...overrides.details,\n };\n\n return {\n runtime_call: runtimeCall,\n uniqueness,\n details,\n } as S[\"UnsignedTransaction\"];\n },\n async transaction({\n sender,\n signature,\n unsignedTx,\n }: TransactionContext<S, StandardRollupContext>) {\n return {\n versioned_tx: {\n V0: {\n pub_key: {\n pub_key: sender,\n },\n signature: {\n msg_sig: signature,\n },\n ...unsignedTx,\n },\n },\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 /** The generation of the transaction for uniquness purposes. */\n generation?: 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, generation: overrideGeneration }: SimulateParams,\n ): Promise<SovereignClient.Rollup.SimulateExecutionResponse> {\n const serializer = await this.serializer();\n const runtimeCall = serializer.serializeRuntimeCall(runtimeMessage);\n const publicKey = await signer.publicKey();\n const uniqueness = await useOrFetchUniqueness({\n rollup: this,\n overrides: {\n uniqueness: overrideGeneration\n ? { generation: overrideGeneration }\n : undefined,\n },\n });\n // Extract the generation number from the uniqueness object\n const generation =\n \"generation\" in uniqueness\n ? (uniqueness as Generation).generation\n : (uniqueness as Nonce).nonce; // Use nonce as fallback until simulate endpoint is updated.\n const response = await this.rollup.simulate({\n body: {\n details: {\n ...txDetails,\n // simulate needs this field as `undefined` currently\n gas_limit: txDetails.gas_limit || undefined,\n },\n encoded_call_message: bytesToHex(runtimeCall),\n generation,\n sender_pub_key: bytesToHex(publicKey),\n },\n });\n\n return response;\n }\n}\n\nexport const DEFAULT_TX_DETAILS: Omit<TxDetails, \"chain_id\"> = {\n max_priority_fee_bips: 0,\n max_fee: \"100000000\",\n gas_limit: null,\n};\n\nasync function buildContext<C extends StandardRollupContext>(\n client: SovereignClient,\n context?: DeepPartial<C>,\n): Promise<C> {\n const defaultTxDetails = {\n ...DEFAULT_TX_DETAILS,\n ...context?.defaultTxDetails,\n };\n\n if (!defaultTxDetails.chain_id) {\n const { chain_id } = await client.rollup.constants.retrieve();\n\n defaultTxDetails.chain_id = chain_id;\n }\n\n return {\n defaultTxDetails,\n } as C;\n}\n\nexport async function createStandardRollup<\n RuntimeCall,\n C extends StandardRollupContext = StandardRollupContext,\n>(\n rollupConfig?: Partial<RollupConfig<DeepPartial<C>>>,\n typeBuilderOverrides?: Partial<\n TypeBuilder<StandardRollupSpec<RuntimeCall>, C>\n >,\n) {\n const config = rollupConfig ?? {};\n const client = config.client ?? new SovereignClient({ baseURL: config.url });\n const getSerializer =\n config.getSerializer ?? ((schema) => new JsSerializer(schema));\n const context = await buildContext<C>(client, config.context);\n\n return new StandardRollup<RuntimeCall>(\n { ...config, client, getSerializer, context },\n {\n ...standardTypeBuilder(),\n ...typeBuilderOverrides,\n },\n );\n}\n"],"mappings":"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","names":["SovereignClient","import_utils","IsoWebSocket","_a","subscription","SovereignClient","import_client","import_utils","_a","SovereignClient","SovereignClient"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/addresses.ts","../src/rollup/rollup.ts","../src/errors.ts","../src/subscriptions.ts","../src/rollup/standard-rollup.ts"],"sourcesContent":["export * from \"./addresses\";\nexport * from \"./rollup\";\nexport * from \"./errors\";\nexport * from \"./type-spec\";\nexport { type EventPayload, Subscription } from \"./subscriptions\";\nexport * as SovereignClient from \"@sovereign-sdk/client\";\n","import { type HexString, ensureBytes } from \"@sovereign-sdk/utils\";\nimport { bech32m } from \"bech32\";\n\n/**\n * Encodes a public key as a bech32m address with the given human-readable part (hrp).\n *\n * @param publicKey - The public key to encode, as a hex string or Uint8Array.\n * @param hrp - The human-readable part for the bech32m address (e.g., \"sov\").\n * @param concatPublicKey - Optional. If provided, only the first `concatPublicKey` bytes of the public key are used.\n * @returns The bech32m-encoded address as a string.\n * @throws {Error} If the public key is not a valid hex string or Uint8Array.\n */\nexport function addressFromPublicKey(\n publicKey: HexString | Uint8Array,\n hrp: string,\n concatPublicKey = 28,\n): string {\n let publicKeyBytes = ensureBytes(publicKey);\n\n if (concatPublicKey !== publicKey.length) {\n publicKeyBytes = publicKeyBytes.slice(0, concatPublicKey);\n }\n\n const words = bech32m.toWords(publicKeyBytes);\n return bech32m.encode(hrp, words);\n}\n","import SovereignClient from \"@sovereign-sdk/client\";\nimport type { APIError } from \"@sovereign-sdk/client\";\nimport type { RollupSchema, Serializer } from \"@sovereign-sdk/serializers\";\nimport type { Signer } from \"@sovereign-sdk/signers\";\nimport { bytesToHex, hexToBytes } from \"@sovereign-sdk/utils\";\nimport { Base64 } from \"js-base64\";\nimport { VersionMismatchError } from \"../errors\";\nimport {\n type Subscription,\n type SubscriptionToCallbackMap,\n createSubscription,\n} from \"../subscriptions\";\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 // Provides the ability to override the generation data instead of retrieving it automatically.\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 PartialRollupConfig.url}.\n */\n client: SovereignClient;\n /**\n * Creates the serializer instance to use for the rollup.\n *\n * This can be called more than once, for example if the chain hash changes (i.e a new rollup version)\n * is detected then it will be called again with the new rollup schema.\n */\n getSerializer: (schema: RollupSchema) => Serializer;\n /**\n * Arbitrary context that is associated with the rollup.\n */\n context: C;\n /**\n * The endpoint path for submitting transactions.\n * Defaults to \"/sequencer/txs\", the standard Sovereign SDK endpoint.\n * Can be overridden if your rollup is configured to expose non-standard endpoints in\n * order to support multiple different transaction encoding or authentication schemes.\n */\n txSubmissionEndpoint: string;\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 _typeBuilder: TypeBuilder<S, C>;\n private _chainHash?: Uint8Array;\n private _serializer?: Serializer;\n\n /**\n * Creates a new rollup client.\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 this._config = config;\n this._typeBuilder = typeBuilder;\n }\n\n /**\n * Retrieve dedup information about the provided address.\n *\n * @param publicKey - The public key to dedup.\n * TODO: How to add param for generation explicitly\n */\n async dedup(publicKey: Uint8Array): Promise<S[\"Dedup\"]> {\n // for public key credential id is just its bytes representation\n const credentialId = bytesToHex(publicKey);\n const response = await this.rollup.addresses.dedup(credentialId);\n return response as S[\"Dedup\"];\n }\n\n /**\n * Submits a transaction to the rollup.\n *\n * The endpoint used for submission can be overridden via the options.path parameter.\n * If not specified, the rollup's configured txSubmissionEndpoint will be used.\n *\n * @param transaction - The transaction to submit.\n * @param {SovereignClient.RequestOptions} options - The options for the request.\n */\n async submitTransaction(\n transaction: S[\"Transaction\"],\n options?: SovereignClient.RequestOptions,\n ): Promise<SovereignClient.Sequencer.TxCreateResponse> {\n const serializer = await this.serializer();\n const serializedTx = serializer.serializeTx(transaction);\n // Stainless RequestOptions is generic internally, causing issues for `body` and `query`.\n // That's fine since we supply the `body` and transaction submission doesn't take query parameters.\n // So we hack around this by destructuring them out.\n const { body: _, query: __, path, ...requestOptions } = options || {};\n const txSubmissionEndpoint = path || this._config.txSubmissionEndpoint;\n\n return this.http\n .post<SovereignClient.Sequencer.TxCreateResponse>(txSubmissionEndpoint, {\n body: { body: Base64.fromUint8Array(serializedTx) },\n ...requestOptions,\n })\n .catch(async (e) => {\n if (isVersionMismatchError(e as APIError)) {\n const oldVersion = bytesToHex(await this.chainHash());\n const { schema, chain_hash: newVersion } = await this.rollup.schema();\n this._chainHash = hexToBytes(newVersion);\n this._serializer = this._config.getSerializer(schema);\n\n if (oldVersion !== newVersion) {\n throw new VersionMismatchError(\n \"Schema version mismatch when submitting transaction\",\n newVersion,\n oldVersion,\n );\n }\n }\n throw e;\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 * @param {SovereignClient.RequestOptions} options - The options for the request.\n * @param endpoint - Optional endpoint override. If not specified, uses the rollup's configured txSubmissionEndpoint.\n */\n async signAndSubmitTransaction(\n unsignedTx: S[\"UnsignedTransaction\"],\n { signer }: SignerParams,\n options?: SovereignClient.RequestOptions,\n ): Promise<TransactionResult<S[\"Transaction\"]>> {\n const tx = await this.signTransaction(unsignedTx, signer);\n const result = await this.submitTransaction(tx, options);\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 * @param {SovereignClient.RequestOptions} options - The options for the request.\n */\n async call(\n runtimeCall: S[\"RuntimeCall\"],\n { signer, overrides }: CallParams<S>,\n options?: SovereignClient.RequestOptions,\n ): Promise<TransactionResult<S[\"Transaction\"]>> {\n const context = {\n runtimeCall,\n rollup: this,\n overrides: overrides ?? ({} as DeepPartial<S[\"UnsignedTransaction\"]>),\n };\n const unsignedTx = await this._typeBuilder.unsignedTransaction(context);\n\n return this.signAndSubmitTransaction(\n unsignedTx,\n {\n signer,\n },\n options,\n );\n }\n\n /**\n * Prepares a runtime call by creating and signing a transaction without submitting it.\n * This is useful for scenarios where you need the signed transaction for later submission\n * or for analysis purposes.\n *\n * @param runtimeCall - The runtime message to prepare.\n * @param params - The parameters for preparing the call.\n * @param params.signer - The signer to use for signing the transaction.\n * @param params.overrides - Optional overrides for the unsigned transaction.\n * @returns A promise that resolves to the signed transaction.\n */\n async prepareCall(\n runtimeCall: S[\"RuntimeCall\"],\n { signer, overrides }: CallParams<S>,\n ): Promise<S[\"Transaction\"]> {\n const context = {\n runtimeCall,\n rollup: this,\n overrides: overrides ?? ({} as DeepPartial<S[\"UnsignedTransaction\"]>),\n };\n const unsignedTx = await this._typeBuilder.unsignedTransaction(context);\n return this.signTransaction(unsignedTx, signer);\n }\n\n /**\n * Signs an unsigned transaction using the provided signer.\n * Creates a signature by combining the serialized unsigned transaction with the chain hash,\n * then constructs a fully signed transaction.\n *\n * @param unsignedTx - The unsigned transaction to sign.\n * @param signer - The signer to use for signing the transaction.\n * @returns A promise that resolves to the signed transaction.\n */\n async signTransaction(\n unsignedTx: S[\"UnsignedTransaction\"],\n signer: Signer,\n ): Promise<S[\"Transaction\"]> {\n const serializer = await this.serializer();\n const serializedUnsignedTx = serializer.serializeUnsignedTx(unsignedTx);\n const chainHash = await this.chainHash();\n const signature = await signer.sign(\n new Uint8Array([...serializedUnsignedTx, ...chainHash]),\n );\n const publicKey = await signer.publicKey();\n const context = {\n unsignedTx,\n sender: publicKey,\n signature,\n rollup: this,\n };\n return this._typeBuilder.transaction(context);\n }\n\n /**\n * Create a subscription to events emitted over websockets by the rollup.\n */\n subscribe<T extends keyof SubscriptionToCallbackMap>(\n type: T,\n callback: SubscriptionToCallbackMap[T],\n ): Subscription {\n return createSubscription(type, callback, this.http);\n }\n\n /**\n * Performs a healthcheck against the rollup to determine if it is currently healthy.\n *\n * @param timeout - Request timeout in milliseconds.\n * @returns `true` if the rollup is considered healthy otherwise `false`.\n */\n async healthcheck(timeout = 5000): Promise<boolean> {\n try {\n await this.http.get(\"/healthcheck\", { timeout, maxRetries: 1 });\n return true;\n } catch (e) {\n return !(e instanceof SovereignClient.APIConnectionError);\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._config.client;\n }\n\n /**\n * The serializer for the rollup.\n * Can be used to serialize transactions, runtime calls, etc.\n */\n async serializer(): Promise<Serializer> {\n if (this._serializer) return this._serializer;\n const { schema } = await this.rollup.schema();\n this._serializer = this._config.getSerializer(schema);\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 async chainHash(): Promise<Uint8Array> {\n if (this._chainHash) return this._chainHash;\n const { chain_hash } = await this.rollup.schema();\n this._chainHash = hexToBytes(chain_hash);\n return this._chainHash;\n }\n}\n\nfunction isVersionMismatchError(e: APIError): boolean {\n if (\n // biome-ignore lint/suspicious/noExplicitAny: yolo\n (e.error as any)?.details?.error?.includes(\"Signature verification failed\")\n ) {\n return true;\n }\n\n return false;\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\nexport class VersionMismatchError extends SovereignError {\n public readonly newVersion: string;\n public readonly currentVersion: string;\n public readonly retryable: boolean;\n\n constructor(message: string, newVersion: string, currentVersion: string) {\n super(message);\n\n this.newVersion = newVersion;\n this.currentVersion = currentVersion;\n this.retryable = newVersion !== currentVersion;\n }\n}\n\nexport class SchemaError extends SovereignError {\n public readonly schema: object;\n public readonly reason: string;\n\n constructor(message: string, reason: string, schema: object) {\n super(`${message}: ${reason}`);\n\n this.reason = reason;\n this.schema = schema;\n }\n}\n","import type SovereignSDK from \"@sovereign-sdk/client\";\nimport IsoWebSocket from \"isomorphic-ws\";\nimport { WebSocket } from \"partysocket\";\nimport { SovereignError } from \"./errors\";\n\ntype Url = string;\n\nexport function httpToWebSocket(url: string) {\n return url.replace(/^http(s?):\\/\\//, (_, s) => `ws${s}://`);\n}\n\nexport type Subscription = {\n /** Url providing the subscription. */\n url: Url;\n /** Unsubscribe this subscription. */\n unsubscribe: () => void;\n};\n\ntype SubscriptionEntry = {\n websocket: WebSocket;\n // biome-ignore lint/suspicious/noExplicitAny: allow\n callbacks: Array<(...args: any[]) => void>;\n};\n\nexport const _subscriptions: Record<Url, SubscriptionEntry> = {};\n\n/** Subscribe to the provided websocket url & call the provided callback on messages received. */\nexport function subscribe(\n url: Url,\n // biome-ignore lint/suspicious/noExplicitAny: allow\n callback: (...args: any[]) => void,\n): Subscription {\n const subscription = _subscriptions[url];\n\n if (!subscription) {\n const websocket = new WebSocket(url, [], { WebSocket: IsoWebSocket });\n // bun compatibility: https://github.com/partykit/partykit/issues/774\n websocket.binaryType = \"arraybuffer\";\n\n _subscriptions[url] = {\n websocket,\n callbacks: [callback],\n };\n\n websocket.addEventListener(\"message\", (message) => {\n const data = JSON.parse(message.data);\n const callbacks = _subscriptions[url]?.callbacks;\n if (callbacks) {\n for (const cb of callbacks) {\n cb(data);\n }\n }\n });\n websocket.addEventListener(\"error\", (e) =>\n console.log(\"Websocket error\", e),\n );\n } else {\n subscription.callbacks.push(callback);\n }\n\n const callbackIndex = _subscriptions[url]?.callbacks.length - 1;\n\n return {\n get url() {\n return url;\n },\n unsubscribe() {\n const subscription = _subscriptions[url];\n\n if (!subscription) {\n return;\n }\n\n subscription.callbacks.splice(callbackIndex, 1);\n\n if (!subscription.callbacks.length) {\n subscription.websocket.close();\n delete _subscriptions[url];\n }\n },\n };\n}\n\nexport type EventPayload = {\n tx_hash: string;\n type: \"event\";\n number: number;\n key: string;\n value: Record<string, unknown>;\n module: {\n type: \"moduleRef\";\n name: string;\n };\n};\n\nexport interface SubscriptionToCallbackMap {\n events: (event: EventPayload) => Promise<void>;\n}\n\nexport function createSubscription<T extends keyof SubscriptionToCallbackMap>(\n subscription: T,\n callback: SubscriptionToCallbackMap[T],\n client: SovereignSDK,\n): Subscription {\n switch (subscription) {\n case \"events\": {\n const url = client.buildURL(\"/sequencer/events/ws\", {});\n return subscribe(\n httpToWebSocket(url),\n callback as SubscriptionToCallbackMap[\"events\"],\n );\n }\n default:\n throw new SovereignError(`Invalid subscription type '${subscription}'`);\n }\n}\n","import SovereignClient from \"@sovereign-sdk/client\";\nimport { JsSerializer } from \"@sovereign-sdk/serializers\";\nimport { type HexString, bytesToHex } from \"@sovereign-sdk/utils\";\nimport type { DeepPartial } from \"../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: string;\n gas_limit: number[] | null;\n chain_id: number;\n};\n\nexport type Generation = { generation: number };\nexport type Nonce = { nonce: number };\nexport type Uniqueness = Nonce | Generation;\n\nexport type UnsignedTransaction<RuntimeCall> = {\n runtime_call: RuntimeCall;\n uniqueness: Uniqueness;\n details: TxDetails;\n};\n\nexport type TransactionV0<RuntimeCall> = {\n pub_key: HexString;\n signature: HexString;\n} & UnsignedTransaction<RuntimeCall>;\n\nexport type Transaction<RuntimeCall> = {\n V0: TransactionV0<RuntimeCall>;\n};\n\nexport type Dedup = {\n nonce: number;\n};\n\nexport type StandardRollupContext = {\n defaultTxDetails: TxDetails;\n};\n\nexport type StandardRollupSpec<RuntimeCall> = {\n UnsignedTransaction: UnsignedTransaction<RuntimeCall>;\n Transaction: Transaction<RuntimeCall>;\n RuntimeCall: RuntimeCall;\n Dedup: Dedup;\n};\n\nconst useOrFetchUniqueness = async <S extends StandardRollupSpec<unknown>>({\n overrides,\n}: Omit<\n UnsignedTransactionContext<S, StandardRollupContext>,\n \"runtimeCall\"\n>) => {\n if (overrides?.uniqueness) {\n return overrides.uniqueness;\n }\n\n return { generation: Date.now() };\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 { uniqueness: _, ...overrides } = context.overrides;\n const uniqueness = await useOrFetchUniqueness(context);\n const details: TxDetails = {\n ...rollup.context.defaultTxDetails,\n ...overrides.details,\n };\n\n return {\n runtime_call: runtimeCall,\n uniqueness,\n details,\n } as S[\"UnsignedTransaction\"];\n },\n async transaction({\n sender,\n signature,\n unsignedTx,\n }: TransactionContext<S, StandardRollupContext>) {\n return {\n V0: {\n pub_key: bytesToHex(sender),\n signature: bytesToHex(signature),\n ...unsignedTx,\n },\n };\n },\n };\n}\n\n/**\n * The parameters for simulating a runtime call transaction.\n */\nexport type SimulateParams = Omit<\n SovereignClient.RollupSimulateParams,\n \"call\" | \"sender\"\n> &\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 }: SimulateParams,\n ): Promise<SovereignClient.Rollup.RollupSimulateResponse> {\n const publicKey = await signer.publicKey();\n const sender = bytesToHex(publicKey);\n const call = runtimeMessage as { [key: string]: unknown };\n\n return this.rollup.simulate({ sender, call });\n }\n}\n\nexport const DEFAULT_TX_DETAILS: Omit<TxDetails, \"chain_id\"> = {\n max_priority_fee_bips: 0,\n max_fee: \"100000000\",\n gas_limit: null,\n};\n\nasync function buildContext<C extends StandardRollupContext>(\n client: SovereignClient,\n context?: DeepPartial<C>,\n): Promise<C> {\n const defaultTxDetails = {\n ...DEFAULT_TX_DETAILS,\n ...context?.defaultTxDetails,\n };\n\n if (!defaultTxDetails.chain_id) {\n const { chain_id } = await client.rollup.constants();\n\n defaultTxDetails.chain_id = chain_id;\n }\n\n return {\n defaultTxDetails,\n } as C;\n}\n\nexport async function createStandardRollup<\n RuntimeCall,\n C extends StandardRollupContext = StandardRollupContext,\n>(\n rollupConfig?: Partial<RollupConfig<DeepPartial<C>>>,\n typeBuilderOverrides?: Partial<\n TypeBuilder<StandardRollupSpec<RuntimeCall>, C>\n >,\n) {\n const config = rollupConfig ?? {};\n const client = config.client ?? new SovereignClient({ baseURL: config.url });\n const getSerializer =\n config.getSerializer ?? ((schema) => new JsSerializer(schema));\n const context = await buildContext<C>(client, config.context);\n\n // Default to the standard transaction submission endpoint\n const txSubmissionEndpoint = config.txSubmissionEndpoint ?? \"/sequencer/txs\";\n\n return new StandardRollup<RuntimeCall>(\n {\n ...config,\n client,\n getSerializer,\n context,\n txSubmissionEndpoint,\n },\n {\n ...standardTypeBuilder(),\n ...typeBuilderOverrides,\n },\n );\n}\n"],"mappings":"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","names":["SovereignClient","import_utils","IsoWebSocket","_a","subscription","SovereignClient","import_client","import_utils","_a","SovereignClient","SovereignClient"]}
|
package/dist/index.mjs
CHANGED
|
@@ -174,17 +174,22 @@ var Rollup = class {
|
|
|
174
174
|
/**
|
|
175
175
|
* Retrieve dedup information about the provided address.
|
|
176
176
|
*
|
|
177
|
-
* @param
|
|
177
|
+
* @param publicKey - The public key to dedup.
|
|
178
|
+
* TODO: How to add param for generation explicitly
|
|
178
179
|
*/
|
|
179
|
-
dedup(
|
|
180
|
+
dedup(publicKey) {
|
|
180
181
|
return __async(this, null, function* () {
|
|
181
|
-
const
|
|
182
|
+
const credentialId = bytesToHex(publicKey);
|
|
183
|
+
const response = yield this.rollup.addresses.dedup(credentialId);
|
|
182
184
|
return response;
|
|
183
185
|
});
|
|
184
186
|
}
|
|
185
187
|
/**
|
|
186
188
|
* Submits a transaction to the rollup.
|
|
187
189
|
*
|
|
190
|
+
* The endpoint used for submission can be overridden via the options.path parameter.
|
|
191
|
+
* If not specified, the rollup's configured txSubmissionEndpoint will be used.
|
|
192
|
+
*
|
|
188
193
|
* @param transaction - The transaction to submit.
|
|
189
194
|
* @param {SovereignClient.RequestOptions} options - The options for the request.
|
|
190
195
|
*/
|
|
@@ -192,10 +197,14 @@ var Rollup = class {
|
|
|
192
197
|
return __async(this, null, function* () {
|
|
193
198
|
const serializer = yield this.serializer();
|
|
194
199
|
const serializedTx = serializer.serializeTx(transaction);
|
|
195
|
-
|
|
200
|
+
const _a = options || {}, { body: _, query: __, path } = _a, requestOptions = __objRest(_a, ["body", "query", "path"]);
|
|
201
|
+
const txSubmissionEndpoint = path || this._config.txSubmissionEndpoint;
|
|
202
|
+
return this.http.post(txSubmissionEndpoint, __spreadValues({
|
|
203
|
+
body: { body: Base64.fromUint8Array(serializedTx) }
|
|
204
|
+
}, requestOptions)).catch((e) => __async(this, null, function* () {
|
|
196
205
|
if (isVersionMismatchError(e)) {
|
|
197
206
|
const oldVersion = bytesToHex(yield this.chainHash());
|
|
198
|
-
const { schema, chain_hash: newVersion } = yield this.rollup.schema
|
|
207
|
+
const { schema, chain_hash: newVersion } = yield this.rollup.schema();
|
|
199
208
|
this._chainHash = hexToBytes(newVersion);
|
|
200
209
|
this._serializer = this._config.getSerializer(schema);
|
|
201
210
|
if (oldVersion !== newVersion) {
|
|
@@ -217,23 +226,11 @@ var Rollup = class {
|
|
|
217
226
|
* @param unsignedTx - The unsigned transaction to sign and submit.
|
|
218
227
|
* @param {SignerParams} params - The params for signing and submitting the transaction.
|
|
219
228
|
* @param {SovereignClient.RequestOptions} options - The options for the request.
|
|
229
|
+
* @param endpoint - Optional endpoint override. If not specified, uses the rollup's configured txSubmissionEndpoint.
|
|
220
230
|
*/
|
|
221
231
|
signAndSubmitTransaction(_0, _1, _2) {
|
|
222
232
|
return __async(this, arguments, function* (unsignedTx, { signer }, options) {
|
|
223
|
-
const
|
|
224
|
-
const serializedUnsignedTx = serializer.serializeUnsignedTx(unsignedTx);
|
|
225
|
-
const chainHash = yield this.chainHash();
|
|
226
|
-
const signature = yield signer.sign(
|
|
227
|
-
new Uint8Array([...serializedUnsignedTx, ...chainHash])
|
|
228
|
-
);
|
|
229
|
-
const publicKey = yield signer.publicKey();
|
|
230
|
-
const context = {
|
|
231
|
-
unsignedTx,
|
|
232
|
-
sender: publicKey,
|
|
233
|
-
signature,
|
|
234
|
-
rollup: this
|
|
235
|
-
};
|
|
236
|
-
const tx = yield this._typeBuilder.transaction(context);
|
|
233
|
+
const tx = yield this.signTransaction(unsignedTx, signer);
|
|
237
234
|
const result = yield this.submitTransaction(tx, options);
|
|
238
235
|
return { transaction: tx, response: result };
|
|
239
236
|
});
|
|
@@ -263,6 +260,55 @@ var Rollup = class {
|
|
|
263
260
|
);
|
|
264
261
|
});
|
|
265
262
|
}
|
|
263
|
+
/**
|
|
264
|
+
* Prepares a runtime call by creating and signing a transaction without submitting it.
|
|
265
|
+
* This is useful for scenarios where you need the signed transaction for later submission
|
|
266
|
+
* or for analysis purposes.
|
|
267
|
+
*
|
|
268
|
+
* @param runtimeCall - The runtime message to prepare.
|
|
269
|
+
* @param params - The parameters for preparing the call.
|
|
270
|
+
* @param params.signer - The signer to use for signing the transaction.
|
|
271
|
+
* @param params.overrides - Optional overrides for the unsigned transaction.
|
|
272
|
+
* @returns A promise that resolves to the signed transaction.
|
|
273
|
+
*/
|
|
274
|
+
prepareCall(_0, _1) {
|
|
275
|
+
return __async(this, arguments, function* (runtimeCall, { signer, overrides }) {
|
|
276
|
+
const context = {
|
|
277
|
+
runtimeCall,
|
|
278
|
+
rollup: this,
|
|
279
|
+
overrides: overrides != null ? overrides : {}
|
|
280
|
+
};
|
|
281
|
+
const unsignedTx = yield this._typeBuilder.unsignedTransaction(context);
|
|
282
|
+
return this.signTransaction(unsignedTx, signer);
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Signs an unsigned transaction using the provided signer.
|
|
287
|
+
* Creates a signature by combining the serialized unsigned transaction with the chain hash,
|
|
288
|
+
* then constructs a fully signed transaction.
|
|
289
|
+
*
|
|
290
|
+
* @param unsignedTx - The unsigned transaction to sign.
|
|
291
|
+
* @param signer - The signer to use for signing the transaction.
|
|
292
|
+
* @returns A promise that resolves to the signed transaction.
|
|
293
|
+
*/
|
|
294
|
+
signTransaction(unsignedTx, signer) {
|
|
295
|
+
return __async(this, null, function* () {
|
|
296
|
+
const serializer = yield this.serializer();
|
|
297
|
+
const serializedUnsignedTx = serializer.serializeUnsignedTx(unsignedTx);
|
|
298
|
+
const chainHash = yield this.chainHash();
|
|
299
|
+
const signature = yield signer.sign(
|
|
300
|
+
new Uint8Array([...serializedUnsignedTx, ...chainHash])
|
|
301
|
+
);
|
|
302
|
+
const publicKey = yield signer.publicKey();
|
|
303
|
+
const context = {
|
|
304
|
+
unsignedTx,
|
|
305
|
+
sender: publicKey,
|
|
306
|
+
signature,
|
|
307
|
+
rollup: this
|
|
308
|
+
};
|
|
309
|
+
return this._typeBuilder.transaction(context);
|
|
310
|
+
});
|
|
311
|
+
}
|
|
266
312
|
/**
|
|
267
313
|
* Create a subscription to events emitted over websockets by the rollup.
|
|
268
314
|
*/
|
|
@@ -318,7 +364,7 @@ var Rollup = class {
|
|
|
318
364
|
serializer() {
|
|
319
365
|
return __async(this, null, function* () {
|
|
320
366
|
if (this._serializer) return this._serializer;
|
|
321
|
-
const { schema } = yield this.rollup.schema
|
|
367
|
+
const { schema } = yield this.rollup.schema();
|
|
322
368
|
this._serializer = this._config.getSerializer(schema);
|
|
323
369
|
return this._serializer;
|
|
324
370
|
});
|
|
@@ -332,7 +378,7 @@ var Rollup = class {
|
|
|
332
378
|
chainHash() {
|
|
333
379
|
return __async(this, null, function* () {
|
|
334
380
|
if (this._chainHash) return this._chainHash;
|
|
335
|
-
const { chain_hash } = yield this.rollup.schema
|
|
381
|
+
const { chain_hash } = yield this.rollup.schema();
|
|
336
382
|
this._chainHash = hexToBytes(chain_hash);
|
|
337
383
|
return this._chainHash;
|
|
338
384
|
});
|
|
@@ -383,16 +429,10 @@ function standardTypeBuilder() {
|
|
|
383
429
|
unsignedTx
|
|
384
430
|
}) {
|
|
385
431
|
return {
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
},
|
|
391
|
-
signature: {
|
|
392
|
-
msg_sig: signature
|
|
393
|
-
}
|
|
394
|
-
}, unsignedTx)
|
|
395
|
-
}
|
|
432
|
+
V0: __spreadValues({
|
|
433
|
+
pub_key: bytesToHex2(sender),
|
|
434
|
+
signature: bytesToHex2(signature)
|
|
435
|
+
}, unsignedTx)
|
|
396
436
|
};
|
|
397
437
|
});
|
|
398
438
|
}
|
|
@@ -407,29 +447,11 @@ var StandardRollup = class extends Rollup {
|
|
|
407
447
|
* @param runtimeMessage - The runtime message to call.
|
|
408
448
|
*/
|
|
409
449
|
simulate(_0, _1) {
|
|
410
|
-
return __async(this, arguments, function* (runtimeMessage, { signer
|
|
411
|
-
const serializer = yield this.serializer();
|
|
412
|
-
const runtimeCall = serializer.serializeRuntimeCall(runtimeMessage);
|
|
450
|
+
return __async(this, arguments, function* (runtimeMessage, { signer }) {
|
|
413
451
|
const publicKey = yield signer.publicKey();
|
|
414
|
-
const
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
uniqueness: overrideGeneration ? { generation: overrideGeneration } : void 0
|
|
418
|
-
}
|
|
419
|
-
});
|
|
420
|
-
const generation = "generation" in uniqueness ? uniqueness.generation : uniqueness.nonce;
|
|
421
|
-
const response = yield this.rollup.simulate({
|
|
422
|
-
body: {
|
|
423
|
-
details: __spreadProps(__spreadValues({}, txDetails), {
|
|
424
|
-
// simulate needs this field as `undefined` currently
|
|
425
|
-
gas_limit: txDetails.gas_limit || void 0
|
|
426
|
-
}),
|
|
427
|
-
encoded_call_message: bytesToHex2(runtimeCall),
|
|
428
|
-
generation,
|
|
429
|
-
sender_pub_key: bytesToHex2(publicKey)
|
|
430
|
-
}
|
|
431
|
-
});
|
|
432
|
-
return response;
|
|
452
|
+
const sender = bytesToHex2(publicKey);
|
|
453
|
+
const call = runtimeMessage;
|
|
454
|
+
return this.rollup.simulate({ sender, call });
|
|
433
455
|
});
|
|
434
456
|
}
|
|
435
457
|
};
|
|
@@ -442,7 +464,7 @@ function buildContext(client, context) {
|
|
|
442
464
|
return __async(this, null, function* () {
|
|
443
465
|
const defaultTxDetails = __spreadValues(__spreadValues({}, DEFAULT_TX_DETAILS), context == null ? void 0 : context.defaultTxDetails);
|
|
444
466
|
if (!defaultTxDetails.chain_id) {
|
|
445
|
-
const { chain_id } = yield client.rollup.constants
|
|
467
|
+
const { chain_id } = yield client.rollup.constants();
|
|
446
468
|
defaultTxDetails.chain_id = chain_id;
|
|
447
469
|
}
|
|
448
470
|
return {
|
|
@@ -452,13 +474,19 @@ function buildContext(client, context) {
|
|
|
452
474
|
}
|
|
453
475
|
function createStandardRollup(rollupConfig, typeBuilderOverrides) {
|
|
454
476
|
return __async(this, null, function* () {
|
|
455
|
-
var _a, _b;
|
|
477
|
+
var _a, _b, _c;
|
|
456
478
|
const config = rollupConfig != null ? rollupConfig : {};
|
|
457
479
|
const client = (_a = config.client) != null ? _a : new SovereignClient2({ baseURL: config.url });
|
|
458
480
|
const getSerializer = (_b = config.getSerializer) != null ? _b : (schema) => new JsSerializer(schema);
|
|
459
481
|
const context = yield buildContext(client, config.context);
|
|
482
|
+
const txSubmissionEndpoint = (_c = config.txSubmissionEndpoint) != null ? _c : "/sequencer/txs";
|
|
460
483
|
return new StandardRollup(
|
|
461
|
-
__spreadProps(__spreadValues({}, config), {
|
|
484
|
+
__spreadProps(__spreadValues({}, config), {
|
|
485
|
+
client,
|
|
486
|
+
getSerializer,
|
|
487
|
+
context,
|
|
488
|
+
txSubmissionEndpoint
|
|
489
|
+
}),
|
|
462
490
|
__spreadValues(__spreadValues({}, standardTypeBuilder()), typeBuilderOverrides)
|
|
463
491
|
);
|
|
464
492
|
});
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/addresses.ts","../src/rollup/rollup.ts","../src/errors.ts","../src/subscriptions.ts","../src/rollup/standard-rollup.ts","../src/index.ts"],"sourcesContent":["import { type HexString, ensureBytes } from \"@sovereign-sdk/utils\";\nimport { bech32m } from \"bech32\";\n\n/**\n * Encodes a public key as a bech32m address with the given human-readable part (hrp).\n *\n * @param publicKey - The public key to encode, as a hex string or Uint8Array.\n * @param hrp - The human-readable part for the bech32m address (e.g., \"sov\").\n * @param concatPublicKey - Optional. If provided, only the first `concatPublicKey` bytes of the public key are used.\n * @returns The bech32m-encoded address as a string.\n * @throws {Error} If the public key is not a valid hex string or Uint8Array.\n */\nexport function addressFromPublicKey(\n publicKey: HexString | Uint8Array,\n hrp: string,\n concatPublicKey = 28,\n): string {\n let publicKeyBytes = ensureBytes(publicKey);\n\n if (concatPublicKey !== publicKey.length) {\n publicKeyBytes = publicKeyBytes.slice(0, concatPublicKey);\n }\n\n const words = bech32m.toWords(publicKeyBytes);\n return bech32m.encode(hrp, words);\n}\n","import SovereignClient from \"@sovereign-sdk/client\";\nimport type { APIError } from \"@sovereign-sdk/client\";\nimport type { RollupSchema, Serializer } from \"@sovereign-sdk/serializers\";\nimport type { Signer } from \"@sovereign-sdk/signers\";\nimport { bytesToHex, hexToBytes } from \"@sovereign-sdk/utils\";\nimport { Base64 } from \"js-base64\";\nimport { VersionMismatchError } from \"../errors\";\nimport {\n type Subscription,\n type SubscriptionToCallbackMap,\n createSubscription,\n} from \"../subscriptions\";\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 // Provides the ability to override the generation data instead of retrieving it automatically.\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 PartialRollupConfig.url}.\n */\n client: SovereignClient;\n /**\n * Creates the serializer instance to use for the rollup.\n *\n * This can be called more than once, for example if the chain hash changes (i.e a new rollup version)\n * is detected then it will be called again with the new rollup schema.\n */\n getSerializer: (schema: RollupSchema) => Serializer;\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 _typeBuilder: TypeBuilder<S, C>;\n private _chainHash?: Uint8Array;\n private _serializer?: Serializer;\n\n /**\n * Creates a new rollup client.\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 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 as S[\"Dedup\"];\n }\n\n /**\n * Submits a transaction to the rollup.\n *\n * @param transaction - The transaction to submit.\n * @param {SovereignClient.RequestOptions} options - The options for the request.\n */\n async submitTransaction(\n transaction: S[\"Transaction\"],\n options?: SovereignClient.RequestOptions,\n ): Promise<SovereignClient.Sequencer.TxCreateResponse> {\n const serializer = await this.serializer();\n const serializedTx = serializer.serializeTx(transaction);\n\n return this.sequencer.txs\n .create({ body: Base64.fromUint8Array(serializedTx) }, options)\n .catch(async (e) => {\n if (isVersionMismatchError(e as APIError)) {\n const oldVersion = bytesToHex(await this.chainHash());\n const { schema, chain_hash: newVersion } =\n await this.rollup.schema.retrieve();\n this._chainHash = hexToBytes(newVersion);\n this._serializer = this._config.getSerializer(schema);\n\n if (oldVersion !== newVersion) {\n throw new VersionMismatchError(\n \"Schema version mismatch when submitting transaction\",\n newVersion,\n oldVersion,\n );\n }\n }\n throw e;\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 * @param {SovereignClient.RequestOptions} options - The options for the request.\n */\n async signAndSubmitTransaction(\n unsignedTx: S[\"UnsignedTransaction\"],\n { signer }: SignerParams,\n options?: SovereignClient.RequestOptions,\n ): Promise<TransactionResult<S[\"Transaction\"]>> {\n const serializer = await this.serializer();\n const serializedUnsignedTx = serializer.serializeUnsignedTx(unsignedTx);\n const chainHash = await this.chainHash();\n const signature = await signer.sign(\n new Uint8Array([...serializedUnsignedTx, ...chainHash]),\n );\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, options);\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 * @param {SovereignClient.RequestOptions} options - The options for the request.\n */\n async call(\n runtimeCall: S[\"RuntimeCall\"],\n { signer, overrides }: CallParams<S>,\n options?: SovereignClient.RequestOptions,\n ): Promise<TransactionResult<S[\"Transaction\"]>> {\n const context = {\n runtimeCall,\n rollup: this,\n overrides: overrides ?? ({} as DeepPartial<S[\"UnsignedTransaction\"]>),\n };\n const unsignedTx = await this._typeBuilder.unsignedTransaction(context);\n\n return this.signAndSubmitTransaction(\n unsignedTx,\n {\n signer,\n },\n options,\n );\n }\n\n /**\n * Create a subscription to events emitted over websockets by the rollup.\n */\n subscribe<T extends keyof SubscriptionToCallbackMap>(\n type: T,\n callback: SubscriptionToCallbackMap[T],\n ): Subscription {\n return createSubscription(type, callback, this.http);\n }\n\n /**\n * Performs a healthcheck against the rollup to determine if it is currently healthy.\n *\n * @param timeout - Request timeout in milliseconds.\n * @returns `true` if the rollup is considered healthy otherwise `false`.\n */\n async healthcheck(timeout = 5000): Promise<boolean> {\n try {\n await this.http.get(\"/healthcheck\", { timeout, maxRetries: 1 });\n return true;\n } catch (e) {\n return !(e instanceof SovereignClient.APIConnectionError);\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._config.client;\n }\n\n /**\n * The serializer for the rollup.\n * Can be used to serialize transactions, runtime calls, etc.\n */\n async serializer(): Promise<Serializer> {\n if (this._serializer) return this._serializer;\n const { schema } = await this.rollup.schema.retrieve();\n this._serializer = this._config.getSerializer(schema);\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 async chainHash(): Promise<Uint8Array> {\n if (this._chainHash) return this._chainHash;\n const { chain_hash } = await this.rollup.schema.retrieve();\n this._chainHash = hexToBytes(chain_hash);\n return this._chainHash;\n }\n}\n\nfunction isVersionMismatchError(e: APIError): boolean {\n if (\n // biome-ignore lint/suspicious/noExplicitAny: yolo\n (e.error as any)?.details?.error?.includes(\"Signature verification failed\")\n ) {\n return true;\n }\n\n return false;\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\nexport class VersionMismatchError extends SovereignError {\n public readonly newVersion: string;\n public readonly currentVersion: string;\n public readonly retryable: boolean;\n\n constructor(message: string, newVersion: string, currentVersion: string) {\n super(message);\n\n this.newVersion = newVersion;\n this.currentVersion = currentVersion;\n this.retryable = newVersion !== currentVersion;\n }\n}\n\nexport class SchemaError extends SovereignError {\n public readonly schema: object;\n public readonly reason: string;\n\n constructor(message: string, reason: string, schema: object) {\n super(`${message}: ${reason}`);\n\n this.reason = reason;\n this.schema = schema;\n }\n}\n","import type SovereignSDK from \"@sovereign-sdk/client\";\nimport IsoWebSocket from \"isomorphic-ws\";\nimport { WebSocket } from \"partysocket\";\nimport { SovereignError } from \"./errors\";\n\ntype Url = string;\n\nexport function httpToWebSocket(url: string) {\n return url.replace(/^http(s?):\\/\\//, (_, s) => `ws${s}://`);\n}\n\nexport type Subscription = {\n /** Url providing the subscription. */\n url: Url;\n /** Unsubscribe this subscription. */\n unsubscribe: () => void;\n};\n\ntype SubscriptionEntry = {\n websocket: WebSocket;\n // biome-ignore lint/suspicious/noExplicitAny: allow\n callbacks: Array<(...args: any[]) => void>;\n};\n\nexport const _subscriptions: Record<Url, SubscriptionEntry> = {};\n\n/** Subscribe to the provided websocket url & call the provided callback on messages received. */\nexport function subscribe(\n url: Url,\n // biome-ignore lint/suspicious/noExplicitAny: allow\n callback: (...args: any[]) => void,\n): Subscription {\n const subscription = _subscriptions[url];\n\n if (!subscription) {\n const websocket = new WebSocket(url, [], { WebSocket: IsoWebSocket });\n // bun compatibility: https://github.com/partykit/partykit/issues/774\n websocket.binaryType = \"arraybuffer\";\n\n _subscriptions[url] = {\n websocket,\n callbacks: [callback],\n };\n\n websocket.addEventListener(\"message\", (message) => {\n const data = JSON.parse(message.data);\n const callbacks = _subscriptions[url]?.callbacks;\n if (callbacks) {\n for (const cb of callbacks) {\n cb(data);\n }\n }\n });\n websocket.addEventListener(\"error\", (e) =>\n console.log(\"Websocket error\", e),\n );\n } else {\n subscription.callbacks.push(callback);\n }\n\n const callbackIndex = _subscriptions[url]?.callbacks.length - 1;\n\n return {\n get url() {\n return url;\n },\n unsubscribe() {\n const subscription = _subscriptions[url];\n\n if (!subscription) {\n return;\n }\n\n subscription.callbacks.splice(callbackIndex, 1);\n\n if (!subscription.callbacks.length) {\n subscription.websocket.close();\n delete _subscriptions[url];\n }\n },\n };\n}\n\nexport type EventPayload = {\n tx_hash: string;\n type: \"event\";\n number: number;\n key: string;\n value: Record<string, unknown>;\n module: {\n type: \"moduleRef\";\n name: string;\n };\n};\n\nexport interface SubscriptionToCallbackMap {\n events: (event: EventPayload) => Promise<void>;\n}\n\nexport function createSubscription<T extends keyof SubscriptionToCallbackMap>(\n subscription: T,\n callback: SubscriptionToCallbackMap[T],\n client: SovereignSDK,\n): Subscription {\n switch (subscription) {\n case \"events\": {\n const url = client.buildURL(\"/sequencer/events/ws\", {});\n return subscribe(\n httpToWebSocket(url),\n callback as SubscriptionToCallbackMap[\"events\"],\n );\n }\n default:\n throw new SovereignError(`Invalid subscription type '${subscription}'`);\n }\n}\n","import SovereignClient from \"@sovereign-sdk/client\";\nimport { JsSerializer } from \"@sovereign-sdk/serializers\";\nimport { bytesToHex } from \"@sovereign-sdk/utils\";\nimport type { DeepPartial } from \"../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: string;\n gas_limit: number[] | null;\n chain_id: number;\n};\n\nexport type Generation = { generation: number };\nexport type Nonce = { nonce: number };\nexport type Uniqueness = Nonce | Generation;\n\nexport type UnsignedTransaction<RuntimeCall> = {\n runtime_call: RuntimeCall;\n uniqueness: Uniqueness;\n details: TxDetails;\n};\n\nexport type TransactionV0<RuntimeCall> = {\n pub_key: { pub_key: Uint8Array };\n signature: { msg_sig: Uint8Array };\n} & UnsignedTransaction<RuntimeCall>;\n\nexport type Transaction<RuntimeCall> = {\n versioned_tx: { V0: TransactionV0<RuntimeCall> };\n};\n\nexport type Dedup = {\n nonce: number;\n};\n\nexport type StandardRollupContext = {\n defaultTxDetails: TxDetails;\n};\n\nexport type StandardRollupSpec<RuntimeCall> = {\n UnsignedTransaction: UnsignedTransaction<RuntimeCall>;\n Transaction: Transaction<RuntimeCall>;\n RuntimeCall: RuntimeCall;\n Dedup: Dedup;\n};\n\nconst useOrFetchUniqueness = async <S extends StandardRollupSpec<unknown>>({\n overrides,\n}: Omit<\n UnsignedTransactionContext<S, StandardRollupContext>,\n \"runtimeCall\"\n>) => {\n if (overrides?.uniqueness) {\n return overrides.uniqueness;\n }\n\n return { generation: Date.now() };\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 { uniqueness: _, ...overrides } = context.overrides;\n const uniqueness = await useOrFetchUniqueness(context);\n const details: TxDetails = {\n ...rollup.context.defaultTxDetails,\n ...overrides.details,\n };\n\n return {\n runtime_call: runtimeCall,\n uniqueness,\n details,\n } as S[\"UnsignedTransaction\"];\n },\n async transaction({\n sender,\n signature,\n unsignedTx,\n }: TransactionContext<S, StandardRollupContext>) {\n return {\n versioned_tx: {\n V0: {\n pub_key: {\n pub_key: sender,\n },\n signature: {\n msg_sig: signature,\n },\n ...unsignedTx,\n },\n },\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 /** The generation of the transaction for uniquness purposes. */\n generation?: 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, generation: overrideGeneration }: SimulateParams,\n ): Promise<SovereignClient.Rollup.SimulateExecutionResponse> {\n const serializer = await this.serializer();\n const runtimeCall = serializer.serializeRuntimeCall(runtimeMessage);\n const publicKey = await signer.publicKey();\n const uniqueness = await useOrFetchUniqueness({\n rollup: this,\n overrides: {\n uniqueness: overrideGeneration\n ? { generation: overrideGeneration }\n : undefined,\n },\n });\n // Extract the generation number from the uniqueness object\n const generation =\n \"generation\" in uniqueness\n ? (uniqueness as Generation).generation\n : (uniqueness as Nonce).nonce; // Use nonce as fallback until simulate endpoint is updated.\n const response = await this.rollup.simulate({\n body: {\n details: {\n ...txDetails,\n // simulate needs this field as `undefined` currently\n gas_limit: txDetails.gas_limit || undefined,\n },\n encoded_call_message: bytesToHex(runtimeCall),\n generation,\n sender_pub_key: bytesToHex(publicKey),\n },\n });\n\n return response;\n }\n}\n\nexport const DEFAULT_TX_DETAILS: Omit<TxDetails, \"chain_id\"> = {\n max_priority_fee_bips: 0,\n max_fee: \"100000000\",\n gas_limit: null,\n};\n\nasync function buildContext<C extends StandardRollupContext>(\n client: SovereignClient,\n context?: DeepPartial<C>,\n): Promise<C> {\n const defaultTxDetails = {\n ...DEFAULT_TX_DETAILS,\n ...context?.defaultTxDetails,\n };\n\n if (!defaultTxDetails.chain_id) {\n const { chain_id } = await client.rollup.constants.retrieve();\n\n defaultTxDetails.chain_id = chain_id;\n }\n\n return {\n defaultTxDetails,\n } as C;\n}\n\nexport async function createStandardRollup<\n RuntimeCall,\n C extends StandardRollupContext = StandardRollupContext,\n>(\n rollupConfig?: Partial<RollupConfig<DeepPartial<C>>>,\n typeBuilderOverrides?: Partial<\n TypeBuilder<StandardRollupSpec<RuntimeCall>, C>\n >,\n) {\n const config = rollupConfig ?? {};\n const client = config.client ?? new SovereignClient({ baseURL: config.url });\n const getSerializer =\n config.getSerializer ?? ((schema) => new JsSerializer(schema));\n const context = await buildContext<C>(client, config.context);\n\n return new StandardRollup<RuntimeCall>(\n { ...config, client, getSerializer, context },\n {\n ...standardTypeBuilder(),\n ...typeBuilderOverrides,\n },\n );\n}\n","export * from \"./addresses\";\nexport * from \"./rollup\";\nexport * from \"./errors\";\nexport * from \"./type-spec\";\nexport { type EventPayload, Subscription } from \"./subscriptions\";\nexport * as SovereignClient from \"@sovereign-sdk/client\";\n"],"mappings":"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","names":["_a","subscription","SovereignClient","bytesToHex","_a","bytesToHex","SovereignClient","SovereignClient"]}
|
|
1
|
+
{"version":3,"sources":["../src/addresses.ts","../src/rollup/rollup.ts","../src/errors.ts","../src/subscriptions.ts","../src/rollup/standard-rollup.ts","../src/index.ts"],"sourcesContent":["import { type HexString, ensureBytes } from \"@sovereign-sdk/utils\";\nimport { bech32m } from \"bech32\";\n\n/**\n * Encodes a public key as a bech32m address with the given human-readable part (hrp).\n *\n * @param publicKey - The public key to encode, as a hex string or Uint8Array.\n * @param hrp - The human-readable part for the bech32m address (e.g., \"sov\").\n * @param concatPublicKey - Optional. If provided, only the first `concatPublicKey` bytes of the public key are used.\n * @returns The bech32m-encoded address as a string.\n * @throws {Error} If the public key is not a valid hex string or Uint8Array.\n */\nexport function addressFromPublicKey(\n publicKey: HexString | Uint8Array,\n hrp: string,\n concatPublicKey = 28,\n): string {\n let publicKeyBytes = ensureBytes(publicKey);\n\n if (concatPublicKey !== publicKey.length) {\n publicKeyBytes = publicKeyBytes.slice(0, concatPublicKey);\n }\n\n const words = bech32m.toWords(publicKeyBytes);\n return bech32m.encode(hrp, words);\n}\n","import SovereignClient from \"@sovereign-sdk/client\";\nimport type { APIError } from \"@sovereign-sdk/client\";\nimport type { RollupSchema, Serializer } from \"@sovereign-sdk/serializers\";\nimport type { Signer } from \"@sovereign-sdk/signers\";\nimport { bytesToHex, hexToBytes } from \"@sovereign-sdk/utils\";\nimport { Base64 } from \"js-base64\";\nimport { VersionMismatchError } from \"../errors\";\nimport {\n type Subscription,\n type SubscriptionToCallbackMap,\n createSubscription,\n} from \"../subscriptions\";\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 // Provides the ability to override the generation data instead of retrieving it automatically.\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 PartialRollupConfig.url}.\n */\n client: SovereignClient;\n /**\n * Creates the serializer instance to use for the rollup.\n *\n * This can be called more than once, for example if the chain hash changes (i.e a new rollup version)\n * is detected then it will be called again with the new rollup schema.\n */\n getSerializer: (schema: RollupSchema) => Serializer;\n /**\n * Arbitrary context that is associated with the rollup.\n */\n context: C;\n /**\n * The endpoint path for submitting transactions.\n * Defaults to \"/sequencer/txs\", the standard Sovereign SDK endpoint.\n * Can be overridden if your rollup is configured to expose non-standard endpoints in\n * order to support multiple different transaction encoding or authentication schemes.\n */\n txSubmissionEndpoint: string;\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 _typeBuilder: TypeBuilder<S, C>;\n private _chainHash?: Uint8Array;\n private _serializer?: Serializer;\n\n /**\n * Creates a new rollup client.\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 this._config = config;\n this._typeBuilder = typeBuilder;\n }\n\n /**\n * Retrieve dedup information about the provided address.\n *\n * @param publicKey - The public key to dedup.\n * TODO: How to add param for generation explicitly\n */\n async dedup(publicKey: Uint8Array): Promise<S[\"Dedup\"]> {\n // for public key credential id is just its bytes representation\n const credentialId = bytesToHex(publicKey);\n const response = await this.rollup.addresses.dedup(credentialId);\n return response as S[\"Dedup\"];\n }\n\n /**\n * Submits a transaction to the rollup.\n *\n * The endpoint used for submission can be overridden via the options.path parameter.\n * If not specified, the rollup's configured txSubmissionEndpoint will be used.\n *\n * @param transaction - The transaction to submit.\n * @param {SovereignClient.RequestOptions} options - The options for the request.\n */\n async submitTransaction(\n transaction: S[\"Transaction\"],\n options?: SovereignClient.RequestOptions,\n ): Promise<SovereignClient.Sequencer.TxCreateResponse> {\n const serializer = await this.serializer();\n const serializedTx = serializer.serializeTx(transaction);\n // Stainless RequestOptions is generic internally, causing issues for `body` and `query`.\n // That's fine since we supply the `body` and transaction submission doesn't take query parameters.\n // So we hack around this by destructuring them out.\n const { body: _, query: __, path, ...requestOptions } = options || {};\n const txSubmissionEndpoint = path || this._config.txSubmissionEndpoint;\n\n return this.http\n .post<SovereignClient.Sequencer.TxCreateResponse>(txSubmissionEndpoint, {\n body: { body: Base64.fromUint8Array(serializedTx) },\n ...requestOptions,\n })\n .catch(async (e) => {\n if (isVersionMismatchError(e as APIError)) {\n const oldVersion = bytesToHex(await this.chainHash());\n const { schema, chain_hash: newVersion } = await this.rollup.schema();\n this._chainHash = hexToBytes(newVersion);\n this._serializer = this._config.getSerializer(schema);\n\n if (oldVersion !== newVersion) {\n throw new VersionMismatchError(\n \"Schema version mismatch when submitting transaction\",\n newVersion,\n oldVersion,\n );\n }\n }\n throw e;\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 * @param {SovereignClient.RequestOptions} options - The options for the request.\n * @param endpoint - Optional endpoint override. If not specified, uses the rollup's configured txSubmissionEndpoint.\n */\n async signAndSubmitTransaction(\n unsignedTx: S[\"UnsignedTransaction\"],\n { signer }: SignerParams,\n options?: SovereignClient.RequestOptions,\n ): Promise<TransactionResult<S[\"Transaction\"]>> {\n const tx = await this.signTransaction(unsignedTx, signer);\n const result = await this.submitTransaction(tx, options);\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 * @param {SovereignClient.RequestOptions} options - The options for the request.\n */\n async call(\n runtimeCall: S[\"RuntimeCall\"],\n { signer, overrides }: CallParams<S>,\n options?: SovereignClient.RequestOptions,\n ): Promise<TransactionResult<S[\"Transaction\"]>> {\n const context = {\n runtimeCall,\n rollup: this,\n overrides: overrides ?? ({} as DeepPartial<S[\"UnsignedTransaction\"]>),\n };\n const unsignedTx = await this._typeBuilder.unsignedTransaction(context);\n\n return this.signAndSubmitTransaction(\n unsignedTx,\n {\n signer,\n },\n options,\n );\n }\n\n /**\n * Prepares a runtime call by creating and signing a transaction without submitting it.\n * This is useful for scenarios where you need the signed transaction for later submission\n * or for analysis purposes.\n *\n * @param runtimeCall - The runtime message to prepare.\n * @param params - The parameters for preparing the call.\n * @param params.signer - The signer to use for signing the transaction.\n * @param params.overrides - Optional overrides for the unsigned transaction.\n * @returns A promise that resolves to the signed transaction.\n */\n async prepareCall(\n runtimeCall: S[\"RuntimeCall\"],\n { signer, overrides }: CallParams<S>,\n ): Promise<S[\"Transaction\"]> {\n const context = {\n runtimeCall,\n rollup: this,\n overrides: overrides ?? ({} as DeepPartial<S[\"UnsignedTransaction\"]>),\n };\n const unsignedTx = await this._typeBuilder.unsignedTransaction(context);\n return this.signTransaction(unsignedTx, signer);\n }\n\n /**\n * Signs an unsigned transaction using the provided signer.\n * Creates a signature by combining the serialized unsigned transaction with the chain hash,\n * then constructs a fully signed transaction.\n *\n * @param unsignedTx - The unsigned transaction to sign.\n * @param signer - The signer to use for signing the transaction.\n * @returns A promise that resolves to the signed transaction.\n */\n async signTransaction(\n unsignedTx: S[\"UnsignedTransaction\"],\n signer: Signer,\n ): Promise<S[\"Transaction\"]> {\n const serializer = await this.serializer();\n const serializedUnsignedTx = serializer.serializeUnsignedTx(unsignedTx);\n const chainHash = await this.chainHash();\n const signature = await signer.sign(\n new Uint8Array([...serializedUnsignedTx, ...chainHash]),\n );\n const publicKey = await signer.publicKey();\n const context = {\n unsignedTx,\n sender: publicKey,\n signature,\n rollup: this,\n };\n return this._typeBuilder.transaction(context);\n }\n\n /**\n * Create a subscription to events emitted over websockets by the rollup.\n */\n subscribe<T extends keyof SubscriptionToCallbackMap>(\n type: T,\n callback: SubscriptionToCallbackMap[T],\n ): Subscription {\n return createSubscription(type, callback, this.http);\n }\n\n /**\n * Performs a healthcheck against the rollup to determine if it is currently healthy.\n *\n * @param timeout - Request timeout in milliseconds.\n * @returns `true` if the rollup is considered healthy otherwise `false`.\n */\n async healthcheck(timeout = 5000): Promise<boolean> {\n try {\n await this.http.get(\"/healthcheck\", { timeout, maxRetries: 1 });\n return true;\n } catch (e) {\n return !(e instanceof SovereignClient.APIConnectionError);\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._config.client;\n }\n\n /**\n * The serializer for the rollup.\n * Can be used to serialize transactions, runtime calls, etc.\n */\n async serializer(): Promise<Serializer> {\n if (this._serializer) return this._serializer;\n const { schema } = await this.rollup.schema();\n this._serializer = this._config.getSerializer(schema);\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 async chainHash(): Promise<Uint8Array> {\n if (this._chainHash) return this._chainHash;\n const { chain_hash } = await this.rollup.schema();\n this._chainHash = hexToBytes(chain_hash);\n return this._chainHash;\n }\n}\n\nfunction isVersionMismatchError(e: APIError): boolean {\n if (\n // biome-ignore lint/suspicious/noExplicitAny: yolo\n (e.error as any)?.details?.error?.includes(\"Signature verification failed\")\n ) {\n return true;\n }\n\n return false;\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\nexport class VersionMismatchError extends SovereignError {\n public readonly newVersion: string;\n public readonly currentVersion: string;\n public readonly retryable: boolean;\n\n constructor(message: string, newVersion: string, currentVersion: string) {\n super(message);\n\n this.newVersion = newVersion;\n this.currentVersion = currentVersion;\n this.retryable = newVersion !== currentVersion;\n }\n}\n\nexport class SchemaError extends SovereignError {\n public readonly schema: object;\n public readonly reason: string;\n\n constructor(message: string, reason: string, schema: object) {\n super(`${message}: ${reason}`);\n\n this.reason = reason;\n this.schema = schema;\n }\n}\n","import type SovereignSDK from \"@sovereign-sdk/client\";\nimport IsoWebSocket from \"isomorphic-ws\";\nimport { WebSocket } from \"partysocket\";\nimport { SovereignError } from \"./errors\";\n\ntype Url = string;\n\nexport function httpToWebSocket(url: string) {\n return url.replace(/^http(s?):\\/\\//, (_, s) => `ws${s}://`);\n}\n\nexport type Subscription = {\n /** Url providing the subscription. */\n url: Url;\n /** Unsubscribe this subscription. */\n unsubscribe: () => void;\n};\n\ntype SubscriptionEntry = {\n websocket: WebSocket;\n // biome-ignore lint/suspicious/noExplicitAny: allow\n callbacks: Array<(...args: any[]) => void>;\n};\n\nexport const _subscriptions: Record<Url, SubscriptionEntry> = {};\n\n/** Subscribe to the provided websocket url & call the provided callback on messages received. */\nexport function subscribe(\n url: Url,\n // biome-ignore lint/suspicious/noExplicitAny: allow\n callback: (...args: any[]) => void,\n): Subscription {\n const subscription = _subscriptions[url];\n\n if (!subscription) {\n const websocket = new WebSocket(url, [], { WebSocket: IsoWebSocket });\n // bun compatibility: https://github.com/partykit/partykit/issues/774\n websocket.binaryType = \"arraybuffer\";\n\n _subscriptions[url] = {\n websocket,\n callbacks: [callback],\n };\n\n websocket.addEventListener(\"message\", (message) => {\n const data = JSON.parse(message.data);\n const callbacks = _subscriptions[url]?.callbacks;\n if (callbacks) {\n for (const cb of callbacks) {\n cb(data);\n }\n }\n });\n websocket.addEventListener(\"error\", (e) =>\n console.log(\"Websocket error\", e),\n );\n } else {\n subscription.callbacks.push(callback);\n }\n\n const callbackIndex = _subscriptions[url]?.callbacks.length - 1;\n\n return {\n get url() {\n return url;\n },\n unsubscribe() {\n const subscription = _subscriptions[url];\n\n if (!subscription) {\n return;\n }\n\n subscription.callbacks.splice(callbackIndex, 1);\n\n if (!subscription.callbacks.length) {\n subscription.websocket.close();\n delete _subscriptions[url];\n }\n },\n };\n}\n\nexport type EventPayload = {\n tx_hash: string;\n type: \"event\";\n number: number;\n key: string;\n value: Record<string, unknown>;\n module: {\n type: \"moduleRef\";\n name: string;\n };\n};\n\nexport interface SubscriptionToCallbackMap {\n events: (event: EventPayload) => Promise<void>;\n}\n\nexport function createSubscription<T extends keyof SubscriptionToCallbackMap>(\n subscription: T,\n callback: SubscriptionToCallbackMap[T],\n client: SovereignSDK,\n): Subscription {\n switch (subscription) {\n case \"events\": {\n const url = client.buildURL(\"/sequencer/events/ws\", {});\n return subscribe(\n httpToWebSocket(url),\n callback as SubscriptionToCallbackMap[\"events\"],\n );\n }\n default:\n throw new SovereignError(`Invalid subscription type '${subscription}'`);\n }\n}\n","import SovereignClient from \"@sovereign-sdk/client\";\nimport { JsSerializer } from \"@sovereign-sdk/serializers\";\nimport { type HexString, bytesToHex } from \"@sovereign-sdk/utils\";\nimport type { DeepPartial } from \"../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: string;\n gas_limit: number[] | null;\n chain_id: number;\n};\n\nexport type Generation = { generation: number };\nexport type Nonce = { nonce: number };\nexport type Uniqueness = Nonce | Generation;\n\nexport type UnsignedTransaction<RuntimeCall> = {\n runtime_call: RuntimeCall;\n uniqueness: Uniqueness;\n details: TxDetails;\n};\n\nexport type TransactionV0<RuntimeCall> = {\n pub_key: HexString;\n signature: HexString;\n} & UnsignedTransaction<RuntimeCall>;\n\nexport type Transaction<RuntimeCall> = {\n V0: TransactionV0<RuntimeCall>;\n};\n\nexport type Dedup = {\n nonce: number;\n};\n\nexport type StandardRollupContext = {\n defaultTxDetails: TxDetails;\n};\n\nexport type StandardRollupSpec<RuntimeCall> = {\n UnsignedTransaction: UnsignedTransaction<RuntimeCall>;\n Transaction: Transaction<RuntimeCall>;\n RuntimeCall: RuntimeCall;\n Dedup: Dedup;\n};\n\nconst useOrFetchUniqueness = async <S extends StandardRollupSpec<unknown>>({\n overrides,\n}: Omit<\n UnsignedTransactionContext<S, StandardRollupContext>,\n \"runtimeCall\"\n>) => {\n if (overrides?.uniqueness) {\n return overrides.uniqueness;\n }\n\n return { generation: Date.now() };\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 { uniqueness: _, ...overrides } = context.overrides;\n const uniqueness = await useOrFetchUniqueness(context);\n const details: TxDetails = {\n ...rollup.context.defaultTxDetails,\n ...overrides.details,\n };\n\n return {\n runtime_call: runtimeCall,\n uniqueness,\n details,\n } as S[\"UnsignedTransaction\"];\n },\n async transaction({\n sender,\n signature,\n unsignedTx,\n }: TransactionContext<S, StandardRollupContext>) {\n return {\n V0: {\n pub_key: bytesToHex(sender),\n signature: bytesToHex(signature),\n ...unsignedTx,\n },\n };\n },\n };\n}\n\n/**\n * The parameters for simulating a runtime call transaction.\n */\nexport type SimulateParams = Omit<\n SovereignClient.RollupSimulateParams,\n \"call\" | \"sender\"\n> &\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 }: SimulateParams,\n ): Promise<SovereignClient.Rollup.RollupSimulateResponse> {\n const publicKey = await signer.publicKey();\n const sender = bytesToHex(publicKey);\n const call = runtimeMessage as { [key: string]: unknown };\n\n return this.rollup.simulate({ sender, call });\n }\n}\n\nexport const DEFAULT_TX_DETAILS: Omit<TxDetails, \"chain_id\"> = {\n max_priority_fee_bips: 0,\n max_fee: \"100000000\",\n gas_limit: null,\n};\n\nasync function buildContext<C extends StandardRollupContext>(\n client: SovereignClient,\n context?: DeepPartial<C>,\n): Promise<C> {\n const defaultTxDetails = {\n ...DEFAULT_TX_DETAILS,\n ...context?.defaultTxDetails,\n };\n\n if (!defaultTxDetails.chain_id) {\n const { chain_id } = await client.rollup.constants();\n\n defaultTxDetails.chain_id = chain_id;\n }\n\n return {\n defaultTxDetails,\n } as C;\n}\n\nexport async function createStandardRollup<\n RuntimeCall,\n C extends StandardRollupContext = StandardRollupContext,\n>(\n rollupConfig?: Partial<RollupConfig<DeepPartial<C>>>,\n typeBuilderOverrides?: Partial<\n TypeBuilder<StandardRollupSpec<RuntimeCall>, C>\n >,\n) {\n const config = rollupConfig ?? {};\n const client = config.client ?? new SovereignClient({ baseURL: config.url });\n const getSerializer =\n config.getSerializer ?? ((schema) => new JsSerializer(schema));\n const context = await buildContext<C>(client, config.context);\n\n // Default to the standard transaction submission endpoint\n const txSubmissionEndpoint = config.txSubmissionEndpoint ?? \"/sequencer/txs\";\n\n return new StandardRollup<RuntimeCall>(\n {\n ...config,\n client,\n getSerializer,\n context,\n txSubmissionEndpoint,\n },\n {\n ...standardTypeBuilder(),\n ...typeBuilderOverrides,\n },\n );\n}\n","export * from \"./addresses\";\nexport * from \"./rollup\";\nexport * from \"./errors\";\nexport * from \"./type-spec\";\nexport { type EventPayload, Subscription } from \"./subscriptions\";\nexport * as SovereignClient from \"@sovereign-sdk/client\";\n"],"mappings":"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","names":["_a","subscription","SovereignClient","bytesToHex","_a","bytesToHex","SovereignClient","SovereignClient"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sovereign-sdk/web3",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"repository": "github:Sovereign-Labs/sovereign-sdk-web3-js",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
@@ -24,15 +24,15 @@
|
|
|
24
24
|
"typescript": "^5.0.0"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@sovereign-sdk/client": "0.1.0-alpha.
|
|
27
|
+
"@sovereign-sdk/client": "0.1.0-alpha.39",
|
|
28
28
|
"bech32": "^2.0.0",
|
|
29
29
|
"isomorphic-ws": "^5.0.0",
|
|
30
30
|
"js-base64": "^3.7.7",
|
|
31
31
|
"partysocket": "^1.1.3",
|
|
32
32
|
"ws": "^8.18.1",
|
|
33
|
-
"@sovereign-sdk/signers": "^0.
|
|
34
|
-
"@sovereign-sdk/serializers": "^0.1.
|
|
35
|
-
"@sovereign-sdk/universal-wallet-wasm": "^0.
|
|
33
|
+
"@sovereign-sdk/signers": "^0.3.0",
|
|
34
|
+
"@sovereign-sdk/serializers": "^0.1.2",
|
|
35
|
+
"@sovereign-sdk/universal-wallet-wasm": "^0.5.0",
|
|
36
36
|
"@sovereign-sdk/utils": "^0.0.4"
|
|
37
37
|
},
|
|
38
38
|
"publishConfig": {
|