@sovereign-sdk/web3 0.0.10 → 0.0.11
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 +19 -7
- package/dist/index.d.ts +19 -7
- package/dist/index.js +18 -13
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +18 -13
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -12,6 +12,16 @@ type RollupSerializer = {
|
|
|
12
12
|
};
|
|
13
13
|
declare function createSerializer(schemaObject: RollupSchema): RollupSerializer;
|
|
14
14
|
|
|
15
|
+
type BaseTypeSpec = {
|
|
16
|
+
Transaction: any;
|
|
17
|
+
UnsignedTransaction: any;
|
|
18
|
+
RuntimeCall: any;
|
|
19
|
+
};
|
|
20
|
+
type OverrideType<Base, Override> = {
|
|
21
|
+
[K in keyof Base]: K extends keyof Override ? Override[K] : Base[K];
|
|
22
|
+
};
|
|
23
|
+
type RollupTypeSpec<T extends Partial<BaseTypeSpec>> = OverrideType<BaseTypeSpec, T>;
|
|
24
|
+
|
|
15
25
|
type TransactionResult<Tx> = {
|
|
16
26
|
response: SovereignClient__default.Sequencer.TxCreateResponse;
|
|
17
27
|
transaction: Tx;
|
|
@@ -36,16 +46,18 @@ type CallParams = {
|
|
|
36
46
|
type SimulateParams = {
|
|
37
47
|
txDetails: TxDetails;
|
|
38
48
|
} & SignerParams;
|
|
39
|
-
declare class StandardRollup<
|
|
49
|
+
declare class StandardRollup<T extends BaseTypeSpec = BaseTypeSpec> {
|
|
40
50
|
private readonly _config;
|
|
41
51
|
private readonly _client;
|
|
42
52
|
private readonly _serializer;
|
|
43
53
|
constructor(config: RollupConfig);
|
|
44
|
-
submitTransaction(transaction:
|
|
45
|
-
signAndSubmitTransaction(unsignedTx:
|
|
46
|
-
call(runtimeMessage:
|
|
47
|
-
simulate(runtimeMessage:
|
|
48
|
-
get
|
|
54
|
+
submitTransaction(transaction: T["Transaction"]): Promise<SovereignClient__default.Sequencer.TxCreateResponse>;
|
|
55
|
+
signAndSubmitTransaction(unsignedTx: T["UnsignedTransaction"], { signer }: SignerParams): Promise<TransactionResult<T["Transaction"]>>;
|
|
56
|
+
call(runtimeMessage: T["RuntimeCall"], { signer, txDetails }: CallParams): Promise<TransactionResult<T["Transaction"]>>;
|
|
57
|
+
simulate(runtimeMessage: T["RuntimeCall"], { signer, txDetails }: SimulateParams): Promise<SovereignClient__default.Rollup.SimulateExecutionResponse>;
|
|
58
|
+
get ledger(): SovereignClient__default.Ledger;
|
|
59
|
+
get sequencer(): SovereignClient__default.Sequencer;
|
|
60
|
+
get rollup(): SovereignClient__default.Rollup;
|
|
49
61
|
get serializer(): RollupSerializer;
|
|
50
62
|
}
|
|
51
63
|
|
|
@@ -53,4 +65,4 @@ declare class SovereignError extends Error {
|
|
|
53
65
|
constructor(message: string);
|
|
54
66
|
}
|
|
55
67
|
|
|
56
|
-
export { type RollupConfig, type RollupSchema, type RollupSerializer, SovereignError, StandardRollup, type TransactionResult, createSerializer };
|
|
68
|
+
export { type BaseTypeSpec, type RollupConfig, type RollupSchema, type RollupSerializer, type RollupTypeSpec, SovereignError, StandardRollup, type TransactionResult, createSerializer };
|
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,16 @@ type RollupSerializer = {
|
|
|
12
12
|
};
|
|
13
13
|
declare function createSerializer(schemaObject: RollupSchema): RollupSerializer;
|
|
14
14
|
|
|
15
|
+
type BaseTypeSpec = {
|
|
16
|
+
Transaction: any;
|
|
17
|
+
UnsignedTransaction: any;
|
|
18
|
+
RuntimeCall: any;
|
|
19
|
+
};
|
|
20
|
+
type OverrideType<Base, Override> = {
|
|
21
|
+
[K in keyof Base]: K extends keyof Override ? Override[K] : Base[K];
|
|
22
|
+
};
|
|
23
|
+
type RollupTypeSpec<T extends Partial<BaseTypeSpec>> = OverrideType<BaseTypeSpec, T>;
|
|
24
|
+
|
|
15
25
|
type TransactionResult<Tx> = {
|
|
16
26
|
response: SovereignClient__default.Sequencer.TxCreateResponse;
|
|
17
27
|
transaction: Tx;
|
|
@@ -36,16 +46,18 @@ type CallParams = {
|
|
|
36
46
|
type SimulateParams = {
|
|
37
47
|
txDetails: TxDetails;
|
|
38
48
|
} & SignerParams;
|
|
39
|
-
declare class StandardRollup<
|
|
49
|
+
declare class StandardRollup<T extends BaseTypeSpec = BaseTypeSpec> {
|
|
40
50
|
private readonly _config;
|
|
41
51
|
private readonly _client;
|
|
42
52
|
private readonly _serializer;
|
|
43
53
|
constructor(config: RollupConfig);
|
|
44
|
-
submitTransaction(transaction:
|
|
45
|
-
signAndSubmitTransaction(unsignedTx:
|
|
46
|
-
call(runtimeMessage:
|
|
47
|
-
simulate(runtimeMessage:
|
|
48
|
-
get
|
|
54
|
+
submitTransaction(transaction: T["Transaction"]): Promise<SovereignClient__default.Sequencer.TxCreateResponse>;
|
|
55
|
+
signAndSubmitTransaction(unsignedTx: T["UnsignedTransaction"], { signer }: SignerParams): Promise<TransactionResult<T["Transaction"]>>;
|
|
56
|
+
call(runtimeMessage: T["RuntimeCall"], { signer, txDetails }: CallParams): Promise<TransactionResult<T["Transaction"]>>;
|
|
57
|
+
simulate(runtimeMessage: T["RuntimeCall"], { signer, txDetails }: SimulateParams): Promise<SovereignClient__default.Rollup.SimulateExecutionResponse>;
|
|
58
|
+
get ledger(): SovereignClient__default.Ledger;
|
|
59
|
+
get sequencer(): SovereignClient__default.Sequencer;
|
|
60
|
+
get rollup(): SovereignClient__default.Rollup;
|
|
49
61
|
get serializer(): RollupSerializer;
|
|
50
62
|
}
|
|
51
63
|
|
|
@@ -53,4 +65,4 @@ declare class SovereignError extends Error {
|
|
|
53
65
|
constructor(message: string);
|
|
54
66
|
}
|
|
55
67
|
|
|
56
|
-
export { type RollupConfig, type RollupSchema, type RollupSerializer, SovereignError, StandardRollup, type TransactionResult, createSerializer };
|
|
68
|
+
export { type BaseTypeSpec, type RollupConfig, type RollupSchema, type RollupSerializer, type RollupTypeSpec, SovereignError, StandardRollup, type TransactionResult, createSerializer };
|
package/dist/index.js
CHANGED
|
@@ -157,7 +157,7 @@ var StandardRollup = class {
|
|
|
157
157
|
submitTransaction(transaction) {
|
|
158
158
|
return __async(this, null, function* () {
|
|
159
159
|
const serializedTx = this.serializer.serializeTx(transaction);
|
|
160
|
-
return this.
|
|
160
|
+
return this.sequencer.txs.create({
|
|
161
161
|
body: import_js_base64.Base64.fromUint8Array(serializedTx)
|
|
162
162
|
});
|
|
163
163
|
});
|
|
@@ -183,29 +183,28 @@ var StandardRollup = class {
|
|
|
183
183
|
return __async(this, arguments, function* (runtimeMessage, { signer, txDetails }) {
|
|
184
184
|
const runtimeCall = this.serializer.serializeRuntimeCall(runtimeMessage);
|
|
185
185
|
const publicKey = yield signer.publicKey();
|
|
186
|
-
const dedup = yield this.
|
|
187
|
-
bytesToHex(publicKey)
|
|
188
|
-
);
|
|
186
|
+
const dedup = yield this.rollup.addresses.dedup(bytesToHex(publicKey));
|
|
189
187
|
const nonce = dedup.data.nonce;
|
|
190
188
|
const unsignedTx = {
|
|
191
189
|
runtime_msg: runtimeCall,
|
|
192
190
|
nonce,
|
|
193
191
|
details: txDetails != null ? txDetails : this._config.defaultTxDetails
|
|
194
192
|
};
|
|
195
|
-
return this.signAndSubmitTransaction(
|
|
196
|
-
|
|
197
|
-
|
|
193
|
+
return this.signAndSubmitTransaction(
|
|
194
|
+
unsignedTx,
|
|
195
|
+
{
|
|
196
|
+
signer
|
|
197
|
+
}
|
|
198
|
+
);
|
|
198
199
|
});
|
|
199
200
|
}
|
|
200
201
|
simulate(_0, _1) {
|
|
201
202
|
return __async(this, arguments, function* (runtimeMessage, { signer, txDetails }) {
|
|
202
203
|
const runtimeCall = this.serializer.serializeRuntimeCall(runtimeMessage);
|
|
203
204
|
const publicKey = yield signer.publicKey();
|
|
204
|
-
const dedup = yield this.
|
|
205
|
-
bytesToHex(publicKey)
|
|
206
|
-
);
|
|
205
|
+
const dedup = yield this.rollup.addresses.dedup(bytesToHex(publicKey));
|
|
207
206
|
const nonce = dedup.data.nonce;
|
|
208
|
-
const response = yield this.
|
|
207
|
+
const response = yield this.rollup.simulate({
|
|
209
208
|
body: {
|
|
210
209
|
details: txDetails,
|
|
211
210
|
encoded_call_message: bytesToHex(runtimeCall),
|
|
@@ -216,8 +215,14 @@ var StandardRollup = class {
|
|
|
216
215
|
return response.data;
|
|
217
216
|
});
|
|
218
217
|
}
|
|
219
|
-
get
|
|
220
|
-
return this._client;
|
|
218
|
+
get ledger() {
|
|
219
|
+
return this._client.ledger;
|
|
220
|
+
}
|
|
221
|
+
get sequencer() {
|
|
222
|
+
return this._client.sequencer;
|
|
223
|
+
}
|
|
224
|
+
get rollup() {
|
|
225
|
+
return this._client.rollup;
|
|
221
226
|
}
|
|
222
227
|
get serializer() {
|
|
223
228
|
return this._serializer;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/rollup.ts","../src/serialization.ts","../src/errors.ts","../src/utils.ts"],"sourcesContent":["export * from \"./rollup\";\nexport * from \"./serialization\";\nexport * from \"./errors\";\nexport * as SovereignClient from \"@sovereign-sdk/client\";\n","import SovereignClient from \"@sovereign-sdk/client\";\nimport type { Signer } from \"@sovereign-sdk/signers\";\nimport { Base64 } from \"js-base64\";\nimport {\n type RollupSchema,\n type RollupSerializer,\n createSerializer,\n} from \"./serialization\";\nimport { bytesToHex } from \"./utils\";\n\nexport type TransactionResult<Tx> = {\n response: SovereignClient.Sequencer.TxCreateResponse;\n transaction: Tx;\n};\n\nexport type RollupConfig = {\n url?: string;\n schema: RollupSchema;\n defaultTxDetails: TxDetails;\n};\n\ntype TxDetails = {\n max_priority_fee_bips: number;\n max_fee: number;\n gas_limit?: number[];\n chain_id: number;\n};\n\ntype SignerParams = {\n signer: Signer;\n};\n\ntype CallParams = {\n txDetails?: TxDetails;\n} & SignerParams;\n\ntype SimulateParams = {\n txDetails: TxDetails;\n} & SignerParams;\n\n// biome-ignore lint/suspicious/noExplicitAny: fix later\nexport class StandardRollup<Tx = any, UnsignedTx = any> {\n private readonly _config: RollupConfig;\n private readonly _client: SovereignClient;\n private readonly _serializer: RollupSerializer;\n\n constructor(config: RollupConfig) {\n this._client = new SovereignClient({ baseURL: config.url });\n this._serializer = createSerializer(config.schema);\n this._config = config;\n }\n\n async submitTransaction(\n transaction: Tx,\n ): Promise<SovereignClient.Sequencer.TxCreateResponse> {\n const serializedTx = this.serializer.serializeTx(transaction);\n\n return this.client.sequencer.txs.create({\n body: Base64.fromUint8Array(serializedTx),\n });\n }\n\n async signAndSubmitTransaction(\n unsignedTx: UnsignedTx,\n { signer }: SignerParams,\n ): Promise<TransactionResult<Tx>> {\n const serializedUnsignedTx =\n this.serializer.serializeUnsignedTx(unsignedTx);\n const signature = await signer.sign(serializedUnsignedTx);\n const publicKey = await signer.publicKey();\n const tx = {\n pub_key: {\n pub_key: publicKey,\n },\n signature: {\n msg_sig: signature,\n },\n ...unsignedTx,\n } as Tx;\n const result = await this.submitTransaction(tx);\n\n return { transaction: tx, response: result };\n }\n\n async call(\n runtimeMessage: unknown,\n { signer, txDetails }: CallParams,\n ): Promise<TransactionResult<Tx>> {\n const runtimeCall = this.serializer.serializeRuntimeCall(runtimeMessage);\n const publicKey = await signer.publicKey();\n const dedup = await this.client.rollup.addresses.dedup(\n bytesToHex(publicKey),\n );\n // biome-ignore lint/suspicious/noExplicitAny: fix later\n const nonce = (dedup.data as any).nonce as number;\n const unsignedTx = {\n runtime_msg: runtimeCall,\n nonce,\n details: txDetails ?? this._config.defaultTxDetails,\n };\n\n return this.signAndSubmitTransaction(unsignedTx as UnsignedTx, {\n signer,\n });\n }\n\n async simulate(\n runtimeMessage: unknown,\n { signer, txDetails }: SimulateParams,\n ): Promise<SovereignClient.Rollup.SimulateExecutionResponse> {\n const runtimeCall = this.serializer.serializeRuntimeCall(runtimeMessage);\n const publicKey = await signer.publicKey();\n const dedup = await this.client.rollup.addresses.dedup(\n bytesToHex(publicKey),\n );\n // biome-ignore lint/suspicious/noExplicitAny: fix later\n const nonce = (dedup.data as any).nonce as number;\n const response = await this.client.rollup.simulate({\n body: {\n details: txDetails,\n encoded_call_message: bytesToHex(runtimeCall),\n nonce,\n sender_pub_key: bytesToHex(publicKey),\n },\n });\n\n // biome-ignore lint/style/noNonNullAssertion: fix later\n return response.data!;\n }\n\n get client(): SovereignClient {\n return this._client;\n }\n\n get serializer(): RollupSerializer {\n return this._serializer;\n }\n}\n","import { KnownTypeId, Schema } from \"@sovereign-sdk/universal-wallet-wasm\";\nimport { SovereignError } from \"./errors\";\n\nexport type RollupSchema = object;\n\nexport type RollupSerializer = {\n serialize(input: unknown, index: number): Uint8Array;\n serializeRuntimeCall(input: unknown): Uint8Array;\n serializeUnsignedTx(input: unknown): Uint8Array;\n serializeTx(input: unknown): Uint8Array;\n};\n\nfunction loadSchema(schemaObject: RollupSchema): Schema {\n try {\n return Schema.fromJSON(JSON.stringify(schemaObject));\n } catch (err) {\n throw new SovereignError(`Failed to create runtime schema due to: ${err}`);\n }\n}\n\nexport function createSerializer(schemaObject: RollupSchema): RollupSerializer {\n const schema = loadSchema(schemaObject);\n\n return {\n serialize(input: unknown, index: number): Uint8Array {\n try {\n return schema.jsonToBorsh(\n index,\n JSON.stringify(input, (_, value) => {\n if (value instanceof Uint8Array) {\n return Array.from(value);\n }\n return value;\n }),\n );\n } catch (err) {\n throw new SovereignError(`Failed to serialize input due to: ${err}`);\n }\n },\n serializeRuntimeCall(input: unknown): Uint8Array {\n return this.serialize(\n input,\n schema.knownTypeIndex(KnownTypeId.RuntimeCall),\n );\n },\n serializeUnsignedTx(input: unknown): Uint8Array {\n return this.serialize(\n input,\n schema.knownTypeIndex(KnownTypeId.UnsignedTransaction),\n );\n },\n serializeTx(input: unknown): Uint8Array {\n return this.serialize(\n input,\n schema.knownTypeIndex(KnownTypeId.Transaction),\n );\n },\n };\n}\n","export class SovereignError extends Error {\n constructor(message: string) {\n super(message);\n\n this.name = this.constructor.name;\n this.stack = new Error().stack;\n }\n}\n","export function hexToBytes(hex: string) {\n if (hex.length && hex.length % 2 !== 0) {\n throw new Error(`Invalid hex string length: ${hex.length}`);\n }\n\n const matches = hex.match(/[\\da-f]{2}/gi);\n\n if (!matches) {\n throw new Error(\"Invalid hex string: No valid hex digits found\");\n }\n\n return new Uint8Array(matches.map((h) => Number.parseInt(h, 16)));\n}\n\nexport function bytesToHex(arr: Uint8Array): string {\n let hex = \"\";\n for (let i = 0; i < arr.length; i++) {\n let hexValue = arr[i].toString(16);\n if (hexValue.length === 1) {\n hexValue = `0${hexValue}`;\n }\n hex += hexValue;\n }\n return hex;\n}\n"],"mappings":"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","names":["SovereignClient","SovereignClient","SovereignClient"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/rollup.ts","../src/serialization.ts","../src/errors.ts","../src/utils.ts"],"sourcesContent":["export * from \"./rollup\";\nexport * from \"./serialization\";\nexport * from \"./errors\";\nexport * from \"./type-spec\";\nexport * as SovereignClient from \"@sovereign-sdk/client\";\n","import SovereignClient from \"@sovereign-sdk/client\";\nimport type { Signer } from \"@sovereign-sdk/signers\";\nimport { Base64 } from \"js-base64\";\nimport {\n type RollupSchema,\n type RollupSerializer,\n createSerializer,\n} from \"./serialization\";\nimport type { BaseTypeSpec } from \"./type-spec\";\nimport { bytesToHex } from \"./utils\";\n\nexport type TransactionResult<Tx> = {\n response: SovereignClient.Sequencer.TxCreateResponse;\n transaction: Tx;\n};\n\nexport type RollupConfig = {\n url?: string;\n schema: RollupSchema;\n defaultTxDetails: TxDetails;\n};\n\ntype TxDetails = {\n max_priority_fee_bips: number;\n max_fee: number;\n gas_limit?: number[];\n chain_id: number;\n};\n\ntype SignerParams = {\n signer: Signer;\n};\n\ntype CallParams = {\n txDetails?: TxDetails;\n} & SignerParams;\n\ntype SimulateParams = {\n txDetails: TxDetails;\n} & SignerParams;\n\nexport class StandardRollup<T extends BaseTypeSpec = BaseTypeSpec> {\n private readonly _config: RollupConfig;\n private readonly _client: SovereignClient;\n private readonly _serializer: RollupSerializer;\n\n constructor(config: RollupConfig) {\n this._client = new SovereignClient({ baseURL: config.url });\n this._serializer = createSerializer(config.schema);\n this._config = config;\n }\n\n async submitTransaction(\n transaction: T[\"Transaction\"],\n ): Promise<SovereignClient.Sequencer.TxCreateResponse> {\n const serializedTx = this.serializer.serializeTx(transaction);\n\n return this.sequencer.txs.create({\n body: Base64.fromUint8Array(serializedTx),\n });\n }\n\n async signAndSubmitTransaction(\n unsignedTx: T[\"UnsignedTransaction\"],\n { signer }: SignerParams,\n ): Promise<TransactionResult<T[\"Transaction\"]>> {\n const serializedUnsignedTx =\n this.serializer.serializeUnsignedTx(unsignedTx);\n const signature = await signer.sign(serializedUnsignedTx);\n const publicKey = await signer.publicKey();\n const tx = {\n pub_key: {\n pub_key: publicKey,\n },\n signature: {\n msg_sig: signature,\n },\n ...unsignedTx,\n } as T[\"Transaction\"];\n const result = await this.submitTransaction(tx);\n\n return { transaction: tx, response: result };\n }\n\n async call(\n runtimeMessage: T[\"RuntimeCall\"],\n { signer, txDetails }: CallParams,\n ): Promise<TransactionResult<T[\"Transaction\"]>> {\n const runtimeCall = this.serializer.serializeRuntimeCall(runtimeMessage);\n const publicKey = await signer.publicKey();\n const dedup = await this.rollup.addresses.dedup(bytesToHex(publicKey));\n // biome-ignore lint/suspicious/noExplicitAny: fix later\n const nonce = (dedup.data as any).nonce as number;\n const unsignedTx = {\n runtime_msg: runtimeCall,\n nonce,\n details: txDetails ?? this._config.defaultTxDetails,\n };\n\n return this.signAndSubmitTransaction(\n unsignedTx as T[\"UnsignedTransaction\"],\n {\n signer,\n },\n );\n }\n\n async simulate(\n runtimeMessage: T[\"RuntimeCall\"],\n { signer, txDetails }: SimulateParams,\n ): Promise<SovereignClient.Rollup.SimulateExecutionResponse> {\n const runtimeCall = this.serializer.serializeRuntimeCall(runtimeMessage);\n const publicKey = await signer.publicKey();\n const dedup = await this.rollup.addresses.dedup(bytesToHex(publicKey));\n // biome-ignore lint/suspicious/noExplicitAny: fix later\n const nonce = (dedup.data as any).nonce as number;\n const response = await this.rollup.simulate({\n body: {\n details: txDetails,\n encoded_call_message: bytesToHex(runtimeCall),\n nonce,\n sender_pub_key: bytesToHex(publicKey),\n },\n });\n\n // biome-ignore lint/style/noNonNullAssertion: fix later\n return response.data!;\n }\n\n get ledger(): SovereignClient.Ledger {\n return this._client.ledger;\n }\n\n get sequencer(): SovereignClient.Sequencer {\n return this._client.sequencer;\n }\n\n get rollup(): SovereignClient.Rollup {\n return this._client.rollup;\n }\n\n get serializer(): RollupSerializer {\n return this._serializer;\n }\n}\n","import { KnownTypeId, Schema } from \"@sovereign-sdk/universal-wallet-wasm\";\nimport { SovereignError } from \"./errors\";\n\nexport type RollupSchema = object;\n\nexport type RollupSerializer = {\n serialize(input: unknown, index: number): Uint8Array;\n serializeRuntimeCall(input: unknown): Uint8Array;\n serializeUnsignedTx(input: unknown): Uint8Array;\n serializeTx(input: unknown): Uint8Array;\n};\n\nfunction loadSchema(schemaObject: RollupSchema): Schema {\n try {\n return Schema.fromJSON(JSON.stringify(schemaObject));\n } catch (err) {\n throw new SovereignError(`Failed to create runtime schema due to: ${err}`);\n }\n}\n\nexport function createSerializer(schemaObject: RollupSchema): RollupSerializer {\n const schema = loadSchema(schemaObject);\n\n return {\n serialize(input: unknown, index: number): Uint8Array {\n try {\n return schema.jsonToBorsh(\n index,\n JSON.stringify(input, (_, value) => {\n if (value instanceof Uint8Array) {\n return Array.from(value);\n }\n return value;\n }),\n );\n } catch (err) {\n throw new SovereignError(`Failed to serialize input due to: ${err}`);\n }\n },\n serializeRuntimeCall(input: unknown): Uint8Array {\n return this.serialize(\n input,\n schema.knownTypeIndex(KnownTypeId.RuntimeCall),\n );\n },\n serializeUnsignedTx(input: unknown): Uint8Array {\n return this.serialize(\n input,\n schema.knownTypeIndex(KnownTypeId.UnsignedTransaction),\n );\n },\n serializeTx(input: unknown): Uint8Array {\n return this.serialize(\n input,\n schema.knownTypeIndex(KnownTypeId.Transaction),\n );\n },\n };\n}\n","export class SovereignError extends Error {\n constructor(message: string) {\n super(message);\n\n this.name = this.constructor.name;\n this.stack = new Error().stack;\n }\n}\n","export function hexToBytes(hex: string) {\n if (hex.length && hex.length % 2 !== 0) {\n throw new Error(`Invalid hex string length: ${hex.length}`);\n }\n\n const matches = hex.match(/[\\da-f]{2}/gi);\n\n if (!matches) {\n throw new Error(\"Invalid hex string: No valid hex digits found\");\n }\n\n return new Uint8Array(matches.map((h) => Number.parseInt(h, 16)));\n}\n\nexport function bytesToHex(arr: Uint8Array): string {\n let hex = \"\";\n for (let i = 0; i < arr.length; i++) {\n let hexValue = arr[i].toString(16);\n if (hexValue.length === 1) {\n hexValue = `0${hexValue}`;\n }\n hex += hexValue;\n }\n return hex;\n}\n"],"mappings":"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","names":["SovereignClient","SovereignClient","SovereignClient"]}
|
package/dist/index.mjs
CHANGED
|
@@ -121,7 +121,7 @@ var StandardRollup = class {
|
|
|
121
121
|
submitTransaction(transaction) {
|
|
122
122
|
return __async(this, null, function* () {
|
|
123
123
|
const serializedTx = this.serializer.serializeTx(transaction);
|
|
124
|
-
return this.
|
|
124
|
+
return this.sequencer.txs.create({
|
|
125
125
|
body: Base64.fromUint8Array(serializedTx)
|
|
126
126
|
});
|
|
127
127
|
});
|
|
@@ -147,29 +147,28 @@ var StandardRollup = class {
|
|
|
147
147
|
return __async(this, arguments, function* (runtimeMessage, { signer, txDetails }) {
|
|
148
148
|
const runtimeCall = this.serializer.serializeRuntimeCall(runtimeMessage);
|
|
149
149
|
const publicKey = yield signer.publicKey();
|
|
150
|
-
const dedup = yield this.
|
|
151
|
-
bytesToHex(publicKey)
|
|
152
|
-
);
|
|
150
|
+
const dedup = yield this.rollup.addresses.dedup(bytesToHex(publicKey));
|
|
153
151
|
const nonce = dedup.data.nonce;
|
|
154
152
|
const unsignedTx = {
|
|
155
153
|
runtime_msg: runtimeCall,
|
|
156
154
|
nonce,
|
|
157
155
|
details: txDetails != null ? txDetails : this._config.defaultTxDetails
|
|
158
156
|
};
|
|
159
|
-
return this.signAndSubmitTransaction(
|
|
160
|
-
|
|
161
|
-
|
|
157
|
+
return this.signAndSubmitTransaction(
|
|
158
|
+
unsignedTx,
|
|
159
|
+
{
|
|
160
|
+
signer
|
|
161
|
+
}
|
|
162
|
+
);
|
|
162
163
|
});
|
|
163
164
|
}
|
|
164
165
|
simulate(_0, _1) {
|
|
165
166
|
return __async(this, arguments, function* (runtimeMessage, { signer, txDetails }) {
|
|
166
167
|
const runtimeCall = this.serializer.serializeRuntimeCall(runtimeMessage);
|
|
167
168
|
const publicKey = yield signer.publicKey();
|
|
168
|
-
const dedup = yield this.
|
|
169
|
-
bytesToHex(publicKey)
|
|
170
|
-
);
|
|
169
|
+
const dedup = yield this.rollup.addresses.dedup(bytesToHex(publicKey));
|
|
171
170
|
const nonce = dedup.data.nonce;
|
|
172
|
-
const response = yield this.
|
|
171
|
+
const response = yield this.rollup.simulate({
|
|
173
172
|
body: {
|
|
174
173
|
details: txDetails,
|
|
175
174
|
encoded_call_message: bytesToHex(runtimeCall),
|
|
@@ -180,8 +179,14 @@ var StandardRollup = class {
|
|
|
180
179
|
return response.data;
|
|
181
180
|
});
|
|
182
181
|
}
|
|
183
|
-
get
|
|
184
|
-
return this._client;
|
|
182
|
+
get ledger() {
|
|
183
|
+
return this._client.ledger;
|
|
184
|
+
}
|
|
185
|
+
get sequencer() {
|
|
186
|
+
return this._client.sequencer;
|
|
187
|
+
}
|
|
188
|
+
get rollup() {
|
|
189
|
+
return this._client.rollup;
|
|
185
190
|
}
|
|
186
191
|
get serializer() {
|
|
187
192
|
return this._serializer;
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/rollup.ts","../src/serialization.ts","../src/errors.ts","../src/utils.ts","../src/index.ts"],"sourcesContent":["import SovereignClient from \"@sovereign-sdk/client\";\nimport type { Signer } from \"@sovereign-sdk/signers\";\nimport { Base64 } from \"js-base64\";\nimport {\n type RollupSchema,\n type RollupSerializer,\n createSerializer,\n} from \"./serialization\";\nimport { bytesToHex } from \"./utils\";\n\nexport type TransactionResult<Tx> = {\n response: SovereignClient.Sequencer.TxCreateResponse;\n transaction: Tx;\n};\n\nexport type RollupConfig = {\n url?: string;\n schema: RollupSchema;\n defaultTxDetails: TxDetails;\n};\n\ntype TxDetails = {\n max_priority_fee_bips: number;\n max_fee: number;\n gas_limit?: number[];\n chain_id: number;\n};\n\ntype SignerParams = {\n signer: Signer;\n};\n\ntype CallParams = {\n txDetails?: TxDetails;\n} & SignerParams;\n\ntype SimulateParams = {\n txDetails: TxDetails;\n} & SignerParams;\n\n// biome-ignore lint/suspicious/noExplicitAny: fix later\nexport class StandardRollup<Tx = any, UnsignedTx = any> {\n private readonly _config: RollupConfig;\n private readonly _client: SovereignClient;\n private readonly _serializer: RollupSerializer;\n\n constructor(config: RollupConfig) {\n this._client = new SovereignClient({ baseURL: config.url });\n this._serializer = createSerializer(config.schema);\n this._config = config;\n }\n\n async submitTransaction(\n transaction: Tx,\n ): Promise<SovereignClient.Sequencer.TxCreateResponse> {\n const serializedTx = this.serializer.serializeTx(transaction);\n\n return this.client.sequencer.txs.create({\n body: Base64.fromUint8Array(serializedTx),\n });\n }\n\n async signAndSubmitTransaction(\n unsignedTx: UnsignedTx,\n { signer }: SignerParams,\n ): Promise<TransactionResult<Tx>> {\n const serializedUnsignedTx =\n this.serializer.serializeUnsignedTx(unsignedTx);\n const signature = await signer.sign(serializedUnsignedTx);\n const publicKey = await signer.publicKey();\n const tx = {\n pub_key: {\n pub_key: publicKey,\n },\n signature: {\n msg_sig: signature,\n },\n ...unsignedTx,\n } as Tx;\n const result = await this.submitTransaction(tx);\n\n return { transaction: tx, response: result };\n }\n\n async call(\n runtimeMessage: unknown,\n { signer, txDetails }: CallParams,\n ): Promise<TransactionResult<Tx>> {\n const runtimeCall = this.serializer.serializeRuntimeCall(runtimeMessage);\n const publicKey = await signer.publicKey();\n const dedup = await this.client.rollup.addresses.dedup(\n bytesToHex(publicKey),\n );\n // biome-ignore lint/suspicious/noExplicitAny: fix later\n const nonce = (dedup.data as any).nonce as number;\n const unsignedTx = {\n runtime_msg: runtimeCall,\n nonce,\n details: txDetails ?? this._config.defaultTxDetails,\n };\n\n return this.signAndSubmitTransaction(unsignedTx as UnsignedTx, {\n signer,\n });\n }\n\n async simulate(\n runtimeMessage: unknown,\n { signer, txDetails }: SimulateParams,\n ): Promise<SovereignClient.Rollup.SimulateExecutionResponse> {\n const runtimeCall = this.serializer.serializeRuntimeCall(runtimeMessage);\n const publicKey = await signer.publicKey();\n const dedup = await this.client.rollup.addresses.dedup(\n bytesToHex(publicKey),\n );\n // biome-ignore lint/suspicious/noExplicitAny: fix later\n const nonce = (dedup.data as any).nonce as number;\n const response = await this.client.rollup.simulate({\n body: {\n details: txDetails,\n encoded_call_message: bytesToHex(runtimeCall),\n nonce,\n sender_pub_key: bytesToHex(publicKey),\n },\n });\n\n // biome-ignore lint/style/noNonNullAssertion: fix later\n return response.data!;\n }\n\n get client(): SovereignClient {\n return this._client;\n }\n\n get serializer(): RollupSerializer {\n return this._serializer;\n }\n}\n","import { KnownTypeId, Schema } from \"@sovereign-sdk/universal-wallet-wasm\";\nimport { SovereignError } from \"./errors\";\n\nexport type RollupSchema = object;\n\nexport type RollupSerializer = {\n serialize(input: unknown, index: number): Uint8Array;\n serializeRuntimeCall(input: unknown): Uint8Array;\n serializeUnsignedTx(input: unknown): Uint8Array;\n serializeTx(input: unknown): Uint8Array;\n};\n\nfunction loadSchema(schemaObject: RollupSchema): Schema {\n try {\n return Schema.fromJSON(JSON.stringify(schemaObject));\n } catch (err) {\n throw new SovereignError(`Failed to create runtime schema due to: ${err}`);\n }\n}\n\nexport function createSerializer(schemaObject: RollupSchema): RollupSerializer {\n const schema = loadSchema(schemaObject);\n\n return {\n serialize(input: unknown, index: number): Uint8Array {\n try {\n return schema.jsonToBorsh(\n index,\n JSON.stringify(input, (_, value) => {\n if (value instanceof Uint8Array) {\n return Array.from(value);\n }\n return value;\n }),\n );\n } catch (err) {\n throw new SovereignError(`Failed to serialize input due to: ${err}`);\n }\n },\n serializeRuntimeCall(input: unknown): Uint8Array {\n return this.serialize(\n input,\n schema.knownTypeIndex(KnownTypeId.RuntimeCall),\n );\n },\n serializeUnsignedTx(input: unknown): Uint8Array {\n return this.serialize(\n input,\n schema.knownTypeIndex(KnownTypeId.UnsignedTransaction),\n );\n },\n serializeTx(input: unknown): Uint8Array {\n return this.serialize(\n input,\n schema.knownTypeIndex(KnownTypeId.Transaction),\n );\n },\n };\n}\n","export class SovereignError extends Error {\n constructor(message: string) {\n super(message);\n\n this.name = this.constructor.name;\n this.stack = new Error().stack;\n }\n}\n","export function hexToBytes(hex: string) {\n if (hex.length && hex.length % 2 !== 0) {\n throw new Error(`Invalid hex string length: ${hex.length}`);\n }\n\n const matches = hex.match(/[\\da-f]{2}/gi);\n\n if (!matches) {\n throw new Error(\"Invalid hex string: No valid hex digits found\");\n }\n\n return new Uint8Array(matches.map((h) => Number.parseInt(h, 16)));\n}\n\nexport function bytesToHex(arr: Uint8Array): string {\n let hex = \"\";\n for (let i = 0; i < arr.length; i++) {\n let hexValue = arr[i].toString(16);\n if (hexValue.length === 1) {\n hexValue = `0${hexValue}`;\n }\n hex += hexValue;\n }\n return hex;\n}\n","export * from \"./rollup\";\nexport * from \"./serialization\";\nexport * from \"./errors\";\nexport * as SovereignClient from \"@sovereign-sdk/client\";\n"],"mappings":"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","names":["SovereignClient"]}
|
|
1
|
+
{"version":3,"sources":["../src/rollup.ts","../src/serialization.ts","../src/errors.ts","../src/utils.ts","../src/index.ts"],"sourcesContent":["import SovereignClient from \"@sovereign-sdk/client\";\nimport type { Signer } from \"@sovereign-sdk/signers\";\nimport { Base64 } from \"js-base64\";\nimport {\n type RollupSchema,\n type RollupSerializer,\n createSerializer,\n} from \"./serialization\";\nimport type { BaseTypeSpec } from \"./type-spec\";\nimport { bytesToHex } from \"./utils\";\n\nexport type TransactionResult<Tx> = {\n response: SovereignClient.Sequencer.TxCreateResponse;\n transaction: Tx;\n};\n\nexport type RollupConfig = {\n url?: string;\n schema: RollupSchema;\n defaultTxDetails: TxDetails;\n};\n\ntype TxDetails = {\n max_priority_fee_bips: number;\n max_fee: number;\n gas_limit?: number[];\n chain_id: number;\n};\n\ntype SignerParams = {\n signer: Signer;\n};\n\ntype CallParams = {\n txDetails?: TxDetails;\n} & SignerParams;\n\ntype SimulateParams = {\n txDetails: TxDetails;\n} & SignerParams;\n\nexport class StandardRollup<T extends BaseTypeSpec = BaseTypeSpec> {\n private readonly _config: RollupConfig;\n private readonly _client: SovereignClient;\n private readonly _serializer: RollupSerializer;\n\n constructor(config: RollupConfig) {\n this._client = new SovereignClient({ baseURL: config.url });\n this._serializer = createSerializer(config.schema);\n this._config = config;\n }\n\n async submitTransaction(\n transaction: T[\"Transaction\"],\n ): Promise<SovereignClient.Sequencer.TxCreateResponse> {\n const serializedTx = this.serializer.serializeTx(transaction);\n\n return this.sequencer.txs.create({\n body: Base64.fromUint8Array(serializedTx),\n });\n }\n\n async signAndSubmitTransaction(\n unsignedTx: T[\"UnsignedTransaction\"],\n { signer }: SignerParams,\n ): Promise<TransactionResult<T[\"Transaction\"]>> {\n const serializedUnsignedTx =\n this.serializer.serializeUnsignedTx(unsignedTx);\n const signature = await signer.sign(serializedUnsignedTx);\n const publicKey = await signer.publicKey();\n const tx = {\n pub_key: {\n pub_key: publicKey,\n },\n signature: {\n msg_sig: signature,\n },\n ...unsignedTx,\n } as T[\"Transaction\"];\n const result = await this.submitTransaction(tx);\n\n return { transaction: tx, response: result };\n }\n\n async call(\n runtimeMessage: T[\"RuntimeCall\"],\n { signer, txDetails }: CallParams,\n ): Promise<TransactionResult<T[\"Transaction\"]>> {\n const runtimeCall = this.serializer.serializeRuntimeCall(runtimeMessage);\n const publicKey = await signer.publicKey();\n const dedup = await this.rollup.addresses.dedup(bytesToHex(publicKey));\n // biome-ignore lint/suspicious/noExplicitAny: fix later\n const nonce = (dedup.data as any).nonce as number;\n const unsignedTx = {\n runtime_msg: runtimeCall,\n nonce,\n details: txDetails ?? this._config.defaultTxDetails,\n };\n\n return this.signAndSubmitTransaction(\n unsignedTx as T[\"UnsignedTransaction\"],\n {\n signer,\n },\n );\n }\n\n async simulate(\n runtimeMessage: T[\"RuntimeCall\"],\n { signer, txDetails }: SimulateParams,\n ): Promise<SovereignClient.Rollup.SimulateExecutionResponse> {\n const runtimeCall = this.serializer.serializeRuntimeCall(runtimeMessage);\n const publicKey = await signer.publicKey();\n const dedup = await this.rollup.addresses.dedup(bytesToHex(publicKey));\n // biome-ignore lint/suspicious/noExplicitAny: fix later\n const nonce = (dedup.data as any).nonce as number;\n const response = await this.rollup.simulate({\n body: {\n details: txDetails,\n encoded_call_message: bytesToHex(runtimeCall),\n nonce,\n sender_pub_key: bytesToHex(publicKey),\n },\n });\n\n // biome-ignore lint/style/noNonNullAssertion: fix later\n return response.data!;\n }\n\n get ledger(): SovereignClient.Ledger {\n return this._client.ledger;\n }\n\n get sequencer(): SovereignClient.Sequencer {\n return this._client.sequencer;\n }\n\n get rollup(): SovereignClient.Rollup {\n return this._client.rollup;\n }\n\n get serializer(): RollupSerializer {\n return this._serializer;\n }\n}\n","import { KnownTypeId, Schema } from \"@sovereign-sdk/universal-wallet-wasm\";\nimport { SovereignError } from \"./errors\";\n\nexport type RollupSchema = object;\n\nexport type RollupSerializer = {\n serialize(input: unknown, index: number): Uint8Array;\n serializeRuntimeCall(input: unknown): Uint8Array;\n serializeUnsignedTx(input: unknown): Uint8Array;\n serializeTx(input: unknown): Uint8Array;\n};\n\nfunction loadSchema(schemaObject: RollupSchema): Schema {\n try {\n return Schema.fromJSON(JSON.stringify(schemaObject));\n } catch (err) {\n throw new SovereignError(`Failed to create runtime schema due to: ${err}`);\n }\n}\n\nexport function createSerializer(schemaObject: RollupSchema): RollupSerializer {\n const schema = loadSchema(schemaObject);\n\n return {\n serialize(input: unknown, index: number): Uint8Array {\n try {\n return schema.jsonToBorsh(\n index,\n JSON.stringify(input, (_, value) => {\n if (value instanceof Uint8Array) {\n return Array.from(value);\n }\n return value;\n }),\n );\n } catch (err) {\n throw new SovereignError(`Failed to serialize input due to: ${err}`);\n }\n },\n serializeRuntimeCall(input: unknown): Uint8Array {\n return this.serialize(\n input,\n schema.knownTypeIndex(KnownTypeId.RuntimeCall),\n );\n },\n serializeUnsignedTx(input: unknown): Uint8Array {\n return this.serialize(\n input,\n schema.knownTypeIndex(KnownTypeId.UnsignedTransaction),\n );\n },\n serializeTx(input: unknown): Uint8Array {\n return this.serialize(\n input,\n schema.knownTypeIndex(KnownTypeId.Transaction),\n );\n },\n };\n}\n","export class SovereignError extends Error {\n constructor(message: string) {\n super(message);\n\n this.name = this.constructor.name;\n this.stack = new Error().stack;\n }\n}\n","export function hexToBytes(hex: string) {\n if (hex.length && hex.length % 2 !== 0) {\n throw new Error(`Invalid hex string length: ${hex.length}`);\n }\n\n const matches = hex.match(/[\\da-f]{2}/gi);\n\n if (!matches) {\n throw new Error(\"Invalid hex string: No valid hex digits found\");\n }\n\n return new Uint8Array(matches.map((h) => Number.parseInt(h, 16)));\n}\n\nexport function bytesToHex(arr: Uint8Array): string {\n let hex = \"\";\n for (let i = 0; i < arr.length; i++) {\n let hexValue = arr[i].toString(16);\n if (hexValue.length === 1) {\n hexValue = `0${hexValue}`;\n }\n hex += hexValue;\n }\n return hex;\n}\n","export * from \"./rollup\";\nexport * from \"./serialization\";\nexport * from \"./errors\";\nexport * from \"./type-spec\";\nexport * as SovereignClient from \"@sovereign-sdk/client\";\n"],"mappings":"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","names":["SovereignClient"]}
|