@talismn/scale 0.1.2 → 0.2.1

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.
@@ -1,6 +1,8 @@
1
- export { getDynamicBuilder, getLookupFn } from "@polkadot-api/metadata-builders";
1
+ import { getDynamicBuilder } from "@polkadot-api/metadata-builders";
2
+ export { getDynamicBuilder, getLookupFn, type MetadataLookup, } from "@polkadot-api/metadata-builders";
2
3
  export type { Codec, UnifiedMetadata } from "@polkadot-api/substrate-bindings";
3
4
  export { decAnyMetadata, unifyMetadata, metadata } from "@polkadot-api/substrate-bindings";
4
5
  export { toHex, fromHex } from "@polkadot-api/utils";
5
6
  /** Constant: https://docs.substrate.io/build/application-development/#metadata-format */
6
7
  export declare const magicNumber = 1635018093;
8
+ export type MetadataBuilder = ReturnType<typeof getDynamicBuilder>;
@@ -1,4 +1,4 @@
1
- import { getDynamicBuilder } from "@polkadot-api/metadata-builders";
2
- type ScaleStorageCoder = ReturnType<ReturnType<typeof getDynamicBuilder>["buildStorage"]>;
1
+ import { MetadataBuilder } from "../papito";
2
+ type ScaleStorageCoder = ReturnType<MetadataBuilder["buildStorage"]>;
3
3
  export declare const decodeScale: <T>(scaleCoder: ScaleStorageCoder | undefined, change: string | null, error?: string) => T | null;
4
4
  export {};
@@ -1,2 +1,2 @@
1
1
  import { Metadata } from "@polkadot-api/substrate-bindings";
2
- export declare const encodeMetadata: (metadata: Metadata) => string;
2
+ export declare const encodeMetadata: (metadata: Metadata) => `0x${string}`;
@@ -1,4 +1,3 @@
1
- import { getDynamicBuilder } from "@polkadot-api/metadata-builders";
2
- type ScaleStorageCoder = ReturnType<ReturnType<typeof getDynamicBuilder>["buildStorage"]>;
3
- export declare const encodeStateKey: (scaleCoder: ScaleStorageCoder | undefined, error?: string, ...args: any[]) => string | undefined;
4
- export {};
1
+ import { MetadataBuilder } from "../papito";
2
+ export type ScaleStorageCoder = ReturnType<MetadataBuilder["buildStorage"]>;
3
+ export declare const encodeStateKey: (scaleCoder: ScaleStorageCoder | undefined, error?: string, ...args: any[]) => `0x${string}` | undefined;
@@ -0,0 +1,5 @@
1
+ import { MetadataBuilder, UnifiedMetadata } from "../papito";
2
+ export declare const getConstantValueFromMetadata: <T>(metadata: `0x${string}` | {
3
+ builder: MetadataBuilder;
4
+ unifiedMetadata: UnifiedMetadata;
5
+ }, pallet: string, constant: string) => T;
@@ -0,0 +1 @@
1
+ export declare const getStorageKeyPrefix: (palletName: string, storageName: string) => string;
@@ -0,0 +1 @@
1
+ export { Twox128, Blake2128, Blake2128Concat, Blake2256, Blake3256, Blake3256Concat, Twox256, Twox64Concat, } from "@polkadot-api/substrate-bindings";
@@ -4,3 +4,7 @@ export * from "./encodeMetadata";
4
4
  export * from "./encodeStateKey";
5
5
  export * from "./getMetadataVersion";
6
6
  export * from "./serdePapi";
7
+ export * from "./parseMetadataRpc";
8
+ export * from "./getStorageKeyPrefix";
9
+ export * from "./hash";
10
+ export * from "./getConstantValueFromMetadata";
@@ -0,0 +1,835 @@
1
+ export declare const parseMetadataRpc: (metadataRpc: `0x${string}`) => {
2
+ metadata: {
3
+ magicNumber: number;
4
+ metadata: {
5
+ tag: "v0";
6
+ value: unknown;
7
+ } | {
8
+ tag: "v1";
9
+ value: unknown;
10
+ } | {
11
+ tag: "v2";
12
+ value: unknown;
13
+ } | {
14
+ tag: "v3";
15
+ value: unknown;
16
+ } | {
17
+ tag: "v4";
18
+ value: unknown;
19
+ } | {
20
+ tag: "v5";
21
+ value: unknown;
22
+ } | {
23
+ tag: "v6";
24
+ value: unknown;
25
+ } | {
26
+ tag: "v7";
27
+ value: unknown;
28
+ } | {
29
+ tag: "v8";
30
+ value: unknown;
31
+ } | {
32
+ tag: "v9";
33
+ value: unknown;
34
+ } | {
35
+ tag: "v10";
36
+ value: unknown;
37
+ } | {
38
+ tag: "v11";
39
+ value: unknown;
40
+ } | {
41
+ tag: "v12";
42
+ value: unknown;
43
+ } | {
44
+ tag: "v13";
45
+ value: unknown;
46
+ } | {
47
+ tag: "v14";
48
+ value: {
49
+ lookup: {
50
+ id: number;
51
+ path: string[];
52
+ params: {
53
+ name: string;
54
+ type: number | undefined;
55
+ }[];
56
+ def: {
57
+ tag: "composite";
58
+ value: {
59
+ name: string | undefined;
60
+ type: number;
61
+ typeName: string | undefined;
62
+ docs: string[];
63
+ }[];
64
+ } | {
65
+ tag: "variant";
66
+ value: {
67
+ name: string;
68
+ fields: {
69
+ name: string | undefined;
70
+ type: number;
71
+ typeName: string | undefined;
72
+ docs: string[];
73
+ }[];
74
+ index: number;
75
+ docs: string[];
76
+ }[];
77
+ } | {
78
+ tag: "sequence";
79
+ value: number;
80
+ } | {
81
+ tag: "array";
82
+ value: {
83
+ len: number;
84
+ type: number;
85
+ };
86
+ } | {
87
+ tag: "tuple";
88
+ value: number[];
89
+ } | {
90
+ tag: "primitive";
91
+ value: {
92
+ tag: "bool";
93
+ value: undefined;
94
+ } | {
95
+ tag: "char";
96
+ value: undefined;
97
+ } | {
98
+ tag: "str";
99
+ value: undefined;
100
+ } | {
101
+ tag: "u8";
102
+ value: undefined;
103
+ } | {
104
+ tag: "u16";
105
+ value: undefined;
106
+ } | {
107
+ tag: "u32";
108
+ value: undefined;
109
+ } | {
110
+ tag: "u64";
111
+ value: undefined;
112
+ } | {
113
+ tag: "u128";
114
+ value: undefined;
115
+ } | {
116
+ tag: "u256";
117
+ value: undefined;
118
+ } | {
119
+ tag: "i8";
120
+ value: undefined;
121
+ } | {
122
+ tag: "i16";
123
+ value: undefined;
124
+ } | {
125
+ tag: "i32";
126
+ value: undefined;
127
+ } | {
128
+ tag: "i64";
129
+ value: undefined;
130
+ } | {
131
+ tag: "i128";
132
+ value: undefined;
133
+ } | {
134
+ tag: "i256";
135
+ value: undefined;
136
+ };
137
+ } | {
138
+ tag: "compact";
139
+ value: number;
140
+ } | {
141
+ tag: "bitSequence";
142
+ value: {
143
+ bitStoreType: number;
144
+ bitOrderType: number;
145
+ };
146
+ };
147
+ docs: string[];
148
+ }[];
149
+ pallets: {
150
+ docs: string[];
151
+ name: string;
152
+ storage: {
153
+ prefix: string;
154
+ items: {
155
+ name: string;
156
+ modifier: number;
157
+ type: {
158
+ tag: "map";
159
+ value: {
160
+ hashers: ({
161
+ tag: "Blake2128";
162
+ value: undefined;
163
+ } | {
164
+ tag: "Blake2256";
165
+ value: undefined;
166
+ } | {
167
+ tag: "Blake2128Concat";
168
+ value: undefined;
169
+ } | {
170
+ tag: "Twox128";
171
+ value: undefined;
172
+ } | {
173
+ tag: "Twox256";
174
+ value: undefined;
175
+ } | {
176
+ tag: "Twox64Concat";
177
+ value: undefined;
178
+ } | {
179
+ tag: "Identity";
180
+ value: undefined;
181
+ })[];
182
+ key: number;
183
+ value: number;
184
+ };
185
+ } | {
186
+ tag: "plain";
187
+ value: number;
188
+ };
189
+ fallback: import("@polkadot-api/substrate-bindings").HexString;
190
+ docs: string[];
191
+ }[];
192
+ } | undefined;
193
+ calls: number | undefined;
194
+ events: number | undefined;
195
+ constants: {
196
+ name: string;
197
+ type: number;
198
+ value: import("@polkadot-api/substrate-bindings").HexString;
199
+ docs: string[];
200
+ }[];
201
+ errors: number | undefined;
202
+ index: number;
203
+ }[];
204
+ extrinsic: {
205
+ type: number;
206
+ version: number;
207
+ signedExtensions: {
208
+ identifier: string;
209
+ type: number;
210
+ additionalSigned: number;
211
+ }[];
212
+ };
213
+ type: number;
214
+ apis: {
215
+ name: string;
216
+ methods: {
217
+ deprecationInfo: {
218
+ tag: "NotDeprecated";
219
+ value: undefined;
220
+ } | {
221
+ tag: "DeprecatedWithoutNote";
222
+ value: undefined;
223
+ } | {
224
+ tag: "Deprecated";
225
+ value: {
226
+ note: string;
227
+ since: string | undefined;
228
+ };
229
+ };
230
+ name: string;
231
+ inputs: {
232
+ name: string;
233
+ type: number;
234
+ }[];
235
+ output: number;
236
+ docs: string[];
237
+ }[];
238
+ docs: string[];
239
+ version: number;
240
+ deprecationInfo: {
241
+ tag: "NotDeprecated";
242
+ value: undefined;
243
+ } | {
244
+ tag: "DeprecatedWithoutNote";
245
+ value: undefined;
246
+ } | {
247
+ tag: "Deprecated";
248
+ value: {
249
+ note: string;
250
+ since: string | undefined;
251
+ };
252
+ };
253
+ }[];
254
+ };
255
+ } | {
256
+ tag: "v15";
257
+ value: {
258
+ lookup: {
259
+ id: number;
260
+ path: string[];
261
+ params: {
262
+ name: string;
263
+ type: number | undefined;
264
+ }[];
265
+ def: {
266
+ tag: "composite";
267
+ value: {
268
+ name: string | undefined;
269
+ type: number;
270
+ typeName: string | undefined;
271
+ docs: string[];
272
+ }[];
273
+ } | {
274
+ tag: "variant";
275
+ value: {
276
+ name: string;
277
+ fields: {
278
+ name: string | undefined;
279
+ type: number;
280
+ typeName: string | undefined;
281
+ docs: string[];
282
+ }[];
283
+ index: number;
284
+ docs: string[];
285
+ }[];
286
+ } | {
287
+ tag: "sequence";
288
+ value: number;
289
+ } | {
290
+ tag: "array";
291
+ value: {
292
+ len: number;
293
+ type: number;
294
+ };
295
+ } | {
296
+ tag: "tuple";
297
+ value: number[];
298
+ } | {
299
+ tag: "primitive";
300
+ value: {
301
+ tag: "bool";
302
+ value: undefined;
303
+ } | {
304
+ tag: "char";
305
+ value: undefined;
306
+ } | {
307
+ tag: "str";
308
+ value: undefined;
309
+ } | {
310
+ tag: "u8";
311
+ value: undefined;
312
+ } | {
313
+ tag: "u16";
314
+ value: undefined;
315
+ } | {
316
+ tag: "u32";
317
+ value: undefined;
318
+ } | {
319
+ tag: "u64";
320
+ value: undefined;
321
+ } | {
322
+ tag: "u128";
323
+ value: undefined;
324
+ } | {
325
+ tag: "u256";
326
+ value: undefined;
327
+ } | {
328
+ tag: "i8";
329
+ value: undefined;
330
+ } | {
331
+ tag: "i16";
332
+ value: undefined;
333
+ } | {
334
+ tag: "i32";
335
+ value: undefined;
336
+ } | {
337
+ tag: "i64";
338
+ value: undefined;
339
+ } | {
340
+ tag: "i128";
341
+ value: undefined;
342
+ } | {
343
+ tag: "i256";
344
+ value: undefined;
345
+ };
346
+ } | {
347
+ tag: "compact";
348
+ value: number;
349
+ } | {
350
+ tag: "bitSequence";
351
+ value: {
352
+ bitStoreType: number;
353
+ bitOrderType: number;
354
+ };
355
+ };
356
+ docs: string[];
357
+ }[];
358
+ pallets: {
359
+ docs: string[];
360
+ name: string;
361
+ storage: {
362
+ prefix: string;
363
+ items: {
364
+ name: string;
365
+ modifier: number;
366
+ type: {
367
+ tag: "map";
368
+ value: {
369
+ hashers: ({
370
+ tag: "Blake2128";
371
+ value: undefined;
372
+ } | {
373
+ tag: "Blake2256";
374
+ value: undefined;
375
+ } | {
376
+ tag: "Blake2128Concat";
377
+ value: undefined;
378
+ } | {
379
+ tag: "Twox128";
380
+ value: undefined;
381
+ } | {
382
+ tag: "Twox256";
383
+ value: undefined;
384
+ } | {
385
+ tag: "Twox64Concat";
386
+ value: undefined;
387
+ } | {
388
+ tag: "Identity";
389
+ value: undefined;
390
+ })[];
391
+ key: number;
392
+ value: number;
393
+ };
394
+ } | {
395
+ tag: "plain";
396
+ value: number;
397
+ };
398
+ fallback: import("@polkadot-api/substrate-bindings").HexString;
399
+ docs: string[];
400
+ }[];
401
+ } | undefined;
402
+ calls: number | undefined;
403
+ events: number | undefined;
404
+ constants: {
405
+ name: string;
406
+ type: number;
407
+ value: import("@polkadot-api/substrate-bindings").HexString;
408
+ docs: string[];
409
+ }[];
410
+ errors: number | undefined;
411
+ index: number;
412
+ }[];
413
+ extrinsic: {
414
+ version: number;
415
+ address: number;
416
+ call: number;
417
+ signature: number;
418
+ extra: number;
419
+ signedExtensions: {
420
+ identifier: string;
421
+ type: number;
422
+ additionalSigned: number;
423
+ }[];
424
+ };
425
+ type: number;
426
+ apis: {
427
+ name: string;
428
+ methods: {
429
+ name: string;
430
+ inputs: {
431
+ name: string;
432
+ type: number;
433
+ }[];
434
+ output: number;
435
+ docs: string[];
436
+ }[];
437
+ docs: string[];
438
+ }[];
439
+ outerEnums: {
440
+ call: number;
441
+ event: number;
442
+ error: number;
443
+ };
444
+ custom: [string, {
445
+ type: number;
446
+ value: import("@polkadot-api/substrate-bindings").HexString;
447
+ }][];
448
+ };
449
+ } | {
450
+ tag: "v16";
451
+ value: {
452
+ lookup: {
453
+ id: number;
454
+ path: string[];
455
+ params: {
456
+ name: string;
457
+ type: number | undefined;
458
+ }[];
459
+ def: {
460
+ tag: "composite";
461
+ value: {
462
+ name: string | undefined;
463
+ type: number;
464
+ typeName: string | undefined;
465
+ docs: string[];
466
+ }[];
467
+ } | {
468
+ tag: "variant";
469
+ value: {
470
+ name: string;
471
+ fields: {
472
+ name: string | undefined;
473
+ type: number;
474
+ typeName: string | undefined;
475
+ docs: string[];
476
+ }[];
477
+ index: number;
478
+ docs: string[];
479
+ }[];
480
+ } | {
481
+ tag: "sequence";
482
+ value: number;
483
+ } | {
484
+ tag: "array";
485
+ value: {
486
+ len: number;
487
+ type: number;
488
+ };
489
+ } | {
490
+ tag: "tuple";
491
+ value: number[];
492
+ } | {
493
+ tag: "primitive";
494
+ value: {
495
+ tag: "bool";
496
+ value: undefined;
497
+ } | {
498
+ tag: "char";
499
+ value: undefined;
500
+ } | {
501
+ tag: "str";
502
+ value: undefined;
503
+ } | {
504
+ tag: "u8";
505
+ value: undefined;
506
+ } | {
507
+ tag: "u16";
508
+ value: undefined;
509
+ } | {
510
+ tag: "u32";
511
+ value: undefined;
512
+ } | {
513
+ tag: "u64";
514
+ value: undefined;
515
+ } | {
516
+ tag: "u128";
517
+ value: undefined;
518
+ } | {
519
+ tag: "u256";
520
+ value: undefined;
521
+ } | {
522
+ tag: "i8";
523
+ value: undefined;
524
+ } | {
525
+ tag: "i16";
526
+ value: undefined;
527
+ } | {
528
+ tag: "i32";
529
+ value: undefined;
530
+ } | {
531
+ tag: "i64";
532
+ value: undefined;
533
+ } | {
534
+ tag: "i128";
535
+ value: undefined;
536
+ } | {
537
+ tag: "i256";
538
+ value: undefined;
539
+ };
540
+ } | {
541
+ tag: "compact";
542
+ value: number;
543
+ } | {
544
+ tag: "bitSequence";
545
+ value: {
546
+ bitStoreType: number;
547
+ bitOrderType: number;
548
+ };
549
+ };
550
+ docs: string[];
551
+ }[];
552
+ pallets: {
553
+ name: string;
554
+ storage: {
555
+ prefix: string;
556
+ items: {
557
+ deprecationInfo: {
558
+ tag: "NotDeprecated";
559
+ value: undefined;
560
+ } | {
561
+ tag: "DeprecatedWithoutNote";
562
+ value: undefined;
563
+ } | {
564
+ tag: "Deprecated";
565
+ value: {
566
+ note: string;
567
+ since: string | undefined;
568
+ };
569
+ };
570
+ name: string;
571
+ modifier: number;
572
+ type: {
573
+ tag: "map";
574
+ value: {
575
+ hashers: ({
576
+ tag: "Blake2128";
577
+ value: undefined;
578
+ } | {
579
+ tag: "Blake2256";
580
+ value: undefined;
581
+ } | {
582
+ tag: "Blake2128Concat";
583
+ value: undefined;
584
+ } | {
585
+ tag: "Twox128";
586
+ value: undefined;
587
+ } | {
588
+ tag: "Twox256";
589
+ value: undefined;
590
+ } | {
591
+ tag: "Twox64Concat";
592
+ value: undefined;
593
+ } | {
594
+ tag: "Identity";
595
+ value: undefined;
596
+ })[];
597
+ key: number;
598
+ value: number;
599
+ };
600
+ } | {
601
+ tag: "plain";
602
+ value: number;
603
+ };
604
+ fallback: import("@polkadot-api/substrate-bindings").HexString;
605
+ docs: string[];
606
+ }[];
607
+ } | undefined;
608
+ calls: {
609
+ type: number;
610
+ deprecationInfo: {
611
+ index: number;
612
+ deprecation: {
613
+ tag: "DeprecatedWithoutNote";
614
+ value: undefined;
615
+ } | {
616
+ tag: "Deprecated";
617
+ value: {
618
+ note: string;
619
+ since: string | undefined;
620
+ };
621
+ };
622
+ }[];
623
+ } | undefined;
624
+ events: {
625
+ type: number;
626
+ deprecationInfo: {
627
+ index: number;
628
+ deprecation: {
629
+ tag: "DeprecatedWithoutNote";
630
+ value: undefined;
631
+ } | {
632
+ tag: "Deprecated";
633
+ value: {
634
+ note: string;
635
+ since: string | undefined;
636
+ };
637
+ };
638
+ }[];
639
+ } | undefined;
640
+ constants: {
641
+ name: string;
642
+ type: number;
643
+ value: import("@polkadot-api/substrate-bindings").HexString;
644
+ docs: string[];
645
+ deprecationInfo: {
646
+ tag: "NotDeprecated";
647
+ value: undefined;
648
+ } | {
649
+ tag: "DeprecatedWithoutNote";
650
+ value: undefined;
651
+ } | {
652
+ tag: "Deprecated";
653
+ value: {
654
+ note: string;
655
+ since: string | undefined;
656
+ };
657
+ };
658
+ }[];
659
+ errors: {
660
+ type: number;
661
+ deprecationInfo: {
662
+ index: number;
663
+ deprecation: {
664
+ tag: "DeprecatedWithoutNote";
665
+ value: undefined;
666
+ } | {
667
+ tag: "Deprecated";
668
+ value: {
669
+ note: string;
670
+ since: string | undefined;
671
+ };
672
+ };
673
+ }[];
674
+ } | undefined;
675
+ associatedTypes: {
676
+ name: string;
677
+ type: number;
678
+ docs: string[];
679
+ }[];
680
+ viewFns: {
681
+ deprecationInfo: {
682
+ tag: "NotDeprecated";
683
+ value: undefined;
684
+ } | {
685
+ tag: "DeprecatedWithoutNote";
686
+ value: undefined;
687
+ } | {
688
+ tag: "Deprecated";
689
+ value: {
690
+ note: string;
691
+ since: string | undefined;
692
+ };
693
+ };
694
+ name: string;
695
+ inputs: {
696
+ name: string;
697
+ type: number;
698
+ }[];
699
+ output: number;
700
+ docs: string[];
701
+ id: import("@polkadot-api/substrate-bindings").HexString;
702
+ }[];
703
+ index: number;
704
+ docs: string[];
705
+ deprecationInfo: {
706
+ tag: "NotDeprecated";
707
+ value: undefined;
708
+ } | {
709
+ tag: "DeprecatedWithoutNote";
710
+ value: undefined;
711
+ } | {
712
+ tag: "Deprecated";
713
+ value: {
714
+ note: string;
715
+ since: string | undefined;
716
+ };
717
+ };
718
+ }[];
719
+ extrinsic: {
720
+ version: number[];
721
+ address: number;
722
+ call: number;
723
+ signature: number;
724
+ signedExtensionsByVersion: [number, number[]][];
725
+ signedExtensions: {
726
+ identifier: string;
727
+ type: number;
728
+ additionalSigned: number;
729
+ }[];
730
+ };
731
+ apis: {
732
+ name: string;
733
+ methods: {
734
+ deprecationInfo: {
735
+ tag: "NotDeprecated";
736
+ value: undefined;
737
+ } | {
738
+ tag: "DeprecatedWithoutNote";
739
+ value: undefined;
740
+ } | {
741
+ tag: "Deprecated";
742
+ value: {
743
+ note: string;
744
+ since: string | undefined;
745
+ };
746
+ };
747
+ name: string;
748
+ inputs: {
749
+ name: string;
750
+ type: number;
751
+ }[];
752
+ output: number;
753
+ docs: string[];
754
+ }[];
755
+ docs: string[];
756
+ version: number;
757
+ deprecationInfo: {
758
+ tag: "NotDeprecated";
759
+ value: undefined;
760
+ } | {
761
+ tag: "DeprecatedWithoutNote";
762
+ value: undefined;
763
+ } | {
764
+ tag: "Deprecated";
765
+ value: {
766
+ note: string;
767
+ since: string | undefined;
768
+ };
769
+ };
770
+ }[];
771
+ outerEnums: {
772
+ call: number;
773
+ event: number;
774
+ error: number;
775
+ };
776
+ custom: [string, {
777
+ type: number;
778
+ value: import("@polkadot-api/substrate-bindings").HexString;
779
+ }][];
780
+ };
781
+ };
782
+ };
783
+ unifiedMetadata: import("@polkadot-api/substrate-bindings").UnifiedMetadata<14 | 15 | 16>;
784
+ lookupFn: import("@polkadot-api/metadata-builders").MetadataLookup;
785
+ builder: {
786
+ buildDefinition: (id: number) => import("@polkadot-api/substrate-bindings").Codec<any>;
787
+ buildStorage: (pallet: string, entry: string) => {
788
+ args: [import("@polkadot-api/substrate-bindings").Encoder<any[]>, import("@polkadot-api/substrate-bindings").Decoder<any[]>] & {
789
+ enc: import("@polkadot-api/substrate-bindings").Encoder<any[]>;
790
+ dec: import("@polkadot-api/substrate-bindings").Decoder<any[]>;
791
+ } & {
792
+ inner: import("@polkadot-api/substrate-bindings").Codec<any>[];
793
+ };
794
+ keys: {
795
+ enc: (...args: any[]) => string;
796
+ dec: (value: string) => any[];
797
+ };
798
+ value: import("@polkadot-api/substrate-bindings").Codec<any>;
799
+ len: number;
800
+ fallback: any;
801
+ };
802
+ buildEvent: (pallet: string, name: string) => {
803
+ codec: import("@polkadot-api/substrate-bindings").Codec<any>;
804
+ location: [number, number];
805
+ };
806
+ buildError: (pallet: string, name: string) => {
807
+ codec: import("@polkadot-api/substrate-bindings").Codec<any>;
808
+ location: [number, number];
809
+ };
810
+ buildViewFn: (pallet: string, entry: string) => {
811
+ args: [import("@polkadot-api/substrate-bindings").Encoder<any[]>, import("@polkadot-api/substrate-bindings").Decoder<any[]>] & {
812
+ enc: import("@polkadot-api/substrate-bindings").Encoder<any[]>;
813
+ dec: import("@polkadot-api/substrate-bindings").Decoder<any[]>;
814
+ } & {
815
+ inner: import("@polkadot-api/substrate-bindings").Codec<any>[];
816
+ };
817
+ value: import("@polkadot-api/substrate-bindings").Codec<any>;
818
+ };
819
+ buildRuntimeCall: (api: string, method: string) => {
820
+ args: [import("@polkadot-api/substrate-bindings").Encoder<any[]>, import("@polkadot-api/substrate-bindings").Decoder<any[]>] & {
821
+ enc: import("@polkadot-api/substrate-bindings").Encoder<any[]>;
822
+ dec: import("@polkadot-api/substrate-bindings").Decoder<any[]>;
823
+ } & {
824
+ inner: import("@polkadot-api/substrate-bindings").Codec<any>[];
825
+ };
826
+ value: import("@polkadot-api/substrate-bindings").Codec<any>;
827
+ };
828
+ buildCall: (pallet: string, name: string) => {
829
+ codec: import("@polkadot-api/substrate-bindings").Codec<any>;
830
+ location: [number, number];
831
+ };
832
+ buildConstant: (pallet: string, constantName: string) => import("@polkadot-api/substrate-bindings").Codec<any>;
833
+ ss58Prefix: number | undefined;
834
+ };
835
+ };
@@ -45,10 +45,7 @@ const compactMetadata = (anyMetadata, palletsAndItems = [], runtimeApisAndMethod
45
45
  items: itemNames
46
46
  }) => {
47
47
  const pallet = metadata.pallets.find(pallet => pallet.name === palletName);
48
- if (!pallet) {
49
- log.debug("Failed to find pallet", palletName);
50
- return [];
51
- }
48
+ if (!pallet) return [];
52
49
 
53
50
  // remove pallet fields we don't care about
54
51
  pallet.calls = undefined;
@@ -84,10 +81,7 @@ const compactMetadata = (anyMetadata, palletsAndItems = [], runtimeApisAndMethod
84
81
  methods: methodNames
85
82
  }) => {
86
83
  const runtimeApi = metadata.apis.find(runtimeApi => runtimeApi.name === runtimeApiName);
87
- if (!runtimeApi) {
88
- log.debug("Failed to find runtimeApi", runtimeApiName);
89
- return [];
90
- }
84
+ if (!runtimeApi) return [];
91
85
 
92
86
  // remove runtime fields we don't care about
93
87
  runtimeApi.docs = [];
@@ -365,6 +359,57 @@ const papiStringify = (value, space) => {
365
359
  return JSON.stringify(value, replacer, space);
366
360
  };
367
361
 
362
+ const parseMetadataRpc = metadataRpc => {
363
+ const metadata = substrateBindings.decAnyMetadata(metadataRpc);
364
+ const unifiedMetadata = substrateBindings.unifyMetadata(metadata);
365
+ const lookupFn = metadataBuilders.getLookupFn(unifiedMetadata);
366
+ const builder = metadataBuilders.getDynamicBuilder(lookupFn);
367
+ return {
368
+ metadata,
369
+ unifiedMetadata,
370
+ lookupFn,
371
+ builder
372
+ };
373
+ };
374
+
375
+ const getStorageKeyPrefix = (palletName, storageName) => {
376
+ const palletHash = substrateBindings.Twox128(new TextEncoder().encode(palletName));
377
+ const storageHash = substrateBindings.Twox128(new TextEncoder().encode(storageName));
378
+
379
+ // Concatenate and convert to hex
380
+ const combined = new Uint8Array(palletHash.length + storageHash.length);
381
+ combined.set(palletHash, 0);
382
+ combined.set(storageHash, palletHash.length);
383
+ return utils.toHex(combined);
384
+ };
385
+
386
+ const getConstantValueFromMetadata = (metadata, pallet, constant) => {
387
+ const {
388
+ builder,
389
+ unifiedMetadata
390
+ } = typeof metadata === "string" ? parseMetadataRpc(metadata) : metadata;
391
+ return getConstantValueInner(builder, unifiedMetadata, pallet, constant);
392
+ };
393
+ const getConstantValueInner = (builder, unifiedMetadata, pallet, constant) => {
394
+ try {
395
+ const storageCodec = builder.buildConstant(pallet, constant);
396
+ const encodedValue = unifiedMetadata.pallets.find(({
397
+ name
398
+ }) => name === pallet)?.constants.find(({
399
+ name
400
+ }) => name === constant)?.value;
401
+ if (!encodedValue) throw new Error(`Constant ${pallet}.${constant} not found`);
402
+ return storageCodec.dec(encodedValue);
403
+ } catch (err) {
404
+ log.error("Failed to get constant value from metadata", {
405
+ err,
406
+ pallet,
407
+ constant
408
+ });
409
+ throw err;
410
+ }
411
+ };
412
+
368
413
  Object.defineProperty(exports, "getDynamicBuilder", {
369
414
  enumerable: true,
370
415
  get: function () { return metadataBuilders.getDynamicBuilder; }
@@ -373,6 +418,38 @@ Object.defineProperty(exports, "getLookupFn", {
373
418
  enumerable: true,
374
419
  get: function () { return metadataBuilders.getLookupFn; }
375
420
  });
421
+ Object.defineProperty(exports, "Blake2128", {
422
+ enumerable: true,
423
+ get: function () { return substrateBindings.Blake2128; }
424
+ });
425
+ Object.defineProperty(exports, "Blake2128Concat", {
426
+ enumerable: true,
427
+ get: function () { return substrateBindings.Blake2128Concat; }
428
+ });
429
+ Object.defineProperty(exports, "Blake2256", {
430
+ enumerable: true,
431
+ get: function () { return substrateBindings.Blake2256; }
432
+ });
433
+ Object.defineProperty(exports, "Blake3256", {
434
+ enumerable: true,
435
+ get: function () { return substrateBindings.Blake3256; }
436
+ });
437
+ Object.defineProperty(exports, "Blake3256Concat", {
438
+ enumerable: true,
439
+ get: function () { return substrateBindings.Blake3256Concat; }
440
+ });
441
+ Object.defineProperty(exports, "Twox128", {
442
+ enumerable: true,
443
+ get: function () { return substrateBindings.Twox128; }
444
+ });
445
+ Object.defineProperty(exports, "Twox256", {
446
+ enumerable: true,
447
+ get: function () { return substrateBindings.Twox256; }
448
+ });
449
+ Object.defineProperty(exports, "Twox64Concat", {
450
+ enumerable: true,
451
+ get: function () { return substrateBindings.Twox64Concat; }
452
+ });
376
453
  Object.defineProperty(exports, "decAnyMetadata", {
377
454
  enumerable: true,
378
455
  get: function () { return substrateBindings.decAnyMetadata; }
@@ -397,7 +474,10 @@ exports.compactMetadata = compactMetadata;
397
474
  exports.decodeScale = decodeScale;
398
475
  exports.encodeMetadata = encodeMetadata;
399
476
  exports.encodeStateKey = encodeStateKey;
477
+ exports.getConstantValueFromMetadata = getConstantValueFromMetadata;
400
478
  exports.getMetadataVersion = getMetadataVersion;
479
+ exports.getStorageKeyPrefix = getStorageKeyPrefix;
401
480
  exports.magicNumber = magicNumber;
402
481
  exports.papiParse = papiParse;
403
482
  exports.papiStringify = papiStringify;
483
+ exports.parseMetadataRpc = parseMetadataRpc;
@@ -45,10 +45,7 @@ const compactMetadata = (anyMetadata, palletsAndItems = [], runtimeApisAndMethod
45
45
  items: itemNames
46
46
  }) => {
47
47
  const pallet = metadata.pallets.find(pallet => pallet.name === palletName);
48
- if (!pallet) {
49
- log.debug("Failed to find pallet", palletName);
50
- return [];
51
- }
48
+ if (!pallet) return [];
52
49
 
53
50
  // remove pallet fields we don't care about
54
51
  pallet.calls = undefined;
@@ -84,10 +81,7 @@ const compactMetadata = (anyMetadata, palletsAndItems = [], runtimeApisAndMethod
84
81
  methods: methodNames
85
82
  }) => {
86
83
  const runtimeApi = metadata.apis.find(runtimeApi => runtimeApi.name === runtimeApiName);
87
- if (!runtimeApi) {
88
- log.debug("Failed to find runtimeApi", runtimeApiName);
89
- return [];
90
- }
84
+ if (!runtimeApi) return [];
91
85
 
92
86
  // remove runtime fields we don't care about
93
87
  runtimeApi.docs = [];
@@ -365,6 +359,57 @@ const papiStringify = (value, space) => {
365
359
  return JSON.stringify(value, replacer, space);
366
360
  };
367
361
 
362
+ const parseMetadataRpc = metadataRpc => {
363
+ const metadata = substrateBindings.decAnyMetadata(metadataRpc);
364
+ const unifiedMetadata = substrateBindings.unifyMetadata(metadata);
365
+ const lookupFn = metadataBuilders.getLookupFn(unifiedMetadata);
366
+ const builder = metadataBuilders.getDynamicBuilder(lookupFn);
367
+ return {
368
+ metadata,
369
+ unifiedMetadata,
370
+ lookupFn,
371
+ builder
372
+ };
373
+ };
374
+
375
+ const getStorageKeyPrefix = (palletName, storageName) => {
376
+ const palletHash = substrateBindings.Twox128(new TextEncoder().encode(palletName));
377
+ const storageHash = substrateBindings.Twox128(new TextEncoder().encode(storageName));
378
+
379
+ // Concatenate and convert to hex
380
+ const combined = new Uint8Array(palletHash.length + storageHash.length);
381
+ combined.set(palletHash, 0);
382
+ combined.set(storageHash, palletHash.length);
383
+ return utils.toHex(combined);
384
+ };
385
+
386
+ const getConstantValueFromMetadata = (metadata, pallet, constant) => {
387
+ const {
388
+ builder,
389
+ unifiedMetadata
390
+ } = typeof metadata === "string" ? parseMetadataRpc(metadata) : metadata;
391
+ return getConstantValueInner(builder, unifiedMetadata, pallet, constant);
392
+ };
393
+ const getConstantValueInner = (builder, unifiedMetadata, pallet, constant) => {
394
+ try {
395
+ const storageCodec = builder.buildConstant(pallet, constant);
396
+ const encodedValue = unifiedMetadata.pallets.find(({
397
+ name
398
+ }) => name === pallet)?.constants.find(({
399
+ name
400
+ }) => name === constant)?.value;
401
+ if (!encodedValue) throw new Error(`Constant ${pallet}.${constant} not found`);
402
+ return storageCodec.dec(encodedValue);
403
+ } catch (err) {
404
+ log.error("Failed to get constant value from metadata", {
405
+ err,
406
+ pallet,
407
+ constant
408
+ });
409
+ throw err;
410
+ }
411
+ };
412
+
368
413
  Object.defineProperty(exports, "getDynamicBuilder", {
369
414
  enumerable: true,
370
415
  get: function () { return metadataBuilders.getDynamicBuilder; }
@@ -373,6 +418,38 @@ Object.defineProperty(exports, "getLookupFn", {
373
418
  enumerable: true,
374
419
  get: function () { return metadataBuilders.getLookupFn; }
375
420
  });
421
+ Object.defineProperty(exports, "Blake2128", {
422
+ enumerable: true,
423
+ get: function () { return substrateBindings.Blake2128; }
424
+ });
425
+ Object.defineProperty(exports, "Blake2128Concat", {
426
+ enumerable: true,
427
+ get: function () { return substrateBindings.Blake2128Concat; }
428
+ });
429
+ Object.defineProperty(exports, "Blake2256", {
430
+ enumerable: true,
431
+ get: function () { return substrateBindings.Blake2256; }
432
+ });
433
+ Object.defineProperty(exports, "Blake3256", {
434
+ enumerable: true,
435
+ get: function () { return substrateBindings.Blake3256; }
436
+ });
437
+ Object.defineProperty(exports, "Blake3256Concat", {
438
+ enumerable: true,
439
+ get: function () { return substrateBindings.Blake3256Concat; }
440
+ });
441
+ Object.defineProperty(exports, "Twox128", {
442
+ enumerable: true,
443
+ get: function () { return substrateBindings.Twox128; }
444
+ });
445
+ Object.defineProperty(exports, "Twox256", {
446
+ enumerable: true,
447
+ get: function () { return substrateBindings.Twox256; }
448
+ });
449
+ Object.defineProperty(exports, "Twox64Concat", {
450
+ enumerable: true,
451
+ get: function () { return substrateBindings.Twox64Concat; }
452
+ });
376
453
  Object.defineProperty(exports, "decAnyMetadata", {
377
454
  enumerable: true,
378
455
  get: function () { return substrateBindings.decAnyMetadata; }
@@ -397,7 +474,10 @@ exports.compactMetadata = compactMetadata;
397
474
  exports.decodeScale = decodeScale;
398
475
  exports.encodeMetadata = encodeMetadata;
399
476
  exports.encodeStateKey = encodeStateKey;
477
+ exports.getConstantValueFromMetadata = getConstantValueFromMetadata;
400
478
  exports.getMetadataVersion = getMetadataVersion;
479
+ exports.getStorageKeyPrefix = getStorageKeyPrefix;
401
480
  exports.magicNumber = magicNumber;
402
481
  exports.papiParse = papiParse;
403
482
  exports.papiStringify = papiStringify;
483
+ exports.parseMetadataRpc = parseMetadataRpc;
@@ -1,6 +1,7 @@
1
+ import { getLookupFn, getDynamicBuilder } from '@polkadot-api/metadata-builders';
1
2
  export { getDynamicBuilder, getLookupFn } from '@polkadot-api/metadata-builders';
2
- import { metadata, Binary } from '@polkadot-api/substrate-bindings';
3
- export { decAnyMetadata, metadata, unifyMetadata } from '@polkadot-api/substrate-bindings';
3
+ import { metadata, Binary, decAnyMetadata, unifyMetadata, Twox128 } from '@polkadot-api/substrate-bindings';
4
+ export { Blake2128, Blake2128Concat, Blake2256, Blake3256, Blake3256Concat, Twox128, Twox256, Twox64Concat, decAnyMetadata, metadata, unifyMetadata } from '@polkadot-api/substrate-bindings';
4
5
  import { toHex } from '@polkadot-api/utils';
5
6
  export { fromHex, toHex } from '@polkadot-api/utils';
6
7
  import anylogger from 'anylogger';
@@ -41,10 +42,7 @@ const compactMetadata = (anyMetadata, palletsAndItems = [], runtimeApisAndMethod
41
42
  items: itemNames
42
43
  }) => {
43
44
  const pallet = metadata.pallets.find(pallet => pallet.name === palletName);
44
- if (!pallet) {
45
- log.debug("Failed to find pallet", palletName);
46
- return [];
47
- }
45
+ if (!pallet) return [];
48
46
 
49
47
  // remove pallet fields we don't care about
50
48
  pallet.calls = undefined;
@@ -80,10 +78,7 @@ const compactMetadata = (anyMetadata, palletsAndItems = [], runtimeApisAndMethod
80
78
  methods: methodNames
81
79
  }) => {
82
80
  const runtimeApi = metadata.apis.find(runtimeApi => runtimeApi.name === runtimeApiName);
83
- if (!runtimeApi) {
84
- log.debug("Failed to find runtimeApi", runtimeApiName);
85
- return [];
86
- }
81
+ if (!runtimeApi) return [];
87
82
 
88
83
  // remove runtime fields we don't care about
89
84
  runtimeApi.docs = [];
@@ -361,4 +356,55 @@ const papiStringify = (value, space) => {
361
356
  return JSON.stringify(value, replacer, space);
362
357
  };
363
358
 
364
- export { compactMetadata, decodeScale, encodeMetadata, encodeStateKey, getMetadataVersion, magicNumber, papiParse, papiStringify };
359
+ const parseMetadataRpc = metadataRpc => {
360
+ const metadata = decAnyMetadata(metadataRpc);
361
+ const unifiedMetadata = unifyMetadata(metadata);
362
+ const lookupFn = getLookupFn(unifiedMetadata);
363
+ const builder = getDynamicBuilder(lookupFn);
364
+ return {
365
+ metadata,
366
+ unifiedMetadata,
367
+ lookupFn,
368
+ builder
369
+ };
370
+ };
371
+
372
+ const getStorageKeyPrefix = (palletName, storageName) => {
373
+ const palletHash = Twox128(new TextEncoder().encode(palletName));
374
+ const storageHash = Twox128(new TextEncoder().encode(storageName));
375
+
376
+ // Concatenate and convert to hex
377
+ const combined = new Uint8Array(palletHash.length + storageHash.length);
378
+ combined.set(palletHash, 0);
379
+ combined.set(storageHash, palletHash.length);
380
+ return toHex(combined);
381
+ };
382
+
383
+ const getConstantValueFromMetadata = (metadata, pallet, constant) => {
384
+ const {
385
+ builder,
386
+ unifiedMetadata
387
+ } = typeof metadata === "string" ? parseMetadataRpc(metadata) : metadata;
388
+ return getConstantValueInner(builder, unifiedMetadata, pallet, constant);
389
+ };
390
+ const getConstantValueInner = (builder, unifiedMetadata, pallet, constant) => {
391
+ try {
392
+ const storageCodec = builder.buildConstant(pallet, constant);
393
+ const encodedValue = unifiedMetadata.pallets.find(({
394
+ name
395
+ }) => name === pallet)?.constants.find(({
396
+ name
397
+ }) => name === constant)?.value;
398
+ if (!encodedValue) throw new Error(`Constant ${pallet}.${constant} not found`);
399
+ return storageCodec.dec(encodedValue);
400
+ } catch (err) {
401
+ log.error("Failed to get constant value from metadata", {
402
+ err,
403
+ pallet,
404
+ constant
405
+ });
406
+ throw err;
407
+ }
408
+ };
409
+
410
+ export { compactMetadata, decodeScale, encodeMetadata, encodeStateKey, getConstantValueFromMetadata, getMetadataVersion, getStorageKeyPrefix, magicNumber, papiParse, papiStringify, parseMetadataRpc };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@talismn/scale",
3
- "version": "0.1.2",
3
+ "version": "0.2.1",
4
4
  "author": "Talisman",
5
5
  "homepage": "https://talisman.xyz",
6
6
  "license": "GPL-3.0-or-later",
@@ -18,7 +18,7 @@
18
18
  "/dist"
19
19
  ],
20
20
  "engines": {
21
- "node": ">=18"
21
+ "node": ">=20"
22
22
  },
23
23
  "dependencies": {
24
24
  "@polkadot-api/metadata-builders": "0.12.2",