@talismn/sapi 2.0.1 → 2.0.2
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 +27 -23
- package/dist/index.d.mts.map +1 -1
- package/dist/index.d.ts +27 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +120 -115
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +119 -115
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
package/dist/index.d.mts
CHANGED
|
@@ -5,10 +5,10 @@ type CustomExtensionMappers = NonNullable<Parameters<typeof getPjsTxHelper$1>[1]
|
|
|
5
5
|
/**
|
|
6
6
|
* Encoders for chain-specific signed extensions that `@polkadot-api/tx-utils` doesn't know about.
|
|
7
7
|
*/
|
|
8
|
-
declare const CUSTOM_SIGNED_EXTENSIONS: CustomExtensionMappers;
|
|
8
|
+
export declare const CUSTOM_SIGNED_EXTENSIONS: CustomExtensionMappers;
|
|
9
9
|
//#endregion
|
|
10
10
|
//#region src/fetchBestMetadata.d.ts
|
|
11
|
-
declare const MAX_SUPPORTED_METADATA_VERSION = 15;
|
|
11
|
+
export declare const MAX_SUPPORTED_METADATA_VERSION = 15;
|
|
12
12
|
type RpcSendFunc = <T>(method: string, params: unknown[], isCacheable?: boolean) => Promise<T>;
|
|
13
13
|
/**
|
|
14
14
|
* Fetches the highest supported version of metadata from the chain.
|
|
@@ -16,22 +16,12 @@ type RpcSendFunc = <T>(method: string, params: unknown[], isCacheable?: boolean)
|
|
|
16
16
|
* @param rpcSend
|
|
17
17
|
* @returns hex-encoded metadata starting with the magic number
|
|
18
18
|
*/
|
|
19
|
-
declare const fetchBestMetadata: (rpcSend: RpcSendFunc, allowLegacyFallback?: boolean) => Promise<`0x${string}`>;
|
|
20
|
-
//#endregion
|
|
21
|
-
//#region src/helpers/papi.d.ts
|
|
22
|
-
declare const toPjsHex: (value: number | bigint, minByteLen?: number) => `0x${string}`;
|
|
23
|
-
declare const mortal: import("scale-ts").Encoder<{
|
|
24
|
-
period: number;
|
|
25
|
-
phase: number;
|
|
26
|
-
}>;
|
|
27
|
-
declare const isEthereumAddress: (address: string) => boolean;
|
|
28
|
-
/** decodes an ss58 or ethereum address into its raw account bytes */
|
|
29
|
-
declare const getAddressBytes: (address: string) => Uint8Array;
|
|
19
|
+
export declare const fetchBestMetadata: (rpcSend: RpcSendFunc, allowLegacyFallback?: boolean) => Promise<`0x${string}`>;
|
|
30
20
|
//#endregion
|
|
31
21
|
//#region src/pjsInterop.d.ts
|
|
32
22
|
type HexString = `0x${string}`;
|
|
33
23
|
/** Same shape as `SignerPayloadJSON` from `@polkadot/types/types` */
|
|
34
|
-
interface SignerPayloadJSON {
|
|
24
|
+
export interface SignerPayloadJSON {
|
|
35
25
|
address: string;
|
|
36
26
|
assetId?: HexString;
|
|
37
27
|
blockHash: HexString;
|
|
@@ -50,23 +40,23 @@ interface SignerPayloadJSON {
|
|
|
50
40
|
withSignedTransaction?: boolean;
|
|
51
41
|
}
|
|
52
42
|
/** Same shape as `ExtDef` from `@polkadot/types/extrinsic/signedExtensions/types` */
|
|
53
|
-
type ExtDef = Record<string, {
|
|
43
|
+
export type ExtDef = Record<string, {
|
|
54
44
|
extrinsic: Record<string, string>;
|
|
55
45
|
payload: Record<string, string>;
|
|
56
46
|
}>;
|
|
57
47
|
//#endregion
|
|
58
48
|
//#region src/types.d.ts
|
|
59
|
-
type DecodedCall<Args = any> = {
|
|
49
|
+
export type DecodedCall<Args = any> = {
|
|
60
50
|
pallet: string;
|
|
61
51
|
method: string;
|
|
62
52
|
args: Args;
|
|
63
53
|
};
|
|
64
|
-
type PayloadSignerConfig = {
|
|
54
|
+
export type PayloadSignerConfig = {
|
|
65
55
|
address: string;
|
|
66
56
|
tip?: bigint;
|
|
67
57
|
};
|
|
68
|
-
type JsonRpcRequestSend = (method: string, params: unknown[], isCacheable?: boolean) => Promise<unknown>;
|
|
69
|
-
type SapiConnectorProps = {
|
|
58
|
+
export type JsonRpcRequestSend = (method: string, params: unknown[], isCacheable?: boolean) => Promise<unknown>;
|
|
59
|
+
export type SapiConnectorProps = {
|
|
70
60
|
chainId: string;
|
|
71
61
|
send: JsonRpcRequestSend;
|
|
72
62
|
submit?: (payload: SignerPayloadJSON, signature?: `0x${string}`, txInfo?: any) => Promise<{
|
|
@@ -77,7 +67,7 @@ type SapiConnectorProps = {
|
|
|
77
67
|
innerHash?: `0x${string}`;
|
|
78
68
|
}>;
|
|
79
69
|
};
|
|
80
|
-
type ScaleApiSubmitMode = "default" | "bittensor-mev-shield";
|
|
70
|
+
export type ScaleApiSubmitMode = "default" | "bittensor-mev-shield";
|
|
81
71
|
//#endregion
|
|
82
72
|
//#region src/helpers/getSapiConnector.d.ts
|
|
83
73
|
type SapiConnector = Required<SapiConnectorProps>;
|
|
@@ -99,9 +89,23 @@ type Chain = {
|
|
|
99
89
|
metadataRpc: `0x${string}`;
|
|
100
90
|
};
|
|
101
91
|
//#endregion
|
|
92
|
+
//#region src/helpers/getSignerPayloadJSON.d.ts
|
|
93
|
+
/** validity period of a signed payload in blocks: the mortal era every payload is built with */
|
|
94
|
+
export declare const ERA_PERIOD = 64;
|
|
95
|
+
//#endregion
|
|
96
|
+
//#region src/helpers/papi.d.ts
|
|
97
|
+
export declare const toPjsHex: (value: number | bigint, minByteLen?: number) => `0x${string}`;
|
|
98
|
+
export declare const mortal: import("scale-ts").Encoder<{
|
|
99
|
+
period: number;
|
|
100
|
+
phase: number;
|
|
101
|
+
}>;
|
|
102
|
+
export declare const isEthereumAddress: (address: string) => boolean;
|
|
103
|
+
/** decodes an ss58 or ethereum address into its raw account bytes */
|
|
104
|
+
export declare const getAddressBytes: (address: string) => Uint8Array;
|
|
105
|
+
//#endregion
|
|
102
106
|
//#region src/sapi.d.ts
|
|
103
|
-
type ScaleApi = NonNullable<ReturnType<typeof getScaleApi>>;
|
|
104
|
-
declare const getScaleApi: (connector: SapiConnectorProps, hexMetadata: `0x${string}`, token: {
|
|
107
|
+
export type ScaleApi = NonNullable<ReturnType<typeof getScaleApi>>;
|
|
108
|
+
export declare const getScaleApi: (connector: SapiConnectorProps, hexMetadata: `0x${string}`, token: {
|
|
105
109
|
symbol: string;
|
|
106
110
|
decimals: number;
|
|
107
111
|
}, hasCheckMetadataHash?: boolean, signedExtensions?: ExtDef, registryTypes?: unknown) => {
|
|
@@ -157,5 +161,5 @@ declare const getScaleApi: (connector: SapiConnectorProps, hexMetadata: `0x${str
|
|
|
157
161
|
hasConstant: (pallet: string, constant: string) => boolean;
|
|
158
162
|
};
|
|
159
163
|
//#endregion
|
|
160
|
-
export {
|
|
164
|
+
export { getPjsTxHelper, getTxHelper };
|
|
161
165
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/customSignedExtensions.ts","../src/fetchBestMetadata.ts","../src/
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/customSignedExtensions.ts","../src/fetchBestMetadata.ts","../src/pjsInterop.ts","../src/types.ts","../src/helpers/getSapiConnector.ts","../src/helpers/types.ts","../src/helpers/getSignerPayloadJSON.ts","../src/helpers/papi.ts","../src/sapi.ts"],"mappings":";;;KAGK,yBAAyB,YAAY,kBAAkB;;;;qBAO/C,0BAA0B;;;qBCJ1B;KAER,eAAe,GAAG,gBAAgB,mBAAmB,0BAA0B,QAAQ;;;;;;;qBAQ/E,oBAAiB,SACnB,aAAW,kCAEnB;;;KCnBE;;iBAGY;EACf;EACA,UAAU;EACV,WAAW;EACX,aAAa;EACb,KAAK;EACL,aAAa;EACb,eAAe;EACf;EACA;EACA,OAAO;EACP,aAAa;EACb,KAAK;EACL,oBAAoB;EACpB;EACA;EACA;;;YAIU,SAAS;EAEjB,WAAW;EAAwB,SAAS;;;;YCtBpC,YAAY;EAAgB;EAAgB;EAAgB,MAAM;;YAElE;EACV;EACA;;YAGU,sBACV,gBACA,mBACA,0BACG;YAEO;EACV;EACA,MAAM;EACN,UACE,SAAS,mBACT,2BAEA,iBACG;IAAU;;EACf,gCACE,SAAS,mBAET,iBACG;IAAU;IAAqB;;;YAG1B;;;KC9BA,gBAAgB,SAAS;;;KCGzB;EACV,WAAW;EACX;EACA;IAAS;IAAgB;;EACzB;EACA,mBAAmB;EACnB;EACA,UAAU;EACV,QAAQ;EACR,SAAS;EACT;;;;;qBCHW;;;qBCLA,WAAQ,wBAA0B;qBAOlC,2BAAM;EAAkD;EAAe;;qBAgBvE,oBAAiB;;qBAGjB,kBAAe,oBAAsB;;;YCRtC,WAAW,YAAY,kBAAkB;qBAExC,cAAW,WACX,oBAAkB,4BACH;EACjB;EAAgB;GAAkB,gCACb,mBACX,QAAM;;;;;;;;;;;;EAkCT,cAAA,GAAC,gBAAgB,qBAAkB;EAGpC,aAAA,GAAC,gBAAgB,eAAe,iBAAiB,gBAAa,QAAA;EAGlD,iBAAA,gBAAM,gBAAgB;;;;;;;EAGnB,4BAAA,YAAY,aAAW;IACjD,QAAQ;QACT;EAE6B,8BAAA,YAAY,aAAW,gCAA6B;EAIxE,sBAAA,gBAAM,gBACA,eACD,QACL,wBAAmB;;;;;EAGH,iBAAA,SAAA,sBAAiB;EAErB,sBAAA,GAAC,iBAAiB,gBAAgB,oBAAiB,QAAA;EAI9D,SAAA,SAAA,mBAAiB,2BACD,kBACT,OACT,uBAAkB;;;;EAGL,cAAA,gBAAM;EAEZ,gBAAA,GAAC,cAAc,aAAe,yBAAoB;;;;;;;;;;;EAG3C,iBAAA,cAAM;EAEV,WAAA,gBAAM;EAEH,cAAA,gBAAM"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,10 +5,10 @@ type CustomExtensionMappers = NonNullable<Parameters<typeof getPjsTxHelper$1>[1]
|
|
|
5
5
|
/**
|
|
6
6
|
* Encoders for chain-specific signed extensions that `@polkadot-api/tx-utils` doesn't know about.
|
|
7
7
|
*/
|
|
8
|
-
declare const CUSTOM_SIGNED_EXTENSIONS: CustomExtensionMappers;
|
|
8
|
+
export declare const CUSTOM_SIGNED_EXTENSIONS: CustomExtensionMappers;
|
|
9
9
|
//#endregion
|
|
10
10
|
//#region src/fetchBestMetadata.d.ts
|
|
11
|
-
declare const MAX_SUPPORTED_METADATA_VERSION = 15;
|
|
11
|
+
export declare const MAX_SUPPORTED_METADATA_VERSION = 15;
|
|
12
12
|
type RpcSendFunc = <T>(method: string, params: unknown[], isCacheable?: boolean) => Promise<T>;
|
|
13
13
|
/**
|
|
14
14
|
* Fetches the highest supported version of metadata from the chain.
|
|
@@ -16,22 +16,12 @@ type RpcSendFunc = <T>(method: string, params: unknown[], isCacheable?: boolean)
|
|
|
16
16
|
* @param rpcSend
|
|
17
17
|
* @returns hex-encoded metadata starting with the magic number
|
|
18
18
|
*/
|
|
19
|
-
declare const fetchBestMetadata: (rpcSend: RpcSendFunc, allowLegacyFallback?: boolean) => Promise<`0x${string}`>;
|
|
20
|
-
//#endregion
|
|
21
|
-
//#region src/helpers/papi.d.ts
|
|
22
|
-
declare const toPjsHex: (value: number | bigint, minByteLen?: number) => `0x${string}`;
|
|
23
|
-
declare const mortal: import("scale-ts").Encoder<{
|
|
24
|
-
period: number;
|
|
25
|
-
phase: number;
|
|
26
|
-
}>;
|
|
27
|
-
declare const isEthereumAddress: (address: string) => boolean;
|
|
28
|
-
/** decodes an ss58 or ethereum address into its raw account bytes */
|
|
29
|
-
declare const getAddressBytes: (address: string) => Uint8Array;
|
|
19
|
+
export declare const fetchBestMetadata: (rpcSend: RpcSendFunc, allowLegacyFallback?: boolean) => Promise<`0x${string}`>;
|
|
30
20
|
//#endregion
|
|
31
21
|
//#region src/pjsInterop.d.ts
|
|
32
22
|
type HexString = `0x${string}`;
|
|
33
23
|
/** Same shape as `SignerPayloadJSON` from `@polkadot/types/types` */
|
|
34
|
-
interface SignerPayloadJSON {
|
|
24
|
+
export interface SignerPayloadJSON {
|
|
35
25
|
address: string;
|
|
36
26
|
assetId?: HexString;
|
|
37
27
|
blockHash: HexString;
|
|
@@ -50,23 +40,23 @@ interface SignerPayloadJSON {
|
|
|
50
40
|
withSignedTransaction?: boolean;
|
|
51
41
|
}
|
|
52
42
|
/** Same shape as `ExtDef` from `@polkadot/types/extrinsic/signedExtensions/types` */
|
|
53
|
-
type ExtDef = Record<string, {
|
|
43
|
+
export type ExtDef = Record<string, {
|
|
54
44
|
extrinsic: Record<string, string>;
|
|
55
45
|
payload: Record<string, string>;
|
|
56
46
|
}>;
|
|
57
47
|
//#endregion
|
|
58
48
|
//#region src/types.d.ts
|
|
59
|
-
type DecodedCall<Args = any> = {
|
|
49
|
+
export type DecodedCall<Args = any> = {
|
|
60
50
|
pallet: string;
|
|
61
51
|
method: string;
|
|
62
52
|
args: Args;
|
|
63
53
|
};
|
|
64
|
-
type PayloadSignerConfig = {
|
|
54
|
+
export type PayloadSignerConfig = {
|
|
65
55
|
address: string;
|
|
66
56
|
tip?: bigint;
|
|
67
57
|
};
|
|
68
|
-
type JsonRpcRequestSend = (method: string, params: unknown[], isCacheable?: boolean) => Promise<unknown>;
|
|
69
|
-
type SapiConnectorProps = {
|
|
58
|
+
export type JsonRpcRequestSend = (method: string, params: unknown[], isCacheable?: boolean) => Promise<unknown>;
|
|
59
|
+
export type SapiConnectorProps = {
|
|
70
60
|
chainId: string;
|
|
71
61
|
send: JsonRpcRequestSend;
|
|
72
62
|
submit?: (payload: SignerPayloadJSON, signature?: `0x${string}`, txInfo?: any) => Promise<{
|
|
@@ -77,7 +67,7 @@ type SapiConnectorProps = {
|
|
|
77
67
|
innerHash?: `0x${string}`;
|
|
78
68
|
}>;
|
|
79
69
|
};
|
|
80
|
-
type ScaleApiSubmitMode = "default" | "bittensor-mev-shield";
|
|
70
|
+
export type ScaleApiSubmitMode = "default" | "bittensor-mev-shield";
|
|
81
71
|
//#endregion
|
|
82
72
|
//#region src/helpers/getSapiConnector.d.ts
|
|
83
73
|
type SapiConnector = Required<SapiConnectorProps>;
|
|
@@ -99,9 +89,23 @@ type Chain = {
|
|
|
99
89
|
metadataRpc: `0x${string}`;
|
|
100
90
|
};
|
|
101
91
|
//#endregion
|
|
92
|
+
//#region src/helpers/getSignerPayloadJSON.d.ts
|
|
93
|
+
/** validity period of a signed payload in blocks: the mortal era every payload is built with */
|
|
94
|
+
export declare const ERA_PERIOD = 64;
|
|
95
|
+
//#endregion
|
|
96
|
+
//#region src/helpers/papi.d.ts
|
|
97
|
+
export declare const toPjsHex: (value: number | bigint, minByteLen?: number) => `0x${string}`;
|
|
98
|
+
export declare const mortal: import("scale-ts").Encoder<{
|
|
99
|
+
period: number;
|
|
100
|
+
phase: number;
|
|
101
|
+
}>;
|
|
102
|
+
export declare const isEthereumAddress: (address: string) => boolean;
|
|
103
|
+
/** decodes an ss58 or ethereum address into its raw account bytes */
|
|
104
|
+
export declare const getAddressBytes: (address: string) => Uint8Array;
|
|
105
|
+
//#endregion
|
|
102
106
|
//#region src/sapi.d.ts
|
|
103
|
-
type ScaleApi = NonNullable<ReturnType<typeof getScaleApi>>;
|
|
104
|
-
declare const getScaleApi: (connector: SapiConnectorProps, hexMetadata: `0x${string}`, token: {
|
|
107
|
+
export type ScaleApi = NonNullable<ReturnType<typeof getScaleApi>>;
|
|
108
|
+
export declare const getScaleApi: (connector: SapiConnectorProps, hexMetadata: `0x${string}`, token: {
|
|
105
109
|
symbol: string;
|
|
106
110
|
decimals: number;
|
|
107
111
|
}, hasCheckMetadataHash?: boolean, signedExtensions?: ExtDef, registryTypes?: unknown) => {
|
|
@@ -157,5 +161,5 @@ declare const getScaleApi: (connector: SapiConnectorProps, hexMetadata: `0x${str
|
|
|
157
161
|
hasConstant: (pallet: string, constant: string) => boolean;
|
|
158
162
|
};
|
|
159
163
|
//#endregion
|
|
160
|
-
export {
|
|
164
|
+
export { getPjsTxHelper, getTxHelper };
|
|
161
165
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/customSignedExtensions.ts","../src/fetchBestMetadata.ts","../src/
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/customSignedExtensions.ts","../src/fetchBestMetadata.ts","../src/pjsInterop.ts","../src/types.ts","../src/helpers/getSapiConnector.ts","../src/helpers/types.ts","../src/helpers/getSignerPayloadJSON.ts","../src/helpers/papi.ts","../src/sapi.ts"],"mappings":";;;KAGK,yBAAyB,YAAY,kBAAkB;;;;qBAO/C,0BAA0B;;;qBCJ1B;KAER,eAAe,GAAG,gBAAgB,mBAAmB,0BAA0B,QAAQ;;;;;;;qBAQ/E,oBAAiB,SACnB,aAAW,kCAEnB;;;KCnBE;;iBAGY;EACf;EACA,UAAU;EACV,WAAW;EACX,aAAa;EACb,KAAK;EACL,aAAa;EACb,eAAe;EACf;EACA;EACA,OAAO;EACP,aAAa;EACb,KAAK;EACL,oBAAoB;EACpB;EACA;EACA;;;YAIU,SAAS;EAEjB,WAAW;EAAwB,SAAS;;;;YCtBpC,YAAY;EAAgB;EAAgB;EAAgB,MAAM;;YAElE;EACV;EACA;;YAGU,sBACV,gBACA,mBACA,0BACG;YAEO;EACV;EACA,MAAM;EACN,UACE,SAAS,mBACT,2BAEA,iBACG;IAAU;;EACf,gCACE,SAAS,mBAET,iBACG;IAAU;IAAqB;;;YAG1B;;;KC9BA,gBAAgB,SAAS;;;KCGzB;EACV,WAAW;EACX;EACA;IAAS;IAAgB;;EACzB;EACA,mBAAmB;EACnB;EACA,UAAU;EACV,QAAQ;EACR,SAAS;EACT;;;;;qBCHW;;;qBCLA,WAAQ,wBAA0B;qBAOlC,2BAAM;EAAkD;EAAe;;qBAgBvE,oBAAiB;;qBAGjB,kBAAe,oBAAsB;;;YCRtC,WAAW,YAAY,kBAAkB;qBAExC,cAAW,WACX,oBAAkB,4BACH;EACjB;EAAgB;GAAkB,gCACb,mBACX,QAAM;;;;;;;;;;;;EAkCT,cAAA,GAAC,gBAAgB,qBAAkB;EAGpC,aAAA,GAAC,gBAAgB,eAAe,iBAAiB,gBAAa,QAAA;EAGlD,iBAAA,gBAAM,gBAAgB;;;;;;;EAGnB,4BAAA,YAAY,aAAW;IACjD,QAAQ;QACT;EAE6B,8BAAA,YAAY,aAAW,gCAA6B;EAIxE,sBAAA,gBAAM,gBACA,eACD,QACL,wBAAmB;;;;;EAGH,iBAAA,SAAA,sBAAiB;EAErB,sBAAA,GAAC,iBAAiB,gBAAgB,oBAAiB,QAAA;EAI9D,SAAA,SAAA,mBAAiB,2BACD,kBACT,OACT,uBAAkB;;;;EAGL,cAAA,gBAAM;EAEZ,gBAAA,GAAC,cAAc,aAAe,yBAAoB;;;;;;;;;;;EAG3C,iBAAA,cAAM;EAEV,WAAA,gBAAM;EAEH,cAAA,gBAAM"}
|
package/dist/index.js
CHANGED
|
@@ -16,7 +16,7 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
}
|
|
17
17
|
return to;
|
|
18
18
|
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
|
|
20
20
|
value: mod,
|
|
21
21
|
enumerable: true
|
|
22
22
|
}) : target, mod));
|
|
@@ -25,12 +25,12 @@ let _polkadot_api_tx_utils = require("@polkadot-api/tx-utils");
|
|
|
25
25
|
let _polkadot_api_substrate_bindings = require("@polkadot-api/substrate-bindings");
|
|
26
26
|
let _polkadot_api_utils = require("@polkadot-api/utils");
|
|
27
27
|
let scale_ts = require("scale-ts");
|
|
28
|
-
let _talismn_scale = require("@talismn/scale");
|
|
29
28
|
let anylogger = require("anylogger");
|
|
30
29
|
anylogger = __toESM(anylogger);
|
|
30
|
+
let _polkadot_api_merkleize_metadata = require("@polkadot-api/merkleize-metadata");
|
|
31
|
+
let _talismn_scale = require("@talismn/scale");
|
|
31
32
|
let _polkadot_api_metadata_builders = require("@polkadot-api/metadata-builders");
|
|
32
33
|
let _polkadot_api_signers_common = require("@polkadot-api/signers-common");
|
|
33
|
-
let _polkadot_api_merkleize_metadata = require("@polkadot-api/merkleize-metadata");
|
|
34
34
|
//#region src/customSignedExtensions.ts
|
|
35
35
|
const EMPTY = /* @__PURE__ */ new Uint8Array();
|
|
36
36
|
/**
|
|
@@ -77,6 +77,67 @@ const normalizeMetadata = (metadata) => {
|
|
|
77
77
|
return `0x${metadata.slice(magicNumberIndex)}`;
|
|
78
78
|
};
|
|
79
79
|
//#endregion
|
|
80
|
+
//#region src/log.ts
|
|
81
|
+
var log_default = (0, anylogger.default)("@talismn/sapi");
|
|
82
|
+
//#endregion
|
|
83
|
+
//#region src/helpers/getPayloadWithMetadataHash.ts
|
|
84
|
+
const getPayloadWithMetadataHash = (chain, chainInfo, payload) => {
|
|
85
|
+
if (!chain.hasCheckMetadataHash || !payload.signedExtensions.includes("CheckMetadataHash")) return {
|
|
86
|
+
payload,
|
|
87
|
+
txMetadata: void 0
|
|
88
|
+
};
|
|
89
|
+
try {
|
|
90
|
+
const { decimals, symbol: tokenSymbol } = chain.token;
|
|
91
|
+
const { base58Prefix, specName, specVersion } = chainInfo;
|
|
92
|
+
const metadataHashInputs = {
|
|
93
|
+
tokenSymbol,
|
|
94
|
+
decimals,
|
|
95
|
+
base58Prefix,
|
|
96
|
+
specName,
|
|
97
|
+
specVersion
|
|
98
|
+
};
|
|
99
|
+
const merkleizedMetadata = (0, _polkadot_api_merkleize_metadata.merkleizeMetadata)(chain.hexMetadata, metadataHashInputs);
|
|
100
|
+
const metadataHash = (0, _polkadot_api_utils.toHex)(merkleizedMetadata.digest());
|
|
101
|
+
log_default.log("metadataHash", metadataHash, metadataHashInputs);
|
|
102
|
+
const payloadWithMetadataHash = {
|
|
103
|
+
...payload,
|
|
104
|
+
mode: 1,
|
|
105
|
+
metadataHash,
|
|
106
|
+
withSignedTransaction: true
|
|
107
|
+
};
|
|
108
|
+
const { callData, extra, additionalSigned } = (0, _polkadot_api_tx_utils.getPjsTxHelper)(chain.hexMetadata, CUSTOM_SIGNED_EXTENSIONS)(payloadWithMetadataHash);
|
|
109
|
+
const barePayload = (0, _polkadot_api_utils.mergeUint8)([
|
|
110
|
+
callData,
|
|
111
|
+
extra,
|
|
112
|
+
additionalSigned
|
|
113
|
+
]);
|
|
114
|
+
return {
|
|
115
|
+
payload: payloadWithMetadataHash,
|
|
116
|
+
txMetadata: merkleizedMetadata.getProofForExtrinsicPayload(barePayload)
|
|
117
|
+
};
|
|
118
|
+
} catch (err) {
|
|
119
|
+
log_default.error("Failed to get shortened metadata", { error: err });
|
|
120
|
+
return {
|
|
121
|
+
payload,
|
|
122
|
+
txMetadata: void 0
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
//#endregion
|
|
127
|
+
//#region src/helpers/getSendRequestResult.ts
|
|
128
|
+
const getSendRequestResult = (chain, method, params, isCacheable) => {
|
|
129
|
+
return chain.connector.send(method, params, isCacheable);
|
|
130
|
+
};
|
|
131
|
+
//#endregion
|
|
132
|
+
//#region src/helpers/getStorageValue.ts
|
|
133
|
+
const getStorageValue = async (chain, pallet, entry, keys, at) => {
|
|
134
|
+
const storageCodec = chain.builder.buildStorage(pallet, entry);
|
|
135
|
+
const stateKey = storageCodec.keys.enc(...keys);
|
|
136
|
+
const hexValue = await getSendRequestResult(chain, "state_getStorage", [stateKey, at]);
|
|
137
|
+
if (!hexValue) return null;
|
|
138
|
+
return storageCodec.value.dec(hexValue);
|
|
139
|
+
};
|
|
140
|
+
//#endregion
|
|
80
141
|
//#region src/helpers/papi.ts
|
|
81
142
|
const toPjsHex = (value, minByteLen) => {
|
|
82
143
|
let inner = value.toString(16);
|
|
@@ -107,8 +168,59 @@ const getAddressBytes = (address) => {
|
|
|
107
168
|
return info.publicKey;
|
|
108
169
|
};
|
|
109
170
|
//#endregion
|
|
110
|
-
//#region src/
|
|
111
|
-
|
|
171
|
+
//#region src/helpers/getSignerPayloadJSON.ts
|
|
172
|
+
/** validity period of a signed payload in blocks: the mortal era every payload is built with */
|
|
173
|
+
const ERA_PERIOD = 64;
|
|
174
|
+
const getSignerPayloadJSON = async (chain, palletName, methodName, args, signerConfig, chainInfo) => {
|
|
175
|
+
const { codec, location } = chain.builder.buildCall(palletName, methodName);
|
|
176
|
+
const method = (0, _polkadot_api_utils.mergeUint8)([new Uint8Array(location), codec.enc(args)]);
|
|
177
|
+
let blockHash = await getSendRequestResult(chain, "chain_getFinalizedHead", [], false);
|
|
178
|
+
const [nonce, genesisHash, blockNumberFinalized, blockNumberCurrent] = await Promise.all([
|
|
179
|
+
getSendRequestResult(chain, "system_accountNextIndex", [signerConfig.address], false),
|
|
180
|
+
getStorageValue(chain, "System", "BlockHash", [0]),
|
|
181
|
+
getStorageValue(chain, "System", "Number", [], blockHash),
|
|
182
|
+
getStorageValue(chain, "System", "Number", [])
|
|
183
|
+
]);
|
|
184
|
+
if (!genesisHash) throw new Error("Genesis hash not found");
|
|
185
|
+
if (!blockHash) throw new Error("Block hash not found");
|
|
186
|
+
let blockNumber = blockNumberFinalized;
|
|
187
|
+
if (blockNumberCurrent - blockNumberFinalized > 32) {
|
|
188
|
+
blockNumber = blockNumberCurrent - 16;
|
|
189
|
+
blockHash = await getStorageValue(chain, "System", "BlockHash", [blockNumber]);
|
|
190
|
+
}
|
|
191
|
+
const era = mortal({
|
|
192
|
+
period: 64,
|
|
193
|
+
phase: blockNumber % 64
|
|
194
|
+
});
|
|
195
|
+
const signedExtensions = (chain.metadata.extrinsic.signedExtensions[0] ?? []).map((ext) => ext.identifier);
|
|
196
|
+
const basePayload = {
|
|
197
|
+
address: signerConfig.address,
|
|
198
|
+
genesisHash,
|
|
199
|
+
blockHash,
|
|
200
|
+
method: _polkadot_api_substrate_bindings.Binary.toHex(method),
|
|
201
|
+
signedExtensions,
|
|
202
|
+
nonce: toPjsHex(nonce, 4),
|
|
203
|
+
specVersion: toPjsHex(chainInfo.specVersion, 4),
|
|
204
|
+
transactionVersion: toPjsHex(chainInfo.transactionVersion, 4),
|
|
205
|
+
blockNumber: toPjsHex(blockNumber, 4),
|
|
206
|
+
era: (0, _polkadot_api_utils.toHex)(era),
|
|
207
|
+
tip: toPjsHex(0, 16),
|
|
208
|
+
assetId: void 0,
|
|
209
|
+
version: 4
|
|
210
|
+
};
|
|
211
|
+
const { payload, txMetadata } = getPayloadWithMetadataHash(chain, chainInfo, basePayload);
|
|
212
|
+
const shortMetadata = txMetadata ? (0, _polkadot_api_utils.toHex)(txMetadata) : void 0;
|
|
213
|
+
if (payload.signedExtensions.includes("CheckAppId")) payload.appId = 0;
|
|
214
|
+
log_default.log("[sapi] payload", {
|
|
215
|
+
newPayload: payload,
|
|
216
|
+
txMetadata
|
|
217
|
+
});
|
|
218
|
+
return {
|
|
219
|
+
payload,
|
|
220
|
+
txMetadata,
|
|
221
|
+
shortMetadata
|
|
222
|
+
};
|
|
223
|
+
};
|
|
112
224
|
//#endregion
|
|
113
225
|
//#region src/helpers/getCallDocs.ts
|
|
114
226
|
const getCallDocs = (chain, pallet, method) => {
|
|
@@ -329,11 +441,6 @@ const tryFormatError = (err) => {
|
|
|
329
441
|
return "Unknown error";
|
|
330
442
|
};
|
|
331
443
|
//#endregion
|
|
332
|
-
//#region src/helpers/getSendRequestResult.ts
|
|
333
|
-
const getSendRequestResult = (chain, method, params, isCacheable) => {
|
|
334
|
-
return chain.connector.send(method, params, isCacheable);
|
|
335
|
-
};
|
|
336
|
-
//#endregion
|
|
337
444
|
//#region src/helpers/getRuntimeCallResult.ts
|
|
338
445
|
const getRuntimeCallResult = async (chain, apiName, method, args) => {
|
|
339
446
|
const call = chain.builder.buildRuntimeCall(apiName, method);
|
|
@@ -383,7 +490,8 @@ const getDryRunCall = async (chain, from, decodedCall) => {
|
|
|
383
490
|
//#region src/helpers/getExtrinsicDispatchInfo.ts
|
|
384
491
|
const getExtrinsicDispatchInfo = async (chain, signedTxBytes) => {
|
|
385
492
|
const args = (0, _polkadot_api_utils.mergeUint8)([signedTxBytes, _polkadot_api_substrate_bindings.u32.enc(signedTxBytes.length)]);
|
|
386
|
-
const
|
|
493
|
+
const result = await chain.connector.send("state_call", ["TransactionPaymentApi_query_info", (0, _polkadot_api_utils.toHex)(args)], true);
|
|
494
|
+
const bytes = (0, _polkadot_api_utils.fromHex)(result);
|
|
387
495
|
if (bytes.length < 16) throw new Error("Invalid RuntimeDispatchInfo");
|
|
388
496
|
return { partialFee: _polkadot_api_substrate_bindings.u128.dec(bytes.slice(bytes.length - 16)).toString() };
|
|
389
497
|
};
|
|
@@ -425,110 +533,6 @@ const getSapiConnector = ({ chainId, send, submit, submitWithBittensorMevShield
|
|
|
425
533
|
}
|
|
426
534
|
});
|
|
427
535
|
//#endregion
|
|
428
|
-
//#region src/helpers/getPayloadWithMetadataHash.ts
|
|
429
|
-
const getPayloadWithMetadataHash = (chain, chainInfo, payload) => {
|
|
430
|
-
if (!chain.hasCheckMetadataHash || !payload.signedExtensions.includes("CheckMetadataHash")) return {
|
|
431
|
-
payload,
|
|
432
|
-
txMetadata: void 0
|
|
433
|
-
};
|
|
434
|
-
try {
|
|
435
|
-
const { decimals, symbol: tokenSymbol } = chain.token;
|
|
436
|
-
const { base58Prefix, specName, specVersion } = chainInfo;
|
|
437
|
-
const metadataHashInputs = {
|
|
438
|
-
tokenSymbol,
|
|
439
|
-
decimals,
|
|
440
|
-
base58Prefix,
|
|
441
|
-
specName,
|
|
442
|
-
specVersion
|
|
443
|
-
};
|
|
444
|
-
const merkleizedMetadata = (0, _polkadot_api_merkleize_metadata.merkleizeMetadata)(chain.hexMetadata, metadataHashInputs);
|
|
445
|
-
const metadataHash = (0, _polkadot_api_utils.toHex)(merkleizedMetadata.digest());
|
|
446
|
-
log_default.log("metadataHash", metadataHash, metadataHashInputs);
|
|
447
|
-
const payloadWithMetadataHash = {
|
|
448
|
-
...payload,
|
|
449
|
-
mode: 1,
|
|
450
|
-
metadataHash,
|
|
451
|
-
withSignedTransaction: true
|
|
452
|
-
};
|
|
453
|
-
const { callData, extra, additionalSigned } = (0, _polkadot_api_tx_utils.getPjsTxHelper)(chain.hexMetadata, CUSTOM_SIGNED_EXTENSIONS)(payloadWithMetadataHash);
|
|
454
|
-
const barePayload = (0, _polkadot_api_utils.mergeUint8)([
|
|
455
|
-
callData,
|
|
456
|
-
extra,
|
|
457
|
-
additionalSigned
|
|
458
|
-
]);
|
|
459
|
-
return {
|
|
460
|
-
payload: payloadWithMetadataHash,
|
|
461
|
-
txMetadata: merkleizedMetadata.getProofForExtrinsicPayload(barePayload)
|
|
462
|
-
};
|
|
463
|
-
} catch (err) {
|
|
464
|
-
log_default.error("Failed to get shortened metadata", { error: err });
|
|
465
|
-
return {
|
|
466
|
-
payload,
|
|
467
|
-
txMetadata: void 0
|
|
468
|
-
};
|
|
469
|
-
}
|
|
470
|
-
};
|
|
471
|
-
//#endregion
|
|
472
|
-
//#region src/helpers/getStorageValue.ts
|
|
473
|
-
const getStorageValue = async (chain, pallet, entry, keys, at) => {
|
|
474
|
-
const storageCodec = chain.builder.buildStorage(pallet, entry);
|
|
475
|
-
const hexValue = await getSendRequestResult(chain, "state_getStorage", [storageCodec.keys.enc(...keys), at]);
|
|
476
|
-
if (!hexValue) return null;
|
|
477
|
-
return storageCodec.value.dec(hexValue);
|
|
478
|
-
};
|
|
479
|
-
//#endregion
|
|
480
|
-
//#region src/helpers/getSignerPayloadJSON.ts
|
|
481
|
-
const ERA_PERIOD = 64;
|
|
482
|
-
const getSignerPayloadJSON = async (chain, palletName, methodName, args, signerConfig, chainInfo) => {
|
|
483
|
-
const { codec, location } = chain.builder.buildCall(palletName, methodName);
|
|
484
|
-
const method = (0, _polkadot_api_utils.mergeUint8)([new Uint8Array(location), codec.enc(args)]);
|
|
485
|
-
let blockHash = await getSendRequestResult(chain, "chain_getFinalizedHead", [], false);
|
|
486
|
-
const [nonce, genesisHash, blockNumberFinalized, blockNumberCurrent] = await Promise.all([
|
|
487
|
-
getSendRequestResult(chain, "system_accountNextIndex", [signerConfig.address], false),
|
|
488
|
-
getStorageValue(chain, "System", "BlockHash", [0]),
|
|
489
|
-
getStorageValue(chain, "System", "Number", [], blockHash),
|
|
490
|
-
getStorageValue(chain, "System", "Number", [])
|
|
491
|
-
]);
|
|
492
|
-
if (!genesisHash) throw new Error("Genesis hash not found");
|
|
493
|
-
if (!blockHash) throw new Error("Block hash not found");
|
|
494
|
-
let blockNumber = blockNumberFinalized;
|
|
495
|
-
if (blockNumberCurrent - blockNumberFinalized > 32) {
|
|
496
|
-
blockNumber = blockNumberCurrent - 16;
|
|
497
|
-
blockHash = await getStorageValue(chain, "System", "BlockHash", [blockNumber]);
|
|
498
|
-
}
|
|
499
|
-
const era = mortal({
|
|
500
|
-
period: ERA_PERIOD,
|
|
501
|
-
phase: blockNumber % ERA_PERIOD
|
|
502
|
-
});
|
|
503
|
-
const signedExtensions = (chain.metadata.extrinsic.signedExtensions[0] ?? []).map((ext) => ext.identifier);
|
|
504
|
-
const { payload, txMetadata } = getPayloadWithMetadataHash(chain, chainInfo, {
|
|
505
|
-
address: signerConfig.address,
|
|
506
|
-
genesisHash,
|
|
507
|
-
blockHash,
|
|
508
|
-
method: _polkadot_api_substrate_bindings.Binary.toHex(method),
|
|
509
|
-
signedExtensions,
|
|
510
|
-
nonce: toPjsHex(nonce, 4),
|
|
511
|
-
specVersion: toPjsHex(chainInfo.specVersion, 4),
|
|
512
|
-
transactionVersion: toPjsHex(chainInfo.transactionVersion, 4),
|
|
513
|
-
blockNumber: toPjsHex(blockNumber, 4),
|
|
514
|
-
era: (0, _polkadot_api_utils.toHex)(era),
|
|
515
|
-
tip: toPjsHex(0, 16),
|
|
516
|
-
assetId: void 0,
|
|
517
|
-
version: 4
|
|
518
|
-
});
|
|
519
|
-
const shortMetadata = txMetadata ? (0, _polkadot_api_utils.toHex)(txMetadata) : void 0;
|
|
520
|
-
if (payload.signedExtensions.includes("CheckAppId")) payload.appId = 0;
|
|
521
|
-
log_default.log("[sapi] payload", {
|
|
522
|
-
newPayload: payload,
|
|
523
|
-
txMetadata
|
|
524
|
-
});
|
|
525
|
-
return {
|
|
526
|
-
payload,
|
|
527
|
-
txMetadata,
|
|
528
|
-
shortMetadata
|
|
529
|
-
};
|
|
530
|
-
};
|
|
531
|
-
//#endregion
|
|
532
536
|
//#region src/helpers/hasConstant.ts
|
|
533
537
|
const hasConstant = (chain, pallet, constant) => {
|
|
534
538
|
return !!chain.metadata.pallets.find((p) => p.name === pallet)?.constants.some((c) => c.name === constant);
|
|
@@ -605,6 +609,7 @@ const getScaleApi = (connector, hexMetadata, token, hasCheckMetadataHash, signed
|
|
|
605
609
|
};
|
|
606
610
|
//#endregion
|
|
607
611
|
exports.CUSTOM_SIGNED_EXTENSIONS = CUSTOM_SIGNED_EXTENSIONS;
|
|
612
|
+
exports.ERA_PERIOD = ERA_PERIOD;
|
|
608
613
|
exports.MAX_SUPPORTED_METADATA_VERSION = MAX_SUPPORTED_METADATA_VERSION;
|
|
609
614
|
exports.fetchBestMetadata = fetchBestMetadata;
|
|
610
615
|
exports.getAddressBytes = getAddressBytes;
|