Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ef54cfb29b | ||
|
|
23c23a81b3 | ||
|
|
3d8ba0f1bf | ||
|
|
b39efbeaf2 | ||
|
|
b305caee6e | ||
|
|
143a149628 | ||
|
|
8f80c0391d | ||
|
|
1364cb8264 | ||
|
|
0e12ebad1d | ||
|
|
8dc0f0486d | ||
|
|
6159270465 | ||
|
|
40b3c54916 | ||
|
|
85e7e3c11c | ||
|
|
3ad01d27b2 | ||
|
|
05b0ff2aba | ||
|
|
84c9da8374 | ||
|
|
6222672faa | ||
|
|
96f2f83cd5 | ||
|
|
f444d9ed75 | ||
|
|
d93a127d88 | ||
|
|
3a9a35a392 | ||
|
|
5c655ca029 | ||
|
|
1808cb0a9d | ||
|
|
54e94ec6bc | ||
|
|
22db4f1c3d | ||
|
|
e514a59e63 | ||
|
|
3318a7566f | ||
|
|
fd568c0341 | ||
|
|
2edcef6ff5 | ||
|
|
264cc9365e | ||
|
|
6e23a27ce1 | ||
|
|
38d39a4d13 | ||
|
|
6954ec794c | ||
|
|
3ee6eb5a13 | ||
|
|
9d1c848f28 | ||
|
|
1d3258f537 | ||
|
|
e8d7013172 | ||
|
|
55ccdd2fbc | ||
|
|
0449dd7b51 | ||
|
|
4d44c1187b | ||
|
|
f2eff6628b | ||
|
|
4923bc3e35 | ||
|
|
47da005bee | ||
|
|
7e82ab3d43 | ||
|
|
8df9642e04 | ||
|
|
6f76e1c4cc | ||
|
|
1d65cc5642 | ||
|
|
722bb5222e | ||
|
|
49e2daf8f2 | ||
|
|
88e3c900b7 | ||
|
|
a127dea5e4 | ||
|
|
d29660dc4e | ||
|
|
1870ad26d5 | ||
|
|
558a42c6ed | ||
|
|
6708264688 | ||
|
|
abac14f983 | ||
|
|
3cf9040115 | ||
|
|
37dcd78c4a | ||
|
|
6b3e4cc90e | ||
|
|
79ab347cbe | ||
|
|
bc302c5cb7 | ||
|
|
9972776afb | ||
|
|
0b2a3c4e74 | ||
|
|
ccac72fece | ||
|
|
8d5209d7dc | ||
|
|
5c2bd9dfa7 | ||
|
|
b2e71be983 | ||
|
|
d2f3672f2c | ||
|
|
6fb7849091 | ||
|
|
983c77fe61 | ||
|
|
256e35386a | ||
|
|
8beb03b177 | ||
|
|
967f5e980a | ||
|
|
00a27efaee | ||
|
|
a7163fb1ba | ||
|
|
4c6dd53c3b | ||
|
|
61199ffb2b | ||
|
|
dbfb03760c | ||
|
|
c9b1fcdb0a | ||
|
|
29953edd24 | ||
|
|
96a23bda50 | ||
|
|
09a8d80144 | ||
|
|
5637579879 | ||
|
|
448ce0a76e | ||
|
|
a6a062378d | ||
|
|
40c78f95d2 | ||
|
|
b0e135c5ca | ||
|
|
22218bd9b0 | ||
|
|
149b7d9ee6 | ||
|
|
9a7b91a6f5 | ||
|
|
80b165ba34 | ||
|
|
95a4512530 | ||
|
|
15a315dede | ||
|
|
32548a34a4 | ||
|
|
50142d7e63 | ||
|
|
1ed6117e3f | ||
|
|
a392025a15 | ||
|
|
fbeb478602 | ||
|
|
2cdd24445c | ||
|
|
e545f6f2b3 | ||
|
|
1aa2b7e1ff | ||
|
|
677d0c9969 | ||
|
|
775fff5333 | ||
|
|
9345a18de0 | ||
|
|
a4256396ee | ||
|
|
776600ef00 | ||
|
|
1a31043cc4 | ||
|
|
66159955ac | ||
|
|
03c725f637 | ||
|
|
e5708a7e7e | ||
|
|
fb5ce83f74 | ||
|
|
6c3bd2f408 | ||
|
|
66e01afe26 | ||
|
|
71f9bdf368 | ||
|
|
7af9330026 | ||
|
|
d5aff171e4 | ||
|
|
543de63af8 | ||
|
|
cdcdf589dd | ||
|
|
1330b58afd | ||
|
|
0b2ec65e88 | ||
|
|
8840e29063 | ||
|
|
b9925b569d | ||
|
|
2640b65be9 | ||
|
|
d64a0ca295 | ||
|
|
79eeed3f9a | ||
|
|
d154b535e6 | ||
|
|
87c2690fc2 | ||
|
|
8f0ca37c60 | ||
|
|
f7dd4a3552 | ||
|
|
abcad05a91 | ||
|
|
ba188dcc0d | ||
|
|
ae2422f350 | ||
|
|
576efc0239 | ||
|
|
111540177f | ||
|
|
43ee566669 | ||
|
|
39299188b0 | ||
|
|
5d13bfb925 | ||
|
|
c759ff0c12 | ||
|
|
0cc34dff85 | ||
|
|
1682a8f096 | ||
|
|
be572aabf0 | ||
|
|
7a6d19d241 | ||
|
|
f4a590d7f8 | ||
|
|
771e5f3bcf | ||
|
|
1ba427356d | ||
|
|
aad497e9d2 | ||
|
|
95fc2b2c99 | ||
|
|
b7b707249b | ||
|
|
ce95e305f3 | ||
|
|
4ea793f55e | ||
|
|
bb0b365dfe | ||
|
|
756f817d93 | ||
|
|
df4bda1fc8 | ||
|
|
a98e9543b8 | ||
|
|
84abaff414 | ||
|
|
29d5460cdd | ||
|
|
e2d0de4f6c | ||
|
|
8e32777efa | ||
|
|
39b1de326c | ||
|
|
6fb6c40c7d | ||
|
|
badb10bdd9 | ||
|
|
235a7b1aa9 | ||
|
|
b7d65fb506 | ||
|
|
8eb0524fed | ||
|
|
bab50b2d74 | ||
|
|
bb75b42273 | ||
|
|
949e429d04 | ||
|
|
0b1c20efd7 | ||
|
|
0536998766 | ||
|
|
22651eb4b8 | ||
|
|
48414bdb34 | ||
|
|
2ff6a85fb3 | ||
|
|
8be1f337a8 | ||
|
|
2c7056da25 | ||
|
|
b53c22d6d3 | ||
|
|
17f316b7c7 | ||
|
|
b44fcc90b2 | ||
|
|
b4e477a8c1 | ||
|
|
4b921c8a55 | ||
|
|
e53231b70a | ||
|
|
afd1db58ac | ||
|
|
63ba84a641 | ||
|
|
044aecbfc3 | ||
|
|
e573c26df3 | ||
|
|
31e7de31f3 | ||
|
|
7cd9c16eae | ||
|
|
2b1a7da446 | ||
|
|
9399c8d24f | ||
|
|
798e5fcc78 | ||
|
|
d8ad237b00 | ||
|
|
550cb10766 | ||
|
|
a44108c3f3 | ||
|
|
2f28ea0ea8 | ||
|
|
488d078b9c | ||
|
|
ba384cee78 | ||
|
|
4f95f33cbb | ||
|
|
368cb8314c | ||
|
|
c01896d24f | ||
|
|
983043bd1e | ||
|
|
9c2ed6297a | ||
|
|
8a7fee5903 | ||
|
|
b0e8a8512a | ||
|
|
f83d23d0f6 | ||
|
|
9dfb5cb237 | ||
|
|
8c87b16924 | ||
|
|
0d5dce002d | ||
|
|
4d0c777a8f | ||
|
|
d63108a4b4 | ||
|
|
5898ac335e | ||
|
|
f108d16d1b | ||
|
|
32f1495993 | ||
|
|
2527497e4a | ||
|
|
e50209da0d | ||
|
|
cccd512d70 | ||
|
|
1db2136a3d | ||
|
|
466485d5aa | ||
|
|
c9ea333add | ||
|
|
dca62cf3ba | ||
|
|
2d9e667d01 | ||
|
|
67679f34e9 | ||
|
|
d646fa03af | ||
|
|
6c33e98553 | ||
|
|
e8cdbf9e80 | ||
|
|
5016e12ae4 | ||
|
|
ac09179768 | ||
|
|
8cc1663bd8 | ||
|
|
34d090c9b3 | ||
|
|
cb1d13e04c | ||
|
|
022d79c4cd | ||
|
|
ed079a6acb | ||
|
|
01d023d141 | ||
|
|
0b03f73975 | ||
|
|
e4cae64187 | ||
|
|
f13989d712 | ||
|
|
05c3f12cd7 | ||
|
|
9f6f33844a | ||
|
|
895f82920d | ||
|
|
06fa4aa6eb | ||
|
|
1e5002fb5e | ||
|
|
8be52dec13 | ||
|
|
8fcda8cd54 | ||
|
|
d08c306887 | ||
|
|
eb6b0232c3 | ||
|
|
e5fbaeb7cd | ||
|
|
8e61ea1b8b | ||
|
|
9fe202a4d3 | ||
|
|
6e62d03652 | ||
|
|
49dc66f7d4 | ||
|
|
22320f9995 | ||
|
|
7603bad434 | ||
|
|
e82f0f35ad | ||
|
|
ae0aa14eb8 | ||
|
|
4875bb9990 | ||
|
|
a0308dd25a | ||
|
|
edb06d971a | ||
|
|
271a4d8fd7 | ||
|
|
a71e5ad95c | ||
|
|
edcdb70e8a | ||
|
|
17357f6b99 | ||
|
|
c596a8cb51 | ||
|
|
bdf13b10e5 | ||
|
|
519a12f19a | ||
|
|
beffc7b754 | ||
|
|
d5ae7031cd | ||
|
|
8aff13b827 | ||
|
|
a23b3f953b | ||
|
|
1249c46019 | ||
|
|
2aaf52bb92 | ||
|
|
3372898f82 | ||
|
|
ed2f512cfc | ||
|
|
00147df500 | ||
|
|
3b0c8887d7 | ||
|
|
16452233b2 | ||
|
|
5bf87262bc | ||
|
|
b8e01fd674 | ||
|
|
f8378ba0f7 | ||
|
|
afc105400c | ||
|
|
cca1f10563 | ||
|
|
6cdbbf5372 | ||
|
|
8c89732eb7 | ||
|
|
ab3ad6b2ca | ||
|
|
72f427a250 | ||
|
|
5b0bd9d4b7 | ||
|
|
cd9662ab4c | ||
|
|
13751b6fdf | ||
|
|
652f8c28a4 | ||
|
|
0bae9138b8 | ||
|
|
98e8cac424 | ||
|
|
dca7f208bc | ||
|
|
67ff12885a | ||
|
|
08c53032eb | ||
|
|
5da8f21947 | ||
|
|
5080b266a0 | ||
|
|
0186848936 | ||
|
|
d0de35b05b | ||
|
|
3ded30a0f3 | ||
|
|
9fef78c5e1 | ||
|
|
b2a7c453c4 | ||
|
|
030258a671 | ||
|
|
0a85b4839d | ||
|
|
ad363bac09 | ||
|
|
e0c0a8c583 | ||
|
|
f923a31758 | ||
|
|
416229d976 | ||
|
|
4380c45f17 | ||
|
|
d481aed8cb | ||
|
|
ca25983e3e | ||
|
|
f7caa496e4 | ||
|
|
3f8e4ce133 | ||
|
|
39c99083bc | ||
|
|
46aa427f98 | ||
|
|
6336fc0787 | ||
|
|
b0532be7df | ||
|
|
e7a5b015e9 | ||
|
|
2f07f18a5a | ||
|
|
c92d5b7eb0 | ||
|
|
e340a99eda | ||
|
|
f169ca08a8 | ||
|
|
898d1593f3 | ||
|
|
2c8d9563c4 | ||
|
|
804c0c4887 | ||
|
|
3b991ce8c7 | ||
|
|
e66cc0fb45 | ||
|
|
61daa0f2c8 | ||
|
|
7af315f278 | ||
|
|
e55661ca34 | ||
|
|
097a1748fd | ||
|
|
9c587d378e | ||
|
|
02f99356aa | ||
|
|
cacacec130 | ||
|
|
6d095a042f | ||
|
|
b022ad3154 | ||
|
|
e0129aa02e | ||
|
|
dfc200a25a | ||
|
|
85fdbed227 | ||
|
|
04a23c0f60 | ||
|
|
0bf9eb2f3a | ||
|
|
f13462f7cf | ||
|
|
0754bc45d3 | ||
|
|
e314f51813 | ||
|
|
5148bc42ae | ||
|
|
b43c848817 | ||
|
|
abd2b58b52 | ||
|
|
2ce1decd99 | ||
|
|
f8112735af | ||
|
|
455a8d2a91 | ||
|
|
ca692cc7c0 | ||
|
|
f5f5b540af | ||
|
|
8b3b1b4611 | ||
|
|
21cb76e517 | ||
|
|
d774a3c2ab | ||
|
|
0c08e8ba9e | ||
|
|
c2549ec166 | ||
|
|
d27fce3b29 | ||
|
|
849588e305 | ||
|
|
4f3fedc27e | ||
|
|
57a5892f99 | ||
|
|
f5499ca4ed | ||
|
|
37ae595f03 | ||
|
|
868a4a2964 | ||
|
|
3656480cff | ||
|
|
37cf4b5e88 | ||
|
|
75a4e7b5d7 | ||
|
|
12d6cf8a5b | ||
|
|
aa7e5ea601 | ||
|
|
9f5232019e | ||
|
|
3063763a18 | ||
|
|
b76f9e7e21 | ||
|
|
558636b6b0 | ||
|
|
8b92772b2f | ||
|
|
cf0881f704 | ||
|
|
1adc17b598 | ||
|
|
a55256a247 | ||
|
|
faaa4e9480 | ||
|
|
ba52ab450e | ||
|
|
0660d0cf15 | ||
|
|
fa1a3315f8 | ||
|
|
5f281b07fe | ||
|
|
e5bc2601cc | ||
|
|
6132a34333 | ||
|
|
697e6d8b8b | ||
|
|
33c4d82293 | ||
|
|
c46e0e9d5b | ||
|
|
4b9f987203 | ||
|
|
a650ae195e | ||
|
|
0dca7bacc2 | ||
|
|
87f79151b4 | ||
|
|
480ae203b4 | ||
|
|
c4427c0497 | ||
|
|
f130f55167 | ||
|
|
2009483542 | ||
|
|
ca50309554 | ||
|
|
db5b0986c4 | ||
|
|
b94cf566c9 | ||
|
|
ff24cec841 | ||
|
|
e16d20e996 | ||
|
|
bfab0f8538 | ||
|
|
4752a98456 | ||
|
|
e63a3ec6a9 | ||
|
|
4dc30d7d98 | ||
|
|
71f6825b00 | ||
|
|
d56b0bfccc | ||
|
|
39ff956076 | ||
|
|
faa22fc634 | ||
|
|
f5ce395371 | ||
|
|
b986d4cb5d | ||
|
|
9c39cd9255 | ||
|
|
43e2c44ac1 | ||
|
|
3507a74d60 | ||
|
|
97797d64f1 | ||
|
|
88d7207102 | ||
|
|
1616b014b3 | ||
|
|
c20538f6f7 | ||
|
|
e77c2dd78c | ||
|
|
6e7ce901ab | ||
|
|
3396ed6010 | ||
|
|
09ec89ae62 | ||
|
|
a7d78ff6eb | ||
|
|
868043a22b | ||
|
|
0310582056 | ||
|
|
629b9b486e | ||
|
|
500e2022c3 | ||
|
|
f8c2701751 | ||
|
|
d70ef05b54 | ||
|
|
4b1d4c7335 | ||
|
|
c79939e650 | ||
|
|
8f298ba2a0 | ||
|
|
da6311d584 | ||
|
|
d589adf208 | ||
|
|
dfbfaf12eb | ||
|
|
91989e1a2b | ||
|
|
86c2a96ed4 | ||
|
|
9f3dab39c0 | ||
|
|
a02687c9fb | ||
|
|
80399fefcd | ||
|
|
ff9a0b3d44 | ||
|
|
8df82af638 | ||
|
|
ddfcc5624c | ||
|
|
7b08fbb695 | ||
|
|
07d85783d8 | ||
|
|
f0d6fc0167 | ||
|
|
7b085307f8 | ||
|
|
e22a38dd9c | ||
|
|
2ceb727ee6 | ||
|
|
bc4e656745 | ||
|
|
6d2b3b8463 | ||
|
|
5369b6cb10 | ||
|
|
53fd71b732 | ||
|
|
63e38b3d1c | ||
|
|
cd98ac65f3 | ||
|
|
7bd0819cbb | ||
|
|
e84c2a5180 | ||
|
|
aabf4b3e45 | ||
|
|
0f67d3e54d | ||
|
|
8cbc36550b | ||
|
|
25c46f2a0d | ||
|
|
f7124f7d69 | ||
|
|
afe12e5293 | ||
|
|
53c8952c66 | ||
|
|
7478eb4fce | ||
|
|
bc7ee1a1da | ||
|
|
1eb878a773 | ||
|
|
ccef61070b | ||
|
|
64300aa436 | ||
|
|
5a3255bc59 | ||
|
|
800064a18c | ||
|
|
b1e8fcf16e | ||
|
|
a1843c8cf6 | ||
|
|
a9b0f97f74 | ||
|
|
763e73138a | ||
|
|
e5103cd63f | ||
|
|
f606982bce | ||
|
|
392d447b99 | ||
|
|
3a6c4a524a | ||
|
|
014017104f | ||
|
|
026fb18933 | ||
|
|
361b411dc5 | ||
|
|
011b0b4a88 | ||
|
|
2798be0f1c | ||
|
|
03d7510ef6 | ||
|
|
e66704233c | ||
|
|
53eecf6220 | ||
|
|
051fa6965a | ||
|
|
c9edf77df3 | ||
|
|
c1c71a90e3 | ||
|
|
a21f321be9 | ||
|
|
1d19c44a9b | ||
|
|
186e071f86 | ||
|
|
6e52039e09 | ||
|
|
1b24fe963e | ||
|
|
dbf21d2654 | ||
|
|
f8b54ddb45 | ||
|
|
8ba4ed5377 | ||
|
|
b1cb369209 | ||
|
|
911b86d516 | ||
|
|
29555e0d93 | ||
|
|
ecdbfd22d5 | ||
|
|
9c76bb2618 | ||
|
|
5b1551983e | ||
|
|
e22cc4206c | ||
|
|
47a951be2a | ||
|
|
fcc04e6e7e | ||
|
|
c6d330b91e | ||
|
|
e16786a5f6 | ||
|
|
e388e473be | ||
|
|
029c4d7f7f | ||
|
|
5d6c2dd9f2 | ||
|
|
ade5dc45d1 | ||
|
|
8e578a643a | ||
|
|
8a67405fd7 | ||
|
|
851bbe4cc6 | ||
|
|
0fec7506b7 | ||
|
|
63b80b823e | ||
|
|
d3f9cdbec3 | ||
|
|
6de4293f9f | ||
|
|
e1d2e2c7d5 | ||
|
|
11f8cb6cfa | ||
|
|
2f0fecf89b | ||
|
|
acfb193270 | ||
|
|
ccd4de824f | ||
|
|
9800a3b55d | ||
|
|
938eb7d390 | ||
|
|
d0b4542c94 | ||
|
|
bb2833ae51 | ||
|
|
cfff5b6be6 | ||
|
|
d29d1df84b | ||
|
|
79cca97c03 | ||
|
|
a807ab6b04 | ||
|
|
517a4d1f09 | ||
|
|
e19eeb8a60 | ||
|
|
1af5fb35bc | ||
|
|
adbc1799a2 | ||
|
|
f51dbd7df9 | ||
|
|
f11c8f9360 | ||
|
|
46fdc22201 | ||
|
|
2ba4233645 | ||
|
|
a868233c2f | ||
|
|
a7752f3c18 | ||
|
|
3a06775f9f | ||
|
|
936b5d9b72 | ||
|
|
523f1622b5 | ||
|
|
a2c027b7b7 | ||
|
|
d13f66eb5b | ||
|
|
9f400ea15c | ||
|
|
c0e841031a | ||
|
|
34f6b7b560 | ||
|
|
55fe455713 | ||
|
|
2a004e32bc | ||
|
|
bde574ff3d | ||
|
|
9c41b52175 | ||
|
|
c78d1dd149 | ||
|
|
714760963a | ||
|
|
094382373c | ||
|
|
2790d1d744 | ||
|
|
67ee8b08d9 | ||
|
|
aa704210f8 | ||
|
|
4ea8e72927 | ||
|
|
817bb3f2aa | ||
|
|
1550eb18a6 | ||
|
|
5d01220a0e | ||
|
|
e81e24fa5f | ||
|
|
bb75aa8f74 | ||
|
|
3d4511607f | ||
|
|
fe27d8059e | ||
|
|
ba24a7080c | ||
|
|
9fd061be48 | ||
|
|
1c78464e23 | ||
|
|
8f1eec6522 | ||
|
|
c60e77fef1 | ||
|
|
1a4d915652 | ||
|
|
aca7acbdbe | ||
|
|
8fe3e49ecd | ||
|
|
fcee83d803 | ||
|
|
2b2bad6725 | ||
|
|
f8ebd5fdfa | ||
|
|
8c5a164635 | ||
|
|
6d1b9cbfb2 | ||
|
|
6518166252 | ||
|
|
4913cf65fd | ||
|
|
7b8a6e89d9 | ||
|
|
664e9e8f26 | ||
|
|
5062ee602f | ||
|
|
f11feb4363 | ||
|
|
4e433446e2 | ||
|
|
c89e551fe6 | ||
|
|
a9282ced12 | ||
|
|
85e13cc2b1 | ||
|
|
43203195b4 | ||
|
|
1e472eebc9 | ||
|
|
30db589eee | ||
|
|
51b61158b7 | ||
|
|
7b7034cad3 | ||
|
|
d3a05c0da0 | ||
|
|
a33e10f0b9 | ||
|
|
27f564841d | ||
|
|
5c8bad5bb9 | ||
|
|
1113f6cfdd | ||
|
|
1753ee5395 | ||
|
|
6c27c94b4a | ||
|
|
f02d3af3d2 | ||
|
|
890dd391dc | ||
|
|
7982c416e7 | ||
|
|
e4eee7edcd | ||
|
|
cffab6900d | ||
|
|
8487558450 | ||
|
|
736fd536f9 | ||
|
|
cbb5a021a0 | ||
|
|
da7f32d96f | ||
|
|
591784cd65 | ||
|
|
ddd2f2dfe5 | ||
|
|
56f297d3b9 | ||
|
|
fa7669f0af | ||
|
|
2aa8525fe7 | ||
|
|
9254c5781f | ||
|
|
e13f3bea65 | ||
|
|
59c2327768 | ||
|
|
4b0c6aa515 | ||
|
|
6276e45155 | ||
|
|
c7cb1d84ab | ||
|
|
1a6025e012 | ||
|
|
83655c92c4 | ||
|
|
63a55d2f8a | ||
|
|
c32953b2ea | ||
|
|
e51cd1a2f7 | ||
|
|
e58694566e | ||
|
|
248561ca14 | ||
|
|
d4a9b43e88 | ||
|
|
f717663f50 | ||
|
|
49ebae9a55 | ||
|
|
7a1419e73a | ||
|
|
d15d05918c | ||
|
|
969151c4a7 | ||
|
|
23717bb180 | ||
|
|
e32ac213b9 | ||
|
|
584cbb994b | ||
|
|
dcb7760a0e | ||
|
|
fd6ba08f58 | ||
|
|
a30329b47d | ||
|
|
610f03d006 | ||
|
|
1cc9756d0e | ||
|
|
bf753cb858 | ||
|
|
9a2cd1c446 | ||
|
|
4a7bfe96e1 | ||
|
|
7c51354186 | ||
|
|
8a7707eb41 | ||
|
|
88eac8e654 | ||
|
|
c637d699bc | ||
|
|
d2450a9382 | ||
|
|
4dd6b82471 | ||
|
|
93ce2210da | ||
|
|
2463b52381 | ||
|
|
bc1cdc17e0 | ||
|
|
47ddfd75f7 | ||
|
|
9643a2e026 | ||
|
|
5ceaa53c59 | ||
|
|
edc09b56b4 | ||
|
|
9b940738d4 | ||
|
|
b86610381a | ||
|
|
dfe4bb32f0 | ||
|
|
b81c73b6ec | ||
|
|
9bb2549d0b | ||
|
|
ab90f8bd41 | ||
|
|
221712753f | ||
|
|
ed28a990af | ||
|
|
055f32d1d9 | ||
|
|
a175ce87d7 | ||
|
|
f0f1714b12 | ||
|
|
3778bd893b | ||
|
|
d4436e19fa | ||
|
|
4cf93fd4c0 | ||
|
|
6d94896764 | ||
|
|
bacb757d7d | ||
|
|
7be3cc949f | ||
|
|
41cc8b34aa | ||
|
|
4bbba5bb35 | ||
|
|
feae323f5c | ||
|
|
b363833a9f | ||
|
|
f083ea3861 | ||
|
|
f62e7f8bf9 | ||
|
|
fedb0a3f09 | ||
|
|
38928448bf | ||
|
|
cfbde5f6bd | ||
|
|
4b0e0bc6d3 | ||
|
|
9acb79f500 | ||
|
|
5dc0b38881 | ||
|
|
fab6f7e883 | ||
|
|
66e635e909 | ||
|
|
6e496d5a3c | ||
|
|
ca172c9a53 | ||
|
|
e9b83a9ff6 | ||
|
|
cf18d97b3a | ||
|
|
0b1c715408 | ||
|
|
5d493e1a03 | ||
|
|
e5437ef9e9 | ||
|
|
b56bed39e1 | ||
|
|
e789f91850 | ||
|
|
a236eb9453 | ||
|
|
7ef01b8534 | ||
|
|
0e58545a9d | ||
|
|
c474123777 | ||
|
|
93edfcf560 | ||
|
|
e5a67d82fa | ||
|
|
194f6aece1 | ||
|
|
3b4fef8f6e | ||
|
|
6c7323ee3a | ||
|
|
a97b50decb | ||
|
|
52accf6444 | ||
|
|
5b8eb231cc | ||
|
|
5ea62367d3 | ||
|
|
49a034a1a0 | ||
|
|
62a476cb4c | ||
|
|
b283673812 | ||
|
|
b6a075fefb | ||
|
|
afa844ae01 | ||
|
|
353ef59a1c | ||
|
|
6228999e6f | ||
|
|
56db42fedf | ||
|
|
df44693e5d | ||
|
|
cfa25f8dda | ||
|
|
bc8934f3c3 | ||
|
|
bc67c72e9b | ||
|
|
22d85e745a | ||
|
|
60ba2952f7 | ||
|
|
bb10d2813f | ||
|
|
80b581f0df | ||
|
|
ef37c421ac | ||
|
|
6e1e8e622b | ||
|
|
ec38a1510f | ||
|
|
e550ca5a71 | ||
|
|
80241f732f | ||
|
|
84fc0be12e | ||
|
|
e1f14e8a83 | ||
|
|
1155724604 | ||
|
|
3bb9541943 | ||
|
|
25288f664a | ||
|
|
879c5d7b44 | ||
|
|
cdaec1953c | ||
|
|
f4bf7a9c52 | ||
|
|
7b46c6aa15 | ||
|
|
d28f4ccfa0 | ||
|
|
e5b05dc700 | ||
|
|
bf9831753e | ||
|
|
5e1670dbae | ||
|
|
0d0a230c86 | ||
|
|
9989b69b46 | ||
|
|
66693253ef | ||
|
|
cbffc37dcf | ||
|
|
74ee42ed66 | ||
|
|
f642e2399f | ||
|
|
8cefb055db | ||
|
|
1f31756019 | ||
|
|
4d6a1da6d5 | ||
|
|
d62e720627 | ||
|
|
4af4470998 | ||
|
|
8bb6218132 | ||
|
|
f4197f8752 | ||
|
|
7cfad3b1c4 | ||
|
|
ff67a659b6 | ||
|
|
a5c69a42fc | ||
|
|
3facbf00eb | ||
|
|
5a6eece6d6 | ||
|
|
9219fa3197 | ||
|
|
32b9a39b1e | ||
|
|
61a7fe6307 | ||
|
|
ca755d3e0d | ||
|
|
442dba42ba | ||
|
|
ba80dd8873 | ||
|
|
1d35302dca | ||
|
|
39c3121437 | ||
|
|
d7de1d84fb | ||
|
|
0ee1dfb353 | ||
|
|
0a6f1d87d4 | ||
|
|
b7c563391c | ||
|
|
b648c4ba6c | ||
|
|
0eb995c9a1 | ||
|
|
936d14ffea | ||
|
|
72c7a0a34b | ||
|
|
8402013e97 | ||
|
|
fde6b72974 | ||
|
|
d98d4d6908 | ||
|
|
ed384666ee | ||
|
|
4e64e3d654 | ||
|
|
72b4b51915 | ||
|
|
81f5bf96f5 | ||
|
|
e935281b77 | ||
|
|
e132330c0b | ||
|
|
21594aa660 | ||
|
|
6fb7989b41 | ||
|
|
1f38a38bd5 | ||
|
|
e918aa8b14 | ||
|
|
4a33b18ac4 | ||
|
|
cb97fd1a48 | ||
|
|
51600bc560 | ||
|
|
12344ed980 | ||
|
|
0b6773a744 | ||
|
|
17a38e9c09 | ||
|
|
70499fe6ac | ||
|
|
64493e0091 | ||
|
|
ae3efb31f8 | ||
|
|
6da58d0698 | ||
|
|
07f40c1429 | ||
|
|
f5f67e795e | ||
|
|
5b0652c272 | ||
|
|
53ef5f7c56 | ||
|
|
71f99875e4 | ||
|
|
a097075bfe | ||
|
|
527f840950 | ||
|
|
7fadc7eedb | ||
|
|
35663319d9 | ||
|
|
b9d9670d18 | ||
|
|
fd027f452c | ||
|
|
10a6e03f85 | ||
|
|
522eb8359f | ||
|
|
d1fd7f75af | ||
|
|
bb61b1e6ac | ||
|
|
7c17baa5be | ||
|
|
9e7c0a1959 | ||
|
|
db2e97bf66 | ||
|
|
057f6b6041 | ||
|
|
ca82336087 | ||
|
|
761ceaeaa3 | ||
|
|
0cbca0adb8 | ||
|
|
d24db4fd6a | ||
|
|
4a893b9feb | ||
|
|
71a0a84f26 | ||
|
|
44d241f489 | ||
|
|
a4cb5f558d | ||
|
|
aef4d07c48 | ||
|
|
6a5f1bbbf4 | ||
|
|
e60ef2d677 | ||
|
|
f4622d05db | ||
|
|
47d7900809 | ||
|
|
2c86e9347b | ||
|
|
5827d298ad | ||
|
|
60e0f69920 | ||
|
|
97f1ee17b0 | ||
|
|
85215a308d | ||
|
|
89fa4edcf7 | ||
|
|
ec42fb9bff | ||
|
|
96d696dbf3 | ||
|
|
b7992ecc0b | ||
|
|
0acae6e158 | ||
|
|
6afea5043e | ||
|
|
c9ee8d9942 | ||
|
|
55f4e150c0 | ||
|
|
3e3e9c5f5a | ||
|
|
66215890dd | ||
|
|
bf6c7ee0c3 | ||
|
|
f726edf725 | ||
|
|
d917861a77 | ||
|
|
12a54efde5 | ||
|
|
9ae87bed78 | ||
|
|
7f5a52258c | ||
|
|
2c212e6b4d | ||
|
|
3d75744a20 | ||
|
|
d2ff259989 | ||
|
|
cac2ef30a1 | ||
|
|
ea38dedcc1 | ||
|
|
0bd632e612 | ||
|
|
4ce7163bb1 | ||
|
|
72fbd3f829 | ||
|
|
f20fadb51c | ||
|
|
0e0183dc99 | ||
|
|
fa71e129c2 | ||
|
|
cb68842da6 | ||
|
|
44f348ecc5 | ||
|
|
891a6106f0 | ||
|
|
90fcc234a9 | ||
|
|
72fcd97cdb | ||
|
|
2ded2052b7 | ||
|
|
a8da5707f2 | ||
|
|
f508668c46 | ||
|
|
15ed0723f1 | ||
|
|
c9b0502542 | ||
|
|
0d5a841a81 | ||
|
|
e47b8c1e73 | ||
|
|
50fe50d1a8 | ||
|
|
9e4669b8b4 | ||
|
|
1e383315e2 | ||
|
|
6f66eb2b66 | ||
|
|
0864340ae2 | ||
|
|
a3f5c65b5d | ||
|
|
7f94137b2d | ||
|
|
d65587f58d | ||
|
|
8959455401 | ||
|
|
8e40e38bd6 | ||
|
|
c646717576 | ||
|
|
4e7d6f03f5 | ||
|
|
cc3f258a5b | ||
|
|
4c776c260d | ||
|
|
f2c636217c | ||
|
|
d7ab3bfbc1 | ||
|
|
567504329d | ||
|
|
5eb3534d8e | ||
|
|
806fda67e9 | ||
|
|
5578d5d0ab | ||
|
|
39c540d453 | ||
|
|
36a244fd75 | ||
|
|
84a0ab816e | ||
|
|
e305f2c11a | ||
|
|
ed773dd158 | ||
|
|
18056a8edd | ||
|
|
96f3ce5b35 | ||
|
|
e7a78ae908 | ||
|
|
295c9219c2 | ||
|
|
99dc85ab4a | ||
|
|
16876cd0a0 | ||
|
|
cb65fb450f | ||
|
|
5bc2ad81f9 | ||
|
|
03b98774bc | ||
|
|
fb49f6bbe9 | ||
|
|
eb792102c8 | ||
|
|
a12a258112 | ||
|
|
018dd8a1c7 | ||
|
|
7a100db4b4 | ||
|
|
858a1d13c4 | ||
|
|
aa1630627a | ||
|
|
c3af40ef50 | ||
|
|
16534d6e5b | ||
|
|
eeb5f766da | ||
|
|
03f41704c4 | ||
|
|
6b0c5fad2d | ||
|
|
51165bf759 | ||
|
|
7f45d995de | ||
|
|
e7b9c40dd9 | ||
|
|
e7b66ceb89 | ||
|
|
d053b86e23 | ||
|
|
6a12aceae2 | ||
|
|
7c6b64c6c8 | ||
|
|
5495501e0c | ||
|
|
6b7824fe4f | ||
|
|
5f0b350a95 | ||
|
|
85269716dd |
+21
-2
@@ -1,11 +1,14 @@
|
||||
33
|
||||
40
|
||||
|
||||
1.4.2
|
||||
1.6.2
|
||||
1.11.2
|
||||
1.12.2
|
||||
1.17.2
|
||||
1.31.2
|
||||
|
||||
2.8.2
|
||||
|
||||
3.2.2
|
||||
3.2.3
|
||||
3.3.2
|
||||
@@ -17,6 +20,7 @@
|
||||
3.9.2
|
||||
3.9.3
|
||||
3.10.2
|
||||
|
||||
4.0.2
|
||||
4.0.3
|
||||
4.6.2
|
||||
@@ -34,4 +38,19 @@
|
||||
6.0.3
|
||||
6.0.4
|
||||
6.0.5
|
||||
6.1.2
|
||||
6.1.2
|
||||
|
||||
6.4.2
|
||||
6.5.2
|
||||
6.7.2
|
||||
6.9.2
|
||||
6.10.2
|
||||
6.10.3
|
||||
|
||||
7.0.2
|
||||
|
||||
7.14.2
|
||||
7.14.3
|
||||
8.0.2
|
||||
8.3.2
|
||||
8.4.2
|
||||
+16
-1
@@ -1,3 +1,17 @@
|
||||
checks:
|
||||
argument-count:
|
||||
config:
|
||||
threshold: 5
|
||||
method-complexity:
|
||||
config:
|
||||
threshold: 7
|
||||
method-count:
|
||||
config:
|
||||
threshold: 25
|
||||
method-lines:
|
||||
config:
|
||||
threshold: 30
|
||||
|
||||
exclude_patterns:
|
||||
- "**/*.spec.js"
|
||||
- "**/*.spec.ts"
|
||||
@@ -5,7 +19,8 @@ exclude_patterns:
|
||||
- "**/*.test.ts"
|
||||
- "docs/**/*.js"
|
||||
- "docs/**/*.ts"
|
||||
- "packages/api/src/augment/"
|
||||
- "packages/*-augment/"
|
||||
- "packages/*-augment-*/"
|
||||
- "packages/typegen/scripts"
|
||||
- "packages/typegen/src"
|
||||
- "packages/types/src/interfaces/"
|
||||
|
||||
+3
-9
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2021 @polkadot/api authors & contributors
|
||||
// Copyright 2017-2022 @polkadot/api authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const base = require('@polkadot/dev/config/eslint.cjs');
|
||||
@@ -6,18 +6,12 @@ const base = require('@polkadot/dev/config/eslint.cjs');
|
||||
module.exports = {
|
||||
...base,
|
||||
ignorePatterns: [
|
||||
'.eslintrc.js',
|
||||
'.github/**',
|
||||
'.vscode/**',
|
||||
'.yarn/**',
|
||||
'**/build/*',
|
||||
'**/coverage/*',
|
||||
'**/node_modules/*'
|
||||
...base.ignorePatterns
|
||||
],
|
||||
parserOptions: {
|
||||
...base.parserOptions,
|
||||
project: [
|
||||
'./tsconfig.json'
|
||||
'./tsconfig.eslint.json'
|
||||
]
|
||||
},
|
||||
rules: {
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
name: bot
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [labeled]
|
||||
|
||||
jobs:
|
||||
approve:
|
||||
if: "! startsWith(github.event.head_commit.message, '[CI Skip]') && (!github.event.pull_request || github.event.pull_request.head.repo.full_name == github.repository)"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: jacogr/action-approve@master
|
||||
with:
|
||||
authors: jacogr
|
||||
labels: -auto
|
||||
token: ${{ secrets.GH_PAT_BOT }}
|
||||
@@ -0,0 +1,16 @@
|
||||
name: bot
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [labeled]
|
||||
|
||||
jobs:
|
||||
merge:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: jacogr/action-merge@master
|
||||
with:
|
||||
checks: build,lint,test
|
||||
labels: -auto
|
||||
strategy: squash
|
||||
token: ${{ secrets.GH_PAT_BOT }}
|
||||
@@ -2,11 +2,13 @@ name: 'Lock Threads'
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '30 1/2 * * *'
|
||||
- cron: '10 1/3 * * *'
|
||||
|
||||
jobs:
|
||||
lock:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
YARN_ENABLE_SCRIPTS: false
|
||||
steps:
|
||||
- uses: dessant/lock-threads@v2
|
||||
with:
|
||||
|
||||
@@ -8,6 +8,8 @@ jobs:
|
||||
step: ['lint', 'test', 'build']
|
||||
name: ${{ matrix.step }}
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
YARN_ENABLE_SCRIPTS: false
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: ${{ matrix.step }}
|
||||
|
||||
@@ -12,16 +12,18 @@ jobs:
|
||||
step: ['build:release']
|
||||
name: ${{ matrix.step }}
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
YARN_ENABLE_SCRIPTS: false
|
||||
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
|
||||
GH_PAT: ${{ secrets.GH_PAT }}
|
||||
GH_RELEASE_GITHUB_API_TOKEN: ${{ secrets.GH_PAT }}
|
||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.GH_PAT }}
|
||||
- name: ${{ matrix.step }}
|
||||
env:
|
||||
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
|
||||
GH_PAT: ${{ secrets.GH_PAT }}
|
||||
GH_RELEASE_GITHUB_API_TOKEN: ${{ secrets.GH_PAT }}
|
||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
run: |
|
||||
yarn install --immutable | grep -v 'YN0013'
|
||||
yarn ${{ matrix.step }}
|
||||
|
||||
@@ -9,6 +9,8 @@ jobs:
|
||||
check:
|
||||
if: "! startsWith(github.event.head_commit.message, '[CI Skip]') && (!github.event.pull_request || github.event.pull_request.head.repo.full_name == github.repository)"
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
YARN_ENABLE_SCRIPTS: false
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: returntocorp/semgrep-action@v1
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
name: 'Close stale issues and PRs'
|
||||
on:
|
||||
schedule:
|
||||
- cron: '30 2/2 * * *'
|
||||
- cron: '55 1/3 * * *'
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
YARN_ENABLE_SCRIPTS: false
|
||||
steps:
|
||||
- uses: actions/stale@v3
|
||||
with:
|
||||
|
||||
+5
-1
@@ -1,11 +1,14 @@
|
||||
_book/
|
||||
build/
|
||||
build-cjs/
|
||||
build-esm/
|
||||
build-docs/
|
||||
coverage/
|
||||
docs/.vuepress/dist/
|
||||
docs/substrate/*.md
|
||||
node_modules/
|
||||
tmp/
|
||||
NOTES.md
|
||||
.DS_Store
|
||||
.env.local
|
||||
.env.development.local
|
||||
@@ -21,6 +24,7 @@ tmp/
|
||||
cc-test-reporter
|
||||
lerna-debug.log*
|
||||
npm-debug.log*
|
||||
package-lock.json
|
||||
tsconfig*buildinfo
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
package-lock.json
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
Jaco <jacogr@gmail.com>
|
||||
github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> <action@github.com>
|
||||
github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Github Actions <action@github.com>
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2021 @polkadot/api authors & contributors
|
||||
// Copyright 2017-2022 @polkadot/api authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
module.exports = require('@polkadot/dev/config/prettier.cjs');
|
||||
|
||||
+344
-56
File diff suppressed because one or more lines are too long
+526
-51
File diff suppressed because one or more lines are too long
Vendored
-631
File diff suppressed because one or more lines are too long
+785
File diff suppressed because one or more lines are too long
+1
-1
@@ -10,4 +10,4 @@ plugins:
|
||||
- path: .yarn/plugins/@yarnpkg/plugin-version.cjs
|
||||
spec: "@yarnpkg/plugin-version"
|
||||
|
||||
yarnPath: .yarn/releases/yarn-3.0.1.cjs
|
||||
yarnPath: .yarn/releases/yarn-3.2.0.cjs
|
||||
|
||||
+601
-1
@@ -1,8 +1,608 @@
|
||||
# CHANGELOG
|
||||
|
||||
## 8.4.2 May 15, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Expand/fix TS typings for `MortalEra.{birth, death}(...)`
|
||||
|
||||
|
||||
## 8.4.1 May 14, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Added support for typegen over `Range/RangeInclusive` types
|
||||
- Add explicit support for `Call` typegen (inclusive of non-defaults)
|
||||
- Deupe `wss://` handling in `polkadot-types-from-{chain, defs}`
|
||||
- Allow for optional `definitions.ts` in typegen (only use chain)
|
||||
- Optimize `Compact<*>` decoding in Uint8Array streams
|
||||
- Use `I*` interfaces for extrinsic payload getters
|
||||
- Re-add support for historic linked-map queries
|
||||
- Update to latest Substrate, Kusama & Polkadot static metadata
|
||||
- Add latest upgrade blocks for Polkadot, Kusama & Westend
|
||||
|
||||
|
||||
## 8.3.2 May 8, 2022
|
||||
|
||||
Contributed:
|
||||
|
||||
- Bump `@substrate/connect` to 0.7.4 (Thanks to https://github.com/wirednkod)
|
||||
|
||||
Changes:
|
||||
|
||||
- Adjust `BTreeSet` in typegen top-level generation
|
||||
|
||||
|
||||
## 8.3.1 May 1, 2022
|
||||
|
||||
Contributed:
|
||||
|
||||
- Fetch metadata via WS for `types-from-defs` (Thanks to https://github.com/alex-nax)
|
||||
|
||||
Changes:
|
||||
|
||||
- Extract metadata v14 `BTreeSet` types into correct type
|
||||
- Assert to ensure that `[u8; <size>]` has exact sizes (non-u8a inputs)
|
||||
- Adjust `tx.paymentInfo` signing process for existing signature
|
||||
- Add Kusama 9190 upgrade block
|
||||
- Add Westend 9200 upgrade block
|
||||
- Update to latest Substrate, Kusama & Polkadot static metadata
|
||||
|
||||
|
||||
## 8.2.1 Apr 24, 2022
|
||||
|
||||
Contributed:
|
||||
|
||||
- Make WS timeout check configurable (Thanks to https://github.com/isSerge)
|
||||
|
||||
Changes:
|
||||
|
||||
- Don't fake signature for `paymentInfo` if already signed
|
||||
- Remove `api.derive.balances.fees` (use direct constants as applicable)
|
||||
- Add Westend 9190 upgrade block
|
||||
- Update to latest Substrate, Kusama & Polkadot static metadata
|
||||
|
||||
|
||||
## 8.1.1 Apr 17, 2022
|
||||
|
||||
Contributed:
|
||||
|
||||
- Adjust typegen for `Vec<{ struct: <type> }>` (Thanks to https://github.com/zannis)
|
||||
- Adjust typegen __dirname for ESM (Thanks to https://github.com/drewstone)
|
||||
|
||||
Changes:
|
||||
|
||||
- Fix `entriesPaged` where no `at?: BlockHash` is specified
|
||||
- Apply windcard matches for `democracy::vote::Vote` and `identity::type::Data`
|
||||
- Adjust default "no RPC response" timeout to 60s
|
||||
- Update to latest Substrate, Kusama & Polkadot static metadata
|
||||
|
||||
|
||||
## 8.0.2 Apr 11, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Detect typegen template location for commonjs execution
|
||||
|
||||
|
||||
## 8.0.1 Apr 10, 2022
|
||||
|
||||
- **Breaking change** In this major version the commonjs outputs are moved to a sub-folder. Since the export map and main field in package.json does reflect this change, there should be no usage changes. However the packages here will all need to be on the same version for internal linkage.
|
||||
|
||||
Contributed:
|
||||
|
||||
- Improve `rpc-provider` README (Thanks to https://github.com/josepot)
|
||||
- Add handling for `Vec<[<Type>;<length>]>` in typegen (Thanks to https://github.com/zannis)
|
||||
|
||||
Changes:
|
||||
|
||||
- Add support for `apiAt.tx(...)` to construct at a specific point
|
||||
- Add basic `api.derive.bagsList.*` support
|
||||
- Return sorted names for `api.registry.lookup.names`
|
||||
- Optimize JSONRPC requests/response handling
|
||||
- Output commonjs files under the `cjs/**` root
|
||||
- Update to latest Substrate, Kusama & Polkadot static metadata
|
||||
- Add latest Polkadot 9180 upgrade block
|
||||
- Update to `@polkadot/util` 9.0.1
|
||||
|
||||
|
||||
## 7.15.1 Apr 3, 2022
|
||||
|
||||
Contributed:
|
||||
|
||||
- Export `WellKnownChain` for `substrate-connect` (Thanks to https://github.com/josepot)
|
||||
- Add support for `{entries, keys}Paged` in `.at` (Thanks to https://github.com/xlc)
|
||||
- Align `WeightsPerClass` interface on `maxExtrinsic` (Thanks to https://github.com/HackFisher)
|
||||
|
||||
Changes:
|
||||
|
||||
- Cater for `DispatchError` with `error` as `[u8; 4]`
|
||||
- Add in-flight cache for parallel same-version metadata queries
|
||||
- Cater for lazy `@polkadot/util-crypto` init (adjustment for React Native)
|
||||
- Update to latest Substrate, Kusama & Polkadot static metadata
|
||||
- Update latest Westend & Kusama (up to 9180) upgrade blocks
|
||||
|
||||
|
||||
## 7.14.3 Mar 28, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Ensure `BitVec` with MSB does not fail (used in Polkadot `DeliveredMessages`)
|
||||
|
||||
|
||||
## 7.14.2 Mar 28, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Don't export `ScProvider` top-level in `@polkadot/rpc-provider`
|
||||
|
||||
|
||||
## 7.14.1 Mar 27, 2022
|
||||
|
||||
Contributed:
|
||||
|
||||
- Add `ScProvider` for `@substrate/substrate-connect` (Thanks to https://github.com/josepot)
|
||||
- Add support for `BTree{Map, Set}` in typegen (Thanks to https://github.com/CertainLach)
|
||||
|
||||
Changes:
|
||||
|
||||
- Only explicitly support LSB on `BitVec` types
|
||||
- Change `toHuman()` on `BitVec` to output default LSB
|
||||
- Add `bytes{Sent, Recv}` to provider stats
|
||||
- Clear connection timout on provider `disconnect()`
|
||||
- Add support for `dev_getBlockStats` RPC
|
||||
|
||||
|
||||
## 7.13.1 Mar 19, 2022
|
||||
|
||||
**Important** This contains an upgraded version of `@polkadot/wasm-crypto`. For users of asm.js, e.g. React Native, there are some additional upgrade instructions in the release notes for this version https://github.com/polkadot-js/wasm/releases/tag/v5.0.1
|
||||
|
||||
Contributed:
|
||||
|
||||
- Expose custom RPC error details (Thanks to https://github.com/intendednull)
|
||||
- Improve custom RPC error typings (Thanks to https://github.com/MOZGIII)
|
||||
|
||||
Changes:
|
||||
|
||||
- Support for rejection of hanging RPC requests (30s timeout)
|
||||
- Add `.stats` to provider interfaces with running counters
|
||||
- Add support for `state_trieMigrationStatus` RPC
|
||||
- Update to latest Substrate, Kusama & Polkadot static metadata
|
||||
- Update to `@polkadot/util` 8.6.1
|
||||
- Additional workaround for Vite bundling
|
||||
|
||||
|
||||
## 7.12.1 Mar 13, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Allow for correct handling of `Option<Null>` types
|
||||
- Adjust for bundlers where `import.meta.url` is undefined
|
||||
- Update to `@polkadot/util` 8.5.1
|
||||
|
||||
|
||||
## 7.11.1 Mar 6, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Chunk derive retrieval of `era{Exposure, Prefs, Slashes}`
|
||||
- Ensure that signer (passed via options) do get updated
|
||||
- Kusama & Polkadot 9170 upgrade blocks
|
||||
- Update to latest Substrate, Kusama & Polkadot static metadata
|
||||
- Adjustments for TypeScript 7.6.2
|
||||
|
||||
|
||||
## 7.10.1 Feb 27, 2022
|
||||
|
||||
Contributed:
|
||||
|
||||
- Ensure `updateId` is correct in signer callbacks (Thanks to https://github.com/coolcorexix)
|
||||
|
||||
Changes:
|
||||
|
||||
- Ensure `BTreeSet` has the correct decoded length
|
||||
- Attach `PortableRegistry` at point of metadata set
|
||||
- Add `derive.chain.getBlockByNumber`
|
||||
- Retrieve named reserves in `derive.balances.all`
|
||||
- Ensure `v13 -> v14` metadata conversion attaches primitives
|
||||
- Update to latest Substrate, Kusama & Polkadot static metadata
|
||||
|
||||
|
||||
## 7.9.1 Feb 20, 2022
|
||||
|
||||
Contributed:
|
||||
|
||||
- Support historic queries via blockNumber (Thanks to https://github.com/stwiname)
|
||||
|
||||
Changes:
|
||||
|
||||
- Align `grandpa_proveFinality` with Substrate
|
||||
- Allow for derive augmentation (swap base type to interfaces)
|
||||
- Kusama 9160 upgrade block
|
||||
- Update to latest Substrate, Kusama & Polkadot static metadata
|
||||
|
||||
|
||||
## 7.8.1 Feb 14, 2022
|
||||
|
||||
Contributed:
|
||||
|
||||
- Add `isHistoric` flag to ETH RPCs (Thanks to https://github.com/stwiname)
|
||||
- Align contract instantiate types with Substrate (Thanks to https://github.com/kwingram25)
|
||||
|
||||
Changes:
|
||||
|
||||
- Adjust map header output type with lookup id
|
||||
- Re-enable all `BitVec` tests for `toU8a`
|
||||
- Expose `txIndex` as event index on extrinsic results
|
||||
- Allow inspection of Codec encoding (experimental)
|
||||
- Allow inspection of storage key encoding (experimental)
|
||||
- Update to latest Substrate, Kusama & Polkadot static metadata
|
||||
- Update `@polkadot/util` to 8.4.1
|
||||
|
||||
|
||||
## 7.7.1 Feb 6, 2022
|
||||
|
||||
Upgrade priority: Low. Recommended for users with long-running scripts.
|
||||
|
||||
Contributed:
|
||||
|
||||
- Fix rpc-provider LRU memory leak (Thanks to https://github.com/gdethier)
|
||||
|
||||
Changes:
|
||||
|
||||
- Don't warn on `Lookup*` types missing (these are resolvable)
|
||||
- Don't clear injected `PortableRegistry` types on runtime upgrade
|
||||
- Clear warning for `Call`/`Event` on non-meta v14 runtimes
|
||||
- Add `beefy_getFinalizedHead` RPC support
|
||||
- Update to latest Substrate, Kusama & Polkadot static metadata
|
||||
|
||||
|
||||
## 7.6.1 Jan 30, 2022
|
||||
|
||||
Upgdare priority: Low. Recommended for users with long-running scripts and those chains based around the latest Substrate master versions.
|
||||
|
||||
Contributed:
|
||||
|
||||
- Fix memory leak on `.raw` RPC calls (Thanks to https://github.com/r0t0r-r0t0r)
|
||||
|
||||
Changes:
|
||||
|
||||
- Adjust extraction of `Call` & `Event` types for metadata v14
|
||||
- Adjust historic `WinningData` and `SlotRange` types (36-entry variant)
|
||||
- Emit `decorated` event on API on metadata decoration
|
||||
- Dedupe and extend `WrapperKeepOpaque/WrapperOpaque`
|
||||
- Align `Range/RangeInclusive` usage with similar types
|
||||
- Adjust bounty derive, return empty on no `{treasury, bounties}.bounties`
|
||||
- Ensure handling of all `TypeDefInfo` keys in extraction
|
||||
- Add support for `rpc.contracts.uploadCode`
|
||||
- Workaround for generators where `#private = { this... }` yields undefined
|
||||
- Update to latest Substrate, Kusama & Polkadot static metadata
|
||||
|
||||
|
||||
## 7.5.1 Jan 23, 2022
|
||||
|
||||
Upgrade priority: Low. Recommended for users of the latest contract pallet and ink! versions.
|
||||
|
||||
Contributed:
|
||||
|
||||
- Add additional namespaced contract tests (Thanks to https://github.com/VargSupercolony)
|
||||
|
||||
Changes:
|
||||
|
||||
- Adjust `Registry` consistency, augment extensions
|
||||
- Add `.multi` support on `api.at(...).<section>.<method>`
|
||||
- Add support for ink! metadata V3 with payable constructors
|
||||
- Cleanup ink! metadata parsing, allowing for easier extension
|
||||
- Expose `contract.{query, tx}.<method>.meta`, aligning with API
|
||||
- Fix storage metadata, aligning method with decorated name
|
||||
- Adjust typegen, only using exportInterface
|
||||
- Added Kusama/Polkadot 9151 upgrade block (known types)
|
||||
- Update to latest Substrate, Kusama & Polkadot static metadata
|
||||
|
||||
|
||||
## 7.4.1 Jan 15, 2022
|
||||
|
||||
Upgrade priority: Medium. Required for all chains using `Range` and `RangeInclusive` types. Also includes better error handling for number conversions.
|
||||
|
||||
Changes:
|
||||
|
||||
- Asserts for invalid number format inputs (MAX_SAFE_INTEGER, float)
|
||||
- Ensure `Range/RangeInclusive` variant check does not fail on encoding
|
||||
- Ensure non-option calls in api-contract are marked as `@deprecated`
|
||||
- Added Kusama 9150 upgrade block (known types)
|
||||
- Update `@polkadot/util` to 8.3.2
|
||||
|
||||
|
||||
## 7.3.1 Jan 9, 2022
|
||||
|
||||
Upgrade priority: Low. Maintenance upgrade, tracking the latest `@polkadot` libraries.
|
||||
|
||||
Changes:
|
||||
|
||||
- Extend support for `WrapperKeepOpaque` with internal decoding (allowed to fail)
|
||||
- Adjust max-entries in historic provider LRU
|
||||
- Update to latest Substrate/Polkadot/Kusama metadata
|
||||
- Update `@polkadot/util` to 8.3.1
|
||||
- Update package paths under ESM
|
||||
|
||||
|
||||
## 7.2.1 Jan 3, 2022
|
||||
|
||||
Upgrade priority: Low. Recommended for users generating TS chain-specific augmentations.
|
||||
|
||||
Changes:
|
||||
|
||||
- Convert contract `ReturnFlags` to set (as opposed to bare `u32`)
|
||||
- Adjust chain-specific augmentation to not auto-add RPC imports
|
||||
- Ensure package path is availble under ESM & CJS
|
||||
|
||||
|
||||
## 7.1.1 Dec 26, 2021
|
||||
|
||||
Upgrade priority: Low. Recommended for users of contracts form Substrate master & Polkador/Kusama TS app developers where specific chain augmentation would be helpful.
|
||||
|
||||
Contributed:
|
||||
|
||||
- Expose `storageDepositLimit` on contract options (Thanks to https://github.com/kwingram25)
|
||||
|
||||
Changes:
|
||||
|
||||
- Expose `@polkadot/api-augment/{kusama, polkadot, substrate}` for specific augmentations (The bare `@polkadot/api-augment` is equivalent to `/substrate`, keeping the existing behavior)
|
||||
- Expose `@polkadot/types-augment/{lookup, registry}` variants (The bare `@polkadot/types-augment` applies both)
|
||||
- Expose `txHash` on submittable results, e.g. `tx.signAndSend(..., ({ txHash }) => ...)`
|
||||
- Align casing for TS & exposed queries (adjusts for `ALLCAPS` entries)
|
||||
- Additional tests for `Option` codec (explicit in expectations)
|
||||
- Update to latest Substrate, Kusama & Polkadot static metadata
|
||||
|
||||
|
||||
## 7.0.2 Dec 21, 2021
|
||||
|
||||
Upgrade priority: Low. Recommended for applications where collective derives with aliasses are being used.
|
||||
|
||||
Changes:
|
||||
|
||||
- Fix alias module mapping in collective derives
|
||||
- Update `dispathchQueue` derive to align with latest Substrate
|
||||
- Update to latest Substrate metadata
|
||||
|
||||
|
||||
## 7.0.1 Dec 20, 2021
|
||||
|
||||
Upgrade priority: Low. Recommended for TS users with their own non-Polkadot/Kusama chains.
|
||||
|
||||
- **Breaking changes** For TS users the default API augmentation is now optional. This means that the API, for TypeScript, is not decorated by default with the Substrate types and encpoints. TS users should add a singular `import '@polkadot/api-augment';` in their code to restore old behavior. A full writeup of the rationale and other options can be found [in the FAQ](https://polkadot.js.org/docs/api/FAQ#since-upgrading-to-the-7x-series-typescript-augmentation-is-missing)
|
||||
|
||||
- **Breaking change** To cater for the above, chain-specific interfaces generated with older versions may not be compatible with the current version of the API. Additionally, TS interfaces generated with this version of the API is not compatible with older API versions.
|
||||
|
||||
Contributed:
|
||||
|
||||
- Add contracts storage deposit support (Thanks to https://github.com/statictype)
|
||||
- Do not throw error on socket closes (Thanks to https://github.com/xcaptain)
|
||||
|
||||
Changes:
|
||||
|
||||
- Split `@polkadot/types-{codec, create}` packages from `types`
|
||||
- Extract `@polkadot/{api, rpc, types}-augment` (now optional, TS-user applied)
|
||||
- Rework build steps to use TS project references
|
||||
- Add Polkadot 9140 upgrade block
|
||||
- Update to latest Substrate, Kusama & Polkadot static metadata
|
||||
|
||||
|
||||
## 6.12.1 Dec 13, 2021
|
||||
|
||||
Upgrade priority: Low. Recommended for users of contracts on the current Substrate master version and TS users who generate metadata v14 interfaces.
|
||||
|
||||
Changes:
|
||||
|
||||
- Add support for contracts V2 ABI metadata
|
||||
- `CheckNonZeroSender` signed extension support
|
||||
- Remove old-style capabilities detection (unneeded with metadata v14+)
|
||||
- Generated TS Enum interfaces now expose the `type` (with allowed values)
|
||||
- Split local & package imports in generated TS interfaces
|
||||
- Add Kusama 9130 upgrade block
|
||||
- Internal maintainability cleanups
|
||||
|
||||
|
||||
## 6.11.1 Dec 5, 2021
|
||||
|
||||
Upgrade priority: Low. Maintenance upgrade, tracking the latest `@polkadot` libraries.
|
||||
|
||||
Changes:
|
||||
|
||||
- Align `state_traceBlock` RPC with Substrate
|
||||
- Bump static metadata for latest Substrate, Polkadot & Kusama
|
||||
|
||||
|
||||
## 6.10.3 Nov 30, 2021
|
||||
|
||||
Upgrade priority: Medium. Recommended for 6.10.x users
|
||||
|
||||
Changes:
|
||||
|
||||
- Fix ss58Prefix extraction
|
||||
|
||||
|
||||
## 6.10.2 Nov 30, 2021
|
||||
|
||||
Upgrade priority: Low. Aligns TS augmentation and decoration with older behavior for ALL_CAPS identifiers.
|
||||
|
||||
Changes:
|
||||
|
||||
- Adjust augmentation interface consistency with top-level declarations
|
||||
- Update `@polkadot/util` to 8.0.4 with adjusted `stringCamelCase`
|
||||
|
||||
|
||||
## 6.10.1 Nov 29, 2021
|
||||
|
||||
Upgrade priority: Low. Recommended for users of `HttpProvider` and for chains generating types using TS augmentation.
|
||||
|
||||
Changes:
|
||||
|
||||
- Fix for HttpProvider init (RPC sections with only subscriptions)
|
||||
- Re-order imports in lookup type augmentation interfaces
|
||||
- Bump static metadata for latest Substrate, Polkadot & Kusama
|
||||
|
||||
|
||||
## 6.9.2 Nov 22, 2021
|
||||
|
||||
Upgrade priority: Medium. Pulls in `@polkadot/util-crypto` fix for TS projects.
|
||||
|
||||
Changes:
|
||||
|
||||
- Update `@polkadot/util-crypto` with TS compilation work-around
|
||||
|
||||
|
||||
## 6.9.1 Nov 21, 2021
|
||||
|
||||
Upgrade priority: Medium. Recommended for metadata v14 parachains. For TS users, the package now support TypeScript 4.5.2 and allows extraction of user types from metadata v14.
|
||||
|
||||
Contributed:
|
||||
|
||||
- Lookup TS generation for all metadata v14 chains (Thanks to https://github.com/savudani8)
|
||||
- Update `BeefySignedCommitment` type (Thanks to https://github.com/czl1378)
|
||||
|
||||
Changes:
|
||||
|
||||
- Adjust runtime `*::{Call, Event}` matching for metadata v14
|
||||
- Adjust derive decoration with (optional) known methods
|
||||
- Expose `*{Call, Event, Error}` TS types for metadata v14
|
||||
- Align Option `.toJSON` output with Substrate input
|
||||
- Optimize Enum, Struct, Option & Number decoding paths
|
||||
- Ajust PascalCase conversions with function from util
|
||||
- Prepare pre-v13 types for optional injection
|
||||
- Adjustments for TS 4.5.2 support (flatten type infers)
|
||||
|
||||
|
||||
## 6.8.1 Nov 11, 2021
|
||||
|
||||
Upgrade priority: Low. Recommended for chains with non-MultiSignature variants where `paymentInfo` is required.
|
||||
|
||||
Changes:
|
||||
|
||||
- Adjust `paymentInfo` signatures to cater for non-MultiSignature variants
|
||||
- Remove `::generic::` from names & namespaces under metadata v14
|
||||
- Add Polkadot 9122 upgrade block
|
||||
- Cleanup Polkadot/Kusama/Westend/Rococo known types (>= v14 metadata)
|
||||
- Internal `decorateMethod{Promise, Rx}` renamed to `to{Promise, Rx}Method`
|
||||
- Add RPC provider-level LRU for historic requests
|
||||
- Add optional known runtime version param to internal `rx.queryAt`
|
||||
|
||||
|
||||
## 6.7.2 Nov 9, 2021
|
||||
|
||||
Upgrade priority: Low. Recommended for chains on metadata v14 with non-default `Address` implementations.
|
||||
|
||||
Changes:
|
||||
|
||||
- Detect `AccountId` & `Address` types via `SpRuntime*` definitions
|
||||
- Adjust api-derive call ordering when using `.queryAt`
|
||||
|
||||
|
||||
## 6.7.1 Nov 7, 2021
|
||||
|
||||
Upgrade priority: Low. Internal maintenance updates, focussed on internal optimizations.
|
||||
|
||||
Changelog:
|
||||
|
||||
- Optimize Extrinsic & block handling (Thanks to https://github.com/nazar-pc)
|
||||
- Add `account::AccountId20` mapping (Thanks to https://github.com/joelamouche)
|
||||
|
||||
Changes:
|
||||
|
||||
- Use new-gen `voteLockingPeriod` in democracy derives (as available)
|
||||
- Dynamically inject getters for `Extrinsic` payloads
|
||||
- Optimize caching for complex constructed type classes per registry
|
||||
- Convert metadata, rpc and api to use lazy decoration
|
||||
- Split u8a decoding paths for `Vec` (different from general path)
|
||||
- Keep track of initial u8a decoded length inside base Codecs
|
||||
- Extract multi property assignments for `Struct`, `Set`, `Json` & `Enum`
|
||||
- Move `PortableRegistry` location inside `@polkadot/types/metadata`
|
||||
- Bump static metadata for latest Substrate, Polkadot & Kusama
|
||||
|
||||
|
||||
## 6.6.1 Nov 1, 2021
|
||||
|
||||
Upgrade priority: Low. Internal maintenance updates.
|
||||
|
||||
Changes:
|
||||
|
||||
- Fix construction for `palletVersion` keys with correct prefix
|
||||
- Add Polkadot `EthereumAddress` as a known `PortableRegistry` override
|
||||
- De-dupe `PortableRegistry` namespace splitting operations
|
||||
- Optimize internal `AbstractArray` & `Struct` u8a decoding
|
||||
- Shortcut `Struct` construction from `Struct` instance
|
||||
- Use internal `lookupName` in `createClass` (allows deeply recursive lookups)
|
||||
- Codec `toHex()` will now correctly return the TS `HexString` type
|
||||
- Update known upgrade blocks for Westend & Kusama
|
||||
- Bump static metadata for latest Substrate, Polkadot & Kusama
|
||||
|
||||
|
||||
## 6.5.2 Oct 26, 2021
|
||||
|
||||
Upgrade priority: Low. Recommended for users with `.at` queries on unknown blocks.
|
||||
|
||||
Changes:
|
||||
|
||||
- Adjust `toHuman` on `Call` to return names & (not only) values
|
||||
- Allow for optional known `RuntimeVersion` to short-circuit `api.at`
|
||||
- Ensure `Struct` decodes fully on `null` input (equivalent to `undefined` & `{}`)
|
||||
|
||||
|
||||
## 6.5.1 Oct 24, 2021
|
||||
|
||||
Upgrade priority: Low. Internal maintenance upgrades.
|
||||
|
||||
Contributed:
|
||||
|
||||
- Add `Auction` to Polkadot pre-0.9.11 `ProxyType` (Thanks to https://github.com/wirednkod)
|
||||
|
||||
Changes:
|
||||
|
||||
- Ecah module now exposes the Substrate-added `palletVersion` storage item
|
||||
- Adjust Websocket `maxReceivedFrameSize` under Node
|
||||
- `TypeDef` structures now contain the `typeName` from metadata v14 on fields
|
||||
- Fix browser bundle imports for xcm-mapping (move to `types-known`)
|
||||
- Expose all extracted type names in `PortableRegistry`
|
||||
- Adjust `toJSON` (Ascii) output detection on `Raw`
|
||||
- Adjust `api.rpc.*.*.raw(..args)` return to the actual over-the-wire JSON result
|
||||
- Remove `api.rpc.*.*.json(..args)` since it now overlaps with new `.raw`
|
||||
- Bump static metadata for latest Substrate, Polkadot & Kusama
|
||||
|
||||
|
||||
## 6.4.2 Oct 18, 2021
|
||||
|
||||
Upgrade priority: Low. Recommended for Westmint runtime 500+
|
||||
|
||||
Changes:
|
||||
|
||||
- Ensure `SignerPayload` correctly serializes `Option` with `None`
|
||||
- Add Ethereum `BlockV{0, 1, 2}` types, aligning with latest Frontier
|
||||
- Additional tests for metadata serialization/de-serialization
|
||||
|
||||
|
||||
## 6.4.1 Oct 17, 2021
|
||||
|
||||
Upgrade priority: Low. Recommended for Kusama & Polkadot runtime 9110+
|
||||
|
||||
Changes:
|
||||
|
||||
- Adjust Statemint known types for version 4+
|
||||
- Adjust balance derives to return multiple vesting schedules
|
||||
- Adjust crowdloan derives to use paged key retrieval
|
||||
- Ensure account indices (derived) are `Accountindex` types
|
||||
- Adjust metadata v14 to include top-level type field from metadata
|
||||
- Filter metadata v14 unused enum fields in TS generation
|
||||
- Adjust derives to use more metadata v14 types on returns
|
||||
- Add Kusama & Polkadot upgrade blocks for 9100/9110
|
||||
- Align contract usage with latrest `PortableRegistry` (remove old-generation)
|
||||
- Adjust contracts `InstantiateReturnValue` type (no rent projection after 267)
|
||||
- Adjust for eslint v8 checks
|
||||
- Don't run any online tests on CI by default (uncontrolled external dependencies)
|
||||
|
||||
|
||||
## 6.3.1 Oct 9, 2021
|
||||
|
||||
Upgrade priority: Low. Recoemmended for Kusama & Polkadot runtime 9100+
|
||||
Upgrade priority: Low. Recommended for Kusama & Polkadot runtime 9100+
|
||||
|
||||
Changes:
|
||||
|
||||
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
2958 Jaco 8.4.2 (#4828)
|
||||
83 Amaury Martiny StatementKind: Regular and Saft (#2303)
|
||||
37 Keith Ingram Update contract types and rpc (#4541)
|
||||
35 Stefanie Doll Updated child storage parameters (#1709)
|
||||
20 Luke Schoen fix: Fixes TypeError: Cannot read property 'vesting' of undefined (#1970)
|
||||
16 Xiliang Chen implement entriesPaged and keysPages for query at (#4701)
|
||||
15 Jeremías Díaz feat(types): add correct tuple type to storage key (#3054)
|
||||
11 Ian He HttpProvider support clone() (#3949)
|
||||
10 Axel Chalon Make Enum/Tuple constructor use value directly if instance (#1954)
|
||||
5 Chevdor Fix metadata package link (#3458)
|
||||
5 Jake Naviasky Fixing approvalFlagsToBools. (#1250)
|
||||
4 Alex D Use derive customAccount and customLocks for balance overrides (#3248)
|
||||
4 Alex Wang fix issue that creates duplicate providers (#983)
|
||||
4 Alexander Popiak Add asset id in signing (#4009)
|
||||
4 Joshy Orndorff spelling; efect -> effect (#2295)
|
||||
4 Nantian fix bigint type (#3869)
|
||||
4 Scott Twiname Add support for historical BlockNumber rpc methods (#4574)
|
||||
4 Thibaut Sardan no subscription for http (#3127)
|
||||
3 André Silva add support for ValidationCodeHash (#3640)
|
||||
3 Antoine Estienne Adapted to display moonbeam author (#3108)
|
||||
3 Arjan Zijderveld Added `Emergency` to `ElectionPhase` (#3707)
|
||||
3 Ewa Kowalska Handle no council for bounties proposals (#3062)
|
||||
3 hamidra add support for n key entries for NMaps (#3886)
|
||||
3 Hamza Tokuchi more typos (#2532)
|
||||
3 Josep M Sobrepere docs: improve rpc-provider README (#4719)
|
||||
3 Julien Eluard Fixed typos about module balances (#1402)
|
||||
3 KarishmaBothara Backward compatibility thing (#3511)
|
||||
3 Miguel Hervas Adding RT4 Types (#3007)
|
||||
3 Nikos Kontakis Bump @substrate/connect in rpc-provider to 0.7.4 (#4796)
|
||||
3 Shawn Tabrizi Add `isReadyOrError` when connecting to API (#2577)
|
||||
3 YJ feat: Vote interface as U8a (#1061)
|
||||
2 Alexander Krupenkin Add [u8; 33] type width for U8aFixed type (#2391)
|
||||
2 Branan Riley Add proxy type for Centrifuge (#3940)
|
||||
2 Caio Add `Range` and `RangeInclusive` types (#3791)
|
||||
2 HackFisher Update maxExtrinsic definition (#4703)
|
||||
2 Jakub Pánik All heads subscription (#1899)
|
||||
2 James Lefrère Add `.eq()` usage to docs and fix docs typos (#1405)
|
||||
2 Keith Yeung Allow keyPrefix to accept an additional argument for double maps (#2230)
|
||||
2 MOZGIII Follow-up fix after #4665 (#4666)
|
||||
2 Paweł Nguyen Fix a minor typo in cookbook blocks docs (#2294)
|
||||
2 sung wu Update tx.md (#2485)
|
||||
2 Veliko Abi constructor takes different parameters (#3347)
|
||||
2 Wei Tang Use /usr/bin/env bash instead of /bin/bash (#2053)
|
||||
2 Zannis Kalampoukis fix: Typegen handles structs and vectors of structs without erroring (#4743)
|
||||
2 扩散性百万甜面包 Typo, deocrateMethod -> decorateMethod (#1594)
|
||||
1 Andreea Eftene Add storage deposit support (#4304)
|
||||
1 Brad Larson [NEW] Support for custom headers with providers (#2423)
|
||||
1 chriswmercer little readme tweak (#279)
|
||||
1 codingsh #2182 - add: search for docs (#2232)
|
||||
1 coolcorexix Investigate 4559 v2 (#4608)
|
||||
1 Dan Forbes Add WeightToFeeCoefficient type (#2296)
|
||||
1 Daniel Maricic Fixed typo in README (#2402)
|
||||
1 Daniel Savu fix: Generate custom type definitions (#4224)
|
||||
1 David Don't log full error (#2952)
|
||||
1 Denis Tsai realign AccountKey20Junction to polkadot xcm's Junction enum (#3770)
|
||||
1 djuanito.eth Update fees to current constants (#2320)
|
||||
1 Drew Stone Update evm definitions to include vicinity (#2279)
|
||||
1 Dylan Galea Updated users of the polkadot-js/api (#2027)
|
||||
1 flex Change BeefySignedCommitment signatures type to EcdsaSignature (#4204)
|
||||
1 Furqan A fix: fixed 404 to the docs from the api readme (#3985)
|
||||
1 Gérard Dethier Fix LRUCache memory leak. (#4520)
|
||||
1 Gerben van de Wiel Adding some extra notes on changes in the specname (#2329)
|
||||
1 HackFisher fix OutboundLaneData types (#3992)
|
||||
1 Hoani Bryson Multiple Endpoint support for WsProvider (#2234)
|
||||
1 Hyungsuk Kang Update fees.ts (#1014)
|
||||
1 icodezjb Update SessionKeys (#3035)
|
||||
1 iiiiiiii Make unknownTypes externally accessible (#3263)
|
||||
1 JesseAbram added 07 Example showing how to make a transfer with allowed block permissions folder in docs (#1062)
|
||||
1 Joey don't throw error at `onSocketClose` (#4363)
|
||||
1 Jordan Allow typegen for custom RPCs (#2876)
|
||||
1 JQQQ Allow rpc expose definition/ metadata (#3488)
|
||||
1 Kian Paimani Update definitions.ts (#2514)
|
||||
1 Krzysztof Jelski Derive for bounties and descriptions (#2925)
|
||||
1 Lae Make sure awaiting on an api object won't stuck forever on error (#1763)
|
||||
1 Lezek123 BTreeSet and BTreeMap - encoding and serialization fixes (#3789)
|
||||
1 Lovesh Harchandani Fix name of "getBlock" in package "api-derive" and export it in "index.ts" (#2857)
|
||||
1 Mario Neises fix usage with typescript (#405)
|
||||
1 Mario Pino Add PolkaStats to API users (#1593)
|
||||
1 Mark Robert Henderson Update warnings.ts to have the latest URLs (#2720)
|
||||
1 Matej Nemček added Kodadot to @polkadot/api users section (#2220)
|
||||
1 Mokhtar Naamani Disable websocket outgoing message fragmentation for w3cwebsocket (#2738)
|
||||
1 Nazar Mokrynskyi Performance tweaks (#4143)
|
||||
1 Nikhil Ranjan add vestingPerBlock and vestingEndBlock in DeriveBalancesAll when doing calcBalances (#2563)
|
||||
1 Nikolay Volf Fix typo (#1730)
|
||||
1 Noah Corona Add rpc error fields (#4637)
|
||||
1 Oleksandr Mykhailenko Add more complex namespaced contracts & test cases for them (#4472)
|
||||
1 Paul M Fox Basic BTreeMaps codec support (#1474)
|
||||
1 philipstanislaus Update types for centrifuge chain v1.2.0 (#2424)
|
||||
1 qiuhao update DeriveCustom type (#2581)
|
||||
1 r0t0r-r0t0r Fix memory leak on raw rpc call (#4505)
|
||||
1 Rocco Musolino remove broken link (#2671)
|
||||
1 satellitex Add BTreeSet<V> Codec (#1639)
|
||||
1 satellitex Add traits replace rules. for invalid cases `::<type>` and `<type>::`. (#885)
|
||||
1 Satyam Agrawal update as per the 0.97.0-beta.38 release (#1617)
|
||||
1 Sean Young Solang requires u256 and i256 types (#2752)
|
||||
1 serge make WS provider timeout configurable (#4758)
|
||||
1 Sergei Pepyakin INK! -> ink! (#1347)
|
||||
1 WoeOm adapt Darwinia, Crab Network types (#3498)
|
||||
1 Xat_MassacrE Fix packages/types/src/codec/utils/encodeTypes.ts encodeSubTypes bug (#1544)
|
||||
1 Yaroslav Bolyukin Support BTreeMap/BTreeSet in typegen (#4682)
|
||||
1 yjh fix MetadataVersioned.asV12 (#2983)
|
||||
1 Yuri fixes #3693 Fix uniques return types (#3694)
|
||||
1 Zeke Mostov fix: Allow sudo for polkadot indexed proxy enum (#3286)
|
||||
@@ -14,17 +14,3 @@ If you are an existing user, please be sure to track the [CHANGELOG](CHANGELOG.m
|
||||
## tutorials
|
||||
|
||||
Looking for tutorials to get started? Look at [examples](https://polkadot.js.org/docs/api/examples/promise/) for guides on how to use the API to make queries and submit transactions.
|
||||
|
||||
## overview
|
||||
|
||||
The API is split up into a number of internal packages -
|
||||
|
||||
- [@polkadot/api](packages/api/) The API library, providing both Promise and RxJS Observable-based interfaces. This is the main user-facing entry point.
|
||||
- [@polkadot/api-derive](packages/api-derive/) Derived results that are injected into the API, allowing for combinations of various query results (only used internally and exposed on the Api instances via `api.derive.*`)
|
||||
- [@polkadot/metadata](packages/metadata/) Base extrinsic, storage and constant injectors for injection
|
||||
- [@polkadot/rpc-core](packages/rpc-core/) Wrapper around all [JSON-RPC methods](https://polkadot.js.org/docs/substrate/rpc) exposed by a Polkadot network client
|
||||
- [@polkadot/rpc-provider](packages/rpc-provider/) Providers for connecting to nodes, including WebSockets and Http
|
||||
|
||||
Type definitions for interfaces as exposed by Polkadot & Substrate clients -
|
||||
|
||||
- [@polkadot/types](packages/types/) Codecs for all Polkadot and Substrate primitives
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2021 @polkadot/api authors & contributors
|
||||
// Copyright 2017-2022 @polkadot/api authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
module.exports = require('@polkadot/dev/config/babel-config-cjs.cjs');
|
||||
|
||||
+4
-5
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2021 @polkadot/api authors & contributors
|
||||
// Copyright 2017-2022 @polkadot/api authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const config = require('@polkadot/dev/config/jest.cjs');
|
||||
@@ -6,13 +6,12 @@ const config = require('@polkadot/dev/config/jest.cjs');
|
||||
module.exports = {
|
||||
...config,
|
||||
moduleNameMapper: {
|
||||
'@polkadot/api-(contract|derive)(.*)$': '<rootDir>/packages/api-$1/src/$2',
|
||||
'@polkadot/api-(augment|base|contract|derive)(.*)$': '<rootDir>/packages/api-$1/src/$2',
|
||||
// eslint-disable-next-line sort-keys
|
||||
'@polkadot/api(.*)$': '<rootDir>/packages/api/src/$1',
|
||||
'@polkadot/metadata(.*)$': '<rootDir>/packages/metadata/src/$1',
|
||||
'@polkadot/rpc-(core|provider)(.*)$': '<rootDir>/packages/rpc-$1/src/$2',
|
||||
'@polkadot/rpc-(augment|core|provider)(.*)$': '<rootDir>/packages/rpc-$1/src/$2',
|
||||
'@polkadot/typegen(.*)$': '<rootDir>/packages/typegen/src/$1',
|
||||
'@polkadot/types-(known|support)(.*)$': '<rootDir>/packages/types-$1/src/$2',
|
||||
'@polkadot/types-(augment|codec|create|known|support)(.*)$': '<rootDir>/packages/types-$1/src/$2',
|
||||
// eslint-disable-next-line sort-keys
|
||||
'@polkadot/types(.*)$': '<rootDir>/packages/types/src/$1'
|
||||
},
|
||||
|
||||
+20
-15
@@ -1,40 +1,45 @@
|
||||
{
|
||||
"repository": "https://github.com/polkadot-js/api",
|
||||
"author": "Jaco Greeff <jacogr@gmail.com>",
|
||||
"license": "Apache-2",
|
||||
"bugs": "https://github.com/polkadot-js/api/issues",
|
||||
"homepage": "https://github.com/polkadot-js/api#readme",
|
||||
"license": "Apache-2.0",
|
||||
"packageManager": "yarn@3.2.0",
|
||||
"private": true,
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/polkadot-js/api.git"
|
||||
},
|
||||
"sideEffects": false,
|
||||
"type": "commonjs",
|
||||
"version": "8.4.2",
|
||||
"workspaces": [
|
||||
"packages/*"
|
||||
],
|
||||
"resolutions": {
|
||||
"typescript": "^4.4.3"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "yarn build:interfaces && polkadot-dev-build-ts",
|
||||
"build:extra": "(cd packages/typegen && copyfiles scripts/* build)",
|
||||
"build:interfaces": "polkadot-types-internal-interfaces",
|
||||
"build:release": "polkadot-ci-ghact-build",
|
||||
"build:rollup": "polkadot-exec-rollup --config",
|
||||
"docs:metadata": "polkadot-types-internal-metadata",
|
||||
"chain:info": "polkadot-types-chain-info",
|
||||
"lint": "polkadot-dev-run-lint",
|
||||
"clean": "polkadot-dev-clean-build",
|
||||
"docs:metadata": "polkadot-types-internal-metadata",
|
||||
"lint": "polkadot-dev-run-lint",
|
||||
"postinstall": "polkadot-dev-yarn-only",
|
||||
"test": "polkadot-dev-run-test --coverage --forceExit --runInBand --testPathIgnorePatterns e2e",
|
||||
"test:one": "polkadot-dev-run-test --detectOpenHandles --forceExit",
|
||||
"test:watch": "polkadot-dev-run-test --watch"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.15.8",
|
||||
"@babel/register": "^7.15.3",
|
||||
"@babel/runtime": "^7.15.4",
|
||||
"@polkadot/dev": "^0.62.70",
|
||||
"@polkadot/ts": "^0.4.8",
|
||||
"@babel/core": "^7.17.10",
|
||||
"@babel/register": "^7.17.7",
|
||||
"@babel/runtime": "^7.17.9",
|
||||
"@polkadot/dev": "^0.66.23",
|
||||
"@polkadot/typegen": "workspace:packages/typegen",
|
||||
"@types/jest": "^27.0.2",
|
||||
"@types/jest": "^27.5.1",
|
||||
"copyfiles": "^2.4.1"
|
||||
},
|
||||
"version": "6.3.1",
|
||||
"packageManager": "yarn@3.0.1"
|
||||
"resolutions": {
|
||||
"typescript": "^4.6.4"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,201 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
@@ -0,0 +1,3 @@
|
||||
# @polkadot/api-augment
|
||||
|
||||
Generated augmentation.
|
||||
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"author": "Jaco Greeff <jacogr@gmail.com>",
|
||||
"bugs": "https://github.com/polkadot-js/api/issues",
|
||||
"contributors": [],
|
||||
"description": "API generated augmentation",
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
},
|
||||
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/api-augment#readme",
|
||||
"license": "Apache-2.0",
|
||||
"maintainers": [],
|
||||
"name": "@polkadot/api-augment",
|
||||
"repository": {
|
||||
"directory": "packages/api-augment",
|
||||
"type": "git",
|
||||
"url": "https://github.com/polkadot-js/api.git"
|
||||
},
|
||||
"sideEffects": [
|
||||
"./detectPackage.js",
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"type": "module",
|
||||
"version": "8.4.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.17.9",
|
||||
"@polkadot/api-base": "8.4.2",
|
||||
"@polkadot/rpc-augment": "8.4.2",
|
||||
"@polkadot/types": "8.4.2",
|
||||
"@polkadot/types-augment": "8.4.2",
|
||||
"@polkadot/types-codec": "8.4.2",
|
||||
"@polkadot/util": "^9.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/types-support": "8.4.2"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
// Copyright 2017-2022 @polkadot/api-augment authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// for the API, we decorate not only the endpoints, but all types
|
||||
import '@polkadot/rpc-augment';
|
||||
import '@polkadot/types-augment';
|
||||
@@ -0,0 +1,6 @@
|
||||
// Copyright 2017-2022 @polkadot/api-augment authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import './substrate';
|
||||
|
||||
export { packageInfo } from './packageInfo';
|
||||
@@ -0,0 +1,8 @@
|
||||
// Copyright 2017-2022 @polkadot/api-augment authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { packageInfo as baseInfo } from '@polkadot/api-base/packageInfo';
|
||||
import { packageInfo as typesInfo } from '@polkadot/types/packageInfo';
|
||||
import { packageInfo as codecInfo } from '@polkadot/types-codec/packageInfo';
|
||||
|
||||
export default [baseInfo, typesInfo, codecInfo];
|
||||
@@ -0,0 +1,11 @@
|
||||
// Copyright 2017-2022 @polkadot/api-augment authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
import { detectPackage } from '@polkadot/util';
|
||||
|
||||
import others from './detectOther';
|
||||
import { packageInfo } from './packageInfo';
|
||||
|
||||
detectPackage(packageInfo, null, others);
|
||||
@@ -0,0 +1,6 @@
|
||||
// Copyright 2017-2022 @polkadot/api-augment authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import './detectPackage';
|
||||
|
||||
export * from './bundle';
|
||||
@@ -1,36 +1,27 @@
|
||||
// Auto-generated via `yarn polkadot-types-from-chain`, do not edit
|
||||
/* eslint-disable */
|
||||
|
||||
import type { ApiTypes } from '@polkadot/api/types';
|
||||
import type { U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types';
|
||||
import type { ApiTypes } from '@polkadot/api-base/types';
|
||||
import type { Bytes, Option, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
|
||||
import type { Codec } from '@polkadot/types-codec/types';
|
||||
import type { Perbill, Percent, Permill } from '@polkadot/types/interfaces/runtime';
|
||||
import type { FrameSupportPalletId, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, PalletContractsSchedule, SpVersionRuntimeVersion } from '@polkadot/types/lookup';
|
||||
import type { Codec } from '@polkadot/types/types';
|
||||
import type { FrameSupportPalletId, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, SpVersionRuntimeVersion } from '@polkadot/types/lookup';
|
||||
|
||||
declare module '@polkadot/api/types/consts' {
|
||||
export interface AugmentedConsts<ApiType> {
|
||||
assets: {
|
||||
declare module '@polkadot/api-base/types/consts' {
|
||||
export interface AugmentedConsts<ApiType extends ApiTypes> {
|
||||
auctions: {
|
||||
/**
|
||||
* The amount of funds that must be reserved when creating a new approval.
|
||||
* The number of blocks over which an auction may be retroactively ended.
|
||||
**/
|
||||
approvalDeposit: u128 & AugmentedConst<ApiType>;
|
||||
endingPeriod: u32 & AugmentedConst<ApiType>;
|
||||
leasePeriodsPerSlot: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The basic amount of funds that must be reserved for an asset.
|
||||
* The length of each sample to take during the ending period.
|
||||
*
|
||||
* `EndingPeriod` / `SampleLength` = Total # of Samples
|
||||
**/
|
||||
assetDeposit: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The basic amount of funds that must be reserved when adding metadata to your asset.
|
||||
**/
|
||||
metadataDepositBase: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The additional funds that must be reserved for the number of bytes you store in your
|
||||
* metadata.
|
||||
**/
|
||||
metadataDepositPerByte: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum length of a name or symbol stored on-chain.
|
||||
**/
|
||||
stringLimit: u32 & AugmentedConst<ApiType>;
|
||||
sampleLength: u32 & AugmentedConst<ApiType>;
|
||||
slotRangeCount: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
@@ -76,23 +67,23 @@ declare module '@polkadot/api/types/consts' {
|
||||
/**
|
||||
* The list of thresholds separating the various bags.
|
||||
*
|
||||
* Ids are separated into unsorted bags according to their vote weight. This specifies the
|
||||
* thresholds separating the bags. An id's bag is the largest bag for which the id's weight
|
||||
* Ids are separated into unsorted bags according to their score. This specifies the
|
||||
* thresholds separating the bags. An id's bag is the largest bag for which the id's score
|
||||
* is less than or equal to its upper threshold.
|
||||
*
|
||||
* When ids are iterated, higher bags are iterated completely before lower bags. This means
|
||||
* that iteration is _semi-sorted_: ids of higher weight tend to come before ids of lower
|
||||
* weight, but peer ids within a particular bag are sorted in insertion order.
|
||||
* that iteration is _semi-sorted_: ids of higher score tend to come before ids of lower
|
||||
* score, but peer ids within a particular bag are sorted in insertion order.
|
||||
*
|
||||
* # Expressing the constant
|
||||
*
|
||||
* This constant must be sorted in strictly increasing order. Duplicate items are not
|
||||
* permitted.
|
||||
*
|
||||
* There is an implied upper limit of `VoteWeight::MAX`; that value does not need to be
|
||||
* There is an implied upper limit of `Score::MAX`; that value does not need to be
|
||||
* specified within the bag. For any two threshold lists, if one ends with
|
||||
* `VoteWeight::MAX`, the other one does not, and they are otherwise equal, the two lists
|
||||
* will behave identically.
|
||||
* `Score::MAX`, the other one does not, and they are otherwise equal, the two
|
||||
* lists will behave identically.
|
||||
*
|
||||
* # Calculation
|
||||
*
|
||||
@@ -110,8 +101,8 @@ declare module '@polkadot/api/types/consts' {
|
||||
* the procedure given above, then the constant ratio is equal to 2.
|
||||
* - If `BagThresholds::get().len() == 200`, and the thresholds are determined according to
|
||||
* the procedure given above, then the constant ratio is approximately equal to 1.248.
|
||||
* - If the threshold list begins `[1, 2, 3, ...]`, then an id with weight 0 or 1 will fall
|
||||
* into bag 0, an id with weight 2 will fall into bag 1, etc.
|
||||
* - If the threshold list begins `[1, 2, 3, ...]`, then an id with score 0 or 1 will fall
|
||||
* into bag 0, an id with score 2 will fall into bag 1, etc.
|
||||
*
|
||||
* # Migration
|
||||
*
|
||||
@@ -144,11 +135,6 @@ declare module '@polkadot/api/types/consts' {
|
||||
[key: string]: Codec;
|
||||
};
|
||||
bounties: {
|
||||
/**
|
||||
* Percentage of the curator fee that will be reserved upfront as deposit for bounty
|
||||
* curator.
|
||||
**/
|
||||
bountyCuratorDeposit: Permill & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The amount held on deposit for placing a bounty proposal.
|
||||
**/
|
||||
@@ -165,12 +151,29 @@ declare module '@polkadot/api/types/consts' {
|
||||
* Minimum value for a bounty.
|
||||
**/
|
||||
bountyValueMinimum: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Maximum amount of funds that should be placed in a deposit for making a proposal.
|
||||
**/
|
||||
curatorDepositMax: Option<u128> & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Minimum amount of funds that should be placed in a deposit for making a proposal.
|
||||
**/
|
||||
curatorDepositMin: Option<u128> & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The curator deposit is calculated as a percentage of the curator fee.
|
||||
*
|
||||
* This deposit has optional upper and lower bounds with `CuratorDepositMax` and
|
||||
* `CuratorDepositMin`.
|
||||
**/
|
||||
curatorDepositMultiplier: Permill & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The amount held on deposit per byte within the tip report reason or bounty description.
|
||||
**/
|
||||
dataDepositPerByte: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Maximum acceptable reason length.
|
||||
*
|
||||
* Benchmarks depend on this value, be sure to update weights file when changing this value
|
||||
**/
|
||||
maximumReasonLength: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
@@ -178,26 +181,41 @@ declare module '@polkadot/api/types/consts' {
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
contracts: {
|
||||
childBounties: {
|
||||
/**
|
||||
* The deposit that must be placed into the contract's account to instantiate it.
|
||||
* This is in **addition** to the [`pallet_balances::Pallet::ExistenialDeposit`].
|
||||
* The minimum balance for a contract's account can be queried using
|
||||
* [`Pallet::subsistence_threshold`].
|
||||
* Minimum value for a child-bounty.
|
||||
**/
|
||||
contractDeposit: u128 & AugmentedConst<ApiType>;
|
||||
childBountyValueMinimum: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum number of tries that can be queued for deletion.
|
||||
* Maximum number of child bounties that can be added to a parent bounty.
|
||||
**/
|
||||
deletionQueueDepth: u32 & AugmentedConst<ApiType>;
|
||||
maxActiveChildBountyCount: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum amount of weight that can be consumed per block for lazy trie removal.
|
||||
* Generic const
|
||||
**/
|
||||
deletionWeightLimit: u64 & AugmentedConst<ApiType>;
|
||||
[key: string]: Codec;
|
||||
};
|
||||
claims: {
|
||||
prefix: Bytes & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Cost schedule and limits.
|
||||
* Generic const
|
||||
**/
|
||||
schedule: PalletContractsSchedule & AugmentedConst<ApiType>;
|
||||
[key: string]: Codec;
|
||||
};
|
||||
crowdloan: {
|
||||
/**
|
||||
* The minimum amount that may be contributed into a crowdloan. Should almost certainly be at
|
||||
* least `ExistentialDeposit`.
|
||||
**/
|
||||
minContribution: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* `PalletId` for the crowdloan pallet. An appropriate value could be `PalletId(*b"py/cfund")`
|
||||
**/
|
||||
palletId: FrameSupportPalletId & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Max number of storage keys to remove per extrinsic call.
|
||||
**/
|
||||
removeKeysLimit: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
@@ -266,6 +284,26 @@ declare module '@polkadot/api/types/consts' {
|
||||
[key: string]: Codec;
|
||||
};
|
||||
electionProviderMultiPhase: {
|
||||
/**
|
||||
* The minimum amount of improvement to the solution score that defines a solution as
|
||||
* "better" in the Signed phase.
|
||||
**/
|
||||
betterSignedThreshold: Perbill & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The minimum amount of improvement to the solution score that defines a solution as
|
||||
* "better" in the Unsigned phase.
|
||||
**/
|
||||
betterUnsignedThreshold: Perbill & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum number of electable targets to put in the snapshot.
|
||||
**/
|
||||
maxElectableTargets: u16 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum number of electing voters to put in the snapshot. At the moment, snapshots
|
||||
* are only over a single block, but once multi-block elections are introduced they will
|
||||
* take place over multiple blocks.
|
||||
**/
|
||||
maxElectingVoters: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Maximum length (bytes) that the mined solution should consume.
|
||||
*
|
||||
@@ -303,6 +341,10 @@ declare module '@polkadot/api/types/consts' {
|
||||
* Per-weight deposit for a signed solution.
|
||||
**/
|
||||
signedDepositWeight: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum amount of unchecked solutions to refund the call fee for.
|
||||
**/
|
||||
signedMaxRefunds: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Maximum number of signed submissions that can be queued.
|
||||
*
|
||||
@@ -327,63 +369,10 @@ declare module '@polkadot/api/types/consts' {
|
||||
* Base reward for a signed solution
|
||||
**/
|
||||
signedRewardBase: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The minimum amount of improvement to the solution score that defines a solution as
|
||||
* "better" (in any phase).
|
||||
**/
|
||||
solutionImprovementThreshold: Perbill & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Duration of the unsigned phase.
|
||||
**/
|
||||
unsignedPhase: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum number of voters to put in the snapshot. At the moment, snapshots are only
|
||||
* over a single block, but once multi-block elections are introduced they will take place
|
||||
* over multiple blocks.
|
||||
*
|
||||
* Also, note the data type: If the voters are represented by a `u32` in `type
|
||||
* CompactSolution`, the same `u32` is used here to ensure bounds are respected.
|
||||
**/
|
||||
voterSnapshotPerBlock: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
elections: {
|
||||
/**
|
||||
* How much should be locked up in order to submit one's candidacy.
|
||||
**/
|
||||
candidacyBond: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Number of members to elect.
|
||||
**/
|
||||
desiredMembers: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Number of runners_up to keep.
|
||||
**/
|
||||
desiredRunnersUp: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Identifier for the elections-phragmen pallet's lock
|
||||
**/
|
||||
palletId: U8aFixed & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* How long each seat is kept. This defines the next block number at which an election
|
||||
* round will happen. If set to zero, no elections are ever triggered and the module will
|
||||
* be in passive mode.
|
||||
**/
|
||||
termDuration: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Base deposit associated with voting.
|
||||
*
|
||||
* This should be sensibly high to economically ensure the pallet cannot be attacked by
|
||||
* creating a gigantic number of votes.
|
||||
**/
|
||||
votingBondBase: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The amount of bond that need to be locked for each vote (32 bytes).
|
||||
**/
|
||||
votingBondFactor: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
@@ -505,26 +494,6 @@ declare module '@polkadot/api/types/consts' {
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
lottery: {
|
||||
/**
|
||||
* The max number of calls available in a single lottery.
|
||||
**/
|
||||
maxCalls: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Number of time we should try to generate a random number that has no modulo bias.
|
||||
* The larger this number, the more potential computation is used for picking the winner,
|
||||
* but also the more likely that the chosen winner is done fairly.
|
||||
**/
|
||||
maxGenerateRandom: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The Lottery's pallet id
|
||||
**/
|
||||
palletId: FrameSupportPalletId & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
multisig: {
|
||||
/**
|
||||
* The base amount of currency needed to reserve for creating a multisig execution or to
|
||||
@@ -550,6 +519,52 @@ declare module '@polkadot/api/types/consts' {
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
paras: {
|
||||
unsignedPriority: u64 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
phragmenElection: {
|
||||
/**
|
||||
* How much should be locked up in order to submit one's candidacy.
|
||||
**/
|
||||
candidacyBond: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Number of members to elect.
|
||||
**/
|
||||
desiredMembers: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Number of runners_up to keep.
|
||||
**/
|
||||
desiredRunnersUp: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Identifier for the elections-phragmen pallet's lock
|
||||
**/
|
||||
palletId: U8aFixed & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* How long each seat is kept. This defines the next block number at which an election
|
||||
* round will happen. If set to zero, no elections are ever triggered and the module will
|
||||
* be in passive mode.
|
||||
**/
|
||||
termDuration: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Base deposit associated with voting.
|
||||
*
|
||||
* This should be sensibly high to economically ensure the pallet cannot be attacked by
|
||||
* creating a gigantic number of votes.
|
||||
**/
|
||||
votingBondBase: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The amount of bond that need to be locked for each vote (32 bytes).
|
||||
**/
|
||||
votingBondFactor: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
proxy: {
|
||||
/**
|
||||
* The base amount of currency needed to reserve for creating an announcement.
|
||||
@@ -611,8 +626,13 @@ declare module '@polkadot/api/types/consts' {
|
||||
friendDepositFactor: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum amount of friends allowed in a recovery configuration.
|
||||
*
|
||||
* NOTE: The threshold programmed in this Pallet uses u16, so it does
|
||||
* not really make sense to have a limit here greater than u16::MAX.
|
||||
* But also, that is a lot more than you should probably set this value
|
||||
* to anyway...
|
||||
**/
|
||||
maxFriends: u16 & AugmentedConst<ApiType>;
|
||||
maxFriends: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The base amount of currency needed to reserve for starting a recovery.
|
||||
*
|
||||
@@ -628,6 +648,21 @@ declare module '@polkadot/api/types/consts' {
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
registrar: {
|
||||
/**
|
||||
* The deposit to be paid per byte stored on chain.
|
||||
**/
|
||||
dataDepositPerByte: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The deposit to be paid to run a parathread.
|
||||
* This should include the cost for storing the genesis head and validation code.
|
||||
**/
|
||||
paraDeposit: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
scheduler: {
|
||||
/**
|
||||
* The maximum weight that may be scheduled per block for any dispatchables of less
|
||||
@@ -644,6 +679,20 @@ declare module '@polkadot/api/types/consts' {
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
slots: {
|
||||
/**
|
||||
* The number of blocks to offset each lease period by.
|
||||
**/
|
||||
leaseOffset: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The number of blocks over which a single period lasts.
|
||||
**/
|
||||
leasePeriod: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
society: {
|
||||
/**
|
||||
* The minimum amount of a deposit required for a bid to be made.
|
||||
@@ -693,6 +742,9 @@ declare module '@polkadot/api/types/consts' {
|
||||
* Number of eras that staked funds must remain bonded for.
|
||||
**/
|
||||
bondingDuration: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Maximum number of nominations per nominator.
|
||||
**/
|
||||
maxNominations: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum number of nominators rewarded for each validator.
|
||||
@@ -701,6 +753,11 @@ declare module '@polkadot/api/types/consts' {
|
||||
* claim their reward. This used to limit the i/o cost for the nominator payout.
|
||||
**/
|
||||
maxNominatorRewardedPerValidator: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum number of `unlocking` chunks a [`StakingLedger`] can have. Effectively
|
||||
* determines how many unique eras a staker may be unbonding in.
|
||||
**/
|
||||
maxUnlockingChunks: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Number of sessions per era.
|
||||
**/
|
||||
@@ -771,6 +828,8 @@ declare module '@polkadot/api/types/consts' {
|
||||
dataDepositPerByte: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Maximum acceptable reason length.
|
||||
*
|
||||
* Benchmarks depend on this value, be sure to update weights file when changing this value
|
||||
**/
|
||||
maximumReasonLength: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
@@ -791,6 +850,10 @@ declare module '@polkadot/api/types/consts' {
|
||||
[key: string]: Codec;
|
||||
};
|
||||
transactionPayment: {
|
||||
/**
|
||||
* The polynomial that is applied in order to derive fee from length.
|
||||
**/
|
||||
lengthToFee: Vec<FrameSupportWeightsWeightToFeeCoefficient> & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* A fee mulitplier for `Operational` extrinsics to compute "virtual tip" to boost their
|
||||
* `priority`
|
||||
@@ -815,10 +878,6 @@ declare module '@polkadot/api/types/consts' {
|
||||
* transactions.
|
||||
**/
|
||||
operationalFeeMultiplier: u8 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The fee to be paid for making a transaction; the per-byte portion.
|
||||
**/
|
||||
transactionByteFee: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The polynomial that is applied in order to derive fee from weight.
|
||||
**/
|
||||
@@ -835,6 +894,8 @@ declare module '@polkadot/api/types/consts' {
|
||||
burn: Permill & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum number of approvals that can wait in the spending queue.
|
||||
*
|
||||
* NOTE: This parameter is also used within the Bounties Pallet extension if enabled.
|
||||
**/
|
||||
maxApprovals: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
@@ -846,6 +907,10 @@ declare module '@polkadot/api/types/consts' {
|
||||
* An accepted proposal gets these back. A rejected proposal does not.
|
||||
**/
|
||||
proposalBond: Permill & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Maximum amount of funds that should be placed in a deposit for making a proposal.
|
||||
**/
|
||||
proposalBondMaximum: Option<u128> & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Minimum amount of funds that should be placed in a deposit for making a proposal.
|
||||
**/
|
||||
@@ -859,45 +924,6 @@ declare module '@polkadot/api/types/consts' {
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
uniques: {
|
||||
/**
|
||||
* The basic amount of funds that must be reserved when adding an attribute to an asset.
|
||||
**/
|
||||
attributeDepositBase: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The basic amount of funds that must be reserved for an asset class.
|
||||
**/
|
||||
classDeposit: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The additional funds that must be reserved for the number of bytes store in metadata,
|
||||
* either "normal" metadata or attribute metadata.
|
||||
**/
|
||||
depositPerByte: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The basic amount of funds that must be reserved for an asset instance.
|
||||
**/
|
||||
instanceDeposit: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum length of an attribute key.
|
||||
**/
|
||||
keyLimit: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The basic amount of funds that must be reserved when adding metadata to your asset.
|
||||
**/
|
||||
metadataDepositBase: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum length of data stored on-chain.
|
||||
**/
|
||||
stringLimit: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum length of an attribute value.
|
||||
**/
|
||||
valueLimit: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
utility: {
|
||||
/**
|
||||
* The limit on the number of batched calls.
|
||||
@@ -919,9 +945,5 @@ declare module '@polkadot/api/types/consts' {
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
}
|
||||
|
||||
export interface QueryableConsts<ApiType extends ApiTypes> extends AugmentedConsts<ApiType> {
|
||||
[key: string]: QueryableModuleConsts;
|
||||
}
|
||||
}
|
||||
} // AugmentedConsts
|
||||
} // declare module
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,43 @@
|
||||
// Copyright 2017-2022 @polkadot/api-augment authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import '@polkadot/api-augment/kusama';
|
||||
|
||||
import type { PolkadotRuntimeParachainsUmpPalletEvent, XcmV2TraitsOutcome } from '@polkadot/types/lookup';
|
||||
|
||||
import { Metadata, TypeRegistry } from '@polkadot/types';
|
||||
import metadataStatic from '@polkadot/types-support/metadata/static-kusama';
|
||||
|
||||
const registry = new TypeRegistry();
|
||||
const metadata = new Metadata(registry, metadataStatic);
|
||||
|
||||
registry.setMetadata(metadata);
|
||||
|
||||
describe('correct types', (): void => {
|
||||
it('correctly creates XcmV2TraitsOutcome', (): void => {
|
||||
const test = registry.createType<XcmV2TraitsOutcome>('XcmV2TraitsOutcome', {
|
||||
Incomplete: [3_000_000_000, 'BadOrigin']
|
||||
});
|
||||
|
||||
expect(test.toHuman()).toEqual({
|
||||
Incomplete: [
|
||||
'3,000,000,000',
|
||||
'BadOrigin'
|
||||
]
|
||||
});
|
||||
expect(test.isIncomplete).toEqual(true);
|
||||
expect(test.asIncomplete.toHuman()).toEqual([
|
||||
'3,000,000,000',
|
||||
'BadOrigin'
|
||||
]);
|
||||
});
|
||||
|
||||
it('correctly creates PolkadotRuntimeParachainsUmpPalletEvent', (): void => {
|
||||
const test = registry.createType<PolkadotRuntimeParachainsUmpPalletEvent>('PolkadotRuntimeParachainsUmpPalletEvent', '0x02112233445566778811223344556677881122334455667788112233445566778801005ed0b20000000006');
|
||||
|
||||
expect(test.asExecutedUpward[1].asIncomplete.toHuman()).toEqual([
|
||||
'3,000,000,000',
|
||||
'BadOrigin'
|
||||
]);
|
||||
});
|
||||
});
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,10 +1,10 @@
|
||||
// Copyright 2017-2021 @polkadot/api authors & contributors
|
||||
// Copyright 2017-2022 @polkadot/api-augment authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import '@polkadot/types/augment';
|
||||
import '../base';
|
||||
import './consts';
|
||||
import './errors';
|
||||
import './events';
|
||||
import './query';
|
||||
import './rpc';
|
||||
import './registry';
|
||||
import './tx';
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,6 @@
|
||||
// Copyright 2017-2022 @polkadot/api-augment authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import '@polkadot/types-augment/registry/substrate';
|
||||
import '@polkadot/types-augment/registry/polkadot';
|
||||
import '@polkadot/types-augment/registry/kusama';
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,6 @@
|
||||
// Copyright 2017-2022 @polkadot/api-augment authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/api-augment', path: 'auto', type: 'auto', version: '8.4.2' };
|
||||
@@ -0,0 +1,816 @@
|
||||
// Auto-generated via `yarn polkadot-types-from-chain`, do not edit
|
||||
/* eslint-disable */
|
||||
|
||||
import type { ApiTypes } from '@polkadot/api-base/types';
|
||||
import type { Bytes, Option, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec';
|
||||
import type { Codec } from '@polkadot/types-codec/types';
|
||||
import type { Perbill, Percent, Permill } from '@polkadot/types/interfaces/runtime';
|
||||
import type { FrameSupportPalletId, FrameSupportWeightsRuntimeDbWeight, FrameSupportWeightsWeightToFeeCoefficient, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, SpVersionRuntimeVersion } from '@polkadot/types/lookup';
|
||||
|
||||
declare module '@polkadot/api-base/types/consts' {
|
||||
export interface AugmentedConsts<ApiType extends ApiTypes> {
|
||||
auctions: {
|
||||
/**
|
||||
* The number of blocks over which an auction may be retroactively ended.
|
||||
**/
|
||||
endingPeriod: u32 & AugmentedConst<ApiType>;
|
||||
leasePeriodsPerSlot: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The length of each sample to take during the ending period.
|
||||
*
|
||||
* `EndingPeriod` / `SampleLength` = Total # of Samples
|
||||
**/
|
||||
sampleLength: u32 & AugmentedConst<ApiType>;
|
||||
slotRangeCount: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
authorship: {
|
||||
/**
|
||||
* The number of blocks back we should accept uncles.
|
||||
* This means that we will deal with uncle-parents that are
|
||||
* `UncleGenerations + 1` before `now`.
|
||||
**/
|
||||
uncleGenerations: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
babe: {
|
||||
/**
|
||||
* The amount of time, in slots, that each epoch should last.
|
||||
* NOTE: Currently it is not possible to change the epoch duration after
|
||||
* the chain has started. Attempting to do so will brick block production.
|
||||
**/
|
||||
epochDuration: u64 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The expected average block time at which BABE should be creating
|
||||
* blocks. Since BABE is probabilistic it is not trivial to figure out
|
||||
* what the expected average block time should be based on the slot
|
||||
* duration and the security parameter `c` (where `1 - c` represents
|
||||
* the probability of a slot being empty).
|
||||
**/
|
||||
expectedBlockTime: u64 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Max number of authorities allowed
|
||||
**/
|
||||
maxAuthorities: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
bagsList: {
|
||||
/**
|
||||
* The list of thresholds separating the various bags.
|
||||
*
|
||||
* Ids are separated into unsorted bags according to their score. This specifies the
|
||||
* thresholds separating the bags. An id's bag is the largest bag for which the id's score
|
||||
* is less than or equal to its upper threshold.
|
||||
*
|
||||
* When ids are iterated, higher bags are iterated completely before lower bags. This means
|
||||
* that iteration is _semi-sorted_: ids of higher score tend to come before ids of lower
|
||||
* score, but peer ids within a particular bag are sorted in insertion order.
|
||||
*
|
||||
* # Expressing the constant
|
||||
*
|
||||
* This constant must be sorted in strictly increasing order. Duplicate items are not
|
||||
* permitted.
|
||||
*
|
||||
* There is an implied upper limit of `Score::MAX`; that value does not need to be
|
||||
* specified within the bag. For any two threshold lists, if one ends with
|
||||
* `Score::MAX`, the other one does not, and they are otherwise equal, the two
|
||||
* lists will behave identically.
|
||||
*
|
||||
* # Calculation
|
||||
*
|
||||
* It is recommended to generate the set of thresholds in a geometric series, such that
|
||||
* there exists some constant ratio such that `threshold[k + 1] == (threshold[k] *
|
||||
* constant_ratio).max(threshold[k] + 1)` for all `k`.
|
||||
*
|
||||
* The helpers in the `/utils/frame/generate-bags` module can simplify this calculation.
|
||||
*
|
||||
* # Examples
|
||||
*
|
||||
* - If `BagThresholds::get().is_empty()`, then all ids are put into the same bag, and
|
||||
* iteration is strictly in insertion order.
|
||||
* - If `BagThresholds::get().len() == 64`, and the thresholds are determined according to
|
||||
* the procedure given above, then the constant ratio is equal to 2.
|
||||
* - If `BagThresholds::get().len() == 200`, and the thresholds are determined according to
|
||||
* the procedure given above, then the constant ratio is approximately equal to 1.248.
|
||||
* - If the threshold list begins `[1, 2, 3, ...]`, then an id with score 0 or 1 will fall
|
||||
* into bag 0, an id with score 2 will fall into bag 1, etc.
|
||||
*
|
||||
* # Migration
|
||||
*
|
||||
* In the event that this list ever changes, a copy of the old bags list must be retained.
|
||||
* With that `List::migrate` can be called, which will perform the appropriate migration.
|
||||
**/
|
||||
bagThresholds: Vec<u64> & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
balances: {
|
||||
/**
|
||||
* The minimum amount required to keep an account open.
|
||||
**/
|
||||
existentialDeposit: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum number of locks that should exist on an account.
|
||||
* Not strictly enforced, but used for weight estimation.
|
||||
**/
|
||||
maxLocks: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum number of named reserves that can exist on an account.
|
||||
**/
|
||||
maxReserves: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
bounties: {
|
||||
/**
|
||||
* The amount held on deposit for placing a bounty proposal.
|
||||
**/
|
||||
bountyDepositBase: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The delay period for which a bounty beneficiary need to wait before claim the payout.
|
||||
**/
|
||||
bountyDepositPayoutDelay: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Bounty duration in blocks.
|
||||
**/
|
||||
bountyUpdatePeriod: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Minimum value for a bounty.
|
||||
**/
|
||||
bountyValueMinimum: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Maximum amount of funds that should be placed in a deposit for making a proposal.
|
||||
**/
|
||||
curatorDepositMax: Option<u128> & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Minimum amount of funds that should be placed in a deposit for making a proposal.
|
||||
**/
|
||||
curatorDepositMin: Option<u128> & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The curator deposit is calculated as a percentage of the curator fee.
|
||||
*
|
||||
* This deposit has optional upper and lower bounds with `CuratorDepositMax` and
|
||||
* `CuratorDepositMin`.
|
||||
**/
|
||||
curatorDepositMultiplier: Permill & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The amount held on deposit per byte within the tip report reason or bounty description.
|
||||
**/
|
||||
dataDepositPerByte: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Maximum acceptable reason length.
|
||||
*
|
||||
* Benchmarks depend on this value, be sure to update weights file when changing this value
|
||||
**/
|
||||
maximumReasonLength: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
childBounties: {
|
||||
/**
|
||||
* Minimum value for a child-bounty.
|
||||
**/
|
||||
childBountyValueMinimum: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Maximum number of child bounties that can be added to a parent bounty.
|
||||
**/
|
||||
maxActiveChildBountyCount: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
claims: {
|
||||
prefix: Bytes & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
crowdloan: {
|
||||
/**
|
||||
* The minimum amount that may be contributed into a crowdloan. Should almost certainly be at
|
||||
* least `ExistentialDeposit`.
|
||||
**/
|
||||
minContribution: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* `PalletId` for the crowdloan pallet. An appropriate value could be `PalletId(*b"py/cfund")`
|
||||
**/
|
||||
palletId: FrameSupportPalletId & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Max number of storage keys to remove per extrinsic call.
|
||||
**/
|
||||
removeKeysLimit: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
democracy: {
|
||||
/**
|
||||
* Period in blocks where an external proposal may not be re-submitted after being vetoed.
|
||||
**/
|
||||
cooloffPeriod: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The period between a proposal being approved and enacted.
|
||||
*
|
||||
* It should generally be a little more than the unstake period to ensure that
|
||||
* voting stakers have an opportunity to remove themselves from the system in the case
|
||||
* where they are on the losing side of a vote.
|
||||
**/
|
||||
enactmentPeriod: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Minimum voting period allowed for a fast-track referendum.
|
||||
**/
|
||||
fastTrackVotingPeriod: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Indicator for whether an emergency origin is even allowed to happen. Some chains may
|
||||
* want to set this permanently to `false`, others may want to condition it on things such
|
||||
* as an upgrade having happened recently.
|
||||
**/
|
||||
instantAllowed: bool & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* How often (in blocks) new public referenda are launched.
|
||||
**/
|
||||
launchPeriod: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum number of public proposals that can exist at any time.
|
||||
**/
|
||||
maxProposals: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum number of votes for an account.
|
||||
*
|
||||
* Also used to compute weight, an overly big value can
|
||||
* lead to extrinsic with very big weight: see `delegate` for instance.
|
||||
**/
|
||||
maxVotes: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The minimum amount to be used as a deposit for a public referendum proposal.
|
||||
**/
|
||||
minimumDeposit: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The amount of balance that must be deposited per byte of preimage stored.
|
||||
**/
|
||||
preimageByteDeposit: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The minimum period of vote locking.
|
||||
*
|
||||
* It should be no shorter than enactment period to ensure that in the case of an approval,
|
||||
* those successful voters are locked into the consequences that their votes entail.
|
||||
**/
|
||||
voteLockingPeriod: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* How often (in blocks) to check for new votes.
|
||||
**/
|
||||
votingPeriod: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
electionProviderMultiPhase: {
|
||||
/**
|
||||
* The minimum amount of improvement to the solution score that defines a solution as
|
||||
* "better" in the Signed phase.
|
||||
**/
|
||||
betterSignedThreshold: Perbill & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The minimum amount of improvement to the solution score that defines a solution as
|
||||
* "better" in the Unsigned phase.
|
||||
**/
|
||||
betterUnsignedThreshold: Perbill & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum number of electable targets to put in the snapshot.
|
||||
**/
|
||||
maxElectableTargets: u16 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum number of electing voters to put in the snapshot. At the moment, snapshots
|
||||
* are only over a single block, but once multi-block elections are introduced they will
|
||||
* take place over multiple blocks.
|
||||
**/
|
||||
maxElectingVoters: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Maximum length (bytes) that the mined solution should consume.
|
||||
*
|
||||
* The miner will ensure that the total length of the unsigned solution will not exceed
|
||||
* this value.
|
||||
**/
|
||||
minerMaxLength: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Maximum weight that the miner should consume.
|
||||
*
|
||||
* The miner will ensure that the total weight of the unsigned solution will not exceed
|
||||
* this value, based on [`WeightInfo::submit_unsigned`].
|
||||
**/
|
||||
minerMaxWeight: u64 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The priority of the unsigned transaction submitted in the unsigned-phase
|
||||
**/
|
||||
minerTxPriority: u64 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The repeat threshold of the offchain worker.
|
||||
*
|
||||
* For example, if it is 5, that means that at least 5 blocks will elapse between attempts
|
||||
* to submit the worker's solution.
|
||||
**/
|
||||
offchainRepeat: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Base deposit for a signed solution.
|
||||
**/
|
||||
signedDepositBase: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Per-byte deposit for a signed solution.
|
||||
**/
|
||||
signedDepositByte: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Per-weight deposit for a signed solution.
|
||||
**/
|
||||
signedDepositWeight: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum amount of unchecked solutions to refund the call fee for.
|
||||
**/
|
||||
signedMaxRefunds: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Maximum number of signed submissions that can be queued.
|
||||
*
|
||||
* It is best to avoid adjusting this during an election, as it impacts downstream data
|
||||
* structures. In particular, `SignedSubmissionIndices<T>` is bounded on this value. If you
|
||||
* update this value during an election, you _must_ ensure that
|
||||
* `SignedSubmissionIndices.len()` is less than or equal to the new value. Otherwise,
|
||||
* attempts to submit new solutions may cause a runtime panic.
|
||||
**/
|
||||
signedMaxSubmissions: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Maximum weight of a signed solution.
|
||||
*
|
||||
* This should probably be similar to [`Config::MinerMaxWeight`].
|
||||
**/
|
||||
signedMaxWeight: u64 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Duration of the signed phase.
|
||||
**/
|
||||
signedPhase: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Base reward for a signed solution
|
||||
**/
|
||||
signedRewardBase: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Duration of the unsigned phase.
|
||||
**/
|
||||
unsignedPhase: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
grandpa: {
|
||||
/**
|
||||
* Max Authorities in use
|
||||
**/
|
||||
maxAuthorities: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
identity: {
|
||||
/**
|
||||
* The amount held on deposit for a registered identity
|
||||
**/
|
||||
basicDeposit: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The amount held on deposit per additional field for a registered identity.
|
||||
**/
|
||||
fieldDeposit: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Maximum number of additional fields that may be stored in an ID. Needed to bound the I/O
|
||||
* required to access an identity, but can be pretty high.
|
||||
**/
|
||||
maxAdditionalFields: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Maxmimum number of registrars allowed in the system. Needed to bound the complexity
|
||||
* of, e.g., updating judgements.
|
||||
**/
|
||||
maxRegistrars: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum number of sub-accounts allowed per identified account.
|
||||
**/
|
||||
maxSubAccounts: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The amount held on deposit for a registered subaccount. This should account for the fact
|
||||
* that one storage item's value will increase by the size of an account ID, and there will
|
||||
* be another trie item whose value is the size of an account ID plus 32 bytes.
|
||||
**/
|
||||
subAccountDeposit: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
imOnline: {
|
||||
/**
|
||||
* A configuration for base priority of unsigned transactions.
|
||||
*
|
||||
* This is exposed so that it can be tuned for particular runtime, when
|
||||
* multiple pallets send unsigned transactions.
|
||||
**/
|
||||
unsignedPriority: u64 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
indices: {
|
||||
/**
|
||||
* The deposit needed for reserving an index.
|
||||
**/
|
||||
deposit: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
multisig: {
|
||||
/**
|
||||
* The base amount of currency needed to reserve for creating a multisig execution or to
|
||||
* store a dispatch call for later.
|
||||
*
|
||||
* This is held for an additional storage item whose value size is
|
||||
* `4 + sizeof((BlockNumber, Balance, AccountId))` bytes and whose key size is
|
||||
* `32 + sizeof(AccountId)` bytes.
|
||||
**/
|
||||
depositBase: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The amount of currency needed per unit threshold when creating a multisig execution.
|
||||
*
|
||||
* This is held for adding 32 bytes more into a pre-existing storage value.
|
||||
**/
|
||||
depositFactor: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum amount of signatories allowed in the multisig.
|
||||
**/
|
||||
maxSignatories: u16 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
paras: {
|
||||
unsignedPriority: u64 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
phragmenElection: {
|
||||
/**
|
||||
* How much should be locked up in order to submit one's candidacy.
|
||||
**/
|
||||
candidacyBond: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Number of members to elect.
|
||||
**/
|
||||
desiredMembers: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Number of runners_up to keep.
|
||||
**/
|
||||
desiredRunnersUp: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Identifier for the elections-phragmen pallet's lock
|
||||
**/
|
||||
palletId: U8aFixed & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* How long each seat is kept. This defines the next block number at which an election
|
||||
* round will happen. If set to zero, no elections are ever triggered and the module will
|
||||
* be in passive mode.
|
||||
**/
|
||||
termDuration: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Base deposit associated with voting.
|
||||
*
|
||||
* This should be sensibly high to economically ensure the pallet cannot be attacked by
|
||||
* creating a gigantic number of votes.
|
||||
**/
|
||||
votingBondBase: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The amount of bond that need to be locked for each vote (32 bytes).
|
||||
**/
|
||||
votingBondFactor: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
proxy: {
|
||||
/**
|
||||
* The base amount of currency needed to reserve for creating an announcement.
|
||||
*
|
||||
* This is held when a new storage item holding a `Balance` is created (typically 16
|
||||
* bytes).
|
||||
**/
|
||||
announcementDepositBase: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The amount of currency needed per announcement made.
|
||||
*
|
||||
* This is held for adding an `AccountId`, `Hash` and `BlockNumber` (typically 68 bytes)
|
||||
* into a pre-existing storage value.
|
||||
**/
|
||||
announcementDepositFactor: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum amount of time-delayed announcements that are allowed to be pending.
|
||||
**/
|
||||
maxPending: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum amount of proxies allowed for a single account.
|
||||
**/
|
||||
maxProxies: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The base amount of currency needed to reserve for creating a proxy.
|
||||
*
|
||||
* This is held for an additional storage item whose value size is
|
||||
* `sizeof(Balance)` bytes and whose key size is `sizeof(AccountId)` bytes.
|
||||
**/
|
||||
proxyDepositBase: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The amount of currency needed per proxy added.
|
||||
*
|
||||
* This is held for adding 32 bytes plus an instance of `ProxyType` more into a
|
||||
* pre-existing storage value. Thus, when configuring `ProxyDepositFactor` one should take
|
||||
* into account `32 + proxy_type.encode().len()` bytes of data.
|
||||
**/
|
||||
proxyDepositFactor: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
registrar: {
|
||||
/**
|
||||
* The deposit to be paid per byte stored on chain.
|
||||
**/
|
||||
dataDepositPerByte: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The deposit to be paid to run a parathread.
|
||||
* This should include the cost for storing the genesis head and validation code.
|
||||
**/
|
||||
paraDeposit: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
scheduler: {
|
||||
/**
|
||||
* The maximum weight that may be scheduled per block for any dispatchables of less
|
||||
* priority than `schedule::HARD_DEADLINE`.
|
||||
**/
|
||||
maximumWeight: u64 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum number of scheduled calls in the queue for a single block.
|
||||
* Not strictly enforced, but used for weight estimation.
|
||||
**/
|
||||
maxScheduledPerBlock: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
slots: {
|
||||
/**
|
||||
* The number of blocks to offset each lease period by.
|
||||
**/
|
||||
leaseOffset: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The number of blocks over which a single period lasts.
|
||||
**/
|
||||
leasePeriod: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
staking: {
|
||||
/**
|
||||
* Number of eras that staked funds must remain bonded for.
|
||||
**/
|
||||
bondingDuration: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Maximum number of nominations per nominator.
|
||||
**/
|
||||
maxNominations: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum number of nominators rewarded for each validator.
|
||||
*
|
||||
* For each validator only the `$MaxNominatorRewardedPerValidator` biggest stakers can
|
||||
* claim their reward. This used to limit the i/o cost for the nominator payout.
|
||||
**/
|
||||
maxNominatorRewardedPerValidator: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum number of `unlocking` chunks a [`StakingLedger`] can have. Effectively
|
||||
* determines how many unique eras a staker may be unbonding in.
|
||||
**/
|
||||
maxUnlockingChunks: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Number of sessions per era.
|
||||
**/
|
||||
sessionsPerEra: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Number of eras that slashes are deferred by, after computation.
|
||||
*
|
||||
* This should be less than the bonding duration. Set to 0 if slashes
|
||||
* should be applied immediately, without opportunity for intervention.
|
||||
**/
|
||||
slashDeferDuration: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
system: {
|
||||
/**
|
||||
* Maximum number of block number to block hash mappings to keep (oldest pruned first).
|
||||
**/
|
||||
blockHashCount: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum length of a block (in bytes).
|
||||
**/
|
||||
blockLength: FrameSystemLimitsBlockLength & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Block & extrinsics weights: base values and limits.
|
||||
**/
|
||||
blockWeights: FrameSystemLimitsBlockWeights & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The weight of runtime database operations the runtime can invoke.
|
||||
**/
|
||||
dbWeight: FrameSupportWeightsRuntimeDbWeight & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The designated SS85 prefix of this chain.
|
||||
*
|
||||
* This replaces the "ss58Format" property declared in the chain spec. Reason is
|
||||
* that the runtime should know about the prefix in order to make use of it as
|
||||
* an identifier of the chain.
|
||||
**/
|
||||
ss58Prefix: u16 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Get the chain's current version.
|
||||
**/
|
||||
version: SpVersionRuntimeVersion & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
timestamp: {
|
||||
/**
|
||||
* The minimum period between blocks. Beware that this is different to the *expected*
|
||||
* period that the block production apparatus provides. Your chosen consensus system will
|
||||
* generally work with this to determine a sensible block time. e.g. For Aura, it will be
|
||||
* double this period on default settings.
|
||||
**/
|
||||
minimumPeriod: u64 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
tips: {
|
||||
/**
|
||||
* The amount held on deposit per byte within the tip report reason or bounty description.
|
||||
**/
|
||||
dataDepositPerByte: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Maximum acceptable reason length.
|
||||
*
|
||||
* Benchmarks depend on this value, be sure to update weights file when changing this value
|
||||
**/
|
||||
maximumReasonLength: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The period for which a tip remains open after is has achieved threshold tippers.
|
||||
**/
|
||||
tipCountdown: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The percent of the final tip which goes to the original reporter of the tip.
|
||||
**/
|
||||
tipFindersFee: Percent & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The amount held on deposit for placing a tip report.
|
||||
**/
|
||||
tipReportDepositBase: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
transactionPayment: {
|
||||
/**
|
||||
* The polynomial that is applied in order to derive fee from length.
|
||||
**/
|
||||
lengthToFee: Vec<FrameSupportWeightsWeightToFeeCoefficient> & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* A fee mulitplier for `Operational` extrinsics to compute "virtual tip" to boost their
|
||||
* `priority`
|
||||
*
|
||||
* This value is multipled by the `final_fee` to obtain a "virtual tip" that is later
|
||||
* added to a tip component in regular `priority` calculations.
|
||||
* It means that a `Normal` transaction can front-run a similarly-sized `Operational`
|
||||
* extrinsic (with no tip), by including a tip value greater than the virtual tip.
|
||||
*
|
||||
* ```rust,ignore
|
||||
* // For `Normal`
|
||||
* let priority = priority_calc(tip);
|
||||
*
|
||||
* // For `Operational`
|
||||
* let virtual_tip = (inclusion_fee + tip) * OperationalFeeMultiplier;
|
||||
* let priority = priority_calc(tip + virtual_tip);
|
||||
* ```
|
||||
*
|
||||
* Note that since we use `final_fee` the multiplier applies also to the regular `tip`
|
||||
* sent with the transaction. So, not only does the transaction get a priority bump based
|
||||
* on the `inclusion_fee`, but we also amplify the impact of tips applied to `Operational`
|
||||
* transactions.
|
||||
**/
|
||||
operationalFeeMultiplier: u8 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The polynomial that is applied in order to derive fee from weight.
|
||||
**/
|
||||
weightToFee: Vec<FrameSupportWeightsWeightToFeeCoefficient> & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
treasury: {
|
||||
/**
|
||||
* Percentage of spare funds (if any) that are burnt per spend period.
|
||||
**/
|
||||
burn: Permill & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The maximum number of approvals that can wait in the spending queue.
|
||||
*
|
||||
* NOTE: This parameter is also used within the Bounties Pallet extension if enabled.
|
||||
**/
|
||||
maxApprovals: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The treasury's pallet id, used for deriving its sovereign account ID.
|
||||
**/
|
||||
palletId: FrameSupportPalletId & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Fraction of a proposal's value that should be bonded in order to place the proposal.
|
||||
* An accepted proposal gets these back. A rejected proposal does not.
|
||||
**/
|
||||
proposalBond: Permill & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Maximum amount of funds that should be placed in a deposit for making a proposal.
|
||||
**/
|
||||
proposalBondMaximum: Option<u128> & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Minimum amount of funds that should be placed in a deposit for making a proposal.
|
||||
**/
|
||||
proposalBondMinimum: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Period between successive spends.
|
||||
**/
|
||||
spendPeriod: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
utility: {
|
||||
/**
|
||||
* The limit on the number of batched calls.
|
||||
**/
|
||||
batchedCallsLimit: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
vesting: {
|
||||
maxVestingSchedules: u32 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* The minimum amount transferred to call `vested_transfer`.
|
||||
**/
|
||||
minVestedTransfer: u128 & AugmentedConst<ApiType>;
|
||||
/**
|
||||
* Generic const
|
||||
**/
|
||||
[key: string]: Codec;
|
||||
};
|
||||
} // AugmentedConsts
|
||||
} // declare module
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,10 @@
|
||||
// Copyright 2017-2022 @polkadot/api-augment authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import '../base';
|
||||
import './consts';
|
||||
import './errors';
|
||||
import './events';
|
||||
import './query';
|
||||
import './registry';
|
||||
import './tx';
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,5 @@
|
||||
// Copyright 2017-2022 @polkadot/api-augment authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import '@polkadot/types-augment/registry/substrate';
|
||||
import '@polkadot/types-augment/registry/polkadot';
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+427
-34
@@ -1,11 +1,15 @@
|
||||
// Auto-generated via `yarn polkadot-types-from-chain`, do not edit
|
||||
/* eslint-disable */
|
||||
|
||||
import type { ApiTypes } from '@polkadot/api/types';
|
||||
import type { ApiTypes } from '@polkadot/api-base/types';
|
||||
|
||||
declare module '@polkadot/api/types/errors' {
|
||||
export interface AugmentedErrors<ApiType> {
|
||||
declare module '@polkadot/api-base/types/errors' {
|
||||
export interface AugmentedErrors<ApiType extends ApiTypes> {
|
||||
assets: {
|
||||
/**
|
||||
* The asset-account already exists.
|
||||
**/
|
||||
AlreadyExists: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Invalid metadata given.
|
||||
**/
|
||||
@@ -18,10 +22,6 @@ declare module '@polkadot/api/types/errors' {
|
||||
* Account balance must be greater than or equal to the transfer amount.
|
||||
**/
|
||||
BalanceLow: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Balance should be non-zero.
|
||||
**/
|
||||
BalanceZero: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The origin account is frozen.
|
||||
**/
|
||||
@@ -34,13 +34,22 @@ declare module '@polkadot/api/types/errors' {
|
||||
* Minimum balance should be non-zero.
|
||||
**/
|
||||
MinBalanceZero: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The account to alter does not exist.
|
||||
**/
|
||||
NoAccount: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The asset-account doesn't have an associated deposit.
|
||||
**/
|
||||
NoDeposit: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The signing account has no permission to do the operation.
|
||||
**/
|
||||
NoPermission: AugmentedError<ApiType>;
|
||||
/**
|
||||
* No provider reference exists to allow a non-zero balance of a non-self-sufficient
|
||||
* asset.
|
||||
* Unable to increment the consumer reference counters on the account. Either no provider
|
||||
* reference exists to allow a non-zero balance of a non-self-sufficient asset, or the
|
||||
* maximum number of consumers has been reached.
|
||||
**/
|
||||
NoProvider: AugmentedError<ApiType>;
|
||||
/**
|
||||
@@ -51,6 +60,10 @@ declare module '@polkadot/api/types/errors' {
|
||||
* The given asset ID is unknown.
|
||||
**/
|
||||
Unknown: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The operation would result in funds being burned.
|
||||
**/
|
||||
WouldBurn: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The source account would not survive the transfer and it needs to stay alive.
|
||||
**/
|
||||
@@ -112,6 +125,16 @@ declare module '@polkadot/api/types/errors' {
|
||||
**/
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
bagsList: {
|
||||
/**
|
||||
* A error in the list interface implementation.
|
||||
**/
|
||||
List: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Generic error
|
||||
**/
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
balances: {
|
||||
/**
|
||||
* Beneficiary account must pre-exist
|
||||
@@ -151,6 +174,10 @@ declare module '@polkadot/api/types/errors' {
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
bounties: {
|
||||
/**
|
||||
* The bounty cannot be closed because it has active child bounties.
|
||||
**/
|
||||
HasActiveChildBounty: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Proposer's balance is too low.
|
||||
**/
|
||||
@@ -184,6 +211,10 @@ declare module '@polkadot/api/types/errors' {
|
||||
* Require bounty curator.
|
||||
**/
|
||||
RequireCurator: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Too many approvals are already queued.
|
||||
**/
|
||||
TooManyQueued: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The bounty status is unexpected.
|
||||
**/
|
||||
@@ -193,17 +224,39 @@ declare module '@polkadot/api/types/errors' {
|
||||
**/
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
childBounties: {
|
||||
/**
|
||||
* The bounty balance is not enough to add new child-bounty.
|
||||
**/
|
||||
InsufficientBountyBalance: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The parent bounty is not in active state.
|
||||
**/
|
||||
ParentBountyNotActive: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Number of child bounties exceeds limit `MaxActiveChildBountyCount`.
|
||||
**/
|
||||
TooManyChildBounties: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Generic error
|
||||
**/
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
contracts: {
|
||||
/**
|
||||
* Performing the requested transfer would have brought the contract below
|
||||
* the subsistence threshold. No transfer is allowed to do this. Use `seal_terminate`
|
||||
* to recover a deposit.
|
||||
* Code removal was denied because the code is still in use by at least one contract.
|
||||
**/
|
||||
BelowSubsistenceThreshold: AugmentedError<ApiType>;
|
||||
CodeInUse: AugmentedError<ApiType>;
|
||||
/**
|
||||
* No code could be found at the supplied code hash.
|
||||
**/
|
||||
CodeNotFound: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The contract's code was found to be invalid during validation or instrumentation.
|
||||
* A more detailed error can be found on the node console if debug messages are enabled
|
||||
* or in the debug buffer which is returned to RPC clients.
|
||||
**/
|
||||
CodeRejected: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The code supplied to `instantiate_with_code` exceeds the limit specified in the
|
||||
* current schedule.
|
||||
@@ -213,6 +266,13 @@ declare module '@polkadot/api/types/errors' {
|
||||
* No contract was found at the specified address.
|
||||
**/
|
||||
ContractNotFound: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The contract ran to completion but decided to revert its storage changes.
|
||||
* Please note that this error is only returned from extrinsics. When called directly
|
||||
* or via RPC an `Ok` will be returned. In this case the caller needs to inspect the flags
|
||||
* to determine whether a reversion has taken place.
|
||||
**/
|
||||
ContractReverted: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Contract trapped during execution.
|
||||
**/
|
||||
@@ -245,6 +305,10 @@ declare module '@polkadot/api/types/errors' {
|
||||
* `seal_call` forwarded this contracts input. It therefore is no longer available.
|
||||
**/
|
||||
InputForwarded: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Invalid combination of flags supplied to `seal_call` or `seal_delegate_call`.
|
||||
**/
|
||||
InvalidCallFlags: AugmentedError<ApiType>;
|
||||
/**
|
||||
* A new schedule must have a greater version than the current one.
|
||||
**/
|
||||
@@ -254,11 +318,6 @@ declare module '@polkadot/api/types/errors' {
|
||||
* of what is specified in the schedule.
|
||||
**/
|
||||
MaxCallDepthReached: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The newly created contract is below the subsistence threshold after executing
|
||||
* its contructor. No contracts are allowed to exist below that threshold.
|
||||
**/
|
||||
NewContractNotFunded: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The chain does not provide a chain extension. Calling the chain extension results
|
||||
* in this error. Note that this usually shouldn't happen as deploying such contracts
|
||||
@@ -286,12 +345,13 @@ declare module '@polkadot/api/types/errors' {
|
||||
**/
|
||||
ReentranceDenied: AugmentedError<ApiType>;
|
||||
/**
|
||||
* A storage modification exhausted the 32bit type that holds the storage size.
|
||||
*
|
||||
* This can either happen when the accumulated storage in bytes is too large or
|
||||
* when number of storage items is too large.
|
||||
* More storage was created than allowed by the storage deposit limit.
|
||||
**/
|
||||
StorageExhausted: AugmentedError<ApiType>;
|
||||
StorageDepositLimitExhausted: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Origin doesn't have enough balance to pay the required storage deposits.
|
||||
**/
|
||||
StorageDepositNotEnoughFunds: AugmentedError<ApiType>;
|
||||
/**
|
||||
* A contract self destructed in its constructor.
|
||||
*
|
||||
@@ -308,9 +368,8 @@ declare module '@polkadot/api/types/errors' {
|
||||
**/
|
||||
TooManyTopics: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Performing the requested transfer failed for a reason originating in the
|
||||
* chosen currency implementation of the runtime. Most probably the balance is
|
||||
* too low or locks are placed on it.
|
||||
* Performing the requested transfer failed. Probably because there isn't enough
|
||||
* free balance in the sender's account.
|
||||
**/
|
||||
TransferFailed: AugmentedError<ApiType>;
|
||||
/**
|
||||
@@ -322,6 +381,61 @@ declare module '@polkadot/api/types/errors' {
|
||||
**/
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
convictionVoting: {
|
||||
/**
|
||||
* The account is already delegating.
|
||||
**/
|
||||
AlreadyDelegating: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The account currently has votes attached to it and the operation cannot succeed until
|
||||
* these are removed, either through `unvote` or `reap_vote`.
|
||||
**/
|
||||
AlreadyVoting: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The class ID supplied is invalid.
|
||||
**/
|
||||
BadClass: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The class must be supplied since it is not easily determinable from the state.
|
||||
**/
|
||||
ClassNeeded: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Too high a balance was provided that the account cannot afford.
|
||||
**/
|
||||
InsufficientFunds: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Maximum number of votes reached.
|
||||
**/
|
||||
MaxVotesReached: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Delegation to oneself makes no sense.
|
||||
**/
|
||||
Nonsense: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The actor has no permission to conduct the action.
|
||||
**/
|
||||
NoPermission: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The actor has no permission to conduct the action right now but will do in the future.
|
||||
**/
|
||||
NoPermissionYet: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The account is not currently delegating.
|
||||
**/
|
||||
NotDelegating: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Poll is not ongoing.
|
||||
**/
|
||||
NotOngoing: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The given account did not vote on the poll.
|
||||
**/
|
||||
NotVoter: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Generic error
|
||||
**/
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
council: {
|
||||
/**
|
||||
* Members are already initialized!
|
||||
@@ -492,6 +606,10 @@ declare module '@polkadot/api/types/errors' {
|
||||
* The call is not allowed at this point.
|
||||
**/
|
||||
CallNotAllowed: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The fallback failed
|
||||
**/
|
||||
FallbackFailed: AugmentedError<ApiType>;
|
||||
/**
|
||||
* `Self::insert_submission` returned an invalid index.
|
||||
**/
|
||||
@@ -892,6 +1010,147 @@ declare module '@polkadot/api/types/errors' {
|
||||
**/
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
nominationPools: {
|
||||
/**
|
||||
* An account is already delegating in another pool. An account may only belong to one
|
||||
* pool at a time.
|
||||
**/
|
||||
AccountBelongsToOtherPool: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The member is already unbonding in this era.
|
||||
**/
|
||||
AlreadyUnbonding: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The pools state cannot be changed.
|
||||
**/
|
||||
CanNotChangeState: AugmentedError<ApiType>;
|
||||
/**
|
||||
* None of the funds can be withdrawn yet because the bonding duration has not passed.
|
||||
**/
|
||||
CannotWithdrawAny: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Some error occurred that should never happen. This should be reported to the
|
||||
* maintainers.
|
||||
**/
|
||||
DefensiveError: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The caller does not have adequate permissions.
|
||||
**/
|
||||
DoesNotHavePermission: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The member is fully unbonded (and thus cannot access the bonded and reward pool
|
||||
* anymore to, for example, collect rewards).
|
||||
**/
|
||||
FullyUnbonding: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The pool has insufficient balance to bond as a nominator.
|
||||
**/
|
||||
InsufficientBond: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Too many members in the pool or system.
|
||||
**/
|
||||
MaxPoolMembers: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The system is maxed out on pools.
|
||||
**/
|
||||
MaxPools: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The member cannot unbond further chunks due to reaching the limit.
|
||||
**/
|
||||
MaxUnbondingLimit: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Metadata exceeds [`Config::MaxMetadataLen`]
|
||||
**/
|
||||
MetadataExceedsMaxLen: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The amount does not meet the minimum bond to either join or create a pool.
|
||||
**/
|
||||
MinimumBondNotMet: AugmentedError<ApiType>;
|
||||
/**
|
||||
* A pool must be in [`PoolState::Destroying`] in order for the depositor to unbond or for
|
||||
* other members to be permissionlessly unbonded.
|
||||
**/
|
||||
NotDestroying: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Not enough points. Ty unbonding less.
|
||||
**/
|
||||
NotEnoughPointsToUnbond: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Either a) the caller cannot make a valid kick or b) the pool is not destroying.
|
||||
**/
|
||||
NotKickerOrDestroying: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The caller does not have nominating permissions for the pool.
|
||||
**/
|
||||
NotNominator: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The depositor must be the only member in the bonded pool in order to unbond. And the
|
||||
* depositor must be the only member in the sub pools in order to withdraw unbonded.
|
||||
**/
|
||||
NotOnlyPoolMember: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The pool is not open to join
|
||||
**/
|
||||
NotOpen: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The transaction could not be executed due to overflow risk for the pool.
|
||||
**/
|
||||
OverflowRisk: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Partial unbonding now allowed permissionlessly.
|
||||
**/
|
||||
PartialUnbondNotAllowedPermissionlessly: AugmentedError<ApiType>;
|
||||
/**
|
||||
* An account is not a member.
|
||||
**/
|
||||
PoolMemberNotFound: AugmentedError<ApiType>;
|
||||
/**
|
||||
* A (bonded) pool id does not exist.
|
||||
**/
|
||||
PoolNotFound: AugmentedError<ApiType>;
|
||||
/**
|
||||
* A reward pool does not exist. In all cases this is a system logic error.
|
||||
**/
|
||||
RewardPoolNotFound: AugmentedError<ApiType>;
|
||||
/**
|
||||
* A sub pool does not exist.
|
||||
**/
|
||||
SubPoolsNotFound: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Generic error
|
||||
**/
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
preimage: {
|
||||
/**
|
||||
* Preimage has already been noted on-chain.
|
||||
**/
|
||||
AlreadyNoted: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The user is not authorized to perform this action.
|
||||
**/
|
||||
NotAuthorized: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The preimage cannot be removed since it has not yet been noted.
|
||||
**/
|
||||
NotNoted: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The preimage request cannot be removed since no outstanding requests exist.
|
||||
**/
|
||||
NotRequested: AugmentedError<ApiType>;
|
||||
/**
|
||||
* A preimage may not be removed when there are outstanding requests.
|
||||
**/
|
||||
Requested: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Preimage is too large to store on-chain.
|
||||
**/
|
||||
TooLarge: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Generic error
|
||||
**/
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
proxy: {
|
||||
/**
|
||||
* Account is already a proxy.
|
||||
@@ -1000,6 +1259,70 @@ declare module '@polkadot/api/types/errors' {
|
||||
**/
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
referenda: {
|
||||
/**
|
||||
* The referendum index provided is invalid in this context.
|
||||
**/
|
||||
BadReferendum: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The track identifier given was invalid.
|
||||
**/
|
||||
BadTrack: AugmentedError<ApiType>;
|
||||
/**
|
||||
* There are already a full complement of referendums in progress for this track.
|
||||
**/
|
||||
Full: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Referendum's decision deposit is already paid.
|
||||
**/
|
||||
HasDeposit: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The deposit cannot be refunded since none was made.
|
||||
**/
|
||||
NoDeposit: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The deposit refunder is not the depositor.
|
||||
**/
|
||||
NoPermission: AugmentedError<ApiType>;
|
||||
/**
|
||||
* There was nothing to do in the advancement.
|
||||
**/
|
||||
NothingToDo: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Referendum is not ongoing.
|
||||
**/
|
||||
NotOngoing: AugmentedError<ApiType>;
|
||||
/**
|
||||
* No track exists for the proposal origin.
|
||||
**/
|
||||
NoTrack: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The queue of the track is empty.
|
||||
**/
|
||||
QueueEmpty: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Any deposit cannot be refunded until after the decision is over.
|
||||
**/
|
||||
Unfinished: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Generic error
|
||||
**/
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
remark: {
|
||||
/**
|
||||
* Attempted to call `store` outside of block execution.
|
||||
**/
|
||||
BadContext: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Attempting to store empty data.
|
||||
**/
|
||||
Empty: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Generic error
|
||||
**/
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
scheduler: {
|
||||
/**
|
||||
* Failed to schedule a call
|
||||
@@ -1151,6 +1474,10 @@ declare module '@polkadot/api/types/errors' {
|
||||
* The user has enough bond and thus cannot be chilled forcefully by an external person.
|
||||
**/
|
||||
CannotChillOther: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Commission is too low. Must be at least `MinCommission`.
|
||||
**/
|
||||
CommissionTooLow: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Duplicate index.
|
||||
**/
|
||||
@@ -1172,7 +1499,9 @@ declare module '@polkadot/api/types/errors' {
|
||||
**/
|
||||
IncorrectSlashingSpans: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Can not bond with value less than minimum required.
|
||||
* Cannot have a validator or nominator role, with value less than the minimum defined by
|
||||
* governance (see `MinValidatorBond` and `MinNominatorBond`). If unbonding is the
|
||||
* intention, `chill` first to remove one's role as validator/nominator.
|
||||
**/
|
||||
InsufficientBond: AugmentedError<ApiType>;
|
||||
/**
|
||||
@@ -1226,6 +1555,32 @@ declare module '@polkadot/api/types/errors' {
|
||||
**/
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
stateTrieMigration: {
|
||||
/**
|
||||
* bad witness data provided.
|
||||
**/
|
||||
BadWitness: AugmentedError<ApiType>;
|
||||
/**
|
||||
* max signed limits not respected.
|
||||
**/
|
||||
MaxSignedLimits: AugmentedError<ApiType>;
|
||||
/**
|
||||
* submitter does not have enough funds.
|
||||
**/
|
||||
NotEnoughFunds: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Signed migration is not allowed because the maximum limit is not set yet.
|
||||
**/
|
||||
SignedMigrationNotAllowed: AugmentedError<ApiType>;
|
||||
/**
|
||||
* upper bound of size is exceeded,
|
||||
**/
|
||||
SizeUpperBoundExceeded: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Generic error
|
||||
**/
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
sudo: {
|
||||
/**
|
||||
* Sender must be the Sudo account
|
||||
@@ -1237,6 +1592,10 @@ declare module '@polkadot/api/types/errors' {
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
system: {
|
||||
/**
|
||||
* The origin filter prevent the call to be dispatched.
|
||||
**/
|
||||
CallFiltered: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Failed to extract the runtime version from the new runtime.
|
||||
*
|
||||
@@ -1423,6 +1782,10 @@ declare module '@polkadot/api/types/errors' {
|
||||
* No proposal or bounty at that index.
|
||||
**/
|
||||
InvalidIndex: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Proposal has not been approved.
|
||||
**/
|
||||
ProposalNotApproved: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Too many approvals in the queue.
|
||||
**/
|
||||
@@ -1449,6 +1812,10 @@ declare module '@polkadot/api/types/errors' {
|
||||
* The asset ID is already taken.
|
||||
**/
|
||||
InUse: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The asset instance is locked.
|
||||
**/
|
||||
Locked: AugmentedError<ApiType>;
|
||||
/**
|
||||
* There is no delegate approved.
|
||||
**/
|
||||
@@ -1457,6 +1824,10 @@ declare module '@polkadot/api/types/errors' {
|
||||
* The signing account has no permission to do the operation.
|
||||
**/
|
||||
NoPermission: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The named owner has not signed ownership of the class is acceptable.
|
||||
**/
|
||||
Unaccepted: AugmentedError<ApiType>;
|
||||
/**
|
||||
* No approval exists that would allow the transfer.
|
||||
**/
|
||||
@@ -1464,7 +1835,7 @@ declare module '@polkadot/api/types/errors' {
|
||||
/**
|
||||
* The given asset ID is unknown.
|
||||
**/
|
||||
Unknown: AugmentedError<ApiType>;
|
||||
UnknownClass: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The delegate turned out to be different to what was expected.
|
||||
**/
|
||||
@@ -1515,9 +1886,31 @@ declare module '@polkadot/api/types/errors' {
|
||||
**/
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
}
|
||||
|
||||
export interface DecoratedErrors<ApiType extends ApiTypes> extends AugmentedErrors<ApiType> {
|
||||
[key: string]: ModuleErrors<ApiType>;
|
||||
}
|
||||
}
|
||||
whitelist: {
|
||||
/**
|
||||
* The call was already whitelisted; No-Op.
|
||||
**/
|
||||
CallAlreadyWhitelisted: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The call was not whitelisted.
|
||||
**/
|
||||
CallIsNotWhitelisted: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The weight of the decoded call was higher than the witness.
|
||||
**/
|
||||
InvalidCallWeightWitness: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The preimage of the call hash could not be loaded.
|
||||
**/
|
||||
UnavailablePreImage: AugmentedError<ApiType>;
|
||||
/**
|
||||
* The call could not be decoded.
|
||||
**/
|
||||
UndecodableCall: AugmentedError<ApiType>;
|
||||
/**
|
||||
* Generic error
|
||||
**/
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
};
|
||||
} // AugmentedErrors
|
||||
} // declare module
|
||||
+371
-189
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,10 @@
|
||||
// Copyright 2017-2022 @polkadot/api-augment authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import '../base';
|
||||
import './consts';
|
||||
import './errors';
|
||||
import './events';
|
||||
import './query';
|
||||
import './registry';
|
||||
import './tx';
|
||||
@@ -1,19 +1,21 @@
|
||||
// Auto-generated via `yarn polkadot-types-from-chain`, do not edit
|
||||
/* eslint-disable */
|
||||
|
||||
import type { ApiTypes } from '@polkadot/api/types';
|
||||
import type { BTreeMap, Bytes, Data, Null, Option, U8aFixed, Vec, WrapperOpaque, bool, u128, u32, u64, u8 } from '@polkadot/types';
|
||||
import type { ApiTypes } from '@polkadot/api-base/types';
|
||||
import type { Data } from '@polkadot/types';
|
||||
import type { BTreeMap, Bytes, Null, Option, U8aFixed, Vec, WrapperKeepOpaque, WrapperOpaque, bool, u128, u32, u64, u8 } from '@polkadot/types-codec';
|
||||
import type { AnyNumber, ITuple } from '@polkadot/types-codec/types';
|
||||
import type { AccountId32, Call, H256, Perbill, Percent } from '@polkadot/types/interfaces/runtime';
|
||||
import type { FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, NodeRuntimeSessionKeys, PalletAssetsApproval, PalletAssetsAssetBalance, PalletAssetsAssetDetails, PalletAssetsAssetMetadata, PalletAuthorshipUncleEntryItem, PalletBagsListListBag, PalletBagsListListNode, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletBountiesBounty, PalletCollectiveVotes, PalletContractsStorageDeletedContract, PalletContractsStorageRawContractInfo, PalletContractsWasmPrefabWasmModule, PalletDemocracyPreimageStatus, PalletDemocracyReferendumInfo, PalletDemocracyReleases, PalletDemocracyVoteThreshold, PalletDemocracyVoteVoting, PalletElectionProviderMultiPhasePhase, PalletElectionProviderMultiPhaseReadySolution, PalletElectionProviderMultiPhaseRoundSnapshot, PalletElectionProviderMultiPhaseSignedSignedSubmission, PalletElectionProviderMultiPhaseSolutionOrSnapshotSize, PalletElectionsPhragmenSeatHolder, PalletElectionsPhragmenVoter, PalletGiltActiveGilt, PalletGiltActiveGiltsTotal, PalletGiltGiltBid, PalletGrandpaStoredPendingChange, PalletGrandpaStoredState, PalletIdentityRegistrarInfo, PalletIdentityRegistration, PalletImOnlineBoundedOpaqueNetworkState, PalletImOnlineSr25519AppSr25519Public, PalletLotteryLotteryConfig, PalletMultisigMultisig, PalletProxyAnnouncement, PalletProxyProxyDefinition, PalletRecoveryActiveRecovery, PalletRecoveryRecoveryConfig, PalletSchedulerReleases, PalletSchedulerScheduledV2, PalletSocietyBid, PalletSocietyBidKind, PalletSocietyVote, PalletSocietyVouchingStatus, PalletStakingActiveEraInfo, PalletStakingEraRewardPoints, PalletStakingExposure, PalletStakingForcing, PalletStakingNominations, PalletStakingReleases, PalletStakingRewardDestination, PalletStakingSlashingSlashingSpans, PalletStakingSlashingSpanRecord, PalletStakingStakingLedger, PalletStakingUnappliedSlash, PalletStakingValidatorPrefs, PalletTipsOpenTip, PalletTransactionPaymentReleases, PalletTransactionStorageTransactionInfo, PalletTreasuryProposal, PalletUniquesClassDetails, PalletUniquesClassMetadata, PalletUniquesInstanceDetails, PalletUniquesInstanceMetadata, PalletVestingReleases, PalletVestingVestingInfo, SpConsensusBabeAppPublic, SpConsensusBabeBabeEpochConfiguration, SpConsensusBabeDigestsNextConfigDescriptor, SpCoreCryptoKeyTypeId, SpRuntimeGenericDigest, SpStakingOffenceOffenceDetails } from '@polkadot/types/lookup';
|
||||
import type { AnyNumber, ITuple, Observable } from '@polkadot/types/types';
|
||||
import type { FrameSupportWeightsPerDispatchClassU64, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, NodeRuntimeSessionKeys, PalletAssetsApproval, PalletAssetsAssetAccount, PalletAssetsAssetDetails, PalletAssetsAssetMetadata, PalletAuthorshipUncleEntryItem, PalletBagsListListBag, PalletBagsListListNode, PalletBalancesAccountData, PalletBalancesBalanceLock, PalletBalancesReleases, PalletBalancesReserveData, PalletBountiesBounty, PalletChildBountiesChildBounty, PalletCollectiveVotes, PalletContractsStorageDeletedContract, PalletContractsStorageRawContractInfo, PalletContractsWasmOwnerInfo, PalletContractsWasmPrefabWasmModule, PalletConvictionVotingVoteVoting, PalletDemocracyPreimageStatus, PalletDemocracyReferendumInfo, PalletDemocracyReleases, PalletDemocracyVoteThreshold, PalletDemocracyVoteVoting, PalletElectionProviderMultiPhasePhase, PalletElectionProviderMultiPhaseReadySolution, PalletElectionProviderMultiPhaseRoundSnapshot, PalletElectionProviderMultiPhaseSignedSignedSubmission, PalletElectionProviderMultiPhaseSolutionOrSnapshotSize, PalletElectionsPhragmenSeatHolder, PalletElectionsPhragmenVoter, PalletGiltActiveGilt, PalletGiltActiveGiltsTotal, PalletGiltGiltBid, PalletGrandpaStoredPendingChange, PalletGrandpaStoredState, PalletIdentityRegistrarInfo, PalletIdentityRegistration, PalletImOnlineBoundedOpaqueNetworkState, PalletImOnlineSr25519AppSr25519Public, PalletLotteryLotteryConfig, PalletMultisigMultisig, PalletNominationPoolsBondedPoolInner, PalletNominationPoolsPoolMember, PalletNominationPoolsRewardPool, PalletNominationPoolsSubPools, PalletPreimageRequestStatus, PalletProxyAnnouncement, PalletProxyProxyDefinition, PalletRecoveryActiveRecovery, PalletRecoveryRecoveryConfig, PalletReferendaReferendumInfo, PalletSchedulerScheduledV3, PalletSocietyBid, PalletSocietyBidKind, PalletSocietyVote, PalletSocietyVouchingStatus, PalletStakingActiveEraInfo, PalletStakingEraRewardPoints, PalletStakingExposure, PalletStakingForcing, PalletStakingNominations, PalletStakingReleases, PalletStakingRewardDestination, PalletStakingSlashingSlashingSpans, PalletStakingSlashingSpanRecord, PalletStakingStakingLedger, PalletStakingUnappliedSlash, PalletStakingValidatorPrefs, PalletStateTrieMigrationMigrationLimits, PalletStateTrieMigrationMigrationTask, PalletTipsOpenTip, PalletTransactionPaymentReleases, PalletTransactionStorageTransactionInfo, PalletTreasuryProposal, PalletUniquesClassDetails, PalletUniquesClassMetadata, PalletUniquesInstanceDetails, PalletUniquesInstanceMetadata, PalletVestingReleases, PalletVestingVestingInfo, SpAuthorityDiscoveryAppPublic, SpConsensusBabeAppPublic, SpConsensusBabeBabeEpochConfiguration, SpConsensusBabeDigestsNextConfigDescriptor, SpConsensusBabeDigestsPreDigest, SpCoreCryptoKeyTypeId, SpNposElectionsElectionScore, SpRuntimeDigest, SpStakingOffenceOffenceDetails } from '@polkadot/types/lookup';
|
||||
import type { Observable } from '@polkadot/types/types';
|
||||
|
||||
declare module '@polkadot/api/types/storage' {
|
||||
export interface AugmentedQueries<ApiType> {
|
||||
declare module '@polkadot/api-base/types/storage' {
|
||||
export interface AugmentedQueries<ApiType extends ApiTypes> {
|
||||
assets: {
|
||||
/**
|
||||
* The number of units of assets held by any given account.
|
||||
* The holdings of a specific account for a specific asset.
|
||||
**/
|
||||
account: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: AccountId32 | string | Uint8Array) => Observable<PalletAssetsAssetBalance>, [u32, AccountId32]> & QueryableStorageEntry<ApiType, [u32, AccountId32]>;
|
||||
account: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: AccountId32 | string | Uint8Array) => Observable<Option<PalletAssetsAssetAccount>>, [u32, AccountId32]> & QueryableStorageEntry<ApiType, [u32, AccountId32]>;
|
||||
/**
|
||||
* Approved balance transfers. First balance is the amount approved for transfer. Second
|
||||
* is the amount of `T::Currency` reserved for storing this.
|
||||
@@ -33,6 +35,20 @@ declare module '@polkadot/api/types/storage' {
|
||||
**/
|
||||
[key: string]: QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
authorityDiscovery: {
|
||||
/**
|
||||
* Keys of the current authority set.
|
||||
**/
|
||||
keys: AugmentedQuery<ApiType, () => Observable<Vec<SpAuthorityDiscoveryAppPublic>>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* Keys of the next authority set.
|
||||
**/
|
||||
nextKeys: AugmentedQuery<ApiType, () => Observable<Vec<SpAuthorityDiscoveryAppPublic>>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* Generic query
|
||||
**/
|
||||
[key: string]: QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
authorship: {
|
||||
/**
|
||||
* Author of current block.
|
||||
@@ -60,7 +76,7 @@ declare module '@polkadot/api/types/storage' {
|
||||
* This field should always be populated during block processing unless
|
||||
* secondary plain slots are enabled (which don't contain a VRF output).
|
||||
*
|
||||
* It is set in `on_initialize`, before it will contain the value from the last block.
|
||||
* It is set in `on_finalize`, before it will contain the value from the last block.
|
||||
**/
|
||||
authorVrfRandomness: AugmentedQuery<ApiType, () => Observable<Option<U8aFixed>>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
@@ -93,7 +109,7 @@ declare module '@polkadot/api/types/storage' {
|
||||
* Temporary value (cleared at block finalization) which is `Some`
|
||||
* if per-block initialization has already been called for current block.
|
||||
**/
|
||||
initialized: AugmentedQuery<ApiType, () => Observable<Option<Option<U8aFixed>>>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
initialized: AugmentedQuery<ApiType, () => Observable<Option<Option<SpConsensusBabeDigestsPreDigest>>>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* How late the current block is compared to its parent.
|
||||
*
|
||||
@@ -135,7 +151,7 @@ declare module '@polkadot/api/types/storage' {
|
||||
/**
|
||||
* Randomness under construction.
|
||||
*
|
||||
* We make a tradeoff between storage accesses and list length.
|
||||
* We make a trade-off between storage accesses and list length.
|
||||
* We store the under-construction randomness in segments of up to
|
||||
* `UNDER_CONSTRUCTION_SEGMENT_LENGTH`.
|
||||
*
|
||||
@@ -155,7 +171,7 @@ declare module '@polkadot/api/types/storage' {
|
||||
};
|
||||
bagsList: {
|
||||
/**
|
||||
* How many ids are registered.
|
||||
* Counter for the related counted storage map
|
||||
**/
|
||||
counterForListNodes: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
@@ -177,8 +193,29 @@ declare module '@polkadot/api/types/storage' {
|
||||
};
|
||||
balances: {
|
||||
/**
|
||||
* The balance of an account.
|
||||
* The Balances pallet example of storing the balance of an account.
|
||||
*
|
||||
* # Example
|
||||
*
|
||||
* ```nocompile
|
||||
* impl pallet_balances::Config for Runtime {
|
||||
* type AccountStore = StorageMapShim<Self::Account<Runtime>, frame_system::Provider<Runtime>, AccountId, Self::AccountData<Balance>>
|
||||
* }
|
||||
* ```
|
||||
*
|
||||
* You can also store the balance of an account in the `System` pallet.
|
||||
*
|
||||
* # Example
|
||||
*
|
||||
* ```nocompile
|
||||
* impl pallet_balances::Config for Runtime {
|
||||
* type AccountStore = System
|
||||
* }
|
||||
* ```
|
||||
*
|
||||
* But this comes with tradeoffs, storing account balances in the system pallet stores
|
||||
* `frame_system` data alongside the account data contrary to storing account balances in the
|
||||
* `Balances` pallet, which uses a `StorageMap` to store balances data only.
|
||||
* NOTE: This is only used in the case that this pallet is used to store balances.
|
||||
**/
|
||||
account: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<PalletBalancesAccountData>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;
|
||||
@@ -228,11 +265,34 @@ declare module '@polkadot/api/types/storage' {
|
||||
**/
|
||||
[key: string]: QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
contracts: {
|
||||
childBounties: {
|
||||
/**
|
||||
* The subtrie counter.
|
||||
* Child bounties that have been added.
|
||||
**/
|
||||
accountCounter: AugmentedQuery<ApiType, () => Observable<u64>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
childBounties: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<PalletChildBountiesChildBounty>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
|
||||
/**
|
||||
* Number of total child bounties.
|
||||
**/
|
||||
childBountyCount: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* The description of each child-bounty.
|
||||
**/
|
||||
childBountyDescriptions: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<Bytes>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
|
||||
/**
|
||||
* The cumulative child-bounty curator fee for each parent bounty.
|
||||
**/
|
||||
childrenCuratorFees: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u128>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
|
||||
/**
|
||||
* Number of child bounties per parent bounty.
|
||||
* Map of parent bounty index to number of child bounties.
|
||||
**/
|
||||
parentChildBounties: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<u32>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
|
||||
/**
|
||||
* Generic query
|
||||
**/
|
||||
[key: string]: QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
contracts: {
|
||||
/**
|
||||
* A mapping between an original code hash and instrumented wasm code, ready for execution.
|
||||
**/
|
||||
@@ -250,6 +310,35 @@ declare module '@polkadot/api/types/storage' {
|
||||
* stored in said trie. Therefore this operation is performed lazily in `on_initialize`.
|
||||
**/
|
||||
deletionQueue: AugmentedQuery<ApiType, () => Observable<Vec<PalletContractsStorageDeletedContract>>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* This is a **monotonic** counter incremented on contract instantiation.
|
||||
*
|
||||
* This is used in order to generate unique trie ids for contracts.
|
||||
* The trie id of a new contract is calculated from hash(account_id, nonce).
|
||||
* The nonce is required because otherwise the following sequence would lead to
|
||||
* a possible collision of storage:
|
||||
*
|
||||
* 1. Create a new contract.
|
||||
* 2. Terminate the contract.
|
||||
* 3. Immediately recreate the contract with the same account_id.
|
||||
*
|
||||
* This is bad because the contents of a trie are deleted lazily and there might be
|
||||
* storage of the old instantiation still in it when the new contract is created. Please
|
||||
* note that we can't replace the counter by the block number because the sequence above
|
||||
* can happen in the same block. We also can't keep the account counter in memory only
|
||||
* because storage is the only way to communicate across different extrinsics in the
|
||||
* same block.
|
||||
*
|
||||
* # Note
|
||||
*
|
||||
* Do not use it to determine the number of contracts. It won't be decremented if
|
||||
* a contract is destroyed.
|
||||
**/
|
||||
nonce: AugmentedQuery<ApiType, () => Observable<u64>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* A mapping between an original code hash and its owner information.
|
||||
**/
|
||||
ownerInfoOf: AugmentedQuery<ApiType, (arg: H256 | string | Uint8Array) => Observable<Option<PalletContractsWasmOwnerInfo>>, [H256]> & QueryableStorageEntry<ApiType, [H256]>;
|
||||
/**
|
||||
* A mapping from an original code hash to the original code, untouched by instrumentation.
|
||||
**/
|
||||
@@ -259,6 +348,23 @@ declare module '@polkadot/api/types/storage' {
|
||||
**/
|
||||
[key: string]: QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
convictionVoting: {
|
||||
/**
|
||||
* The voting classes which have a non-zero lock requirement and the lock amounts which they
|
||||
* require. The actual amount locked on behalf of this pallet should always be the maximum of
|
||||
* this list.
|
||||
**/
|
||||
classLocksFor: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<Vec<ITuple<[u8, u128]>>>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;
|
||||
/**
|
||||
* All voting for a particular voter in a particular voting class. We store the balance for the
|
||||
* number of votes that we have recorded.
|
||||
**/
|
||||
votingFor: AugmentedQuery<ApiType, (arg1: AccountId32 | string | Uint8Array, arg2: u8 | AnyNumber | Uint8Array) => Observable<PalletConvictionVotingVoteVoting>, [AccountId32, u8]> & QueryableStorageEntry<ApiType, [AccountId32, u8]>;
|
||||
/**
|
||||
* Generic query
|
||||
**/
|
||||
[key: string]: QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
council: {
|
||||
/**
|
||||
* The current members of the collective. This is stored sorted (just by value).
|
||||
@@ -310,13 +416,6 @@ declare module '@polkadot/api/types/storage' {
|
||||
* proposal.
|
||||
**/
|
||||
lastTabledWasExternal: AugmentedQuery<ApiType, () => Observable<bool>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* Accounts for which there are locks in action which may be removed at some point in the
|
||||
* future. The value is the block number at which the lock expires and may be removed.
|
||||
*
|
||||
* TWOX-NOTE: OK ― `AccountId` is a secure hash.
|
||||
**/
|
||||
locks: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<Option<u32>>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;
|
||||
/**
|
||||
* The lowest referendum index representing an unbaked referendum. Equal to
|
||||
* `ReferendumCount` if there isn't a unbaked referendum.
|
||||
@@ -387,7 +486,7 @@ declare module '@polkadot/api/types/storage' {
|
||||
*
|
||||
* Can be set via `set_minimum_untrusted_score`.
|
||||
**/
|
||||
minimumUntrustedScore: AugmentedQuery<ApiType, () => Observable<Option<Vec<u128>>>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
minimumUntrustedScore: AugmentedQuery<ApiType, () => Observable<Option<SpNposElectionsElectionScore>>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* Current best solution, signed or unsigned, queued to be returned upon `elect`.
|
||||
**/
|
||||
@@ -409,7 +508,7 @@ declare module '@polkadot/api/types/storage' {
|
||||
* can be quite large, so we're willing to pay the cost of multiple database accesses to access
|
||||
* them one at a time instead of reading and decoding all of them at once.
|
||||
**/
|
||||
signedSubmissionIndices: AugmentedQuery<ApiType, () => Observable<BTreeMap<Vec<u128>, u32>>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
signedSubmissionIndices: AugmentedQuery<ApiType, () => Observable<BTreeMap<SpNposElectionsElectionScore, u32>>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* The next index to be assigned to an incoming signed submission.
|
||||
*
|
||||
@@ -431,7 +530,7 @@ declare module '@polkadot/api/types/storage' {
|
||||
* Twox note: the key of the map is an auto-incrementing index which users cannot inspect or
|
||||
* affect; we shouldn't need a cryptographically secure hasher.
|
||||
**/
|
||||
signedSubmissionsMap: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<PalletElectionProviderMultiPhaseSignedSignedSubmission>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
|
||||
signedSubmissionsMap: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<PalletElectionProviderMultiPhaseSignedSignedSubmission>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
|
||||
/**
|
||||
* Snapshot data of the round.
|
||||
*
|
||||
@@ -676,7 +775,7 @@ declare module '@polkadot/api/types/storage' {
|
||||
[key: string]: QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
multisig: {
|
||||
calls: AugmentedQuery<ApiType, (arg: U8aFixed | string | Uint8Array) => Observable<Option<ITuple<[Bytes, AccountId32, u128]>>>, [U8aFixed]> & QueryableStorageEntry<ApiType, [U8aFixed]>;
|
||||
calls: AugmentedQuery<ApiType, (arg: U8aFixed | string | Uint8Array) => Observable<Option<ITuple<[WrapperKeepOpaque<Call>, AccountId32, u128]>>>, [U8aFixed]> & QueryableStorageEntry<ApiType, [U8aFixed]>;
|
||||
/**
|
||||
* The set of open multisig operations.
|
||||
**/
|
||||
@@ -686,6 +785,86 @@ declare module '@polkadot/api/types/storage' {
|
||||
**/
|
||||
[key: string]: QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
nominationPools: {
|
||||
/**
|
||||
* Storage for bonded pools.
|
||||
**/
|
||||
bondedPools: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<PalletNominationPoolsBondedPoolInner>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
|
||||
/**
|
||||
* Counter for the related counted storage map
|
||||
**/
|
||||
counterForBondedPools: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* Counter for the related counted storage map
|
||||
**/
|
||||
counterForMetadata: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* Counter for the related counted storage map
|
||||
**/
|
||||
counterForPoolMembers: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* Counter for the related counted storage map
|
||||
**/
|
||||
counterForReversePoolIdLookup: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* Counter for the related counted storage map
|
||||
**/
|
||||
counterForRewardPools: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* Counter for the related counted storage map
|
||||
**/
|
||||
counterForSubPoolsStorage: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
lastPoolId: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* Maximum number of members that can exist in the system. If `None`, then the count
|
||||
* members are not bound on a system wide basis.
|
||||
**/
|
||||
maxPoolMembers: AugmentedQuery<ApiType, () => Observable<Option<u32>>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* Maximum number of members that may belong to pool. If `None`, then the count of
|
||||
* members is not bound on a per pool basis.
|
||||
**/
|
||||
maxPoolMembersPerPool: AugmentedQuery<ApiType, () => Observable<Option<u32>>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* Maximum number of nomination pools that can exist. If `None`, then an unbounded number of
|
||||
* pools can exist.
|
||||
**/
|
||||
maxPools: AugmentedQuery<ApiType, () => Observable<Option<u32>>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* Metadata for the pool.
|
||||
**/
|
||||
metadata: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Bytes>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
|
||||
/**
|
||||
* Minimum bond required to create a pool.
|
||||
*
|
||||
* This is the amount that the depositor must put as their initial stake in the pool, as an
|
||||
* indication of "skin in the game".
|
||||
**/
|
||||
minCreateBond: AugmentedQuery<ApiType, () => Observable<u128>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* Minimum amount to bond to join a pool.
|
||||
**/
|
||||
minJoinBond: AugmentedQuery<ApiType, () => Observable<u128>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* Active members.
|
||||
**/
|
||||
poolMembers: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<Option<PalletNominationPoolsPoolMember>>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;
|
||||
reversePoolIdLookup: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<Option<u32>>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;
|
||||
/**
|
||||
* Reward pools. This is where there rewards for each pool accumulate. When a members payout
|
||||
* is claimed, the balance comes out fo the reward pool. Keyed by the bonded pools account.
|
||||
**/
|
||||
rewardPools: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<PalletNominationPoolsRewardPool>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
|
||||
/**
|
||||
* Groups of unbonding pools. Each group of unbonding pools belongs to a bonded pool,
|
||||
* hence the name sub-pools. Keyed by the bonded pools account.
|
||||
**/
|
||||
subPoolsStorage: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<PalletNominationPoolsSubPools>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
|
||||
/**
|
||||
* Generic query
|
||||
**/
|
||||
[key: string]: QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
offences: {
|
||||
/**
|
||||
* A vector of reports of the same kind that happened at the same time slot.
|
||||
@@ -709,6 +888,20 @@ declare module '@polkadot/api/types/storage' {
|
||||
**/
|
||||
[key: string]: QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
preimage: {
|
||||
/**
|
||||
* The preimages stored by this pallet.
|
||||
**/
|
||||
preimageFor: AugmentedQuery<ApiType, (arg: H256 | string | Uint8Array) => Observable<Option<Bytes>>, [H256]> & QueryableStorageEntry<ApiType, [H256]>;
|
||||
/**
|
||||
* The request status of a given hash.
|
||||
**/
|
||||
statusFor: AugmentedQuery<ApiType, (arg: H256 | string | Uint8Array) => Observable<Option<PalletPreimageRequestStatus>>, [H256]> & QueryableStorageEntry<ApiType, [H256]>;
|
||||
/**
|
||||
* Generic query
|
||||
**/
|
||||
[key: string]: QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
proxy: {
|
||||
/**
|
||||
* The announcements made by the proxy (key).
|
||||
@@ -759,21 +952,40 @@ declare module '@polkadot/api/types/storage' {
|
||||
**/
|
||||
[key: string]: QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
referenda: {
|
||||
/**
|
||||
* The number of referenda being decided currently.
|
||||
**/
|
||||
decidingCount: AugmentedQuery<ApiType, (arg: u8 | AnyNumber | Uint8Array) => Observable<u32>, [u8]> & QueryableStorageEntry<ApiType, [u8]>;
|
||||
/**
|
||||
* The next free referendum index, aka the number of referenda started so far.
|
||||
**/
|
||||
referendumCount: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* Information concerning any given referendum.
|
||||
**/
|
||||
referendumInfoFor: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<PalletReferendaReferendumInfo>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
|
||||
/**
|
||||
* The sorted list of referenda ready to be decided but not yet being decided, ordered by
|
||||
* conviction-weighted approvals.
|
||||
*
|
||||
* This should be empty if `DecidingCount` is less than `TrackInfo::max_deciding`.
|
||||
**/
|
||||
trackQueue: AugmentedQuery<ApiType, (arg: u8 | AnyNumber | Uint8Array) => Observable<Vec<ITuple<[u32, u128]>>>, [u8]> & QueryableStorageEntry<ApiType, [u8]>;
|
||||
/**
|
||||
* Generic query
|
||||
**/
|
||||
[key: string]: QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
scheduler: {
|
||||
/**
|
||||
* Items to be executed, indexed by the block number that they should be executed on.
|
||||
**/
|
||||
agenda: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Vec<Option<PalletSchedulerScheduledV2>>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
|
||||
agenda: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Vec<Option<PalletSchedulerScheduledV3>>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
|
||||
/**
|
||||
* Lookup from identity to the block number and index of the task.
|
||||
**/
|
||||
lookup: AugmentedQuery<ApiType, (arg: Bytes | string | Uint8Array) => Observable<Option<ITuple<[u32, u32]>>>, [Bytes]> & QueryableStorageEntry<ApiType, [Bytes]>;
|
||||
/**
|
||||
* Storage version of the pallet.
|
||||
*
|
||||
* New networks start with last version.
|
||||
**/
|
||||
storageVersion: AugmentedQuery<ApiType, () => Observable<PalletSchedulerReleases>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* Generic query
|
||||
**/
|
||||
@@ -921,11 +1133,11 @@ declare module '@polkadot/api/types/storage' {
|
||||
**/
|
||||
chillThreshold: AugmentedQuery<ApiType, () => Observable<Option<Percent>>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* A tracker to keep count of the number of items in the `Nominators` map.
|
||||
* Counter for the related counted storage map
|
||||
**/
|
||||
counterForNominators: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* A tracker to keep count of the number of items in the `Validators` map.
|
||||
* Counter for the related counted storage map
|
||||
**/
|
||||
counterForValidators: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
@@ -1035,6 +1247,12 @@ declare module '@polkadot/api/types/storage' {
|
||||
* When this value is not set, no limits are enforced.
|
||||
**/
|
||||
maxValidatorsCount: AugmentedQuery<ApiType, () => Observable<Option<u32>>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* The minimum amount of commission that validators can set.
|
||||
*
|
||||
* If set to `0`, no limit exists.
|
||||
**/
|
||||
minCommission: AugmentedQuery<ApiType, () => Observable<Perbill>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* Minimum number of staking participants before emergency conditions are imposed.
|
||||
**/
|
||||
@@ -1048,9 +1266,22 @@ declare module '@polkadot/api/types/storage' {
|
||||
**/
|
||||
minValidatorBond: AugmentedQuery<ApiType, () => Observable<u128>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* The map from nominator stash key to the set of stash keys of all validators to nominate.
|
||||
* The map from nominator stash key to their nomination preferences, namely the validators that
|
||||
* they wish to support.
|
||||
*
|
||||
* When updating this storage item, you must also update the `CounterForNominators`.
|
||||
* Note that the keys of this storage map might become non-decodable in case the
|
||||
* [`Config::MaxNominations`] configuration is decreased. In this rare case, these nominators
|
||||
* are still existent in storage, their key is correct and retrievable (i.e. `contains_key`
|
||||
* indicates that they exist), but their value cannot be decoded. Therefore, the non-decodable
|
||||
* nominators will effectively not-exist, until they re-submit their preferences such that it
|
||||
* is within the bounds of the newly set `Config::MaxNominations`.
|
||||
*
|
||||
* This implies that `::iter_keys().count()` and `::iter().count()` might return different
|
||||
* values for this map. Moreover, the main `::count()` is aligned with the former, namely the
|
||||
* number of keys that exist.
|
||||
*
|
||||
* Lastly, if any of the nominators become non-decodable, they can be chilled immediately via
|
||||
* [`Call::chill_other`] dispatchable by anyone.
|
||||
**/
|
||||
nominators: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<Option<PalletStakingNominations>>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;
|
||||
/**
|
||||
@@ -1105,8 +1336,6 @@ declare module '@polkadot/api/types/storage' {
|
||||
validatorCount: AugmentedQuery<ApiType, () => Observable<u32>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* The map from (wannabe) validator stash key to the preferences of that validator.
|
||||
*
|
||||
* When updating this storage item, you must also update the `CounterForValidators`.
|
||||
**/
|
||||
validators: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<PalletStakingValidatorPrefs>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;
|
||||
/**
|
||||
@@ -1119,11 +1348,36 @@ declare module '@polkadot/api/types/storage' {
|
||||
**/
|
||||
[key: string]: QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
stateTrieMigration: {
|
||||
/**
|
||||
* The limits that are imposed on automatic migrations.
|
||||
*
|
||||
* If set to None, then no automatic migration happens.
|
||||
**/
|
||||
autoLimits: AugmentedQuery<ApiType, () => Observable<Option<PalletStateTrieMigrationMigrationLimits>>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* Migration progress.
|
||||
*
|
||||
* This stores the snapshot of the last migrated keys. It can be set into motion and move
|
||||
* forward by any of the means provided by this pallet.
|
||||
**/
|
||||
migrationProcess: AugmentedQuery<ApiType, () => Observable<PalletStateTrieMigrationMigrationTask>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* The maximum limits that the signed migration could use.
|
||||
*
|
||||
* If not set, no signed submission is allowed.
|
||||
**/
|
||||
signedMigrationMaxLimits: AugmentedQuery<ApiType, () => Observable<Option<PalletStateTrieMigrationMigrationLimits>>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* Generic query
|
||||
**/
|
||||
[key: string]: QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
sudo: {
|
||||
/**
|
||||
* The `AccountId` of the sudo key.
|
||||
**/
|
||||
key: AugmentedQuery<ApiType, () => Observable<AccountId32>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
key: AugmentedQuery<ApiType, () => Observable<Option<AccountId32>>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* Generic query
|
||||
**/
|
||||
@@ -1149,7 +1403,7 @@ declare module '@polkadot/api/types/storage' {
|
||||
/**
|
||||
* Digest of the current block, also part of the block header.
|
||||
**/
|
||||
digest: AugmentedQuery<ApiType, () => Observable<SpRuntimeGenericDigest>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
digest: AugmentedQuery<ApiType, () => Observable<SpRuntimeDigest>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
* The number of events in the `Events<T>` list.
|
||||
**/
|
||||
@@ -1157,8 +1411,11 @@ declare module '@polkadot/api/types/storage' {
|
||||
/**
|
||||
* Events deposited for the current block.
|
||||
*
|
||||
* NOTE: This storage item is explicitly unbounded since it is never intended to be read
|
||||
* from within the runtime.
|
||||
* NOTE: The item is unbound and should therefore never be read on chain.
|
||||
* It could otherwise inflate the PoV size of a block.
|
||||
*
|
||||
* Events have a large in-memory size. Box the events to not go out-of-memory
|
||||
* just in case someone still reads them from within the runtime.
|
||||
**/
|
||||
events: AugmentedQuery<ApiType, () => Observable<Vec<FrameSystemEventRecord>>, []> & QueryableStorageEntry<ApiType, []>;
|
||||
/**
|
||||
@@ -1371,6 +1628,11 @@ declare module '@polkadot/api/types/storage' {
|
||||
* Details of an asset class.
|
||||
**/
|
||||
class: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Option<PalletUniquesClassDetails>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
|
||||
/**
|
||||
* The classes owned by any given account; set out this way so that classes owned by a single
|
||||
* account can be enumerated.
|
||||
**/
|
||||
classAccount: AugmentedQuery<ApiType, (arg1: AccountId32 | string | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<Null>>, [AccountId32, u32]> & QueryableStorageEntry<ApiType, [AccountId32, u32]>;
|
||||
/**
|
||||
* Metadata of an asset class.
|
||||
**/
|
||||
@@ -1379,6 +1641,10 @@ declare module '@polkadot/api/types/storage' {
|
||||
* Metadata of an asset instance.
|
||||
**/
|
||||
instanceMetadataOf: AugmentedQuery<ApiType, (arg1: u32 | AnyNumber | Uint8Array, arg2: u32 | AnyNumber | Uint8Array) => Observable<Option<PalletUniquesInstanceMetadata>>, [u32, u32]> & QueryableStorageEntry<ApiType, [u32, u32]>;
|
||||
/**
|
||||
* The class, if any, of which an account is willing to take ownership.
|
||||
**/
|
||||
ownershipAcceptance: AugmentedQuery<ApiType, (arg: AccountId32 | string | Uint8Array) => Observable<Option<u32>>, [AccountId32]> & QueryableStorageEntry<ApiType, [AccountId32]>;
|
||||
/**
|
||||
* Generic query
|
||||
**/
|
||||
@@ -1400,9 +1666,12 @@ declare module '@polkadot/api/types/storage' {
|
||||
**/
|
||||
[key: string]: QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
}
|
||||
|
||||
export interface QueryableStorage<ApiType extends ApiTypes> extends AugmentedQueries<ApiType> {
|
||||
[key: string]: QueryableModuleStorage<ApiType>;
|
||||
}
|
||||
}
|
||||
whitelist: {
|
||||
whitelistedCall: AugmentedQuery<ApiType, (arg: H256 | string | Uint8Array) => Observable<Option<Null>>, [H256]> & QueryableStorageEntry<ApiType, [H256]>;
|
||||
/**
|
||||
* Generic query
|
||||
**/
|
||||
[key: string]: QueryableStorageEntry<ApiType>;
|
||||
};
|
||||
} // AugmentedQueries
|
||||
} // declare module
|
||||
@@ -0,0 +1,4 @@
|
||||
// Copyright 2017-2022 @polkadot/api-augment authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import '@polkadot/types-augment/registry/substrate';
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"extends": "../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"baseUrl": "..",
|
||||
"outDir": "./build",
|
||||
"rootDir": "./src"
|
||||
},
|
||||
"exclude": [
|
||||
"**/*.spec.ts",
|
||||
"**/kusama/*.ts",
|
||||
"**/polkadot/*.ts"
|
||||
],
|
||||
"references": [
|
||||
{ "path": "../api-base/tsconfig.build.json" },
|
||||
{ "path": "../rpc-augment/tsconfig.build.json" },
|
||||
{ "path": "../types/tsconfig.build.json" },
|
||||
{ "path": "../types-codec/tsconfig.build.json" },
|
||||
{ "path": "../types-augment/tsconfig.build.json" },
|
||||
{ "path": "../types-support/tsconfig.build.json" }
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"extends": "../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"baseUrl": "..",
|
||||
"outDir": "./build",
|
||||
"rootDir": "./src"
|
||||
},
|
||||
"include": [
|
||||
"**/base.ts",
|
||||
"**/kusama/*.ts"
|
||||
],
|
||||
"exclude": [
|
||||
"**/kusama/*.spec.ts"
|
||||
],
|
||||
"references": [
|
||||
{ "path": "../api-base/tsconfig.build.json" },
|
||||
{ "path": "../rpc-augment/tsconfig.build.json" },
|
||||
{ "path": "../types/tsconfig.build.json" },
|
||||
{ "path": "../types-codec/tsconfig.build.json" },
|
||||
{ "path": "../types-augment/tsconfig.build.json" }
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"extends": "../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"baseUrl": "..",
|
||||
"outDir": "./build",
|
||||
"rootDir": "./src",
|
||||
"emitDeclarationOnly": false,
|
||||
"noEmit": true
|
||||
},
|
||||
"include": [
|
||||
"**/kusama/*.spec.ts"
|
||||
],
|
||||
"references": [
|
||||
{ "path": "../api-augment/tsconfig.build.json" },
|
||||
{ "path": "../api-augment/tsconfig.kusama.json" },
|
||||
{ "path": "../api-base/tsconfig.build.json" },
|
||||
{ "path": "../rpc-augment/tsconfig.build.json" },
|
||||
{ "path": "../types/tsconfig.build.json" },
|
||||
{ "path": "../types-augment/tsconfig.build.json" },
|
||||
{ "path": "../types-support/tsconfig.build.json" }
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"extends": "../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"baseUrl": "..",
|
||||
"outDir": "./build",
|
||||
"rootDir": "./src"
|
||||
},
|
||||
"include": [
|
||||
"**/base.ts",
|
||||
"**/polkadot/*.ts"
|
||||
],
|
||||
"exclude": [
|
||||
"**/polkadot/*.spec.ts"
|
||||
],
|
||||
"references": [
|
||||
{ "path": "../api-base/tsconfig.build.json" },
|
||||
{ "path": "../rpc-augment/tsconfig.build.json" },
|
||||
{ "path": "../types/tsconfig.build.json" },
|
||||
{ "path": "../types-codec/tsconfig.build.json" },
|
||||
{ "path": "../types-augment/tsconfig.build.json" }
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,201 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
@@ -0,0 +1,3 @@
|
||||
# @polkadot/api-base
|
||||
|
||||
API Base interfaces
|
||||
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"author": "Jaco Greeff <jacogr@gmail.com>",
|
||||
"bugs": "https://github.com/polkadot-js/api/issues",
|
||||
"contributors": [],
|
||||
"description": "Interfaces for interacting with contracts and contract ABIs",
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
},
|
||||
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/api-base#readme",
|
||||
"license": "Apache-2.0",
|
||||
"maintainers": [],
|
||||
"name": "@polkadot/api-base",
|
||||
"repository": {
|
||||
"directory": "packages/api-base",
|
||||
"type": "git",
|
||||
"url": "https://github.com/polkadot-js/api.git"
|
||||
},
|
||||
"sideEffects": [
|
||||
"./detectPackage.js",
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"type": "module",
|
||||
"version": "8.4.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.17.9",
|
||||
"@polkadot/rpc-core": "8.4.2",
|
||||
"@polkadot/types": "8.4.2",
|
||||
"@polkadot/util": "^9.2.1",
|
||||
"rxjs": "^7.5.5"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
// Copyright 2017-2022 @polkadot/api-contract authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
export { packageInfo } from './packageInfo';
|
||||
@@ -0,0 +1,7 @@
|
||||
// Copyright 2017-2022 @polkadot/api-contract authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { packageInfo as rpcInfo } from '@polkadot/rpc-core/packageInfo';
|
||||
import { packageInfo as typesInfo } from '@polkadot/types/packageInfo';
|
||||
|
||||
export default [rpcInfo, typesInfo];
|
||||
@@ -0,0 +1,11 @@
|
||||
// Copyright 2017-2022 @polkadot/api-base authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
import { detectPackage } from '@polkadot/util';
|
||||
|
||||
import others from './detectOther';
|
||||
import { packageInfo } from './packageInfo';
|
||||
|
||||
detectPackage(packageInfo, null, others);
|
||||
@@ -0,0 +1,6 @@
|
||||
// Copyright 2017-2022 @polkadot/api-contract authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import './detectPackage';
|
||||
|
||||
export * from './bundle';
|
||||
@@ -0,0 +1,6 @@
|
||||
// Copyright 2017-2022 @polkadot/api-base authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/api-base', path: 'auto', type: 'auto', version: '8.4.2' };
|
||||
@@ -0,0 +1,26 @@
|
||||
// Copyright 2017-2022 @polkadot/api-base authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { Observable } from 'rxjs';
|
||||
import type { DecoratedRpc, QueryableConsts, QueryableStorage, QueryableStorageMulti, SubmittableExtrinsics } from '@polkadot/api-base/types';
|
||||
import type { RpcInterface } from '@polkadot/rpc-core/types';
|
||||
import type { Metadata } from '@polkadot/types';
|
||||
import type { Hash, RuntimeVersion } from '@polkadot/types/interfaces';
|
||||
import type { Registry, Signer } from '@polkadot/types/types';
|
||||
|
||||
// A smaller interface of ApiRx, used in derive and in SubmittableExtrinsic
|
||||
export interface ApiInterfaceRx {
|
||||
consts: QueryableConsts<'rxjs'>;
|
||||
extrinsicType: number;
|
||||
genesisHash?: Hash;
|
||||
hasSubscriptions: boolean;
|
||||
registry: Registry;
|
||||
runtimeMetadata: Metadata;
|
||||
runtimeVersion: RuntimeVersion;
|
||||
query: QueryableStorage<'rxjs'>;
|
||||
queryAt: (blockHash: Uint8Array | string, knownVersion?: RuntimeVersion) => Observable<QueryableStorage<'rxjs'>>;
|
||||
queryMulti: QueryableStorageMulti<'rxjs'>;
|
||||
rpc: DecoratedRpc<'rxjs', RpcInterface>;
|
||||
tx: SubmittableExtrinsics<'rxjs'>;
|
||||
signer?: Signer;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2021 @polkadot/api authors & contributors
|
||||
// Copyright 2017-2022 @polkadot/api-base authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { Observable } from 'rxjs';
|
||||
@@ -17,10 +17,15 @@ export type VoidFn = () => void;
|
||||
|
||||
export type UnsubscribePromise = Promise<VoidFn>;
|
||||
|
||||
// FIXME The day TS has higher-kinded types, we can remove this hardcoded stuff
|
||||
export type PromiseOrObs<ApiType extends ApiTypes, T> = ApiType extends 'rxjs'
|
||||
? Observable<T>
|
||||
: Promise<T>;
|
||||
export type PromiseOrObs<ApiType extends ApiTypes, T> =
|
||||
ApiType extends 'rxjs'
|
||||
? Observable<T>
|
||||
: Promise<T>;
|
||||
|
||||
export type MethodResult<ApiType extends ApiTypes, F extends AnyFunction> =
|
||||
ApiType extends 'rxjs'
|
||||
? RxResult<F>
|
||||
: PromiseResult<F>;
|
||||
|
||||
// Here are the return types of these parts of the api:
|
||||
// - api.query.*.*: no exact typings
|
||||
@@ -39,15 +44,9 @@ export interface PromiseResult<F extends AnyFunction> {
|
||||
(...args: Parameters<F>): Promise<ObsInnerType<ReturnType<F>>>;
|
||||
(...args: Push<Parameters<F>, Callback<ObsInnerType<ReturnType<F>>>>): UnsubscribePromise;
|
||||
<T extends Codec | Codec[]>(...args: Parameters<F>): Promise<T>;
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
<T extends Codec | Codec[]>(...args: Push<Parameters<F>, Callback<T>>): UnsubscribePromise;
|
||||
}
|
||||
|
||||
// FIXME The day TS has higher-kinded types, we can remove this hardcoded stuff
|
||||
export type MethodResult<ApiType extends ApiTypes, F extends AnyFunction> = ApiType extends 'rxjs'
|
||||
? RxResult<F>
|
||||
: PromiseResult<F>;
|
||||
|
||||
// In the abstract `decorateMethod` in Base.ts, we can also pass in some meta-
|
||||
// information. This describes it.
|
||||
export interface DecorateMethodOptions {
|
||||
@@ -64,4 +63,5 @@ export interface PaginationOptions<A = unknown> {
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
export type DecorateMethod<ApiType extends ApiTypes> = <Method extends (...args: any[]) => Observable<any>>(method: Method, options?: DecorateMethodOptions) => any;
|
||||
export type DecorateMethod<ApiType extends ApiTypes, T = any> =
|
||||
<M extends (...args: any[]) => Observable<any>>(method: M, options?: DecorateMethodOptions) => T;
|
||||
@@ -0,0 +1,25 @@
|
||||
// Copyright 2017-2022 @polkadot/api-base authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { PalletConstantMetadataLatest } from '@polkadot/types/interfaces';
|
||||
import type { Codec } from '@polkadot/types/types';
|
||||
import type { ApiTypes } from './base';
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/no-empty-interface
|
||||
export interface AugmentedConsts<ApiType extends ApiTypes> {
|
||||
// augmented
|
||||
}
|
||||
|
||||
export interface QueryableConsts<ApiType extends ApiTypes> extends AugmentedConsts<ApiType> {
|
||||
// when non-augmented, we need to at least have Codec results
|
||||
[key: string]: QueryableModuleConsts;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
export interface AugmentedConst<ApiType extends ApiTypes> {
|
||||
meta: PalletConstantMetadataLatest;
|
||||
}
|
||||
|
||||
export interface QueryableModuleConsts {
|
||||
[key: string]: Codec;
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
// Copyright 2017-2022 @polkadot/api-base authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { Observable } from 'rxjs';
|
||||
|
||||
type DeriveCreator = (instanceId: string, api: unknown) => (...args: unknown[]) => Observable<any>;
|
||||
|
||||
export type DeriveCustom = Record<string, Record<string, DeriveCreator>>;
|
||||
@@ -0,0 +1,22 @@
|
||||
// Copyright 2017-2022 @polkadot/api-base authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { IsError } from '@polkadot/types/metadata/decorate/types';
|
||||
import type { ApiTypes } from './base';
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/no-empty-interface
|
||||
export interface AugmentedErrors<ApiType extends ApiTypes> {
|
||||
// augmented
|
||||
}
|
||||
|
||||
export interface DecoratedErrors<ApiType extends ApiTypes> extends AugmentedErrors<ApiType> {
|
||||
// when non-augmented, we need to at least have Codec results
|
||||
[key: string]: ModuleErrors<ApiType>;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
export type AugmentedError<ApiType extends ApiTypes> = IsError;
|
||||
|
||||
export interface ModuleErrors<ApiType extends ApiTypes> {
|
||||
[key: string]: AugmentedError<ApiType>;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
// Copyright 2017-2022 @polkadot/api-base authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { IsEvent } from '@polkadot/types/metadata/decorate/types';
|
||||
import type { AnyTuple } from '@polkadot/types/types';
|
||||
import type { ApiTypes } from './base';
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/no-empty-interface
|
||||
export interface AugmentedEvents<ApiType extends ApiTypes> {
|
||||
// augmented
|
||||
}
|
||||
|
||||
export interface DecoratedEvents<ApiType extends ApiTypes> extends AugmentedEvents<ApiType> {
|
||||
// when non-augmented, we need to at least have Codec results
|
||||
[key: string]: ModuleEvents<ApiType>;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
export type AugmentedEvent<ApiType extends ApiTypes, T extends AnyTuple = AnyTuple> = IsEvent<T>;
|
||||
|
||||
export interface ModuleEvents<ApiType extends ApiTypes> {
|
||||
[key: string]: AugmentedEvent<ApiType, AnyTuple>;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
// Copyright 2017-2022 @polkadot/api authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// These are augmented, do an augmentation export
|
||||
export * from '@polkadot/api-base/types/consts';
|
||||
export * from '@polkadot/api-base/types/errors';
|
||||
export * from '@polkadot/api-base/types/events';
|
||||
export * from '@polkadot/api-base/types/storage';
|
||||
export * from '@polkadot/api-base/types/submittable';
|
||||
|
||||
// normal exports
|
||||
export * from './api';
|
||||
export * from './base';
|
||||
export * from './derive';
|
||||
export * from './rpc';
|
||||
@@ -0,0 +1,34 @@
|
||||
// Copyright 2017-2022 @polkadot/api-base authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { Observable } from 'rxjs';
|
||||
import type { AnyFunction, Callback, DefinitionRpc } from '@polkadot/types/types';
|
||||
|
||||
import { ApiTypes, PromiseResult, Push, RxResult, UnsubscribePromise } from './base';
|
||||
|
||||
export type { AugmentedRpc } from '@polkadot/rpc-core/types';
|
||||
|
||||
export interface RxRpcResult<F extends AnyFunction> extends RxResult<F> {
|
||||
raw <T> (...args: Parameters<F>): Observable<T>;
|
||||
meta: DefinitionRpc;
|
||||
}
|
||||
|
||||
export interface PromiseRpcResult<F extends AnyFunction> extends PromiseResult<F> {
|
||||
raw <T> (...args: Parameters<F>): Promise<T>;
|
||||
raw <T> (...args: Push<Parameters<F>, Callback<T>>): UnsubscribePromise;
|
||||
meta: DefinitionRpc;
|
||||
}
|
||||
|
||||
export type RpcMethodResult<ApiType extends ApiTypes, F extends AnyFunction> = ApiType extends 'rxjs'
|
||||
? RxRpcResult<F>
|
||||
: PromiseRpcResult<F>;
|
||||
|
||||
export type DecoratedRpcSection<ApiType extends ApiTypes, Section> = {
|
||||
[M in keyof Section]: Section[M] extends AnyFunction
|
||||
? RpcMethodResult<ApiType, Section[M]>
|
||||
: never
|
||||
}
|
||||
|
||||
export type DecoratedRpc<ApiType extends ApiTypes, AllSections> = {
|
||||
[S in keyof AllSections]: DecoratedRpcSection<ApiType, AllSections[S]>
|
||||
}
|
||||
@@ -0,0 +1,137 @@
|
||||
// Copyright 2017-2022 @polkadot/api-base authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { Observable } from 'rxjs';
|
||||
import type { StorageKey, u64 } from '@polkadot/types';
|
||||
import type { Hash } from '@polkadot/types/interfaces';
|
||||
import type { StorageEntry } from '@polkadot/types/primitive/types';
|
||||
import type { AnyFunction, AnyTuple, Callback, Codec, IStorageKey } from '@polkadot/types/types';
|
||||
import type { ApiTypes, DropLast, MethodResult, ObsInnerType, PaginationOptions, PromiseOrObs, UnsubscribePromise } from './base';
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/no-empty-interface
|
||||
export interface AugmentedQueries<ApiType extends ApiTypes> {
|
||||
// augmented
|
||||
}
|
||||
|
||||
export interface QueryableStorage<ApiType extends ApiTypes> extends AugmentedQueries<ApiType> {
|
||||
// when non-augmented, we need to at least have Codec results
|
||||
[key: string]: QueryableModuleStorage<ApiType>;
|
||||
}
|
||||
|
||||
export interface QueryableStorageAt<ApiType extends ApiTypes> extends AugmentedQueries<ApiType> {
|
||||
[key: string]: QueryableModuleStorageAt<ApiType>;
|
||||
}
|
||||
|
||||
type AsCodec<R extends Codec | any> = R extends Codec
|
||||
? R
|
||||
: Codec;
|
||||
|
||||
type ReturnCodec<F extends AnyFunction> = AsCodec<ObsInnerType<ReturnType<F>>>;
|
||||
|
||||
interface StorageEntryObservableMulti<R extends Codec = Codec> {
|
||||
<T extends Codec = R>(args: (unknown[] | unknown)[]): Observable<T[]>;
|
||||
}
|
||||
|
||||
interface StorageEntryPromiseMulti<R extends Codec = Codec> {
|
||||
<T extends Codec = R>(args: (unknown[] | unknown)[]): Promise<T[]>;
|
||||
<T extends Codec = R>(args: (unknown[] | unknown)[], callback: Callback<T[]>): UnsubscribePromise;
|
||||
}
|
||||
|
||||
export interface StorageEntryPromiseOverloads {
|
||||
(arg1?: unknown, arg2?: unknown, arg3?: unknown): Promise<Codec>;
|
||||
<T extends Codec>(arg1?: unknown, arg2?: unknown, arg3?: unknown): Promise<T>;
|
||||
<T extends Codec>(callback: Callback<T>): UnsubscribePromise;
|
||||
<T extends Codec>(arg: unknown, callback: Callback<T>): UnsubscribePromise;
|
||||
<T extends Codec>(arg1: unknown, arg2: unknown, callback: Callback<T>): UnsubscribePromise;
|
||||
<T extends Codec>(arg1: unknown, arg2: unknown, arg3: unknown, callback: Callback<T>): UnsubscribePromise;
|
||||
}
|
||||
|
||||
export interface StorageEntryPromiseOverloadsAt {
|
||||
(arg1?: unknown, arg2?: unknown, arg3?: unknown): Promise<Codec>;
|
||||
<T extends Codec>(arg1?: unknown, arg2?: unknown, arg3?: unknown): Promise<T>;
|
||||
}
|
||||
|
||||
// This is the most generic typings we can have for a storage entry function
|
||||
export type GenericStorageEntryFunction = (...args: unknown[]) => Observable<Codec>
|
||||
|
||||
export type QueryableStorageEntry<ApiType extends ApiTypes, A extends AnyTuple = AnyTuple> =
|
||||
ApiType extends 'rxjs'
|
||||
? AugmentedQuery<'rxjs', GenericStorageEntryFunction, A>
|
||||
: AugmentedQuery<'promise', GenericStorageEntryFunction, A> & StorageEntryPromiseOverloads;
|
||||
|
||||
export type QueryableStorageEntryAt<ApiType extends ApiTypes, A extends AnyTuple = AnyTuple> =
|
||||
ApiType extends 'rxjs'
|
||||
? AugmentedQueryAt<'rxjs', GenericStorageEntryFunction, A>
|
||||
: AugmentedQueryAt<'promise', GenericStorageEntryFunction, A> & StorageEntryPromiseOverloadsAt;
|
||||
|
||||
export interface StorageEntryBase<ApiType extends ApiTypes, F extends AnyFunction, A extends AnyTuple = AnyTuple> extends StorageEntryBaseAt<ApiType, F, A> {
|
||||
/**
|
||||
* @deprecated Use api.at(<blockHash>)
|
||||
*/
|
||||
at: <T extends Codec | any = ReturnCodec<F>>(hash: Hash | Uint8Array | string, ...args: Parameters<F>) => PromiseOrObs<ApiType, T>;
|
||||
creator: StorageEntry;
|
||||
/**
|
||||
* @deprecated Use api.at(<blockHash>)
|
||||
*/
|
||||
entriesAt: <T extends Codec | any = ReturnCodec<F>, K extends AnyTuple = A>(hash: Hash | Uint8Array | string, ...args: DropLast<Parameters<F>>) => PromiseOrObs<ApiType, [StorageKey<K>, T][]>;
|
||||
/**
|
||||
* @deprecated Use api.at(<blockHash>)
|
||||
*/
|
||||
keysAt: <K extends AnyTuple = A> (hash: Hash | Uint8Array | string, ...args: DropLast<Parameters<F>>) => PromiseOrObs<ApiType, StorageKey<K>[]>;
|
||||
/**
|
||||
* @deprecated The underlying RPC this been marked unsafe and is generally not exposed
|
||||
*/
|
||||
range: <T extends Codec | any = ReturnCodec<F>>([from, to]: [Hash | Uint8Array | string, Hash | Uint8Array | string | undefined] | [Hash | Uint8Array | string], ...args: Parameters<F>) => PromiseOrObs<ApiType, [Hash, T][]>;
|
||||
/**
|
||||
* @deprecated Use api.at(<blockHash>)
|
||||
*/
|
||||
sizeAt: (hash: Hash | Uint8Array | string, ...args: Parameters<F>) => PromiseOrObs<ApiType, u64>;
|
||||
multi: ApiType extends 'rxjs'
|
||||
? StorageEntryObservableMulti<ReturnCodec<F>>
|
||||
: StorageEntryPromiseMulti<ReturnCodec<F>>;
|
||||
}
|
||||
|
||||
export interface StorageEntryBaseAt<ApiType extends ApiTypes, F extends AnyFunction, A extends AnyTuple = AnyTuple> {
|
||||
entries: <T extends Codec | any = ReturnCodec<F>, K extends AnyTuple = A>(...args: DropLast<Parameters<F>>) => PromiseOrObs<ApiType, [StorageKey<K>, T][]>;
|
||||
entriesPaged: <T extends Codec | any = ReturnCodec<F>, K extends AnyTuple = A>(opts: PaginationOptions<Parameters<F>[0]>) => PromiseOrObs<ApiType, [StorageKey<K>, T][]>;
|
||||
hash: (...args: Parameters<F>) => PromiseOrObs<ApiType, Hash>;
|
||||
is: (key: IStorageKey<AnyTuple>) => key is IStorageKey<A>;
|
||||
key: (...args: Parameters<F>) => string;
|
||||
keyPrefix: (...args: DropLast<Parameters<F>>) => string;
|
||||
keys: <K extends AnyTuple = A> (...args: DropLast<Parameters<F>>) => PromiseOrObs<ApiType, StorageKey<K>[]>;
|
||||
keysPaged: <K extends AnyTuple = A> (opts: PaginationOptions<Parameters<F>[0]>) => PromiseOrObs<ApiType, StorageKey<K>[]>;
|
||||
size: (...args: Parameters<F>) => PromiseOrObs<ApiType, u64>;
|
||||
}
|
||||
|
||||
export interface QueryableModuleStorage<ApiType extends ApiTypes> {
|
||||
[key: string]: QueryableStorageEntry<ApiType, AnyTuple>;
|
||||
}
|
||||
|
||||
export interface QueryableModuleStorageAt<ApiType extends ApiTypes> {
|
||||
[key: string]: QueryableStorageEntryAt<ApiType, AnyTuple>;
|
||||
}
|
||||
|
||||
export type QueryableStorageMultiArg<ApiType extends ApiTypes> =
|
||||
QueryableStorageEntry<ApiType> |
|
||||
[QueryableStorageEntry<ApiType>, ...unknown[]];
|
||||
|
||||
export interface QueryableStorageMultiBase<ApiType extends ApiTypes> {
|
||||
<T extends Codec[]>(calls: QueryableStorageMultiArg<ApiType>[]): Observable<T>;
|
||||
}
|
||||
|
||||
export interface QueryableStorageMultiPromise<ApiType extends ApiTypes> {
|
||||
<T extends Codec[]>(calls: QueryableStorageMultiArg<ApiType>[], callback: Callback<T>): UnsubscribePromise;
|
||||
<T extends Codec[]>(calls: QueryableStorageMultiArg<ApiType>[]): Promise<T>;
|
||||
}
|
||||
|
||||
export type QueryableStorageMulti<ApiType extends ApiTypes> =
|
||||
ApiType extends 'rxjs'
|
||||
? QueryableStorageMultiBase<ApiType>
|
||||
: QueryableStorageMultiPromise<ApiType>;
|
||||
|
||||
export type AugmentedQuery<ApiType extends ApiTypes, F extends AnyFunction, A extends AnyTuple = AnyTuple> = MethodResult<ApiType, F> & StorageEntryBase<ApiType, F, A>;
|
||||
|
||||
export type AugmentedQueryAt<ApiType extends ApiTypes, F extends AnyFunction, A extends AnyTuple = AnyTuple> = MethodResult<ApiType, F> & StorageEntryBaseAt<ApiType, F, A>;
|
||||
|
||||
// backwards compatibility-only
|
||||
export type AugmentedQueryDoubleMap<ApiType extends ApiTypes, F extends AnyFunction, A extends AnyTuple = AnyTuple> = AugmentedQuery<ApiType, F, A>;
|
||||
@@ -0,0 +1,95 @@
|
||||
// Copyright 2017-2022 @polkadot/api-base authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { Observable } from 'rxjs';
|
||||
import type { AccountId, Address, ApplyExtrinsicResult, Call, DispatchError, DispatchInfo, EventRecord, Extrinsic, ExtrinsicStatus, Hash, RuntimeDispatchInfo } from '@polkadot/types/interfaces';
|
||||
import type { AnyFunction, AnyNumber, AnyTuple, Callback, CallBase, Codec, IExtrinsicEra, IKeyringPair, ISubmittableResult, Signer } from '@polkadot/types/types';
|
||||
import type { ApiTypes, PromiseOrObs } from './base';
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars,@typescript-eslint/no-empty-interface
|
||||
export interface AugmentedSubmittables<ApiType extends ApiTypes> {
|
||||
// augmented
|
||||
}
|
||||
|
||||
export interface SubmittableExtrinsics<ApiType extends ApiTypes> extends AugmentedSubmittables<ApiType> {
|
||||
(extrinsic: Call | Extrinsic | Uint8Array | string): SubmittableExtrinsic<ApiType>;
|
||||
// when non-augmented, we need to at least have Codec results
|
||||
[key: string]: SubmittableModuleExtrinsics<ApiType>;
|
||||
}
|
||||
|
||||
export type AddressOrPair = IKeyringPair | string | AccountId | Address;
|
||||
|
||||
export type AugmentedSubmittable<T extends AnyFunction, A extends AnyTuple = AnyTuple> = T & CallBase<A>;
|
||||
|
||||
export interface SignerOptions {
|
||||
blockHash: Uint8Array | string;
|
||||
era?: IExtrinsicEra | number;
|
||||
nonce: AnyNumber | Codec;
|
||||
signer?: Signer;
|
||||
tip?: AnyNumber;
|
||||
assetId?: AnyNumber;
|
||||
}
|
||||
|
||||
export type SubmittableDryRunResult<ApiType extends ApiTypes> =
|
||||
ApiType extends 'rxjs'
|
||||
? Observable<ApplyExtrinsicResult>
|
||||
: Promise<ApplyExtrinsicResult>;
|
||||
|
||||
export interface SubmittableExtrinsicFunction<ApiType extends ApiTypes, A extends AnyTuple = AnyTuple> extends CallBase<A> {
|
||||
(...params: any[]): SubmittableExtrinsic<ApiType>;
|
||||
}
|
||||
|
||||
export interface SubmittableModuleExtrinsics<ApiType extends ApiTypes> {
|
||||
// only with is<Type> augmentation
|
||||
[key: string]: SubmittableExtrinsicFunction<ApiType>;
|
||||
}
|
||||
|
||||
export type SubmittablePaymentResult<ApiType extends ApiTypes> =
|
||||
ApiType extends 'rxjs'
|
||||
? Observable<RuntimeDispatchInfo>
|
||||
: Promise<RuntimeDispatchInfo>;
|
||||
|
||||
export type SubmittableResultResult<ApiType extends ApiTypes, R extends ISubmittableResult = ISubmittableResult> =
|
||||
ApiType extends 'rxjs'
|
||||
? Observable<R>
|
||||
: Promise<Hash>;
|
||||
|
||||
export type SubmittableResultSubscription<ApiType extends ApiTypes, R extends ISubmittableResult = ISubmittableResult> =
|
||||
ApiType extends 'rxjs'
|
||||
? Observable<R>
|
||||
: Promise<() => void>;
|
||||
|
||||
export interface SubmittableResultValue {
|
||||
dispatchError?: DispatchError;
|
||||
dispatchInfo?: DispatchInfo;
|
||||
events?: EventRecord[];
|
||||
internalError?: Error;
|
||||
status: ExtrinsicStatus;
|
||||
txHash: Hash;
|
||||
txIndex?: number;
|
||||
}
|
||||
|
||||
export interface SubmittableExtrinsic<ApiType extends ApiTypes, R extends ISubmittableResult = ISubmittableResult> extends Extrinsic {
|
||||
dryRun (account: AddressOrPair, options?: Partial<SignerOptions>): SubmittableDryRunResult<ApiType>;
|
||||
|
||||
paymentInfo (account: AddressOrPair, options?: Partial<SignerOptions>): SubmittablePaymentResult<ApiType>;
|
||||
|
||||
send (): SubmittableResultResult<ApiType>;
|
||||
|
||||
send (statusCb: Callback<R>): SubmittableResultSubscription<ApiType, R>;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
*/
|
||||
sign (account: IKeyringPair, _options?: Partial<SignerOptions>): this;
|
||||
|
||||
signAsync (account: AddressOrPair, _options?: Partial<SignerOptions>): PromiseOrObs<ApiType, this>;
|
||||
|
||||
signAndSend (account: AddressOrPair, options?: Partial<SignerOptions>): SubmittableResultResult<ApiType, R>;
|
||||
|
||||
signAndSend (account: AddressOrPair, statusCb: Callback<R>): SubmittableResultSubscription<ApiType>;
|
||||
|
||||
signAndSend (account: AddressOrPair, options: Partial<SignerOptions>, statusCb?: Callback<R>): SubmittableResultSubscription<ApiType, R>;
|
||||
|
||||
withResultTransform (transform: (input: ISubmittableResult) => ISubmittableResult): this;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"extends": "../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"baseUrl": "..",
|
||||
"outDir": "./build",
|
||||
"rootDir": "./src"
|
||||
},
|
||||
"references": [
|
||||
{ "path": "../rpc-core/tsconfig.build.json" },
|
||||
{ "path": "../types/tsconfig.build.json" }
|
||||
]
|
||||
}
|
||||
@@ -1,16 +1,3 @@
|
||||
# @polkadot/api-contract
|
||||
|
||||
Interfaces to allow for the encoding and decoding of Substrate contract ABIs.
|
||||
|
||||
```js
|
||||
import {ApiPromise, WsProvider } from '@polkadot/api';
|
||||
import { Abi } from '@polkadot/api-contract';
|
||||
|
||||
const wsProvider = new WsProvider(<...Node Url...>);
|
||||
const api = await ApiPromise.create({ provider: wsProvider });
|
||||
const abi = new Abi(<...JSON ABI...>, api.registry.getChainProperties());
|
||||
|
||||
api.tx.contracts
|
||||
.call(<contract addr>, <value>, <max gas>, abi.messages.<method name>(<...params...>))
|
||||
.signAndSend(<keyring pair>, (result: SubmittableResult) => { ... });
|
||||
```
|
||||
|
||||
@@ -1,28 +1,39 @@
|
||||
{
|
||||
"name": "@polkadot/api-contract",
|
||||
"version": "6.3.1",
|
||||
"type": "module",
|
||||
"author": "Jaco Greeff <jacogr@gmail.com>",
|
||||
"bugs": "https://github.com/polkadot-js/api/issues",
|
||||
"contributors": [],
|
||||
"description": "Interfaces for interacting with contracts and contract ABIs",
|
||||
"main": "index.js",
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
},
|
||||
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/api-contract#readme",
|
||||
"license": "Apache-2.0",
|
||||
"maintainers": [],
|
||||
"name": "@polkadot/api-contract",
|
||||
"repository": {
|
||||
"directory": "packages/api-contract",
|
||||
"type": "git",
|
||||
"url": "https://github.com/polkadot-js/api.git"
|
||||
},
|
||||
"sideEffects": [
|
||||
"./detectPackage.js",
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
},
|
||||
"author": "Jaco Greeff <jacogr@gmail.com>",
|
||||
"maintainers": [],
|
||||
"contributors": [],
|
||||
"license": "Apache-2.0",
|
||||
"repository": "github:polkadot-js/api",
|
||||
"bugs": "https://github.com/polkadot-js/api/issues",
|
||||
"homepage": "https://github.com/polkadot-js/api/tree/master/packages/api-contract#readme",
|
||||
"type": "module",
|
||||
"version": "8.4.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.15.4",
|
||||
"@polkadot/api": "6.3.1",
|
||||
"@polkadot/types": "6.3.1",
|
||||
"@polkadot/util": "^7.4.1",
|
||||
"rxjs": "^7.4.0"
|
||||
"@babel/runtime": "^7.17.9",
|
||||
"@polkadot/api": "8.4.2",
|
||||
"@polkadot/types": "8.4.2",
|
||||
"@polkadot/types-codec": "8.4.2",
|
||||
"@polkadot/types-create": "8.4.2",
|
||||
"@polkadot/util": "^9.2.1",
|
||||
"@polkadot/util-crypto": "^9.2.1",
|
||||
"rxjs": "^7.5.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/api-augment": "8.4.2",
|
||||
"@polkadot/keyring": "^9.2.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
// Copyright 2017-2021 @polkadot/api-contract authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { blake2AsHex } from '@polkadot/util-crypto';
|
||||
|
||||
import abis from '../test/contracts';
|
||||
import { Abi } from '.';
|
||||
|
||||
interface JSONAbi {
|
||||
source: {
|
||||
compiler: string,
|
||||
hash: string,
|
||||
language: string,
|
||||
wasm: string
|
||||
},
|
||||
spec: {
|
||||
messages: {
|
||||
name: string[] | string
|
||||
}[]
|
||||
}
|
||||
}
|
||||
|
||||
describe('Abi', (): void => {
|
||||
Object.entries(abis).forEach(([abiName, abi]) => {
|
||||
it(`initializes from a contract ABI (${abiName})`, (): void => {
|
||||
try {
|
||||
const messageIds = (abi as JSONAbi).spec.messages.map(({ name }) => Array.isArray(name) ? name[0] : name);
|
||||
const inkAbi = new Abi(abis[abiName]);
|
||||
|
||||
expect(inkAbi.messages.map(({ identifier }) => identifier)).toEqual(messageIds);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
|
||||
throw error;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
it('has the correct hash for the source', (): void => {
|
||||
const bundle = abis.ink_flipperBundle as JSONAbi;
|
||||
const abi = new Abi(bundle as any);
|
||||
|
||||
// manual
|
||||
expect(bundle.source.hash).toEqual(blake2AsHex(bundle.source.wasm));
|
||||
|
||||
// the Codec hash
|
||||
expect(bundle.source.hash).toEqual(abi.project.source.wasm.hash.toHex());
|
||||
|
||||
// the hash as per the actual Abi
|
||||
expect(bundle.source.hash).toEqual(abi.project.source.wasmHash.toHex());
|
||||
});
|
||||
});
|
||||
@@ -1,198 +0,0 @@
|
||||
// Copyright 2017-2021 @polkadot/api-contract authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { Bytes } from '@polkadot/types';
|
||||
import type { ChainProperties, ContractConstructorSpec, ContractEventSpec, ContractMessageParamSpec, ContractMessageSpec, ContractProject } from '@polkadot/types/interfaces';
|
||||
import type { AnyJson, Codec } from '@polkadot/types/types';
|
||||
import type { AbiConstructor, AbiEvent, AbiMessage, AbiParam, DecodedEvent, DecodedMessage } from './types';
|
||||
|
||||
import { assert, assertReturn, compactAddLength, compactStripLength, isNumber, isObject, isString, logger, stringCamelCase, stringify, u8aConcat, u8aToHex } from '@polkadot/util';
|
||||
|
||||
import { MetaRegistry } from './MetaRegistry';
|
||||
|
||||
const l = logger('Abi');
|
||||
|
||||
function findMessage <T extends AbiMessage> (list: T[], messageOrId: T | string | number): T {
|
||||
const message = isNumber(messageOrId)
|
||||
? list[messageOrId]
|
||||
: isString(messageOrId)
|
||||
? list.find(({ identifier }) => [identifier, stringCamelCase(identifier)].includes(messageOrId.toString()))
|
||||
: messageOrId;
|
||||
|
||||
return assertReturn(message, () => `Attempted to call an invalid contract interface, ${stringify(messageOrId)}`);
|
||||
}
|
||||
|
||||
export class Abi {
|
||||
readonly #events: AbiEvent[];
|
||||
|
||||
public readonly constructors: AbiConstructor[];
|
||||
|
||||
public readonly json: AnyJson;
|
||||
|
||||
public readonly messages: AbiMessage[];
|
||||
|
||||
public readonly project: ContractProject;
|
||||
|
||||
public readonly registry: MetaRegistry;
|
||||
|
||||
constructor (abiJson: AnyJson, chainProperties?: ChainProperties) {
|
||||
const json = isString(abiJson)
|
||||
? JSON.parse(abiJson) as AnyJson
|
||||
: abiJson;
|
||||
|
||||
assert(isObject(json) && !Array.isArray(json) && json.metadataVersion && isObject(json.spec) && !Array.isArray(json.spec) && Array.isArray(json.spec.constructors) && Array.isArray(json.spec.messages), 'Invalid JSON ABI structure supplied, expected a recent metadata version');
|
||||
|
||||
this.json = json;
|
||||
this.registry = new MetaRegistry(json.metadataVersion as string, chainProperties);
|
||||
this.project = this.registry.createType('ContractProject', json);
|
||||
|
||||
this.registry.setMetaTypes(this.project.types);
|
||||
|
||||
this.project.types.forEach((_, index) =>
|
||||
this.registry.getMetaTypeDef({ type: this.registry.createType('Si0LookupTypeId', index + this.registry.typeOffset) })
|
||||
);
|
||||
this.constructors = this.project.spec.constructors.map((spec: ContractConstructorSpec, index) =>
|
||||
this.#createMessage(spec, index, {
|
||||
isConstructor: true
|
||||
})
|
||||
);
|
||||
this.#events = this.project.spec.events.map((spec: ContractEventSpec, index) =>
|
||||
this.#createEvent(spec, index)
|
||||
);
|
||||
this.messages = this.project.spec.messages.map((spec: ContractMessageSpec, index): AbiMessage => {
|
||||
const typeSpec = spec.returnType.unwrapOr(null);
|
||||
|
||||
return this.#createMessage(spec, index, {
|
||||
isMutating: spec.mutates.isTrue,
|
||||
isPayable: spec.payable.isTrue,
|
||||
returnType: typeSpec
|
||||
? this.registry.getMetaTypeDef(typeSpec)
|
||||
: null
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Warning: Unstable API, bound to change
|
||||
*/
|
||||
public decodeEvent (data: Bytes | Uint8Array): DecodedEvent {
|
||||
const index = data[0];
|
||||
const event = this.#events[index];
|
||||
|
||||
assert(event, () => `Unable to find event with index ${index}`);
|
||||
|
||||
return event.fromU8a(data.subarray(1));
|
||||
}
|
||||
|
||||
/**
|
||||
* Warning: Unstable API, bound to change
|
||||
*/
|
||||
public decodeConstructor (data: Uint8Array): DecodedMessage {
|
||||
return this.#decodeMessage('message', this.constructors, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Warning: Unstable API, bound to change
|
||||
*/
|
||||
public decodeMessage (data: Uint8Array): DecodedMessage {
|
||||
return this.#decodeMessage('message', this.messages, data);
|
||||
}
|
||||
|
||||
public findConstructor (constructorOrId: AbiConstructor | string | number): AbiConstructor {
|
||||
return findMessage(this.constructors, constructorOrId);
|
||||
}
|
||||
|
||||
public findMessage (messageOrId: AbiMessage | string | number): AbiMessage {
|
||||
return findMessage(this.messages, messageOrId);
|
||||
}
|
||||
|
||||
#createArgs = (args: ContractMessageParamSpec[], spec: unknown): AbiParam[] => {
|
||||
return args.map((arg, index): AbiParam => {
|
||||
try {
|
||||
assert(isObject(arg.type), 'Invalid type definition found');
|
||||
|
||||
return {
|
||||
name: stringCamelCase(arg.name),
|
||||
type: this.registry.getMetaTypeDef(arg.type)
|
||||
};
|
||||
} catch (error) {
|
||||
l.error(`Error expanding argument ${index} in ${stringify(spec)}`);
|
||||
|
||||
throw error;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
#createEvent = (spec: ContractEventSpec, index: number): AbiEvent => {
|
||||
const args = this.#createArgs(spec.args, spec);
|
||||
const event = {
|
||||
args,
|
||||
docs: spec.docs.map((d) => d.toString()),
|
||||
fromU8a: (data: Uint8Array): DecodedEvent => ({
|
||||
args: this.#decodeArgs(args, data),
|
||||
event
|
||||
}),
|
||||
identifier: spec.name.toString(),
|
||||
index
|
||||
};
|
||||
|
||||
return event;
|
||||
}
|
||||
|
||||
#createMessage = (spec: ContractMessageSpec | ContractConstructorSpec, index: number, add: Partial<AbiMessage> = {}): AbiMessage => {
|
||||
const args = this.#createArgs(spec.args, spec);
|
||||
const identifier = spec.name.toString();
|
||||
const message = {
|
||||
...add,
|
||||
args,
|
||||
docs: spec.docs.map((d) => d.toString()),
|
||||
fromU8a: (data: Uint8Array): DecodedMessage => ({
|
||||
args: this.#decodeArgs(args, data),
|
||||
message
|
||||
}),
|
||||
identifier,
|
||||
index,
|
||||
method: stringCamelCase(identifier),
|
||||
selector: spec.selector,
|
||||
toU8a: (params: unknown[]) =>
|
||||
this.#encodeArgs(spec, args, params)
|
||||
};
|
||||
|
||||
return message;
|
||||
}
|
||||
|
||||
#decodeArgs = (args: AbiParam[], data: Uint8Array): Codec[] => {
|
||||
// for decoding we expect the input to be just the arg data, no selectors
|
||||
// no length added (this allows use with events as well)
|
||||
let offset = 0;
|
||||
|
||||
return args.map(({ type }): Codec => {
|
||||
const value = this.registry.createType(type.type as 'Text', data.subarray(offset));
|
||||
|
||||
offset += value.encodedLength;
|
||||
|
||||
return value;
|
||||
});
|
||||
}
|
||||
|
||||
#decodeMessage = (type: 'constructor' | 'message', list: AbiMessage[], data: Uint8Array): DecodedMessage => {
|
||||
const [, trimmed] = compactStripLength(data);
|
||||
const selector = trimmed.subarray(0, 4);
|
||||
const message = list.find((m) => m.selector.eq(selector));
|
||||
|
||||
assert(message, `Unable to find ${type} with selector ${u8aToHex(selector)}`);
|
||||
|
||||
return message.fromU8a(trimmed.subarray(4));
|
||||
}
|
||||
|
||||
#encodeArgs = ({ name, selector }: ContractMessageSpec | ContractConstructorSpec, args: AbiParam[], data: unknown[]): Uint8Array => {
|
||||
assert(data.length === args.length, () => `Expected ${args.length} arguments to contract message '${name.toString()}', found ${data.length}`);
|
||||
|
||||
return compactAddLength(
|
||||
u8aConcat(
|
||||
this.registry.createType('ContractSelector', selector).toU8a(),
|
||||
...args.map(({ type }, index) => this.registry.createType(type.type as 'Text', data[index]).toU8a())
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
// Copyright 2017-2022 @polkadot/api-contract authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { Registry } from '@polkadot/types/types';
|
||||
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
|
||||
import { TypeDefInfo } from '@polkadot/types/types';
|
||||
import { blake2AsHex } from '@polkadot/util-crypto';
|
||||
|
||||
import abis from '../test/contracts';
|
||||
import { Abi } from '.';
|
||||
|
||||
interface SpecDef {
|
||||
messages: {
|
||||
label: string;
|
||||
name: string[] | string
|
||||
}[]
|
||||
}
|
||||
|
||||
interface JSONAbi {
|
||||
source: {
|
||||
compiler: string,
|
||||
hash: string,
|
||||
language: string,
|
||||
wasm: string
|
||||
},
|
||||
spec: SpecDef;
|
||||
V1: {
|
||||
spec: SpecDef;
|
||||
},
|
||||
V2: {
|
||||
spec: SpecDef;
|
||||
},
|
||||
V3: {
|
||||
spec: SpecDef;
|
||||
}
|
||||
}
|
||||
|
||||
function stringifyInfo (key: string, value: unknown): unknown {
|
||||
return key === 'info'
|
||||
? TypeDefInfo[value as number]
|
||||
: value;
|
||||
}
|
||||
|
||||
function stringifyJson (registry: Registry): string {
|
||||
const defs = registry.lookup.types.map(({ id }) =>
|
||||
registry.lookup.getTypeDef(id)
|
||||
);
|
||||
|
||||
return JSON.stringify(defs, stringifyInfo, 2);
|
||||
}
|
||||
|
||||
describe('Abi', (): void => {
|
||||
describe('ABI', (): void => {
|
||||
Object.entries(abis).forEach(([abiName, _abi]) => {
|
||||
const abi = _abi as unknown as JSONAbi;
|
||||
|
||||
it(`initializes from a contract ABI (${abiName})`, (): void => {
|
||||
try {
|
||||
const messageIds = (abi.V3 || abi.V2 || abi.V1 || abi).spec.messages.map(({ label, name }) =>
|
||||
label || (
|
||||
Array.isArray(name)
|
||||
? name.join('::')
|
||||
: name
|
||||
)
|
||||
);
|
||||
const inkAbi = new Abi(abis[abiName]);
|
||||
|
||||
expect(inkAbi.messages.map(({ identifier }) => identifier)).toEqual(messageIds);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
|
||||
throw error;
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('TypeDef', (): void => {
|
||||
Object.keys(abis).forEach((abiName) => {
|
||||
it(`initializes from a contract ABI (${abiName})`, (): void => {
|
||||
const abi = new Abi(abis[abiName]);
|
||||
const json = stringifyJson(abi.registry);
|
||||
const cmpPath = path.join(__dirname, `../test/compare/${abiName}.test.json`);
|
||||
|
||||
try {
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
expect(JSON.parse(json)).toEqual(require(cmpPath));
|
||||
} catch (error) {
|
||||
if (process.env.GITHUB_REPOSITORY) {
|
||||
console.error(json);
|
||||
|
||||
throw error;
|
||||
}
|
||||
|
||||
fs.writeFileSync(cmpPath, json, { flag: 'w' });
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('has the correct hash for the source', (): void => {
|
||||
const abi = new Abi(abis.ink_v0_flipperBundle);
|
||||
const bundle = abis.ink_v0_flipperBundle as unknown as JSONAbi;
|
||||
|
||||
// manual
|
||||
expect(bundle.source.hash).toEqual(blake2AsHex(bundle.source.wasm));
|
||||
|
||||
// the Codec hash
|
||||
expect(bundle.source.hash).toEqual(abi.info.source.wasm.hash.toHex());
|
||||
|
||||
// the hash as per the actual Abi
|
||||
expect(bundle.source.hash).toEqual(abi.info.source.wasmHash.toHex());
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,253 @@
|
||||
// Copyright 2017-2022 @polkadot/api-contract authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { Bytes } from '@polkadot/types';
|
||||
import type { ChainProperties, ContractConstructorSpecLatest, ContractEventSpecLatest, ContractMessageParamSpecLatest, ContractMessageSpecLatest, ContractMetadata, ContractMetadataLatest, ContractProjectInfo } from '@polkadot/types/interfaces';
|
||||
import type { Codec, Registry } from '@polkadot/types/types';
|
||||
import type { AbiConstructor, AbiEvent, AbiMessage, AbiParam, DecodedEvent, DecodedMessage } from '../types';
|
||||
|
||||
import { TypeRegistry } from '@polkadot/types';
|
||||
import { TypeDefInfo } from '@polkadot/types-create';
|
||||
import { assert, assertReturn, compactAddLength, compactStripLength, isNumber, isObject, isString, logger, stringCamelCase, stringify, u8aConcat, u8aToHex } from '@polkadot/util';
|
||||
|
||||
import { convertVersions, enumVersions } from './toLatest';
|
||||
|
||||
const l = logger('Abi');
|
||||
|
||||
const PRIMITIVE_ALWAYS = ['AccountId', 'AccountIndex', 'Address', 'Balance'];
|
||||
|
||||
function findMessage <T extends AbiMessage> (list: T[], messageOrId: T | string | number): T {
|
||||
const message = isNumber(messageOrId)
|
||||
? list[messageOrId]
|
||||
: isString(messageOrId)
|
||||
? list.find(({ identifier }) => [identifier, stringCamelCase(identifier)].includes(messageOrId.toString()))
|
||||
: messageOrId;
|
||||
|
||||
return assertReturn(message, () => `Attempted to call an invalid contract interface, ${stringify(messageOrId)}`);
|
||||
}
|
||||
|
||||
function getLatestMeta (registry: Registry, json: Record<string, unknown>): ContractMetadataLatest {
|
||||
const vx = enumVersions.find((v) => isObject(json[v]));
|
||||
const metadata = registry.createType('ContractMetadata',
|
||||
vx
|
||||
? { [vx]: json[vx] }
|
||||
: { V0: json }
|
||||
) as unknown as ContractMetadata;
|
||||
const converter = convertVersions.find(([v]) => metadata[`is${v}`]);
|
||||
|
||||
assert(converter, () => `Unable to convert ABI with version ${metadata.type} to latest`);
|
||||
|
||||
return converter[1](registry, metadata[`as${converter[0]}`]);
|
||||
}
|
||||
|
||||
function parseJson (json: Record<string, unknown>, chainProperties?: ChainProperties): [Record<string, unknown>, Registry, ContractMetadataLatest, ContractProjectInfo] {
|
||||
const registry = new TypeRegistry();
|
||||
const info = registry.createType('ContractProjectInfo', json) as unknown as ContractProjectInfo;
|
||||
const latest = getLatestMeta(registry, json);
|
||||
const lookup = registry.createType('PortableRegistry', { types: latest.types }, true);
|
||||
|
||||
// attach the lookup to the registry - now the types are known
|
||||
registry.setLookup(lookup);
|
||||
|
||||
if (chainProperties) {
|
||||
registry.setChainProperties(chainProperties);
|
||||
}
|
||||
|
||||
// warm-up the actual type, pre-use
|
||||
lookup.types.forEach(({ id }) =>
|
||||
lookup.getTypeDef(id)
|
||||
);
|
||||
|
||||
return [json, registry, latest, info];
|
||||
}
|
||||
|
||||
export class Abi {
|
||||
public readonly events: AbiEvent[];
|
||||
|
||||
public readonly constructors: AbiConstructor[];
|
||||
|
||||
public readonly info: ContractProjectInfo;
|
||||
|
||||
public readonly json: Record<string, unknown>;
|
||||
|
||||
public readonly messages: AbiMessage[];
|
||||
|
||||
public readonly metadata: ContractMetadataLatest;
|
||||
|
||||
public readonly registry: Registry;
|
||||
|
||||
constructor (abiJson: Record<string, unknown> | string, chainProperties?: ChainProperties) {
|
||||
[this.json, this.registry, this.metadata, this.info] = parseJson(
|
||||
isString(abiJson)
|
||||
? JSON.parse(abiJson) as Record<string, unknown>
|
||||
: abiJson,
|
||||
chainProperties
|
||||
);
|
||||
this.constructors = this.metadata.spec.constructors.map((spec: ContractConstructorSpecLatest, index) =>
|
||||
this.#createMessage(spec, index, {
|
||||
isConstructor: true,
|
||||
isPayable: spec.payable.isTrue
|
||||
})
|
||||
);
|
||||
this.events = this.metadata.spec.events.map((spec: ContractEventSpecLatest, index) =>
|
||||
this.#createEvent(spec, index)
|
||||
);
|
||||
this.messages = this.metadata.spec.messages.map((spec: ContractMessageSpecLatest, index): AbiMessage => {
|
||||
const typeSpec = spec.returnType.unwrapOr(null);
|
||||
|
||||
return this.#createMessage(spec, index, {
|
||||
isMutating: spec.mutates.isTrue,
|
||||
isPayable: spec.payable.isTrue,
|
||||
returnType: typeSpec
|
||||
? this.registry.lookup.getTypeDef(typeSpec.type)
|
||||
: null
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Warning: Unstable API, bound to change
|
||||
*/
|
||||
public decodeEvent (data: Bytes | Uint8Array): DecodedEvent {
|
||||
const index = data[0];
|
||||
const event = this.events[index];
|
||||
|
||||
assert(event, () => `Unable to find event with index ${index}`);
|
||||
|
||||
return event.fromU8a(data.subarray(1));
|
||||
}
|
||||
|
||||
/**
|
||||
* Warning: Unstable API, bound to change
|
||||
*/
|
||||
public decodeConstructor (data: Uint8Array): DecodedMessage {
|
||||
return this.#decodeMessage('message', this.constructors, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Warning: Unstable API, bound to change
|
||||
*/
|
||||
public decodeMessage (data: Uint8Array): DecodedMessage {
|
||||
return this.#decodeMessage('message', this.messages, data);
|
||||
}
|
||||
|
||||
public findConstructor (constructorOrId: AbiConstructor | string | number): AbiConstructor {
|
||||
return findMessage(this.constructors, constructorOrId);
|
||||
}
|
||||
|
||||
public findMessage (messageOrId: AbiMessage | string | number): AbiMessage {
|
||||
return findMessage(this.messages, messageOrId);
|
||||
}
|
||||
|
||||
#createArgs = (args: ContractMessageParamSpecLatest[], spec: unknown): AbiParam[] => {
|
||||
return args.map(({ label, type }, index): AbiParam => {
|
||||
try {
|
||||
assert(isObject(type), 'Invalid type definition found');
|
||||
|
||||
const displayName = type.displayName.length
|
||||
? type.displayName[type.displayName.length - 1].toString()
|
||||
: undefined;
|
||||
const camelName = stringCamelCase(label);
|
||||
|
||||
if (displayName && PRIMITIVE_ALWAYS.includes(displayName)) {
|
||||
return {
|
||||
name: camelName,
|
||||
type: {
|
||||
info: TypeDefInfo.Plain,
|
||||
type: displayName
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
const typeDef = this.registry.lookup.getTypeDef(type.type);
|
||||
|
||||
return {
|
||||
name: camelName,
|
||||
type: displayName && !typeDef.type.startsWith(displayName)
|
||||
? { displayName, ...typeDef }
|
||||
: typeDef
|
||||
};
|
||||
} catch (error) {
|
||||
l.error(`Error expanding argument ${index} in ${stringify(spec)}`);
|
||||
|
||||
throw error;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
#createEvent = (spec: ContractEventSpecLatest, index: number): AbiEvent => {
|
||||
const args = this.#createArgs(spec.args, spec);
|
||||
const event = {
|
||||
args,
|
||||
docs: spec.docs.map((d) => d.toString()),
|
||||
fromU8a: (data: Uint8Array): DecodedEvent => ({
|
||||
args: this.#decodeArgs(args, data),
|
||||
event
|
||||
}),
|
||||
identifier: spec.label.toString(),
|
||||
index
|
||||
};
|
||||
|
||||
return event;
|
||||
};
|
||||
|
||||
#createMessage = (spec: ContractMessageSpecLatest | ContractConstructorSpecLatest, index: number, add: Partial<AbiMessage> = {}): AbiMessage => {
|
||||
const args = this.#createArgs(spec.args, spec);
|
||||
const identifier = spec.label.toString();
|
||||
const message = {
|
||||
...add,
|
||||
args,
|
||||
docs: spec.docs.map((d) => d.toString()),
|
||||
fromU8a: (data: Uint8Array): DecodedMessage => ({
|
||||
args: this.#decodeArgs(args, data),
|
||||
message
|
||||
}),
|
||||
identifier,
|
||||
index,
|
||||
method: stringCamelCase(identifier),
|
||||
path: identifier.split('::').map((s) => stringCamelCase(s)),
|
||||
selector: spec.selector,
|
||||
toU8a: (params: unknown[]) =>
|
||||
this.#encodeArgs(spec, args, params)
|
||||
};
|
||||
|
||||
return message;
|
||||
};
|
||||
|
||||
#decodeArgs = (args: AbiParam[], data: Uint8Array): Codec[] => {
|
||||
// for decoding we expect the input to be just the arg data, no selectors
|
||||
// no length added (this allows use with events as well)
|
||||
let offset = 0;
|
||||
|
||||
return args.map(({ type: { lookupName, type } }): Codec => {
|
||||
const value = this.registry.createType(lookupName || type, data.subarray(offset));
|
||||
|
||||
offset += value.encodedLength;
|
||||
|
||||
return value;
|
||||
});
|
||||
};
|
||||
|
||||
#decodeMessage = (type: 'constructor' | 'message', list: AbiMessage[], data: Uint8Array): DecodedMessage => {
|
||||
const [, trimmed] = compactStripLength(data);
|
||||
const selector = trimmed.subarray(0, 4);
|
||||
const message = list.find((m) => m.selector.eq(selector));
|
||||
|
||||
assert(message, `Unable to find ${type} with selector ${u8aToHex(selector)}`);
|
||||
|
||||
return message.fromU8a(trimmed.subarray(4));
|
||||
};
|
||||
|
||||
#encodeArgs = ({ label, selector }: ContractMessageSpecLatest | ContractConstructorSpecLatest, args: AbiParam[], data: unknown[]): Uint8Array => {
|
||||
assert(data.length === args.length, () => `Expected ${args.length} arguments to contract message '${label.toString()}', found ${data.length}`);
|
||||
|
||||
return compactAddLength(
|
||||
u8aConcat(
|
||||
this.registry.createType('ContractSelector', selector).toU8a(),
|
||||
...args.map(({ type: { lookupName, type } }, index) =>
|
||||
this.registry.createType(lookupName || type, data[index]).toU8a()
|
||||
)
|
||||
)
|
||||
);
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
// Copyright 2017-2022 @polkadot/api-contract authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { v0ToLatest, v1ToLatest, v2ToLatest, v3ToLatest } from '@polkadot/api-contract/Abi/toLatest';
|
||||
import { TypeRegistry } from '@polkadot/types';
|
||||
|
||||
import abis from '../test/contracts';
|
||||
|
||||
describe('v0ToLatest', (): void => {
|
||||
const registry = new TypeRegistry();
|
||||
const contract = registry.createType('ContractMetadata', { V0: abis.ink_v0_erc20 });
|
||||
const latest = v0ToLatest(registry, contract.asV0);
|
||||
|
||||
it('has the correct constructors', (): void => {
|
||||
expect(
|
||||
latest.spec.constructors.map(({ label }) => label.toString())
|
||||
).toEqual(['new']);
|
||||
});
|
||||
|
||||
it('has the correct messages', (): void => {
|
||||
expect(
|
||||
latest.spec.messages.map(({ label }) => label.toString())
|
||||
).toEqual(['total_supply', 'balance_of', 'allowance', 'transfer', 'approve', 'transfer_from']);
|
||||
});
|
||||
|
||||
it('has the correct events', (): void => {
|
||||
expect(
|
||||
latest.spec.events.map(({ label }) => label.toString())
|
||||
).toEqual(['Transfer', 'Approval']);
|
||||
});
|
||||
|
||||
it('has the correct constructor arguments', (): void => {
|
||||
expect(
|
||||
latest.spec.constructors[0].args.map(({ label }) => label.toString())
|
||||
).toEqual(['initial_supply']);
|
||||
});
|
||||
|
||||
it('has the correct message arguments', (): void => {
|
||||
expect(
|
||||
latest.spec.messages[1].args.map(({ label }) => label.toString())
|
||||
).toEqual(['owner']);
|
||||
});
|
||||
|
||||
it('has the correct event arguments', (): void => {
|
||||
expect(
|
||||
latest.spec.events[0].args.map(({ label }) => label.toString())
|
||||
).toEqual(['from', 'to', 'value']);
|
||||
});
|
||||
});
|
||||
|
||||
describe('v1ToLatest', (): void => {
|
||||
const registry = new TypeRegistry();
|
||||
const contract = registry.createType('ContractMetadata', { V1: abis.ink_v1_flipper.V1 });
|
||||
const latest = v1ToLatest(registry, contract.asV1);
|
||||
|
||||
it('has the correct constructors', (): void => {
|
||||
expect(
|
||||
latest.spec.constructors.map(({ label }) => label.toString())
|
||||
).toEqual(['new', 'default']);
|
||||
});
|
||||
|
||||
it('has the correct messages', (): void => {
|
||||
expect(
|
||||
latest.spec.messages.map(({ label }) => label.toString())
|
||||
).toEqual(['flip', 'get']);
|
||||
});
|
||||
|
||||
it('has the correct messages with namespaced method name', (): void => {
|
||||
const contract = registry.createType('ContractMetadata', { V1: abis.ink_v1_psp22.V1 });
|
||||
const latest = v1ToLatest(registry, contract.asV1);
|
||||
|
||||
expect(
|
||||
latest.spec.messages.map(({ label }) => label.toString())
|
||||
).toEqual([
|
||||
'PSP22Metadata::token_name', 'PSP22Metadata::token_symbol', 'PSP22Metadata::token_decimals', 'PSP22Mintable::mint', 'PSP22::decrease_allowance', 'PSP22::transfer', 'PSP22::approve', 'PSP22::allowance', 'PSP22::transfer_from', 'PSP22::balance_of', 'PSP22::increase_allowance', 'PSP22::total_supply', 'pause', 'unpause'
|
||||
]);
|
||||
});
|
||||
|
||||
it('has the correct constructor arguments', (): void => {
|
||||
expect(
|
||||
latest.spec.constructors[0].args.map(({ label }) => label.toString())
|
||||
).toEqual(['init_value']);
|
||||
});
|
||||
});
|
||||
|
||||
describe('v2ToLatest', (): void => {
|
||||
const registry = new TypeRegistry();
|
||||
const contract = registry.createType('ContractMetadata', { V2: abis.ink_v2_flipper.V2 });
|
||||
const latest = v2ToLatest(registry, contract.asV2);
|
||||
|
||||
it('has the correct constructor flag', (): void => {
|
||||
expect(
|
||||
latest.spec.constructors[0].payable.isTrue
|
||||
).toEqual(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe('v3ToLatest', (): void => {
|
||||
const registry = new TypeRegistry();
|
||||
const contract = registry.createType('ContractMetadata', { V3: abis.ink_v3_flipper.V3 });
|
||||
const latest = v3ToLatest(registry, contract.asV3);
|
||||
|
||||
it('has the correct constructor flags', (): void => {
|
||||
expect(
|
||||
latest.spec.constructors[0].payable.isTrue
|
||||
).toEqual(false);
|
||||
expect(
|
||||
latest.spec.constructors[1].payable.isTrue
|
||||
).toEqual(true);
|
||||
});
|
||||
|
||||
it('has the correct messages', (): void => {
|
||||
const contract = registry.createType('ContractMetadata', { V3: abis.ink_v3_traitErc20.V3 });
|
||||
const latest = v3ToLatest(registry, contract.asV3);
|
||||
|
||||
expect(
|
||||
latest.spec.messages.map(({ label }) => label.toString())
|
||||
).toEqual([
|
||||
'BaseErc20::total_supply', 'BaseErc20::balance_of', 'BaseErc20::allowance', 'BaseErc20::transfer', 'BaseErc20::approve', 'BaseErc20::transfer_from'
|
||||
]);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,38 @@
|
||||
// Copyright 2017-2022 @polkadot/api-contract authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { ContractMetadataLatest, ContractMetadataV3 } from '@polkadot/types/interfaces';
|
||||
import type { Registry } from '@polkadot/types/types';
|
||||
|
||||
import { v0ToV1 } from './toV1';
|
||||
import { v1ToV2 } from './toV2';
|
||||
import { v2ToV3 } from './toV3';
|
||||
|
||||
type Versions = 'V3' | 'V2' | 'V1' | 'V0';
|
||||
|
||||
type Converter = (registry: Registry, vx: any) => ContractMetadataLatest;
|
||||
|
||||
// Helper to convert metadata from one step to the next
|
||||
function createConverter <I, O> (next: (registry: Registry, input: O) => ContractMetadataLatest, step: (registry: Registry, input: I) => O): (registry: Registry, input: I) => ContractMetadataLatest {
|
||||
return (registry: Registry, input: I): ContractMetadataLatest =>
|
||||
next(registry, step(registry, input));
|
||||
}
|
||||
|
||||
export function v3ToLatest (registry: Registry, v3: ContractMetadataV3): ContractMetadataLatest {
|
||||
return v3;
|
||||
}
|
||||
|
||||
export const v2ToLatest = createConverter(v3ToLatest, v2ToV3);
|
||||
export const v1ToLatest = createConverter(v2ToLatest, v1ToV2);
|
||||
export const v0ToLatest = createConverter(v1ToLatest, v0ToV1);
|
||||
|
||||
// The versions where an enum is used, aka V0 is missing
|
||||
// (Order from newest, i.e. we expect more on newest vs oldest)
|
||||
export const enumVersions = ['V3', 'V2', 'V1'];
|
||||
|
||||
export const convertVersions: [Versions, Converter][] = [
|
||||
['V3', v3ToLatest],
|
||||
['V2', v2ToLatest],
|
||||
['V1', v1ToLatest],
|
||||
['V0', v0ToLatest]
|
||||
];
|
||||
@@ -0,0 +1,31 @@
|
||||
// Copyright 2017-2022 @polkadot/api-contract authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { ContractMetadataV0, ContractMetadataV1 } from '@polkadot/types/interfaces';
|
||||
import type { Registry } from '@polkadot/types/types';
|
||||
|
||||
import { convertSiV0toV1 } from '@polkadot/types';
|
||||
import { objectSpread } from '@polkadot/util';
|
||||
|
||||
interface Named {
|
||||
name: unknown;
|
||||
}
|
||||
|
||||
function v0ToV1Names (all: Named[]): unknown[] {
|
||||
return all.map((e) =>
|
||||
objectSpread({}, e, {
|
||||
name: Array.isArray(e.name)
|
||||
? e.name
|
||||
: [e.name]
|
||||
}));
|
||||
}
|
||||
|
||||
export function v0ToV1 (registry: Registry, v0: ContractMetadataV0): ContractMetadataV1 {
|
||||
return registry.createType('ContractMetadataV1', objectSpread({}, v0, {
|
||||
spec: objectSpread({}, v0.spec, {
|
||||
constructors: v0ToV1Names(v0.spec.constructors),
|
||||
messages: v0ToV1Names(v0.spec.messages)
|
||||
}),
|
||||
types: convertSiV0toV1(registry, v0.types)
|
||||
}));
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
// Copyright 2017-2022 @polkadot/api-contract authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { Text } from '@polkadot/types';
|
||||
import type { ContractConstructorSpecV0, ContractEventSpecV0, ContractMessageSpecV0, ContractMetadataV1, ContractMetadataV2 } from '@polkadot/types/interfaces';
|
||||
import type { Registry } from '@polkadot/types/types';
|
||||
|
||||
import { objectSpread } from '@polkadot/util';
|
||||
|
||||
type WithArgs = keyof typeof ARG_TYPES;
|
||||
|
||||
interface NamedEntry {
|
||||
name: Text | Text[];
|
||||
}
|
||||
|
||||
type GetArgsType<T extends WithArgs> = T extends 'ContractConstructorSpec'
|
||||
? ContractConstructorSpecV0
|
||||
: T extends ContractEventSpecV0
|
||||
? ContractEventSpecV0
|
||||
: ContractMessageSpecV0;
|
||||
|
||||
interface ArgsEntry <T extends WithArgs> extends NamedEntry {
|
||||
args: GetArgsType<T>['args'][0][];
|
||||
}
|
||||
|
||||
const ARG_TYPES = {
|
||||
ContractConstructorSpec: 'ContractMessageParamSpecV2',
|
||||
ContractEventSpec: 'ContractEventParamSpecV2',
|
||||
ContractMessageSpec: 'ContractMessageParamSpecV2'
|
||||
};
|
||||
|
||||
function v1ToV2Label (entry: NamedEntry): { label: Text } {
|
||||
return objectSpread({}, entry, {
|
||||
label: Array.isArray(entry.name)
|
||||
? entry.name.join('::')
|
||||
: entry.name
|
||||
});
|
||||
}
|
||||
|
||||
function v1ToV2Labels <T extends WithArgs> (registry: Registry, outType: T, all: ArgsEntry<T>[]): unknown[] {
|
||||
return all.map((e) =>
|
||||
registry.createType(`${outType}V2`, objectSpread(v1ToV2Label(e), {
|
||||
args: e.args.map((a) =>
|
||||
registry.createType(ARG_TYPES[outType], v1ToV2Label(a))
|
||||
)
|
||||
}))
|
||||
);
|
||||
}
|
||||
|
||||
export function v1ToV2 (registry: Registry, v1: ContractMetadataV1): ContractMetadataV2 {
|
||||
return registry.createType('ContractMetadataV2', objectSpread({}, v1, {
|
||||
spec: objectSpread({}, v1.spec, {
|
||||
constructors: v1ToV2Labels(registry, 'ContractConstructorSpec', v1.spec.constructors),
|
||||
events: v1ToV2Labels(registry, 'ContractEventSpec', v1.spec.events),
|
||||
messages: v1ToV2Labels(registry, 'ContractMessageSpec', v1.spec.messages)
|
||||
})
|
||||
}));
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
// Copyright 2017-2022 @polkadot/api-contract authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { ContractMetadataV2, ContractMetadataV3 } from '@polkadot/types/interfaces';
|
||||
import type { Registry } from '@polkadot/types/types';
|
||||
|
||||
import { objectSpread } from '@polkadot/util';
|
||||
|
||||
export function v2ToV3 (registry: Registry, v2: ContractMetadataV2): ContractMetadataV3 {
|
||||
return registry.createType('ContractMetadataV3', objectSpread({}, v2, {
|
||||
spec: objectSpread({}, v2.spec, {
|
||||
constructors: v2.spec.constructors.map((c) =>
|
||||
// V3 introduces the payable flag on constructors, for <V3, it is always true
|
||||
registry.createType('ContractConstructorSpecV3', objectSpread({}, c, { payable: true }))
|
||||
)
|
||||
})
|
||||
}));
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
// Copyright 2017-2021 @polkadot/api-contract authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
|
||||
import { TypeDefInfo } from '@polkadot/types/types';
|
||||
|
||||
import abis from '../test/contracts';
|
||||
import { Abi } from '.';
|
||||
|
||||
function stringifyInfo (key: string, value: unknown): unknown {
|
||||
return key === 'info'
|
||||
? TypeDefInfo[value as number]
|
||||
: value;
|
||||
}
|
||||
|
||||
describe('MetaRegistry', (): void => {
|
||||
Object.keys(abis).forEach((abiName) => {
|
||||
it(`initializes from a contract ABI (${abiName})`, (): void => {
|
||||
const abi = new Abi(abis[abiName]);
|
||||
const json = JSON.stringify(abi.registry.metaTypeDefs, stringifyInfo, 2);
|
||||
const cmpPath = path.join(__dirname, `../test/compare/${abiName}.test.json`);
|
||||
|
||||
try {
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
expect(JSON.parse(json)).toEqual(require(cmpPath));
|
||||
} catch (error) {
|
||||
if (process.env.GITHUB_REPOSITORY) {
|
||||
console.error(JSON.stringify(abi.registry.metaTypeDefs, stringifyInfo));
|
||||
|
||||
throw error;
|
||||
}
|
||||
|
||||
fs.writeFileSync(cmpPath, json, { flag: 'w' });
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
it('stores base project as JSON', (): void => {
|
||||
expect(new Abi(abis.ink_dns).json).toEqual(abis.ink_dns);
|
||||
});
|
||||
});
|
||||
@@ -1,252 +0,0 @@
|
||||
// Copyright 2017-2021 @polkadot/api-contract authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { ChainProperties, ContractDisplayName, Si0Field, Si0LookupTypeId, Si0Type, Si0TypeDefArray, Si0TypeDefSequence, Si0TypeDefTuple, Si0TypeDefVariant, Si0Variant } from '@polkadot/types/interfaces';
|
||||
import type { InterfaceTypes, TypeDef } from '@polkadot/types/types';
|
||||
|
||||
import { TypeDefInfo, TypeRegistry, withTypeString } from '@polkadot/types';
|
||||
import { assert, isUndefined } from '@polkadot/util';
|
||||
|
||||
interface PartialTypeSpec {
|
||||
readonly type: Si0LookupTypeId;
|
||||
readonly displayName?: ContractDisplayName;
|
||||
}
|
||||
|
||||
// convert the offset into project-specific, index-1
|
||||
export function getRegistryOffset (id: Si0LookupTypeId, typeOffset: number): number {
|
||||
return id.toNumber() - typeOffset;
|
||||
}
|
||||
|
||||
const PRIMITIVE_ALIAS: Record<string, keyof InterfaceTypes> = {
|
||||
Char: 'u32', // Rust char is 4-bytes
|
||||
Str: 'Text'
|
||||
};
|
||||
|
||||
const PRIMITIVE_ALWAYS = ['AccountId', 'AccountIndex', 'Address', 'Balance'];
|
||||
|
||||
// TODO Replace usages with PortableRegistry
|
||||
export class MetaRegistry extends TypeRegistry {
|
||||
public readonly metaTypeDefs: TypeDef[] = [];
|
||||
|
||||
public readonly typeOffset;
|
||||
|
||||
#siTypes: Si0Type[] = [];
|
||||
|
||||
constructor (metadataVersion: string, chainProperties?: ChainProperties) {
|
||||
super();
|
||||
|
||||
const [major, minor] = metadataVersion.split('.').map((n) => parseInt(n, 10));
|
||||
|
||||
// type indexes are 1-based pre 0.7 and 0-based post
|
||||
this.typeOffset = (major === 0 && minor < 7) ? 1 : 0;
|
||||
|
||||
if (chainProperties) {
|
||||
this.setChainProperties(chainProperties);
|
||||
}
|
||||
}
|
||||
|
||||
public setMetaTypes (metaTypes: Si0Type[]): void {
|
||||
this.#siTypes = metaTypes;
|
||||
}
|
||||
|
||||
public getMetaTypeDef (typeSpec: PartialTypeSpec): TypeDef {
|
||||
const offset = getRegistryOffset(typeSpec.type, this.typeOffset);
|
||||
let typeDef = this.metaTypeDefs[offset];
|
||||
|
||||
if (!typeDef) {
|
||||
typeDef = this.#extract(this.#getMetaType(typeSpec.type), typeSpec.type);
|
||||
|
||||
this.metaTypeDefs[offset] = typeDef;
|
||||
}
|
||||
|
||||
if (typeSpec.displayName && typeSpec.displayName.length) {
|
||||
const displayName = typeSpec.displayName[typeSpec.displayName.length - 1].toString();
|
||||
|
||||
if (!typeDef.type.startsWith(displayName)) {
|
||||
typeDef = {
|
||||
...typeDef,
|
||||
displayName,
|
||||
type: PRIMITIVE_ALWAYS.includes(displayName)
|
||||
? displayName
|
||||
: typeDef.type
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// Here we protect against the following cases
|
||||
// - No displayName present, these are generally known primitives
|
||||
// - displayName === type, these generate circular references
|
||||
// - displayName Option & type Option<...something...>
|
||||
if (typeDef.displayName && !this.hasType(typeDef.displayName) && !(typeDef.type === typeDef.displayName || typeDef.type.startsWith(`${typeDef.displayName}<`))) {
|
||||
this.register({ [typeDef.displayName]: typeDef.type });
|
||||
}
|
||||
|
||||
return typeDef;
|
||||
}
|
||||
|
||||
#getMetaType = (id: Si0LookupTypeId): Si0Type => {
|
||||
const type = this.#siTypes[getRegistryOffset(id, this.typeOffset)];
|
||||
|
||||
assert(!isUndefined(type), () => `getMetaType:: Unable to find ${id.toNumber()} in type values`);
|
||||
|
||||
return this.createType('Si0Type', type);
|
||||
}
|
||||
|
||||
#extract = (type: Si0Type, id: Si0LookupTypeId): TypeDef => {
|
||||
const path = [...type.path];
|
||||
const isPrimitivePath = !!path.length && (
|
||||
(path.length > 2 && path[0].eq('ink_env') && path[1].eq('types')) ||
|
||||
PRIMITIVE_ALWAYS.includes(path[path.length - 1].toString())
|
||||
);
|
||||
let typeDef: Omit<TypeDef, 'type'>;
|
||||
|
||||
if (isPrimitivePath) {
|
||||
typeDef = this.#extractPrimitivePath(type);
|
||||
} else if (type.def.isPrimitive) {
|
||||
typeDef = this.#extractPrimitive(type);
|
||||
} else if (type.def.isComposite) {
|
||||
typeDef = this.#extractFields(type.def.asComposite.fields);
|
||||
} else if (type.def.isVariant) {
|
||||
typeDef = this.#extractVariant(type.def.asVariant, id);
|
||||
} else if (type.def.isArray) {
|
||||
typeDef = this.#extractArray(type.def.asArray);
|
||||
} else if (type.def.isSequence) {
|
||||
typeDef = this.#extractSequence(type.def.asSequence, id);
|
||||
} else if (type.def.isTuple) {
|
||||
typeDef = this.#extractTuple(type.def.asTuple);
|
||||
} else {
|
||||
throw new Error(`Invalid ink! type at index ${id.toString()}`);
|
||||
}
|
||||
|
||||
const displayName = path.pop()?.toString();
|
||||
|
||||
return withTypeString(this, {
|
||||
...(displayName
|
||||
? { displayName }
|
||||
: {}
|
||||
),
|
||||
...(path.length > 1
|
||||
? { namespace: path.map((s) => s.toString()).join('::') }
|
||||
: {}
|
||||
),
|
||||
...(type.params.length > 0
|
||||
? { sub: type.params.map((type) => this.getMetaTypeDef({ type })) }
|
||||
: {}
|
||||
),
|
||||
...typeDef
|
||||
});
|
||||
}
|
||||
|
||||
#extractArray = ({ len: length, type }: Si0TypeDefArray): Omit<TypeDef, 'type'> => {
|
||||
assert(!length || length.toNumber() <= 256, 'MetaRegistry: Only support for [Type; <length>], where length <= 256');
|
||||
|
||||
return {
|
||||
info: TypeDefInfo.VecFixed,
|
||||
length: length.toNumber(),
|
||||
sub: this.getMetaTypeDef({ type })
|
||||
};
|
||||
}
|
||||
|
||||
#extractFields = (fields: Si0Field[]): Omit<TypeDef, 'type'> => {
|
||||
const [isStruct, isTuple] = fields.reduce(([isAllNamed, isAllUnnamed], { name }) => ([
|
||||
isAllNamed && name.isSome,
|
||||
isAllUnnamed && name.isNone
|
||||
]),
|
||||
[true, true]);
|
||||
|
||||
assert(isTuple || isStruct, 'Invalid fields type detected, expected either Tuple or Struct');
|
||||
|
||||
const sub = fields.map(({ name, type }) => ({
|
||||
...this.getMetaTypeDef({ type }),
|
||||
...(name.isSome
|
||||
? { name: name.unwrap().toString() }
|
||||
: {}
|
||||
)
|
||||
}));
|
||||
|
||||
return isTuple && sub.length === 1
|
||||
? sub[0]
|
||||
: {
|
||||
// check for tuple first (no fields may be available)
|
||||
info: isTuple
|
||||
? TypeDefInfo.Tuple
|
||||
: TypeDefInfo.Struct,
|
||||
sub
|
||||
};
|
||||
}
|
||||
|
||||
#extractPrimitive = (type: Si0Type): TypeDef => {
|
||||
const typeStr = type.def.asPrimitive.type.toString();
|
||||
|
||||
return {
|
||||
info: TypeDefInfo.Plain,
|
||||
type: PRIMITIVE_ALIAS[typeStr] || typeStr.toLowerCase()
|
||||
};
|
||||
}
|
||||
|
||||
#extractPrimitivePath = (type: Si0Type): TypeDef => {
|
||||
return {
|
||||
info: TypeDefInfo.Plain,
|
||||
type: type.path[type.path.length - 1].toString()
|
||||
};
|
||||
}
|
||||
|
||||
#extractSequence = ({ type }: Si0TypeDefSequence, id: Si0LookupTypeId): Omit<TypeDef, 'type'> => {
|
||||
assert(!!type, () => `ContractRegistry: Invalid sequence type found at id ${id.toString()}`);
|
||||
|
||||
return {
|
||||
info: TypeDefInfo.Vec,
|
||||
sub: this.getMetaTypeDef({ type })
|
||||
};
|
||||
}
|
||||
|
||||
#extractTuple = (ids: Si0TypeDefTuple): Omit<TypeDef, 'type'> => {
|
||||
return ids.length === 1
|
||||
? this.getMetaTypeDef({ type: ids[0] })
|
||||
: {
|
||||
info: TypeDefInfo.Tuple,
|
||||
sub: ids.map((type) => this.getMetaTypeDef({ type }))
|
||||
};
|
||||
}
|
||||
|
||||
#extractVariant = ({ variants }: Si0TypeDefVariant, id: Si0LookupTypeId): Omit<TypeDef, 'type'> => {
|
||||
const { params, path } = this.#getMetaType(id);
|
||||
const specialVariant = path[0].toString();
|
||||
|
||||
return specialVariant === 'Option'
|
||||
? {
|
||||
info: TypeDefInfo.Option,
|
||||
sub: this.getMetaTypeDef({ type: params[0] })
|
||||
}
|
||||
: specialVariant === 'Result'
|
||||
? {
|
||||
info: TypeDefInfo.Result,
|
||||
sub: params.map((type, index) => ({
|
||||
name: ['Ok', 'Error'][index],
|
||||
...this.getMetaTypeDef({ type })
|
||||
}))
|
||||
}
|
||||
: {
|
||||
info: TypeDefInfo.Enum,
|
||||
sub: this.#extractVariantSub(variants)
|
||||
};
|
||||
}
|
||||
|
||||
#extractVariantSub = (variants: Si0Variant[]): TypeDef[] => {
|
||||
return variants.every(({ fields }) => fields.length === 0)
|
||||
? variants.map(({ discriminant, name }) => ({
|
||||
...(
|
||||
discriminant.isSome
|
||||
? { ext: { discriminant: discriminant.unwrap().toNumber() } }
|
||||
: {}
|
||||
),
|
||||
info: TypeDefInfo.Plain,
|
||||
name: name.toString(),
|
||||
type: 'Null'
|
||||
}))
|
||||
: variants.map(({ fields, name }) => withTypeString(this, {
|
||||
...this.#extractFields(fields),
|
||||
name: name.toString()
|
||||
}));
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
// Copyright 2017-2021 @polkadot/api authors & contributors
|
||||
// Copyright 2017-2022 @polkadot/api authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { ApiTypes, DecorateMethod } from '@polkadot/api/types';
|
||||
import type { AnyJson, Registry } from '@polkadot/types/types';
|
||||
import type { Registry } from '@polkadot/types/types';
|
||||
|
||||
import { ApiBase } from '@polkadot/api/base';
|
||||
import { assert, isFunction } from '@polkadot/util';
|
||||
@@ -14,19 +14,22 @@ export abstract class Base<ApiType extends ApiTypes> {
|
||||
|
||||
public readonly api: ApiBase<ApiType>;
|
||||
|
||||
public readonly registry: Registry;
|
||||
|
||||
protected readonly _decorateMethod: DecorateMethod<ApiType>;
|
||||
|
||||
constructor (api: ApiBase<ApiType>, abi: AnyJson | Abi, decorateMethod: DecorateMethod<ApiType>) {
|
||||
constructor (api: ApiBase<ApiType>, abi: string | Record<string, unknown> | Abi, decorateMethod: DecorateMethod<ApiType>) {
|
||||
this.abi = abi instanceof Abi
|
||||
? abi
|
||||
: new Abi(abi, api.registry.getChainProperties());
|
||||
this.api = api;
|
||||
this.registry = this.abi.registry;
|
||||
|
||||
this._decorateMethod = decorateMethod;
|
||||
|
||||
assert(!!(api && api.isConnected && api.tx && api.tx.contracts && Object.keys(api.tx.contracts).length), 'Your API has not been initialized correctly and it not decorated with the runtime interfaces for contracts as retrieved from the on-chain runtime');
|
||||
assert(!!(api && api.isConnected && api.tx), 'Your API has not been initialized correctly and is not connected to a chain');
|
||||
assert(!!(api.tx.contracts && Object.keys(api.tx.contracts).length), 'You need to connect to a chain with a runtime that supports contracts');
|
||||
assert(isFunction(api.tx.contracts.instantiateWithCode), 'You need to connect to a chain with a runtime with a V3 contracts module. The runtime does not expose api.tx.contracts.instantiateWithCode');
|
||||
}
|
||||
|
||||
public get registry (): Registry {
|
||||
return this.api.registry;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// Copyright 2017-2021 @polkadot/api-contract authors & contributors
|
||||
// Copyright 2017-2022 @polkadot/api-contract authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { SubmittableExtrinsic } from '@polkadot/api/submittable/types';
|
||||
import type { ApiTypes, DecorateMethod } from '@polkadot/api/types';
|
||||
import type { AccountId, EventRecord, Hash } from '@polkadot/types/interfaces';
|
||||
import type { AnyJson, ISubmittableResult } from '@polkadot/types/types';
|
||||
import type { ISubmittableResult } from '@polkadot/types/types';
|
||||
import type { AbiConstructor, BlueprintOptions } from '../types';
|
||||
import type { MapConstructorExec } from './types';
|
||||
|
||||
@@ -18,6 +18,10 @@ import { Base } from './Base';
|
||||
import { Contract } from './Contract';
|
||||
import { createBluePrintTx, encodeSalt } from './util';
|
||||
|
||||
export interface BlueprintConstructor<ApiType extends ApiTypes> {
|
||||
new(api: ApiBase<ApiType>, abi: string | Record<string, unknown> | Abi, codeHash: string | Hash | Uint8Array): Blueprint<ApiType>;
|
||||
}
|
||||
|
||||
export class BlueprintSubmittableResult<ApiType extends ApiTypes> extends SubmittableResult {
|
||||
public readonly contract?: Contract<ApiType>;
|
||||
|
||||
@@ -36,14 +40,14 @@ export class Blueprint<ApiType extends ApiTypes> extends Base<ApiType> {
|
||||
|
||||
readonly #tx: MapConstructorExec<ApiType> = {};
|
||||
|
||||
constructor (api: ApiBase<ApiType>, abi: AnyJson | Abi, codeHash: string | Hash | Uint8Array, decorateMethod: DecorateMethod<ApiType>) {
|
||||
constructor (api: ApiBase<ApiType>, abi: string | Record<string, unknown> | Abi, codeHash: string | Hash | Uint8Array, decorateMethod: DecorateMethod<ApiType>) {
|
||||
super(api, abi, decorateMethod);
|
||||
|
||||
this.codeHash = this.registry.createType('Hash', codeHash);
|
||||
|
||||
this.abi.constructors.forEach((c): void => {
|
||||
if (isUndefined(this.#tx[c.method])) {
|
||||
this.#tx[c.method] = createBluePrintTx((o, p) => this.#deploy(c, o, p));
|
||||
this.#tx[c.method] = createBluePrintTx(c, (o, p) => this.#deploy(c, o, p));
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -52,19 +56,30 @@ export class Blueprint<ApiType extends ApiTypes> extends Base<ApiType> {
|
||||
return this.#tx;
|
||||
}
|
||||
|
||||
#deploy = (constructorOrId: AbiConstructor | string | number, { gasLimit = BN_ZERO, salt, value = BN_ZERO }: BlueprintOptions, params: unknown[]): SubmittableExtrinsic<ApiType, BlueprintSubmittableResult<ApiType>> => {
|
||||
return this.api.tx.contracts
|
||||
.instantiate(
|
||||
value,
|
||||
gasLimit,
|
||||
this.codeHash,
|
||||
this.abi.findConstructor(constructorOrId).toU8a(params),
|
||||
encodeSalt(salt)
|
||||
)
|
||||
.withResultTransform((result: ISubmittableResult) =>
|
||||
new BlueprintSubmittableResult(result, applyOnEvent(result, ['Instantiated'], ([record]: EventRecord[]) =>
|
||||
new Contract<ApiType>(this.api, this.abi, record.event.data[1] as AccountId, this._decorateMethod)
|
||||
))
|
||||
);
|
||||
}
|
||||
#deploy = (constructorOrId: AbiConstructor | string | number, { gasLimit = BN_ZERO, salt, storageDepositLimit = null, value = BN_ZERO }: BlueprintOptions, params: unknown[]): SubmittableExtrinsic<ApiType, BlueprintSubmittableResult<ApiType>> => {
|
||||
const hasStorageDeposit = this.api.tx.contracts.instantiate.meta.args.length === 6;
|
||||
const encParams = this.abi.findConstructor(constructorOrId).toU8a(params);
|
||||
const encSalt = encodeSalt(salt);
|
||||
const tx = hasStorageDeposit
|
||||
? this.api.tx.contracts.instantiate(value, gasLimit, storageDepositLimit, this.codeHash, encParams, encSalt)
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-ignore old style without storage deposit
|
||||
: this.api.tx.contracts.instantiate(value, gasLimit, this.codeHash, encParams, encSalt);
|
||||
|
||||
return tx.withResultTransform((result: ISubmittableResult) =>
|
||||
new BlueprintSubmittableResult(result, applyOnEvent(result, ['Instantiated'], ([record]: EventRecord[]) =>
|
||||
new Contract<ApiType>(this.api, this.abi, record.event.data[1] as AccountId, this._decorateMethod)
|
||||
))
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
export function extendBlueprint <ApiType extends ApiTypes> (type: ApiType, decorateMethod: DecorateMethod<ApiType>): BlueprintConstructor<ApiType> {
|
||||
return class extends Blueprint<ApiType> {
|
||||
static __BlueprintType = type;
|
||||
|
||||
constructor (api: ApiBase<ApiType>, abi: string | Record<string, unknown> | Abi, codeHash: string | Hash | Uint8Array) {
|
||||
super(api, abi, codeHash, decorateMethod);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,28 +1,35 @@
|
||||
// Copyright 2017-2021 @polkadot/api-contract authors & contributors
|
||||
// Copyright 2017-2022 @polkadot/api-contract authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
|
||||
import { decorateMethodPromise } from '@polkadot/api';
|
||||
import { toPromiseMethod } from '@polkadot/api';
|
||||
|
||||
import contractFlipper from '../../test/contracts/ink/flipper.contract.json';
|
||||
import abiFlipper from '../../test/contracts/ink/flipper.json';
|
||||
import v0contractFlipper from '../test/contracts/ink/v0/flipper.contract.json';
|
||||
import v0abiFlipper from '../test/contracts/ink/v0/flipper.json';
|
||||
import v1contractFlipper from '../test/contracts/ink/v1/flipper.contract.json';
|
||||
import { Code } from './Code';
|
||||
import { mockApi } from './mock';
|
||||
|
||||
const wasmFlipper = fs.readFileSync(path.join(__dirname, '../../test/contracts/ink/flipper.wasm'));
|
||||
const v0wasmFlipper = fs.readFileSync(path.join(__dirname, '../test/contracts/ink/v0/flipper.wasm'));
|
||||
|
||||
describe('Code', (): void => {
|
||||
it('can construct with an individual ABI/WASM combo', (): void => {
|
||||
expect(
|
||||
() => new Code(mockApi, abiFlipper, wasmFlipper, decorateMethodPromise)
|
||||
() => new Code(mockApi, v0abiFlipper as Record<string, unknown>, v0wasmFlipper, toPromiseMethod)
|
||||
).not.toThrow();
|
||||
});
|
||||
|
||||
it('can construct with an .contract ABI', (): void => {
|
||||
it('can construct with an .contract ABI (v0)', (): void => {
|
||||
expect(
|
||||
() => new Code(mockApi, contractFlipper, null, decorateMethodPromise)
|
||||
() => new Code(mockApi, v0contractFlipper as Record<string, unknown>, null, toPromiseMethod)
|
||||
).not.toThrow();
|
||||
});
|
||||
|
||||
it.only('can construct with an .contract ABI (v1)', (): void => {
|
||||
expect(
|
||||
() => new Code(mockApi, v1contractFlipper as Record<string, unknown>, null, toPromiseMethod)
|
||||
).not.toThrow();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
// Copyright 2017-2021 @polkadot/api-contract authors & contributors
|
||||
// Copyright 2017-2022 @polkadot/api-contract authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { SubmittableExtrinsic } from '@polkadot/api/submittable/types';
|
||||
import type { ApiTypes, DecorateMethod } from '@polkadot/api/types';
|
||||
import type { EventRecord } from '@polkadot/types/interfaces';
|
||||
import type { AnyJson, ISubmittableResult } from '@polkadot/types/types';
|
||||
import type { AccountId, EventRecord } from '@polkadot/types/interfaces';
|
||||
import type { ISubmittableResult } from '@polkadot/types/types';
|
||||
import type { Codec } from '@polkadot/types-codec/types';
|
||||
import type { AbiConstructor, BlueprintOptions } from '../types';
|
||||
import type { MapConstructorExec } from './types';
|
||||
|
||||
@@ -19,6 +20,10 @@ import { Blueprint } from './Blueprint';
|
||||
import { Contract } from './Contract';
|
||||
import { createBluePrintTx, encodeSalt } from './util';
|
||||
|
||||
export interface CodeConstructor<ApiType extends ApiTypes> {
|
||||
new(api: ApiBase<ApiType>, abi: string | Record<string, unknown> | Abi, wasm: Uint8Array | string | Buffer | null | undefined): Code<ApiType>;
|
||||
}
|
||||
|
||||
export class CodeSubmittableResult<ApiType extends ApiTypes> extends SubmittableResult {
|
||||
public readonly blueprint?: Blueprint<ApiType>;
|
||||
public readonly contract?: Contract<ApiType>;
|
||||
@@ -36,18 +41,18 @@ export class Code<ApiType extends ApiTypes> extends Base<ApiType> {
|
||||
|
||||
readonly #tx: MapConstructorExec<ApiType> = {};
|
||||
|
||||
constructor (api: ApiBase<ApiType>, abi: AnyJson | Abi, wasm: Uint8Array | string | Buffer | null | undefined, decorateMethod: DecorateMethod<ApiType>) {
|
||||
constructor (api: ApiBase<ApiType>, abi: string | Record<string, unknown> | Abi, wasm: Uint8Array | string | Buffer | null | undefined, decorateMethod: DecorateMethod<ApiType>) {
|
||||
super(api, abi, decorateMethod);
|
||||
|
||||
this.code = isWasm(this.abi.project.source.wasm)
|
||||
? this.abi.project.source.wasm
|
||||
this.code = isWasm(this.abi.info.source.wasm)
|
||||
? this.abi.info.source.wasm
|
||||
: u8aToU8a(wasm);
|
||||
|
||||
assert(isWasm(this.code), 'No WASM code provided');
|
||||
|
||||
this.abi.constructors.forEach((c): void => {
|
||||
if (isUndefined(this.#tx[c.method])) {
|
||||
this.#tx[c.method] = createBluePrintTx((o, p) => this.#instantiate(c, o, p));
|
||||
this.#tx[c.method] = createBluePrintTx(c, (o, p) => this.#instantiate(c, o, p));
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -56,25 +61,37 @@ export class Code<ApiType extends ApiTypes> extends Base<ApiType> {
|
||||
return this.#tx;
|
||||
}
|
||||
|
||||
#instantiate = (constructorOrId: AbiConstructor | string | number, { gasLimit = BN_ZERO, salt, value = BN_ZERO }: BlueprintOptions, params: unknown[]): SubmittableExtrinsic<ApiType, CodeSubmittableResult<ApiType>> => {
|
||||
return this.api.tx.contracts
|
||||
.instantiateWithCode(
|
||||
value,
|
||||
gasLimit,
|
||||
compactAddLength(this.code),
|
||||
this.abi.findConstructor(constructorOrId).toU8a(params),
|
||||
encodeSalt(salt)
|
||||
)
|
||||
.withResultTransform((result: ISubmittableResult) =>
|
||||
new CodeSubmittableResult(result, ...(applyOnEvent(result, ['CodeStored', 'Instantiated'], (records: EventRecord[]) =>
|
||||
records.reduce<[Blueprint<ApiType>?, Contract<ApiType>?]>(([blueprint, contract], { event }) =>
|
||||
this.api.events.contracts.Instantiated.is(event)
|
||||
? [blueprint, new Contract<ApiType>(this.api, this.abi, event.data[1], this._decorateMethod)]
|
||||
: this.api.events.contracts.CodeStored.is(event)
|
||||
? [new Blueprint<ApiType>(this.api, this.abi, event.data[0], this._decorateMethod), contract]
|
||||
: [blueprint, contract],
|
||||
[])
|
||||
) || []))
|
||||
);
|
||||
}
|
||||
#instantiate = (constructorOrId: AbiConstructor | string | number, { gasLimit = BN_ZERO, salt, storageDepositLimit = null, value = BN_ZERO }: BlueprintOptions, params: unknown[]): SubmittableExtrinsic<ApiType, CodeSubmittableResult<ApiType>> => {
|
||||
const hasStorageDeposit = this.api.tx.contracts.instantiateWithCode.meta.args.length === 6;
|
||||
const encCode = compactAddLength(this.code);
|
||||
const encParams = this.abi.findConstructor(constructorOrId).toU8a(params);
|
||||
const encSalt = encodeSalt(salt);
|
||||
const tx = hasStorageDeposit
|
||||
? this.api.tx.contracts.instantiateWithCode(value, gasLimit, storageDepositLimit, encCode, encParams, encSalt)
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-ignore old style without storage deposit
|
||||
: this.api.tx.contracts.instantiateWithCode(value, gasLimit, encCode, encParams, encSalt);
|
||||
|
||||
return tx.withResultTransform((result: ISubmittableResult) =>
|
||||
new CodeSubmittableResult(result, ...(applyOnEvent(result, ['CodeStored', 'Instantiated'], (records: EventRecord[]) =>
|
||||
records.reduce<[Blueprint<ApiType>?, Contract<ApiType>?]>(([blueprint, contract], { event }) =>
|
||||
this.api.events.contracts.Instantiated.is(event)
|
||||
? [blueprint, new Contract<ApiType>(this.api, this.abi, (event as unknown as { data: [Codec, AccountId] }).data[1], this._decorateMethod)]
|
||||
: this.api.events.contracts.CodeStored.is(event)
|
||||
? [new Blueprint<ApiType>(this.api, this.abi, (event as unknown as { data: [AccountId] }).data[0], this._decorateMethod), contract]
|
||||
: [blueprint, contract],
|
||||
[])
|
||||
) || []))
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
export function extendCode <ApiType extends ApiTypes> (type: ApiType, decorateMethod: DecorateMethod<ApiType>): CodeConstructor<ApiType> {
|
||||
return class extends Code<ApiType> {
|
||||
static __CodeType = type;
|
||||
|
||||
constructor (api: ApiBase<ApiType>, abi: string | Record<string, unknown> | Abi, wasm: Uint8Array | string | Buffer | null | undefined) {
|
||||
super(api, abi, wasm, decorateMethod);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
// Copyright 2017-2021 @polkadot/api-contract authors & contributors
|
||||
// Copyright 2017-2022 @polkadot/api-contract authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { SubmittableExtrinsic } from '@polkadot/api/submittable/types';
|
||||
import type { ApiTypes, DecorateMethod } from '@polkadot/api/types';
|
||||
import type { Bytes } from '@polkadot/types';
|
||||
import type { AccountId, EventRecord, Weight } from '@polkadot/types/interfaces';
|
||||
import type { AnyJson, ISubmittableResult } from '@polkadot/types/types';
|
||||
import type { AccountId, ContractExecResult, EventRecord, Weight } from '@polkadot/types/interfaces';
|
||||
import type { ISubmittableResult } from '@polkadot/types/types';
|
||||
import type { AbiMessage, ContractCallOutcome, ContractOptions, DecodedEvent } from '../types';
|
||||
import type { ContractCallResult, ContractCallSend, ContractQuery, ContractTx, MapMessageQuery, MapMessageTx } from './types';
|
||||
|
||||
@@ -13,12 +13,16 @@ import { map } from 'rxjs';
|
||||
|
||||
import { SubmittableResult } from '@polkadot/api';
|
||||
import { ApiBase } from '@polkadot/api/base';
|
||||
import { createTypeUnsafe } from '@polkadot/types';
|
||||
import { assert, BN, BN_HUNDRED, BN_ONE, BN_ZERO, bnToBn, isFunction, isUndefined, logger } from '@polkadot/util';
|
||||
|
||||
import { Abi } from '../Abi';
|
||||
import { applyOnEvent, extractOptions, isOptions } from '../util';
|
||||
import { Base } from './Base';
|
||||
import { withMeta } from './util';
|
||||
|
||||
export interface ContractConstructor<ApiType extends ApiTypes> {
|
||||
new(api: ApiBase<ApiType>, abi: string | Record<string, unknown> | Abi, address: string | AccountId): Contract<ApiType>;
|
||||
}
|
||||
|
||||
// As per Rust, 5 * GAS_PER_SEC
|
||||
const MAX_CALL_GAS = new BN(5_000_000_000_000).isub(BN_ONE);
|
||||
@@ -26,18 +30,20 @@ const ERROR_NO_CALL = 'Your node does not expose the contracts.call RPC. This is
|
||||
|
||||
const l = logger('Contract');
|
||||
|
||||
function createQuery <ApiType extends ApiTypes> (fn: (origin: string | AccountId | Uint8Array, options: ContractOptions, params: unknown[]) => ContractCallResult<ApiType, ContractCallOutcome>): ContractQuery<ApiType> {
|
||||
return (origin: string | AccountId | Uint8Array, options: bigint | string | number | BN | ContractOptions, ...params: unknown[]): ContractCallResult<ApiType, ContractCallOutcome> =>
|
||||
function createQuery <ApiType extends ApiTypes> (meta: AbiMessage, fn: (origin: string | AccountId | Uint8Array, options: ContractOptions, params: unknown[]) => ContractCallResult<ApiType, ContractCallOutcome>): ContractQuery<ApiType> {
|
||||
return withMeta(meta, (origin: string | AccountId | Uint8Array, options: bigint | string | number | BN | ContractOptions, ...params: unknown[]): ContractCallResult<ApiType, ContractCallOutcome> =>
|
||||
isOptions(options)
|
||||
? fn(origin, options, params)
|
||||
: fn(origin, ...extractOptions(options, params));
|
||||
: fn(origin, ...extractOptions<ContractOptions>(options, params))
|
||||
);
|
||||
}
|
||||
|
||||
function createTx <ApiType extends ApiTypes> (fn: (options: ContractOptions, params: unknown[]) => SubmittableExtrinsic<ApiType>): ContractTx<ApiType> {
|
||||
return (options: bigint | string | number | BN | ContractOptions, ...params: unknown[]): SubmittableExtrinsic<ApiType> =>
|
||||
function createTx <ApiType extends ApiTypes> (meta: AbiMessage, fn: (options: ContractOptions, params: unknown[]) => SubmittableExtrinsic<ApiType>): ContractTx<ApiType> {
|
||||
return withMeta(meta, (options: bigint | string | number | BN | ContractOptions, ...params: unknown[]): SubmittableExtrinsic<ApiType> =>
|
||||
isOptions(options)
|
||||
? fn(options, params)
|
||||
: fn(...extractOptions(options, params));
|
||||
: fn(...extractOptions<ContractOptions>(options, params))
|
||||
);
|
||||
}
|
||||
|
||||
export class ContractSubmittableResult extends SubmittableResult {
|
||||
@@ -60,18 +66,18 @@ export class Contract<ApiType extends ApiTypes> extends Base<ApiType> {
|
||||
|
||||
readonly #tx: MapMessageTx<ApiType> = {};
|
||||
|
||||
constructor (api: ApiBase<ApiType>, abi: AnyJson | Abi, address: string | AccountId, decorateMethod: DecorateMethod<ApiType>) {
|
||||
constructor (api: ApiBase<ApiType>, abi: string | Record<string, unknown> | Abi, address: string | AccountId, decorateMethod: DecorateMethod<ApiType>) {
|
||||
super(api, abi, decorateMethod);
|
||||
|
||||
this.address = this.registry.createType('AccountId', address);
|
||||
|
||||
this.abi.messages.forEach((m): void => {
|
||||
if (isUndefined(this.#tx[m.method])) {
|
||||
this.#tx[m.method] = createTx((o, p) => this.#exec(m, o, p));
|
||||
this.#tx[m.method] = createTx(m, (o, p) => this.#exec(m, o, p));
|
||||
}
|
||||
|
||||
if (isUndefined(this.#query[m.method])) {
|
||||
this.#query[m.method] = createQuery((f, o, p) => this.#read(m, o, p).send(f));
|
||||
this.#query[m.method] = createQuery(m, (f, o, p) => this.#read(m, o, p).send(f));
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -97,68 +103,79 @@ export class Contract<ApiType extends ApiTypes> extends Base<ApiType> {
|
||||
? isCall
|
||||
? MAX_CALL_GAS
|
||||
: (this.api.consts.system.blockWeights
|
||||
? this.api.consts.system.blockWeights.maxBlock
|
||||
? (this.api.consts.system.blockWeights as unknown as { maxBlock: Weight }).maxBlock
|
||||
: this.api.consts.system.maximumBlockWeight as Weight
|
||||
).muln(64).div(BN_HUNDRED)
|
||||
: gasLimit;
|
||||
}
|
||||
};
|
||||
|
||||
#exec = (messageOrId: AbiMessage | string | number, { gasLimit = BN_ZERO, value = BN_ZERO }: ContractOptions, params: unknown[]): SubmittableExtrinsic<ApiType> => {
|
||||
return this.api.tx.contracts
|
||||
.call(
|
||||
this.address,
|
||||
value,
|
||||
this.#getGas(gasLimit),
|
||||
this.abi.findMessage(messageOrId).toU8a(params)
|
||||
)
|
||||
.withResultTransform((result: ISubmittableResult) =>
|
||||
// ContractEmitted is the current generation, ContractExecution is the previous generation
|
||||
new ContractSubmittableResult(result, applyOnEvent(result, ['ContractEmitted', 'ContractExecution'], (records: EventRecord[]) =>
|
||||
records
|
||||
.map(({ event: { data: [, data] } }): DecodedEvent | null => {
|
||||
try {
|
||||
return this.abi.decodeEvent(data as Bytes);
|
||||
} catch (error) {
|
||||
l.error(`Unable to decode contract event: ${(error as Error).message}`);
|
||||
#exec = (messageOrId: AbiMessage | string | number, { gasLimit = BN_ZERO, storageDepositLimit = null, value = BN_ZERO }: ContractOptions, params: unknown[]): SubmittableExtrinsic<ApiType> => {
|
||||
const hasStorageDeposit = this.api.tx.contracts.call.meta.args.length === 5;
|
||||
const gas = this.#getGas(gasLimit);
|
||||
const encParams = this.abi.findMessage(messageOrId).toU8a(params);
|
||||
const tx = hasStorageDeposit
|
||||
? this.api.tx.contracts.call(this.address, value, gas, storageDepositLimit, encParams)
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-ignore old style without storage deposit
|
||||
: this.api.tx.contracts.call(this.address, value, gas, encParams);
|
||||
|
||||
return null;
|
||||
}
|
||||
})
|
||||
.filter((decoded): decoded is DecodedEvent => !!decoded)
|
||||
))
|
||||
);
|
||||
}
|
||||
return tx.withResultTransform((result: ISubmittableResult) =>
|
||||
// ContractEmitted is the current generation, ContractExecution is the previous generation
|
||||
new ContractSubmittableResult(result, applyOnEvent(result, ['ContractEmitted', 'ContractExecution'], (records: EventRecord[]) =>
|
||||
records
|
||||
.map(({ event: { data: [, data] } }): DecodedEvent | null => {
|
||||
try {
|
||||
return this.abi.decodeEvent(data as Bytes);
|
||||
} catch (error) {
|
||||
l.error(`Unable to decode contract event: ${(error as Error).message}`);
|
||||
|
||||
#read = (messageOrId: AbiMessage | string | number, { gasLimit = BN_ZERO, value = BN_ZERO }: ContractOptions, params: unknown[]): ContractCallSend<ApiType> => {
|
||||
return null;
|
||||
}
|
||||
})
|
||||
.filter((decoded): decoded is DecodedEvent => !!decoded)
|
||||
))
|
||||
);
|
||||
};
|
||||
|
||||
#read = (messageOrId: AbiMessage | string | number, { gasLimit = BN_ZERO, storageDepositLimit = null, value = BN_ZERO }: ContractOptions, params: unknown[]): ContractCallSend<ApiType> => {
|
||||
assert(this.hasRpcContractsCall, ERROR_NO_CALL);
|
||||
|
||||
const message = this.abi.findMessage(messageOrId);
|
||||
|
||||
return {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
||||
send: this._decorateMethod((origin: string | AccountId | Uint8Array) =>
|
||||
this.api.rx.rpc.contracts
|
||||
.call({
|
||||
dest: this.address,
|
||||
gasLimit: this.#getGas(gasLimit, true),
|
||||
inputData: message.toU8a(params),
|
||||
origin,
|
||||
value
|
||||
})
|
||||
.pipe(
|
||||
map(({ debugMessage, gasConsumed, gasRequired, result }): ContractCallOutcome => ({
|
||||
debugMessage,
|
||||
gasConsumed,
|
||||
gasRequired: gasRequired && !gasRequired.isZero()
|
||||
? gasRequired
|
||||
: gasConsumed,
|
||||
output: result.isOk && message.returnType
|
||||
? createTypeUnsafe(this.registry, message.returnType.type, [result.asOk.data.toU8a(true)], { isPedantic: true })
|
||||
: null,
|
||||
result
|
||||
}))
|
||||
)
|
||||
)
|
||||
send: this._decorateMethod((origin: string | AccountId | Uint8Array) => {
|
||||
const hasStorageDeposit = this.api.tx.contracts.call.meta.args.length === 5;
|
||||
const inputData = message.toU8a(params);
|
||||
const rpc = hasStorageDeposit
|
||||
? this.api.rx.rpc.contracts.call({ dest: this.address, gasLimit: this.#getGas(gasLimit, true), inputData, origin, storageDepositLimit, value })
|
||||
: this.api.rx.rpc.contracts.call({ dest: this.address, gasLimit: this.#getGas(gasLimit, true), inputData, origin, value });
|
||||
|
||||
const mapFn = ({ debugMessage, gasConsumed, gasRequired, result, storageDeposit }: ContractExecResult): ContractCallOutcome => ({
|
||||
debugMessage,
|
||||
gasConsumed,
|
||||
gasRequired: gasRequired && !gasRequired.isZero()
|
||||
? gasRequired
|
||||
: gasConsumed,
|
||||
output: result.isOk && message.returnType
|
||||
? this.abi.registry.createTypeUnsafe(message.returnType.lookupName || message.returnType.type, [result.asOk.data.toU8a(true)], { isPedantic: true })
|
||||
: null,
|
||||
result,
|
||||
storageDeposit
|
||||
});
|
||||
|
||||
return rpc.pipe(map(mapFn));
|
||||
})
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export function extendContract <ApiType extends ApiTypes> (type: ApiType, decorateMethod: DecorateMethod<ApiType>): ContractConstructor<ApiType> {
|
||||
return class extends Contract<ApiType> {
|
||||
static __ContractType = type;
|
||||
|
||||
constructor (api: ApiBase<ApiType>, abi: string | Record<string, unknown> | Abi, address: string | AccountId) {
|
||||
super(api, abi, address, decorateMethod);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Copyright 2017-2021 @polkadot/api authors & contributors
|
||||
// Copyright 2017-2022 @polkadot/api authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
export { Blueprint, BlueprintSubmittableResult } from './Blueprint';
|
||||
export { Code, CodeSubmittableResult } from './Code';
|
||||
export { Contract } from './Contract';
|
||||
export { Blueprint, BlueprintSubmittableResult, extendBlueprint } from './Blueprint';
|
||||
export { Code, CodeSubmittableResult, extendCode } from './Code';
|
||||
export { Contract, extendContract } from './Contract';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2021 @polkadot/api-contract authors & contributors
|
||||
// Copyright 2017-2022 @polkadot/api-contract authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import { ApiBase } from '@polkadot/api/base';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2017-2021 @polkadot/api-contract authors & contributors
|
||||
// Copyright 2017-2022 @polkadot/api-contract authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { Observable } from 'rxjs';
|
||||
@@ -8,23 +8,31 @@ import type { AccountId } from '@polkadot/types/interfaces';
|
||||
import type { BN } from '@polkadot/util';
|
||||
import type { AbiMessage, BlueprintOptions, ContractCallOutcome, ContractOptions } from '../types';
|
||||
|
||||
export interface BlueprintDeploy<ApiType extends ApiTypes> {
|
||||
export interface MessageMeta {
|
||||
readonly meta: AbiMessage;
|
||||
}
|
||||
|
||||
export interface BlueprintDeploy<ApiType extends ApiTypes> extends MessageMeta {
|
||||
(options: BlueprintOptions, ...params: unknown[]): SubmittableExtrinsic<ApiType>;
|
||||
// @deprecated Use options form (to be dropped in a major update)
|
||||
(value: bigint | string | number | BN, gasLimit: bigint | string | number | BN, ...params: unknown[]): SubmittableExtrinsic<ApiType>;
|
||||
}
|
||||
|
||||
export interface ContractQuery<ApiType extends ApiTypes> {
|
||||
export interface ContractQuery<ApiType extends ApiTypes> extends MessageMeta {
|
||||
(origin: AccountId | string | Uint8Array, options: ContractOptions, ...params: unknown[]): ContractCallResult<ApiType, ContractCallOutcome>;
|
||||
// @deprecated Use options form (to be dropped in a major update)
|
||||
(origin: AccountId | string | Uint8Array, value: bigint | BN | string | number, gasLimit: bigint | BN | string | number, ...params: unknown[]): ContractCallResult<ApiType, ContractCallOutcome>;
|
||||
}
|
||||
|
||||
export interface ContractTx<ApiType extends ApiTypes> {
|
||||
export interface ContractTx<ApiType extends ApiTypes> extends MessageMeta {
|
||||
(options: ContractOptions, ...params: unknown[]): SubmittableExtrinsic<ApiType>;
|
||||
// @deprecated Use options form (to be dropped in a major update)
|
||||
(value: bigint | BN | string | number, gasLimit: bigint | BN | string | number, ...params: unknown[]): SubmittableExtrinsic<ApiType>;
|
||||
}
|
||||
|
||||
export interface ContractGeneric<O, T> {
|
||||
(messageOrId: AbiMessage | string | number, options: O, ...params: unknown[]): T;
|
||||
// @deprecated Use options form (to be dropped in a major update)
|
||||
(messageOrId: AbiMessage | string | number, value: bigint | BN | string | number, gasLimit: bigint | BN | string | number, ...params: unknown[]): T;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
// Copyright 2017-2021 @polkadot/api-contract authors & contributors
|
||||
// Copyright 2017-2022 @polkadot/api-contract authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { SubmittableResult } from '@polkadot/api';
|
||||
import type { SubmittableExtrinsic } from '@polkadot/api/submittable/types';
|
||||
import type { ApiTypes } from '@polkadot/api/types';
|
||||
import type { BN } from '@polkadot/util';
|
||||
import type { AbiConstructor, BlueprintOptions } from '../types';
|
||||
import type { AbiConstructor, AbiMessage, BlueprintOptions } from '../types';
|
||||
import type { BlueprintDeploy, ContractGeneric } from './types';
|
||||
|
||||
import { Bytes } from '@polkadot/types';
|
||||
@@ -16,18 +16,25 @@ import { extractOptions, isOptions } from '../util';
|
||||
|
||||
export const EMPTY_SALT = new Uint8Array();
|
||||
|
||||
export function createBluePrintTx <ApiType extends ApiTypes, R extends SubmittableResult> (fn: (options: BlueprintOptions, params: unknown[]) => SubmittableExtrinsic<ApiType, R>): BlueprintDeploy<ApiType> {
|
||||
return (options: bigint | string | number | BN | BlueprintOptions, ...params: unknown[]): SubmittableExtrinsic<ApiType, R> =>
|
||||
export function withMeta <T extends { meta: AbiMessage }> (meta: AbiMessage, creator: Omit<T, 'meta'>): T {
|
||||
(creator as T).meta = meta;
|
||||
|
||||
return creator as T;
|
||||
}
|
||||
|
||||
export function createBluePrintTx <ApiType extends ApiTypes, R extends SubmittableResult> (meta: AbiMessage, fn: (options: BlueprintOptions, params: unknown[]) => SubmittableExtrinsic<ApiType, R>): BlueprintDeploy<ApiType> {
|
||||
return withMeta(meta, (options: bigint | string | number | BN | BlueprintOptions, ...params: unknown[]): SubmittableExtrinsic<ApiType, R> =>
|
||||
isOptions(options)
|
||||
? fn(options, params)
|
||||
: fn(...extractOptions(options, params));
|
||||
: fn(...extractOptions<BlueprintOptions>(options, params))
|
||||
);
|
||||
}
|
||||
|
||||
export function createBluePrintWithId <T> (fn: (constructorOrId: AbiConstructor | string | number, options: BlueprintOptions, params: unknown[]) => T): ContractGeneric<BlueprintOptions, T> {
|
||||
return (constructorOrId: AbiConstructor | string | number, options: bigint | string | number | BN | BlueprintOptions, ...params: unknown[]): T =>
|
||||
isOptions(options)
|
||||
? fn(constructorOrId, options, params)
|
||||
: fn(constructorOrId, ...extractOptions(options, params));
|
||||
: fn(constructorOrId, ...extractOptions<BlueprintOptions>(options, params));
|
||||
}
|
||||
|
||||
export function encodeSalt (salt: Uint8Array | string | null = randomAsU8a()): Uint8Array {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user