@polkadot-api/substrate-bindings 0.16.2 → 0.16.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,15 @@
1
1
  import { fromHex, toHex } from '@polkadot-api/utils';
2
2
  import { Bytes, createCodec, createDecoder } from 'scale-ts';
3
- import { keccak_256 } from '@noble/hashes/sha3.js';
3
+ import '@noble/hashes/blake2.js';
4
+ import '@noble/hashes/blake3.js';
5
+ import { Keccak256 } from '../../hashes/keccak.mjs';
6
+ import { textEncoder } from './fixed-str.mjs';
4
7
 
5
8
  const getFormattedAddress = (hexAddress) => {
6
9
  const nonChecksum = hexAddress.slice(2);
7
- const hashedAddress = toHex(keccak_256(fromHex(hexAddress))).slice(2);
10
+ const hashedAddress = toHex(Keccak256(textEncoder.encode(nonChecksum))).slice(
11
+ 2
12
+ );
8
13
  const result = new Array(40);
9
14
  for (let i = 0; i < 40; i++) {
10
15
  const checksumVal = parseInt(hashedAddress[i], 16);
@@ -1 +1 @@
1
- {"version":3,"file":"ethAccount.mjs","sources":["../../../../src/codecs/scale/ethAccount.ts"],"sourcesContent":["import { fromHex, toHex } from \"@polkadot-api/utils\"\nimport { Bytes, createCodec, createDecoder } from \"scale-ts\"\nimport { keccak_256 as keccak } from \"@noble/hashes/sha3.js\"\n\nconst getFormattedAddress = (hexAddress: string) => {\n const nonChecksum = hexAddress.slice(2)\n const hashedAddress = toHex(keccak(fromHex(hexAddress))).slice(2)\n\n const result = new Array(40)\n\n for (let i = 0; i < 40; i++) {\n const checksumVal = parseInt(hashedAddress[i], 16)\n const char = nonChecksum[i]\n result[i] = checksumVal > 7 ? char.toUpperCase() : char\n }\n\n return `0x${result.join(\"\")}`\n}\n\nconst bytes20Dec = Bytes(20)[1]\n\nexport const ethAccount = createCodec<string>(\n (input: string) => {\n const bytes = fromHex(input)\n if (bytes.length !== 20)\n throw new Error(`Invalid length found on EthAddress(${input})`)\n\n const hexAddress = toHex(bytes)\n if (input === hexAddress || input === hexAddress.toUpperCase()) return bytes\n\n if (getFormattedAddress(hexAddress) !== input)\n throw new Error(`Invalid checksum found on EthAddress(${input})`)\n\n return bytes\n },\n createDecoder((bytes) => getFormattedAddress(toHex(bytes20Dec(bytes)))),\n)\n"],"names":["keccak"],"mappings":";;;;AAIA,MAAM,mBAAA,GAAsB,CAAC,UAAA,KAAuB;AAClD,EAAA,MAAM,WAAA,GAAc,UAAA,CAAW,KAAA,CAAM,CAAC,CAAA;AACtC,EAAA,MAAM,aAAA,GAAgB,MAAMA,UAAA,CAAO,OAAA,CAAQ,UAAU,CAAC,CAAC,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA;AAEhE,EAAA,MAAM,MAAA,GAAS,IAAI,KAAA,CAAM,EAAE,CAAA;AAE3B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,EAAA,EAAI,CAAA,EAAA,EAAK;AAC3B,IAAA,MAAM,WAAA,GAAc,QAAA,CAAS,aAAA,CAAc,CAAC,GAAG,EAAE,CAAA;AACjD,IAAA,MAAM,IAAA,GAAO,YAAY,CAAC,CAAA;AAC1B,IAAA,MAAA,CAAO,CAAC,CAAA,GAAI,WAAA,GAAc,CAAA,GAAI,IAAA,CAAK,aAAY,GAAI,IAAA;AAAA,EACrD;AAEA,EAAA,OAAO,CAAA,EAAA,EAAK,MAAA,CAAO,IAAA,CAAK,EAAE,CAAC,CAAA,CAAA;AAC7B,CAAA;AAEA,MAAM,UAAA,GAAa,KAAA,CAAM,EAAE,CAAA,CAAE,CAAC,CAAA;AAEvB,MAAM,UAAA,GAAa,WAAA;AAAA,EACxB,CAAC,KAAA,KAAkB;AACjB,IAAA,MAAM,KAAA,GAAQ,QAAQ,KAAK,CAAA;AAC3B,IAAA,IAAI,MAAM,MAAA,KAAW,EAAA;AACnB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,mCAAA,EAAsC,KAAK,CAAA,CAAA,CAAG,CAAA;AAEhE,IAAA,MAAM,UAAA,GAAa,MAAM,KAAK,CAAA;AAC9B,IAAA,IAAI,UAAU,UAAA,IAAc,KAAA,KAAU,UAAA,CAAW,WAAA,IAAe,OAAO,KAAA;AAEvE,IAAA,IAAI,mBAAA,CAAoB,UAAU,CAAA,KAAM,KAAA;AACtC,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,qCAAA,EAAwC,KAAK,CAAA,CAAA,CAAG,CAAA;AAElE,IAAA,OAAO,KAAA;AAAA,EACT,CAAA;AAAA,EACA,aAAA,CAAc,CAAC,KAAA,KAAU,mBAAA,CAAoB,MAAM,UAAA,CAAW,KAAK,CAAC,CAAC,CAAC;AACxE;;;;"}
1
+ {"version":3,"file":"ethAccount.mjs","sources":["../../../../src/codecs/scale/ethAccount.ts"],"sourcesContent":["import { fromHex, toHex } from \"@polkadot-api/utils\"\nimport { Bytes, createCodec, createDecoder } from \"scale-ts\"\nimport { Keccak256 } from \"../../hashes\"\nimport { textEncoder } from \"./fixed-str\"\n\nconst getFormattedAddress = (hexAddress: string) => {\n const nonChecksum = hexAddress.slice(2)\n const hashedAddress = toHex(Keccak256(textEncoder.encode(nonChecksum))).slice(\n 2,\n )\n const result = new Array(40)\n\n for (let i = 0; i < 40; i++) {\n const checksumVal = parseInt(hashedAddress[i], 16)\n const char = nonChecksum[i]\n result[i] = checksumVal > 7 ? char.toUpperCase() : char\n }\n\n return `0x${result.join(\"\")}`\n}\n\nconst bytes20Dec = Bytes(20)[1]\n\nexport const ethAccount = createCodec<string>(\n (input: string) => {\n const bytes = fromHex(input)\n if (bytes.length !== 20)\n throw new Error(`Invalid length found on EthAddress(${input})`)\n\n const hexAddress = toHex(bytes)\n if (input === hexAddress || input === hexAddress.toUpperCase()) return bytes\n\n if (getFormattedAddress(hexAddress) !== input)\n throw new Error(`Invalid checksum found on EthAddress(${input})`)\n\n return bytes\n },\n createDecoder((bytes) => getFormattedAddress(toHex(bytes20Dec(bytes)))),\n)\n"],"names":[],"mappings":";;;;;;;AAKA,MAAM,mBAAA,GAAsB,CAAC,UAAA,KAAuB;AAClD,EAAA,MAAM,WAAA,GAAc,UAAA,CAAW,KAAA,CAAM,CAAC,CAAA;AACtC,EAAA,MAAM,aAAA,GAAgB,MAAM,SAAA,CAAU,WAAA,CAAY,OAAO,WAAW,CAAC,CAAC,CAAA,CAAE,KAAA;AAAA,IACtE;AAAA,GACF;AACA,EAAA,MAAM,MAAA,GAAS,IAAI,KAAA,CAAM,EAAE,CAAA;AAE3B,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,EAAA,EAAI,CAAA,EAAA,EAAK;AAC3B,IAAA,MAAM,WAAA,GAAc,QAAA,CAAS,aAAA,CAAc,CAAC,GAAG,EAAE,CAAA;AACjD,IAAA,MAAM,IAAA,GAAO,YAAY,CAAC,CAAA;AAC1B,IAAA,MAAA,CAAO,CAAC,CAAA,GAAI,WAAA,GAAc,CAAA,GAAI,IAAA,CAAK,aAAY,GAAI,IAAA;AAAA,EACrD;AAEA,EAAA,OAAO,CAAA,EAAA,EAAK,MAAA,CAAO,IAAA,CAAK,EAAE,CAAC,CAAA,CAAA;AAC7B,CAAA;AAEA,MAAM,UAAA,GAAa,KAAA,CAAM,EAAE,CAAA,CAAE,CAAC,CAAA;AAEvB,MAAM,UAAA,GAAa,WAAA;AAAA,EACxB,CAAC,KAAA,KAAkB;AACjB,IAAA,MAAM,KAAA,GAAQ,QAAQ,KAAK,CAAA;AAC3B,IAAA,IAAI,MAAM,MAAA,KAAW,EAAA;AACnB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,mCAAA,EAAsC,KAAK,CAAA,CAAA,CAAG,CAAA;AAEhE,IAAA,MAAM,UAAA,GAAa,MAAM,KAAK,CAAA;AAC9B,IAAA,IAAI,UAAU,UAAA,IAAc,KAAA,KAAU,UAAA,CAAW,WAAA,IAAe,OAAO,KAAA;AAEvE,IAAA,IAAI,mBAAA,CAAoB,UAAU,CAAA,KAAM,KAAA;AACtC,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,qCAAA,EAAwC,KAAK,CAAA,CAAA,CAAG,CAAA;AAElE,IAAA,OAAO,KAAA;AAAA,EACT,CAAA;AAAA,EACA,aAAA,CAAc,CAAC,KAAA,KAAU,mBAAA,CAAoB,MAAM,UAAA,CAAW,KAAK,CAAC,CAAC,CAAC;AACxE;;;;"}
@@ -8,5 +8,5 @@ const fixedStr = (nBytes) => enhanceCodec(
8
8
  (bytes) => textDecoder.decode(bytes)
9
9
  );
10
10
 
11
- export { fixedStr };
11
+ export { fixedStr, textEncoder };
12
12
  //# sourceMappingURL=fixed-str.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"fixed-str.mjs","sources":["../../../../src/codecs/scale/fixed-str.ts"],"sourcesContent":["import { Bytes, enhanceCodec } from \"scale-ts\"\n\nconst textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder()\n\nexport const fixedStr = (nBytes: number) =>\n enhanceCodec(\n Bytes(nBytes),\n (str: string) => textEncoder.encode(str),\n (bytes) => textDecoder.decode(bytes),\n )\n"],"names":[],"mappings":";;AAEA,MAAM,WAAA,GAAc,IAAI,WAAA,EAAY;AACpC,MAAM,WAAA,GAAc,IAAI,WAAA,EAAY;AAE7B,MAAM,QAAA,GAAW,CAAC,MAAA,KACvB,YAAA;AAAA,EACE,MAAM,MAAM,CAAA;AAAA,EACZ,CAAC,GAAA,KAAgB,WAAA,CAAY,MAAA,CAAO,GAAG,CAAA;AAAA,EACvC,CAAC,KAAA,KAAU,WAAA,CAAY,MAAA,CAAO,KAAK;AACrC;;;;"}
1
+ {"version":3,"file":"fixed-str.mjs","sources":["../../../../src/codecs/scale/fixed-str.ts"],"sourcesContent":["import { Bytes, enhanceCodec } from \"scale-ts\"\n\nexport const textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder()\n\nexport const fixedStr = (nBytes: number) =>\n enhanceCodec(\n Bytes(nBytes),\n (str: string) => textEncoder.encode(str),\n (bytes) => textDecoder.decode(bytes),\n )\n"],"names":[],"mappings":";;AAEO,MAAM,WAAA,GAAc,IAAI,WAAA;AAC/B,MAAM,WAAA,GAAc,IAAI,WAAA,EAAY;AAE7B,MAAM,QAAA,GAAW,CAAC,MAAA,KACvB,YAAA;AAAA,EACE,MAAM,MAAM,CAAA;AAAA,EACZ,CAAC,GAAA,KAAgB,WAAA,CAAY,MAAA,CAAO,GAAG,CAAA;AAAA,EACvC,CAAC,KAAA,KAAU,WAAA,CAAY,MAAA,CAAO,KAAK;AACrC;;;;"}
@@ -0,0 +1,6 @@
1
+ import { keccak_256 } from '@noble/hashes/sha3.js';
2
+
3
+ const Keccak256 = keccak_256;
4
+
5
+ export { Keccak256 };
6
+ //# sourceMappingURL=keccak.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keccak.mjs","sources":["../../../src/hashes/keccak.ts"],"sourcesContent":["import { keccak_256 } from \"@noble/hashes/sha3.js\"\n\nexport const Keccak256: (input: Uint8Array) => Uint8Array = keccak_256\n"],"names":[],"mappings":";;AAEO,MAAM,SAAA,GAA+C;;;;"}
@@ -24,6 +24,7 @@ export { Blake3256, Blake3256Concat } from './hashes/blake3.mjs';
24
24
  export { Identity } from './hashes/identity.mjs';
25
25
  export { Twox128, Twox256, Twox64Concat } from './hashes/twoX.mjs';
26
26
  export { h64 } from './hashes/h64.mjs';
27
+ export { Keccak256 } from './hashes/keccak.mjs';
27
28
  export { Storage } from './storage.mjs';
28
29
  export { Enum, _Enum } from './types/enum.mjs';
29
30
  export { fromBufferToBase58, getSs58AddressInfo } from './utils/ss58-util.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -3,6 +3,7 @@ import { Blake2128Concat, Blake2128, Blake2256 } from './hashes/blake2.mjs';
3
3
  import '@noble/hashes/blake3.js';
4
4
  import { Identity } from './hashes/identity.mjs';
5
5
  import { Twox128, Twox64Concat, Twox256 } from './hashes/twoX.mjs';
6
+ import '@noble/hashes/sha3.js';
6
7
 
7
8
  const textEncoder = new TextEncoder();
8
9
  const hashers = /* @__PURE__ */ new Map([
@@ -1 +1 @@
1
- {"version":3,"file":"storage.mjs","sources":["../../src/storage.ts"],"sourcesContent":["import { fromHex, mergeUint8, toHex } from \"@polkadot-api/utils\"\nimport type { Codec } from \"scale-ts\"\nimport {\n Blake2128,\n Blake2128Concat,\n Blake2256,\n Identity,\n Twox128,\n Twox256,\n Twox64Concat,\n} from \"./hashes\"\n\nexport type EncoderWithHash<T> = [Codec<T>, (input: Uint8Array) => Uint8Array]\n\nconst textEncoder = new TextEncoder()\n\n// the value indicates:\n// - when positive: the number of bytes to skip before reaching the transparent-encoded key\n// - when negative: the number of bytes that the opaque hasher will generate\nconst hashers: Map<(input: Uint8Array) => Uint8Array, number> = new Map([\n [Identity, 0],\n [Twox64Concat, 8],\n [Blake2128Concat, 16],\n [Blake2128, -16],\n [Blake2256, -32],\n [Twox128, -16],\n [Twox256, -32],\n])\n\nexport type OpaqueKeyHash = string & { __opaqueKeyHash?: unknown }\n\nexport const Storage = (pallet: string) => {\n const palledEncoded = Twox128(textEncoder.encode(pallet))\n return <A extends Array<EncoderWithHash<any>>>(\n name: string,\n ...encoders: [...A]\n ): {\n enc: (\n ...args: {\n [K in keyof A]: A[K] extends EncoderWithHash<infer V> ? V : unknown\n }\n ) => string\n dec: (value: string) => {\n [K in keyof A]: A[K] extends EncoderWithHash<infer V> ? V : unknown\n }\n } => {\n const palletItemEncoded = mergeUint8([\n palledEncoded,\n Twox128(textEncoder.encode(name)),\n ])\n\n const palletItemEncodedHex = toHex(palletItemEncoded)\n\n const dec = (\n key: string,\n ): {\n [K in keyof A]: A[K] extends EncoderWithHash<infer V> ? V : unknown\n } => {\n if (!key.startsWith(palletItemEncodedHex))\n throw new Error(`key does not match this storage (${pallet}.${name})`)\n\n if (encoders.length === 0) return [] as any\n\n const argsKey = fromHex(key.slice(palletItemEncodedHex.length))\n const result = new Array<any>(encoders.length)\n for (let i = 0, cur = 0; i < encoders.length; i++) {\n const [codec, hasher] = encoders[i]\n const hBytes = hashers.get(hasher)\n if (hBytes == null) throw new Error(\"Unknown hasher\")\n if (hBytes < 0) {\n const opaqueBytes = hBytes * -1\n result[i] = toHex(argsKey.slice(cur, cur + opaqueBytes))\n cur += opaqueBytes\n } else {\n cur += hBytes\n result[i] = codec.dec(argsKey.slice(cur))\n cur += codec.enc(result[i]).length\n }\n }\n return result as any\n }\n\n const fns = encoders.map(\n ([{ enc }, hash]) =>\n (val: any) =>\n hash(enc(val)),\n )\n\n const enc = (\n ...args: {\n [K in keyof A]: A[K] extends EncoderWithHash<infer V> ? V : unknown\n }\n ): string =>\n toHex(\n mergeUint8([\n palletItemEncoded,\n ...args.map((val, idx) => fns[idx](val)),\n ]),\n )\n\n return {\n enc,\n dec,\n }\n }\n}\n"],"names":["enc"],"mappings":"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"}
1
+ {"version":3,"file":"storage.mjs","sources":["../../src/storage.ts"],"sourcesContent":["import { fromHex, mergeUint8, toHex } from \"@polkadot-api/utils\"\nimport type { Codec } from \"scale-ts\"\nimport {\n Blake2128,\n Blake2128Concat,\n Blake2256,\n Identity,\n Twox128,\n Twox256,\n Twox64Concat,\n} from \"./hashes\"\n\nexport type EncoderWithHash<T> = [Codec<T>, (input: Uint8Array) => Uint8Array]\n\nconst textEncoder = new TextEncoder()\n\n// the value indicates:\n// - when positive: the number of bytes to skip before reaching the transparent-encoded key\n// - when negative: the number of bytes that the opaque hasher will generate\nconst hashers: Map<(input: Uint8Array) => Uint8Array, number> = new Map([\n [Identity, 0],\n [Twox64Concat, 8],\n [Blake2128Concat, 16],\n [Blake2128, -16],\n [Blake2256, -32],\n [Twox128, -16],\n [Twox256, -32],\n])\n\nexport type OpaqueKeyHash = string & { __opaqueKeyHash?: unknown }\n\nexport const Storage = (pallet: string) => {\n const palledEncoded = Twox128(textEncoder.encode(pallet))\n return <A extends Array<EncoderWithHash<any>>>(\n name: string,\n ...encoders: [...A]\n ): {\n enc: (\n ...args: {\n [K in keyof A]: A[K] extends EncoderWithHash<infer V> ? V : unknown\n }\n ) => string\n dec: (value: string) => {\n [K in keyof A]: A[K] extends EncoderWithHash<infer V> ? V : unknown\n }\n } => {\n const palletItemEncoded = mergeUint8([\n palledEncoded,\n Twox128(textEncoder.encode(name)),\n ])\n\n const palletItemEncodedHex = toHex(palletItemEncoded)\n\n const dec = (\n key: string,\n ): {\n [K in keyof A]: A[K] extends EncoderWithHash<infer V> ? V : unknown\n } => {\n if (!key.startsWith(palletItemEncodedHex))\n throw new Error(`key does not match this storage (${pallet}.${name})`)\n\n if (encoders.length === 0) return [] as any\n\n const argsKey = fromHex(key.slice(palletItemEncodedHex.length))\n const result = new Array<any>(encoders.length)\n for (let i = 0, cur = 0; i < encoders.length; i++) {\n const [codec, hasher] = encoders[i]\n const hBytes = hashers.get(hasher)\n if (hBytes == null) throw new Error(\"Unknown hasher\")\n if (hBytes < 0) {\n const opaqueBytes = hBytes * -1\n result[i] = toHex(argsKey.slice(cur, cur + opaqueBytes))\n cur += opaqueBytes\n } else {\n cur += hBytes\n result[i] = codec.dec(argsKey.slice(cur))\n cur += codec.enc(result[i]).length\n }\n }\n return result as any\n }\n\n const fns = encoders.map(\n ([{ enc }, hash]) =>\n (val: any) =>\n hash(enc(val)),\n )\n\n const enc = (\n ...args: {\n [K in keyof A]: A[K] extends EncoderWithHash<infer V> ? V : unknown\n }\n ): string =>\n toHex(\n mergeUint8([\n palletItemEncoded,\n ...args.map((val, idx) => fns[idx](val)),\n ]),\n )\n\n return {\n enc,\n dec,\n }\n }\n}\n"],"names":["enc"],"mappings":"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"}
@@ -20,6 +20,7 @@ import '../codecs/metadata/lookup.mjs';
20
20
  import { trieNodeDec } from './node-decoder.mjs';
21
21
  import { Blake2256 } from '../hashes/blake2.mjs';
22
22
  import '@noble/hashes/blake3.js';
23
+ import '@noble/hashes/sha3.js';
23
24
 
24
25
  const TrieNodeWithHash = (hasher) => createDecoder((input) => {
25
26
  const hash = toHex(hasher(new Uint8Array(input.buffer)));
@@ -1 +1 @@
1
- {"version":3,"file":"proofs.mjs","sources":["../../../src/trie/proofs.ts"],"sourcesContent":["import { toHex } from \"@polkadot-api/utils\"\nimport { createDecoder, type HexString } from \"../codecs\"\nimport { trieNodeDec } from \"./node-decoder\"\nimport { Blake2256 } from \"@/hashes\"\nimport { type ProofTrieNode } from \"./types\"\n\nexport const TrieNodeWithHash = (hasher: (input: Uint8Array) => Uint8Array) =>\n createDecoder((input): ProofTrieNode => {\n const hash = toHex(hasher(new Uint8Array(input.buffer)))\n try {\n return {\n hash,\n ...trieNodeDec(input),\n }\n } catch {\n // Sometimes the proofs include random raw-values which are not trie-nodes\n return { type: \"Raw\", hash, value: \"\" }\n }\n })\n\nexport const validateProofs = <T extends HexString | Uint8Array>(\n proofs: Array<T>,\n hasher: (input: Uint8Array) => Uint8Array = Blake2256,\n): { rootHash: HexString; proofs: Record<HexString, ProofTrieNode> } | null => {\n const proofsList = proofs.map(TrieNodeWithHash(hasher))\n const proofsRecord = Object.fromEntries(proofsList.map((p) => [p.hash, p]))\n const hashes = proofsList.map((p) => p.hash)\n const roots = new Set(hashes)\n\n const setRawValue = (input: {\n type: \"Raw\"\n hash: HexString\n value: HexString\n }) => {\n if (input.value) return\n const val = proofs[hashes.indexOf(input.hash)!]\n input.value = typeof val === \"string\" ? val : toHex(val)\n }\n\n proofsList.forEach((p) => {\n if (\"children\" in p) {\n Object.values(p.children).forEach((hash) => {\n const child = proofsRecord[hash]\n if (child) {\n child.parent = p.hash\n roots.delete(hash)\n }\n })\n }\n\n if (p.type === \"BranchWithHash\" || p.type === \"LeafWithHash\") {\n const childHash = p.value\n const child = proofsRecord[childHash]\n if (!child) return\n\n roots.delete(childHash)\n if (child.type !== \"Raw\") {\n Object.keys(child).forEach((k) => delete (child as any)[k])\n ;(child as any).type = \"Raw\"\n child.hash = childHash\n }\n child.parent = p.hash\n setRawValue(child as any)\n }\n\n if (p.type === \"Raw\") setRawValue(p)\n })\n\n return roots.size === 1\n ? { rootHash: roots.values().next().value!, proofs: proofsRecord }\n : null\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAMO,MAAM,gBAAA,GAAmB,CAAC,MAAA,KAC/B,aAAA,CAAc,CAAC,KAAA,KAAyB;AACtC,EAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,IAAI,WAAW,KAAA,CAAM,MAAM,CAAC,CAAC,CAAA;AACvD,EAAA,IAAI;AACF,IAAA,OAAO;AAAA,MACL,IAAA;AAAA,MACA,GAAG,YAAY,KAAK;AAAA,KACtB;AAAA,EACF,CAAA,CAAA,MAAQ;AAEN,IAAA,OAAO,EAAE,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,OAAO,EAAA,EAAG;AAAA,EACxC;AACF,CAAC;AAEI,MAAM,cAAA,GAAiB,CAC5B,MAAA,EACA,MAAA,GAA4C,SAAA,KACiC;AAC7E,EAAA,MAAM,UAAA,GAAa,MAAA,CAAO,GAAA,CAAI,gBAAA,CAAiB,MAAM,CAAC,CAAA;AACtD,EAAA,MAAM,YAAA,GAAe,MAAA,CAAO,WAAA,CAAY,UAAA,CAAW,GAAA,CAAI,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,IAAA,EAAM,CAAC,CAAC,CAAC,CAAA;AAC1E,EAAA,MAAM,SAAS,UAAA,CAAW,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,IAAI,CAAA;AAC3C,EAAA,MAAM,KAAA,GAAQ,IAAI,GAAA,CAAI,MAAM,CAAA;AAE5B,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAIf;AACJ,IAAA,IAAI,MAAM,KAAA,EAAO;AACjB,IAAA,MAAM,MAAM,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAE,CAAA;AAC9C,IAAA,KAAA,CAAM,QAAQ,OAAO,GAAA,KAAQ,QAAA,GAAW,GAAA,GAAM,MAAM,GAAG,CAAA;AAAA,EACzD,CAAA;AAEA,EAAA,UAAA,CAAW,OAAA,CAAQ,CAAC,CAAA,KAAM;AACxB,IAAA,IAAI,cAAc,CAAA,EAAG;AACnB,MAAA,MAAA,CAAO,OAAO,CAAA,CAAE,QAAQ,CAAA,CAAE,OAAA,CAAQ,CAAC,IAAA,KAAS;AAC1C,QAAA,MAAM,KAAA,GAAQ,aAAa,IAAI,CAAA;AAC/B,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,KAAA,CAAM,SAAS,CAAA,CAAE,IAAA;AACjB,UAAA,KAAA,CAAM,OAAO,IAAI,CAAA;AAAA,QACnB;AAAA,MACF,CAAC,CAAA;AAAA,IACH;AAEA,IAAA,IAAI,CAAA,CAAE,IAAA,KAAS,gBAAA,IAAoB,CAAA,CAAE,SAAS,cAAA,EAAgB;AAC5D,MAAA,MAAM,YAAY,CAAA,CAAE,KAAA;AACpB,MAAA,MAAM,KAAA,GAAQ,aAAa,SAAS,CAAA;AACpC,MAAA,IAAI,CAAC,KAAA,EAAO;AAEZ,MAAA,KAAA,CAAM,OAAO,SAAS,CAAA;AACtB,MAAA,IAAI,KAAA,CAAM,SAAS,KAAA,EAAO;AACxB,QAAA,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,KAAM,OAAQ,KAAA,CAAc,CAAC,CAAC,CAAA;AACzD,QAAC,MAAc,IAAA,GAAO,KAAA;AACvB,QAAA,KAAA,CAAM,IAAA,GAAO,SAAA;AAAA,MACf;AACA,MAAA,KAAA,CAAM,SAAS,CAAA,CAAE,IAAA;AACjB,MAAA,WAAA,CAAY,KAAY,CAAA;AAAA,IAC1B;AAEA,IAAA,IAAI,CAAA,CAAE,IAAA,KAAS,KAAA,EAAO,WAAA,CAAY,CAAC,CAAA;AAAA,EACrC,CAAC,CAAA;AAED,EAAA,OAAO,KAAA,CAAM,IAAA,KAAS,CAAA,GAClB,EAAE,QAAA,EAAU,KAAA,CAAM,MAAA,EAAO,CAAE,IAAA,EAAK,CAAE,KAAA,EAAQ,MAAA,EAAQ,cAAa,GAC/D,IAAA;AACN;;;;"}
1
+ {"version":3,"file":"proofs.mjs","sources":["../../../src/trie/proofs.ts"],"sourcesContent":["import { toHex } from \"@polkadot-api/utils\"\nimport { createDecoder, type HexString } from \"../codecs\"\nimport { trieNodeDec } from \"./node-decoder\"\nimport { Blake2256 } from \"@/hashes\"\nimport { type ProofTrieNode } from \"./types\"\n\nexport const TrieNodeWithHash = (hasher: (input: Uint8Array) => Uint8Array) =>\n createDecoder((input): ProofTrieNode => {\n const hash = toHex(hasher(new Uint8Array(input.buffer)))\n try {\n return {\n hash,\n ...trieNodeDec(input),\n }\n } catch {\n // Sometimes the proofs include random raw-values which are not trie-nodes\n return { type: \"Raw\", hash, value: \"\" }\n }\n })\n\nexport const validateProofs = <T extends HexString | Uint8Array>(\n proofs: Array<T>,\n hasher: (input: Uint8Array) => Uint8Array = Blake2256,\n): { rootHash: HexString; proofs: Record<HexString, ProofTrieNode> } | null => {\n const proofsList = proofs.map(TrieNodeWithHash(hasher))\n const proofsRecord = Object.fromEntries(proofsList.map((p) => [p.hash, p]))\n const hashes = proofsList.map((p) => p.hash)\n const roots = new Set(hashes)\n\n const setRawValue = (input: {\n type: \"Raw\"\n hash: HexString\n value: HexString\n }) => {\n if (input.value) return\n const val = proofs[hashes.indexOf(input.hash)!]\n input.value = typeof val === \"string\" ? val : toHex(val)\n }\n\n proofsList.forEach((p) => {\n if (\"children\" in p) {\n Object.values(p.children).forEach((hash) => {\n const child = proofsRecord[hash]\n if (child) {\n child.parent = p.hash\n roots.delete(hash)\n }\n })\n }\n\n if (p.type === \"BranchWithHash\" || p.type === \"LeafWithHash\") {\n const childHash = p.value\n const child = proofsRecord[childHash]\n if (!child) return\n\n roots.delete(childHash)\n if (child.type !== \"Raw\") {\n Object.keys(child).forEach((k) => delete (child as any)[k])\n ;(child as any).type = \"Raw\"\n child.hash = childHash\n }\n child.parent = p.hash\n setRawValue(child as any)\n }\n\n if (p.type === \"Raw\") setRawValue(p)\n })\n\n return roots.size === 1\n ? { rootHash: roots.values().next().value!, proofs: proofsRecord }\n : null\n}\n"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ import '../codecs/metadata/v16.mjs';
19
19
  import '../codecs/metadata/lookup.mjs';
20
20
  import { Blake2256 } from '../hashes/blake2.mjs';
21
21
  import '@noble/hashes/blake3.js';
22
+ import '@noble/hashes/sha3.js';
22
23
 
23
24
  const PREFIX = Binary.fromText("modlpy/utilisuba").asBytes();
24
25
  const getMultisigAccountId = ({
@@ -1 +1 @@
1
- {"version":3,"file":"multisig.mjs","sources":["../../../src/utils/multisig.ts"],"sourcesContent":["import { mergeUint8 } from \"@polkadot-api/utils\"\nimport { Binary, compact, u16 } from \"../codecs\"\nimport { Blake2256 } from \"../hashes\"\n\nconst PREFIX = Binary.fromText(\"modlpy/utilisuba\").asBytes()\nexport const getMultisigAccountId = ({\n threshold,\n signatories,\n}: {\n threshold: number\n signatories: Uint8Array[]\n}) => {\n const sortedSignatories = sortMultisigSignatories(signatories)\n const payload = mergeUint8([\n PREFIX,\n compact.enc(sortedSignatories.length),\n ...sortedSignatories,\n u16.enc(threshold),\n ])\n return Blake2256(payload)\n}\n\nexport const sortMultisigSignatories = (signatories: Uint8Array[]) =>\n signatories.slice().sort((a, b) => {\n for (let i = 0; ; i++) {\n const overA = i >= a.length\n const overB = i >= b.length\n\n if (overA && overB) return 0\n else if (overA) return -1\n else if (overB) return 1\n else if (a[i] !== b[i]) return a[i] > b[i] ? 1 : -1\n }\n })\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAIA,MAAM,MAAA,GAAS,MAAA,CAAO,QAAA,CAAS,kBAAkB,EAAE,OAAA,EAAQ;AACpD,MAAM,uBAAuB,CAAC;AAAA,EACnC,SAAA;AAAA,EACA;AACF,CAAA,KAGM;AACJ,EAAA,MAAM,iBAAA,GAAoB,wBAAwB,WAAW,CAAA;AAC7D,EAAA,MAAM,UAAU,UAAA,CAAW;AAAA,IACzB,MAAA;AAAA,IACA,OAAA,CAAQ,GAAA,CAAI,iBAAA,CAAkB,MAAM,CAAA;AAAA,IACpC,GAAG,iBAAA;AAAA,IACH,GAAA,CAAI,IAAI,SAAS;AAAA,GAClB,CAAA;AACD,EAAA,OAAO,UAAU,OAAO,CAAA;AAC1B;AAEO,MAAM,uBAAA,GAA0B,CAAC,WAAA,KACtC,WAAA,CAAY,OAAM,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM;AACjC,EAAA,KAAA,IAAS,CAAA,GAAI,KAAK,CAAA,EAAA,EAAK;AACrB,IAAA,MAAM,KAAA,GAAQ,KAAK,CAAA,CAAE,MAAA;AACrB,IAAA,MAAM,KAAA,GAAQ,KAAK,CAAA,CAAE,MAAA;AAErB,IAAA,IAAI,KAAA,IAAS,OAAO,OAAO,CAAA;AAAA,SAAA,IAClB,OAAO,OAAO,EAAA;AAAA,SAAA,IACd,OAAO,OAAO,CAAA;AAAA,SAAA,IACd,CAAA,CAAE,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,CAAA,EAAG,OAAO,CAAA,CAAE,CAAC,CAAA,GAAI,CAAA,CAAE,CAAC,IAAI,CAAA,GAAI,EAAA;AAAA,EACnD;AACF,CAAC;;;;"}
1
+ {"version":3,"file":"multisig.mjs","sources":["../../../src/utils/multisig.ts"],"sourcesContent":["import { mergeUint8 } from \"@polkadot-api/utils\"\nimport { Binary, compact, u16 } from \"../codecs\"\nimport { Blake2256 } from \"../hashes\"\n\nconst PREFIX = Binary.fromText(\"modlpy/utilisuba\").asBytes()\nexport const getMultisigAccountId = ({\n threshold,\n signatories,\n}: {\n threshold: number\n signatories: Uint8Array[]\n}) => {\n const sortedSignatories = sortMultisigSignatories(signatories)\n const payload = mergeUint8([\n PREFIX,\n compact.enc(sortedSignatories.length),\n ...sortedSignatories,\n u16.enc(threshold),\n ])\n return Blake2256(payload)\n}\n\nexport const sortMultisigSignatories = (signatories: Uint8Array[]) =>\n signatories.slice().sort((a, b) => {\n for (let i = 0; ; i++) {\n const overA = i >= a.length\n const overB = i >= b.length\n\n if (overA && overB) return 0\n else if (overA) return -1\n else if (overB) return 1\n else if (a[i] !== b[i]) return a[i] > b[i] ? 1 : -1\n }\n })\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAIA,MAAM,MAAA,GAAS,MAAA,CAAO,QAAA,CAAS,kBAAkB,EAAE,OAAA,EAAQ;AACpD,MAAM,uBAAuB,CAAC;AAAA,EACnC,SAAA;AAAA,EACA;AACF,CAAA,KAGM;AACJ,EAAA,MAAM,iBAAA,GAAoB,wBAAwB,WAAW,CAAA;AAC7D,EAAA,MAAM,UAAU,UAAA,CAAW;AAAA,IACzB,MAAA;AAAA,IACA,OAAA,CAAQ,GAAA,CAAI,iBAAA,CAAkB,MAAM,CAAA;AAAA,IACpC,GAAG,iBAAA;AAAA,IACH,GAAA,CAAI,IAAI,SAAS;AAAA,GAClB,CAAA;AACD,EAAA,OAAO,UAAU,OAAO,CAAA;AAC1B;AAEO,MAAM,uBAAA,GAA0B,CAAC,WAAA,KACtC,WAAA,CAAY,OAAM,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM;AACjC,EAAA,KAAA,IAAS,CAAA,GAAI,KAAK,CAAA,EAAA,EAAK;AACrB,IAAA,MAAM,KAAA,GAAQ,KAAK,CAAA,CAAE,MAAA;AACrB,IAAA,MAAM,KAAA,GAAQ,KAAK,CAAA,CAAE,MAAA;AAErB,IAAA,IAAI,KAAA,IAAS,OAAO,OAAO,CAAA;AAAA,SAAA,IAClB,OAAO,OAAO,EAAA;AAAA,SAAA,IACd,OAAO,OAAO,CAAA;AAAA,SAAA,IACd,CAAA,CAAE,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,CAAA,EAAG,OAAO,CAAA,CAAE,CAAC,CAAA,GAAI,CAAA,CAAE,CAAC,IAAI,CAAA,GAAI,EAAA;AAAA,EACnD;AACF,CAAC;;;;"}
package/dist/index.d.ts CHANGED
@@ -2247,6 +2247,8 @@ declare const Twox64Concat: (encoded: Uint8Array) => Uint8Array;
2247
2247
 
2248
2248
  declare function h64(input: Uint8Array, seed?: bigint): bigint;
2249
2249
 
2250
+ declare const Keccak256: (input: Uint8Array) => Uint8Array;
2251
+
2250
2252
  type EncoderWithHash<T> = [Codec<T>, (input: Uint8Array) => Uint8Array];
2251
2253
  type OpaqueKeyHash = string & {
2252
2254
  __opaqueKeyHash?: unknown;
@@ -2299,5 +2301,5 @@ declare const validateProofs: <T extends HexString | Uint8Array>(proofs: Array<T
2299
2301
  proofs: Record<HexString, ProofTrieNode>;
2300
2302
  } | null;
2301
2303
 
2302
- export { AccountId, Bin, Binary, BitSeq, Blake2128, Blake2128Concat, Blake2256, Blake3256, Blake3256Concat, Enum, FixedSizeBinary, Hex, Identity, Option, Result, ScaleEnum, Self, Storage, Struct, TrieNodeHeaders, TrieNodeWithHash, Tuple, Twox128, Twox256, Twox64Concat, Variant, Vector, _Enum, bitSequence, blockHeader, char, compactBn, compactNumber, decAnyMetadata, ethAccount, extrinsicFormat, fixedStr, fromBufferToBase58, getMultisigAccountId, getSs58AddressInfo, h64, metadata, selfDecoder, selfEncoder, sortMultisigSignatories, trieNodeDec, unifyMetadata, v14, lookup as v14Lookup, v15, v16, validateProofs };
2304
+ export { AccountId, Bin, Binary, BitSeq, Blake2128, Blake2128Concat, Blake2256, Blake3256, Blake3256Concat, Enum, FixedSizeBinary, Hex, Identity, Keccak256, Option, Result, ScaleEnum, Self, Storage, Struct, TrieNodeHeaders, TrieNodeWithHash, Tuple, Twox128, Twox256, Twox64Concat, Variant, Vector, _Enum, bitSequence, blockHeader, char, compactBn, compactNumber, decAnyMetadata, ethAccount, extrinsicFormat, fixedStr, fromBufferToBase58, getMultisigAccountId, getSs58AddressInfo, h64, metadata, selfDecoder, selfEncoder, sortMultisigSignatories, trieNodeDec, unifyMetadata, v14, lookup as v14Lookup, v15, v16, validateProofs };
2303
2305
  export type { BitSequence, BlockHeader, EncoderWithHash, EnumVariant, ExtractEnumValue, ExtrinsicFormat, GetEnum, HexString, Metadata, Nibble, OpaqueKeyHash, ProofTrieNode, SS58AddressInfo, SS58String, TrieNode, TrieNodeHeaderKey, UnifiedMetadata, V14, V14Lookup, V15, V16 };
package/dist/index.js CHANGED
@@ -4,8 +4,8 @@ var scaleTs = require('scale-ts');
4
4
  var base = require('@scure/base');
5
5
  var blake2_js = require('@noble/hashes/blake2.js');
6
6
  var utils = require('@polkadot-api/utils');
7
- var sha3_js = require('@noble/hashes/sha3.js');
8
7
  var blake3_js = require('@noble/hashes/blake3.js');
8
+ var sha3_js = require('@noble/hashes/sha3.js');
9
9
 
10
10
  const SS58_PREFIX = new TextEncoder().encode("SS58PRE");
11
11
  const CHECKSUM_LENGTH = 2;
@@ -294,9 +294,175 @@ const ScaleEnum = (inner, ...args) => withInner(scaleTs.Enum(inner, ...args), in
294
294
  ScaleEnum.enc = (inner, ...rest) => withInner(scaleTs.Enum.enc(inner, ...rest), inner);
295
295
  ScaleEnum.dec = (inner, ...rest) => withInner(scaleTs.Enum.dec(inner, ...rest), inner);
296
296
 
297
+ const len32$1 = { dkLen: 32 };
298
+ const Blake2256 = (encoded) => blake2_js.blake2b(encoded, len32$1);
299
+ const len16 = { dkLen: 16 };
300
+ const Blake2128 = (encoded) => blake2_js.blake2b(encoded, len16);
301
+ const Blake2128Concat = (encoded) => utils.mergeUint8([Blake2128(encoded), encoded]);
302
+
303
+ const len32 = { dkLen: 32 };
304
+ const Blake3256 = (encoded) => blake3_js.blake3(encoded, len32);
305
+ const Blake3256Concat = (encoded) => utils.mergeUint8([Blake3256(encoded), encoded]);
306
+
307
+ const Identity = (encoded) => encoded;
308
+
309
+ const bigintFromU16 = (v0, v1, v2, v3) => new DataView(new Uint16Array([v0, v1, v2, v3]).buffer).getBigUint64(0, true);
310
+ const MASK_64 = 2n ** 64n - 1n;
311
+ const rotl = (input, nBits) => input << nBits & MASK_64 | input >> 64n - nBits;
312
+ const multiply = (a, b) => a * b & MASK_64;
313
+ const add = (a, b) => a + b & MASK_64;
314
+ const PRIME64_1 = 11400714785074694791n;
315
+ const PRIME64_2 = 14029467366897019727n;
316
+ const PRIME64_3 = 1609587929392839161n;
317
+ const PRIME64_4 = 9650029242287828579n;
318
+ const PRIME64_5 = 2870177450012600261n;
319
+ function h64(input, seed = 0n) {
320
+ let v1 = add(add(seed, PRIME64_1), PRIME64_2);
321
+ let v2 = add(seed, PRIME64_2);
322
+ let v3 = seed;
323
+ let v4 = seed - PRIME64_1;
324
+ let totalLen = input.length;
325
+ let memsize = 0;
326
+ let memory = null;
327
+ (function update() {
328
+ let p2 = 0;
329
+ let bEnd = p2 + totalLen;
330
+ if (!totalLen) return;
331
+ memory = new Uint8Array(32);
332
+ if (totalLen < 32) {
333
+ memory.set(input.subarray(0, totalLen), memsize);
334
+ memsize += totalLen;
335
+ return;
336
+ }
337
+ if (p2 <= bEnd - 32) {
338
+ const limit = bEnd - 32;
339
+ do {
340
+ let other;
341
+ other = bigintFromU16(
342
+ input[p2 + 1] << 8 | input[p2],
343
+ input[p2 + 3] << 8 | input[p2 + 2],
344
+ input[p2 + 5] << 8 | input[p2 + 4],
345
+ input[p2 + 7] << 8 | input[p2 + 6]
346
+ );
347
+ v1 = multiply(rotl(add(v1, multiply(other, PRIME64_2)), 31n), PRIME64_1);
348
+ p2 += 8;
349
+ other = bigintFromU16(
350
+ input[p2 + 1] << 8 | input[p2],
351
+ input[p2 + 3] << 8 | input[p2 + 2],
352
+ input[p2 + 5] << 8 | input[p2 + 4],
353
+ input[p2 + 7] << 8 | input[p2 + 6]
354
+ );
355
+ v2 = multiply(rotl(add(v2, multiply(other, PRIME64_2)), 31n), PRIME64_1);
356
+ p2 += 8;
357
+ other = bigintFromU16(
358
+ input[p2 + 1] << 8 | input[p2],
359
+ input[p2 + 3] << 8 | input[p2 + 2],
360
+ input[p2 + 5] << 8 | input[p2 + 4],
361
+ input[p2 + 7] << 8 | input[p2 + 6]
362
+ );
363
+ v3 = multiply(rotl(add(v3, multiply(other, PRIME64_2)), 31n), PRIME64_1);
364
+ p2 += 8;
365
+ other = bigintFromU16(
366
+ input[p2 + 1] << 8 | input[p2],
367
+ input[p2 + 3] << 8 | input[p2 + 2],
368
+ input[p2 + 5] << 8 | input[p2 + 4],
369
+ input[p2 + 7] << 8 | input[p2 + 6]
370
+ );
371
+ v4 = multiply(rotl(add(v4, multiply(other, PRIME64_2)), 31n), PRIME64_1);
372
+ p2 += 8;
373
+ } while (p2 <= limit);
374
+ }
375
+ if (p2 < bEnd) {
376
+ memory.set(input.subarray(p2, bEnd), memsize);
377
+ memsize = bEnd - p2;
378
+ }
379
+ })();
380
+ input = memory || input;
381
+ let result;
382
+ let p = 0;
383
+ if (totalLen >= 32) {
384
+ result = rotl(v1, 1n);
385
+ result = add(result, rotl(v2, 7n));
386
+ result = add(result, rotl(v3, 12n));
387
+ result = add(result, rotl(v4, 18n));
388
+ v1 = multiply(rotl(multiply(v1, PRIME64_2), 31n), PRIME64_1);
389
+ result = result ^ v1;
390
+ result = add(multiply(result, PRIME64_1), PRIME64_4);
391
+ v2 = multiply(rotl(multiply(v2, PRIME64_2), 31n), PRIME64_1);
392
+ result = result ^ v2;
393
+ result = add(multiply(result, PRIME64_1), PRIME64_4);
394
+ v3 = multiply(rotl(multiply(v3, PRIME64_2), 31n), PRIME64_1);
395
+ result = result ^ v3;
396
+ result = add(multiply(result, PRIME64_1), PRIME64_4);
397
+ v4 = multiply(rotl(multiply(v4, PRIME64_2), 31n), PRIME64_1);
398
+ result = result ^ v4;
399
+ result = add(multiply(result, PRIME64_1), PRIME64_4);
400
+ } else {
401
+ result = add(seed, PRIME64_5);
402
+ }
403
+ result = add(result, BigInt(totalLen));
404
+ while (p <= memsize - 8) {
405
+ let temp2 = bigintFromU16(
406
+ input[p + 1] << 8 | input[p],
407
+ input[p + 3] << 8 | input[p + 2],
408
+ input[p + 5] << 8 | input[p + 4],
409
+ input[p + 7] << 8 | input[p + 6]
410
+ );
411
+ temp2 = multiply(rotl(multiply(temp2, PRIME64_2), 31n), PRIME64_1);
412
+ result = add(multiply(rotl(result ^ temp2, 27n), PRIME64_1), PRIME64_4);
413
+ p += 8;
414
+ }
415
+ if (p + 4 <= memsize) {
416
+ let temp2 = multiply(
417
+ bigintFromU16(
418
+ input[p + 1] << 8 | input[p],
419
+ input[p + 3] << 8 | input[p + 2],
420
+ 0,
421
+ 0
422
+ ),
423
+ PRIME64_1
424
+ );
425
+ result = add(multiply(rotl(result ^ temp2, 23n), PRIME64_2), PRIME64_3);
426
+ p += 4;
427
+ }
428
+ while (p < memsize) {
429
+ const temp2 = multiply(bigintFromU16(input[p++], 0, 0, 0), PRIME64_5);
430
+ result = multiply(rotl(result ^ temp2, 11n), PRIME64_1);
431
+ }
432
+ let temp = result >> 33n;
433
+ result = multiply(result ^ temp, PRIME64_2);
434
+ temp = result >> 29n;
435
+ result = multiply(result ^ temp, PRIME64_3);
436
+ temp = result >> 32n;
437
+ result ^= temp;
438
+ return result;
439
+ }
440
+
441
+ const Twox128 = (input) => {
442
+ const result = new Uint8Array(16);
443
+ const dv = new DataView(result.buffer);
444
+ dv.setBigUint64(0, h64(input), true);
445
+ dv.setBigUint64(8, h64(input, 1n), true);
446
+ return result;
447
+ };
448
+ const Twox256 = (input) => {
449
+ const result = new Uint8Array(32);
450
+ const dv = new DataView(result.buffer);
451
+ dv.setBigUint64(0, h64(input), true);
452
+ dv.setBigUint64(8, h64(input, 1n), true);
453
+ dv.setBigUint64(16, h64(input, 2n), true);
454
+ dv.setBigUint64(24, h64(input, 3n), true);
455
+ return result;
456
+ };
457
+ const Twox64Concat = (encoded) => utils.mergeUint8([scaleTs.u64.enc(h64(encoded)), encoded]);
458
+
459
+ const Keccak256 = sha3_js.keccak_256;
460
+
297
461
  const getFormattedAddress = (hexAddress) => {
298
462
  const nonChecksum = hexAddress.slice(2);
299
- const hashedAddress = utils.toHex(sha3_js.keccak_256(utils.fromHex(hexAddress))).slice(2);
463
+ const hashedAddress = utils.toHex(Keccak256(textEncoder$2.encode(nonChecksum))).slice(
464
+ 2
465
+ );
300
466
  const result = new Array(40);
301
467
  for (let i = 0; i < 40; i++) {
302
468
  const checksumVal = parseInt(hashedAddress[i], 16);
@@ -811,168 +977,6 @@ const extrinsicFormat = scaleTs.enhanceCodec(
811
977
  }
812
978
  );
813
979
 
814
- const len32$1 = { dkLen: 32 };
815
- const Blake2256 = (encoded) => blake2_js.blake2b(encoded, len32$1);
816
- const len16 = { dkLen: 16 };
817
- const Blake2128 = (encoded) => blake2_js.blake2b(encoded, len16);
818
- const Blake2128Concat = (encoded) => utils.mergeUint8([Blake2128(encoded), encoded]);
819
-
820
- const len32 = { dkLen: 32 };
821
- const Blake3256 = (encoded) => blake3_js.blake3(encoded, len32);
822
- const Blake3256Concat = (encoded) => utils.mergeUint8([Blake3256(encoded), encoded]);
823
-
824
- const Identity = (encoded) => encoded;
825
-
826
- const bigintFromU16 = (v0, v1, v2, v3) => new DataView(new Uint16Array([v0, v1, v2, v3]).buffer).getBigUint64(0, true);
827
- const MASK_64 = 2n ** 64n - 1n;
828
- const rotl = (input, nBits) => input << nBits & MASK_64 | input >> 64n - nBits;
829
- const multiply = (a, b) => a * b & MASK_64;
830
- const add = (a, b) => a + b & MASK_64;
831
- const PRIME64_1 = 11400714785074694791n;
832
- const PRIME64_2 = 14029467366897019727n;
833
- const PRIME64_3 = 1609587929392839161n;
834
- const PRIME64_4 = 9650029242287828579n;
835
- const PRIME64_5 = 2870177450012600261n;
836
- function h64(input, seed = 0n) {
837
- let v1 = add(add(seed, PRIME64_1), PRIME64_2);
838
- let v2 = add(seed, PRIME64_2);
839
- let v3 = seed;
840
- let v4 = seed - PRIME64_1;
841
- let totalLen = input.length;
842
- let memsize = 0;
843
- let memory = null;
844
- (function update() {
845
- let p2 = 0;
846
- let bEnd = p2 + totalLen;
847
- if (!totalLen) return;
848
- memory = new Uint8Array(32);
849
- if (totalLen < 32) {
850
- memory.set(input.subarray(0, totalLen), memsize);
851
- memsize += totalLen;
852
- return;
853
- }
854
- if (p2 <= bEnd - 32) {
855
- const limit = bEnd - 32;
856
- do {
857
- let other;
858
- other = bigintFromU16(
859
- input[p2 + 1] << 8 | input[p2],
860
- input[p2 + 3] << 8 | input[p2 + 2],
861
- input[p2 + 5] << 8 | input[p2 + 4],
862
- input[p2 + 7] << 8 | input[p2 + 6]
863
- );
864
- v1 = multiply(rotl(add(v1, multiply(other, PRIME64_2)), 31n), PRIME64_1);
865
- p2 += 8;
866
- other = bigintFromU16(
867
- input[p2 + 1] << 8 | input[p2],
868
- input[p2 + 3] << 8 | input[p2 + 2],
869
- input[p2 + 5] << 8 | input[p2 + 4],
870
- input[p2 + 7] << 8 | input[p2 + 6]
871
- );
872
- v2 = multiply(rotl(add(v2, multiply(other, PRIME64_2)), 31n), PRIME64_1);
873
- p2 += 8;
874
- other = bigintFromU16(
875
- input[p2 + 1] << 8 | input[p2],
876
- input[p2 + 3] << 8 | input[p2 + 2],
877
- input[p2 + 5] << 8 | input[p2 + 4],
878
- input[p2 + 7] << 8 | input[p2 + 6]
879
- );
880
- v3 = multiply(rotl(add(v3, multiply(other, PRIME64_2)), 31n), PRIME64_1);
881
- p2 += 8;
882
- other = bigintFromU16(
883
- input[p2 + 1] << 8 | input[p2],
884
- input[p2 + 3] << 8 | input[p2 + 2],
885
- input[p2 + 5] << 8 | input[p2 + 4],
886
- input[p2 + 7] << 8 | input[p2 + 6]
887
- );
888
- v4 = multiply(rotl(add(v4, multiply(other, PRIME64_2)), 31n), PRIME64_1);
889
- p2 += 8;
890
- } while (p2 <= limit);
891
- }
892
- if (p2 < bEnd) {
893
- memory.set(input.subarray(p2, bEnd), memsize);
894
- memsize = bEnd - p2;
895
- }
896
- })();
897
- input = memory || input;
898
- let result;
899
- let p = 0;
900
- if (totalLen >= 32) {
901
- result = rotl(v1, 1n);
902
- result = add(result, rotl(v2, 7n));
903
- result = add(result, rotl(v3, 12n));
904
- result = add(result, rotl(v4, 18n));
905
- v1 = multiply(rotl(multiply(v1, PRIME64_2), 31n), PRIME64_1);
906
- result = result ^ v1;
907
- result = add(multiply(result, PRIME64_1), PRIME64_4);
908
- v2 = multiply(rotl(multiply(v2, PRIME64_2), 31n), PRIME64_1);
909
- result = result ^ v2;
910
- result = add(multiply(result, PRIME64_1), PRIME64_4);
911
- v3 = multiply(rotl(multiply(v3, PRIME64_2), 31n), PRIME64_1);
912
- result = result ^ v3;
913
- result = add(multiply(result, PRIME64_1), PRIME64_4);
914
- v4 = multiply(rotl(multiply(v4, PRIME64_2), 31n), PRIME64_1);
915
- result = result ^ v4;
916
- result = add(multiply(result, PRIME64_1), PRIME64_4);
917
- } else {
918
- result = add(seed, PRIME64_5);
919
- }
920
- result = add(result, BigInt(totalLen));
921
- while (p <= memsize - 8) {
922
- let temp2 = bigintFromU16(
923
- input[p + 1] << 8 | input[p],
924
- input[p + 3] << 8 | input[p + 2],
925
- input[p + 5] << 8 | input[p + 4],
926
- input[p + 7] << 8 | input[p + 6]
927
- );
928
- temp2 = multiply(rotl(multiply(temp2, PRIME64_2), 31n), PRIME64_1);
929
- result = add(multiply(rotl(result ^ temp2, 27n), PRIME64_1), PRIME64_4);
930
- p += 8;
931
- }
932
- if (p + 4 <= memsize) {
933
- let temp2 = multiply(
934
- bigintFromU16(
935
- input[p + 1] << 8 | input[p],
936
- input[p + 3] << 8 | input[p + 2],
937
- 0,
938
- 0
939
- ),
940
- PRIME64_1
941
- );
942
- result = add(multiply(rotl(result ^ temp2, 23n), PRIME64_2), PRIME64_3);
943
- p += 4;
944
- }
945
- while (p < memsize) {
946
- const temp2 = multiply(bigintFromU16(input[p++], 0, 0, 0), PRIME64_5);
947
- result = multiply(rotl(result ^ temp2, 11n), PRIME64_1);
948
- }
949
- let temp = result >> 33n;
950
- result = multiply(result ^ temp, PRIME64_2);
951
- temp = result >> 29n;
952
- result = multiply(result ^ temp, PRIME64_3);
953
- temp = result >> 32n;
954
- result ^= temp;
955
- return result;
956
- }
957
-
958
- const Twox128 = (input) => {
959
- const result = new Uint8Array(16);
960
- const dv = new DataView(result.buffer);
961
- dv.setBigUint64(0, h64(input), true);
962
- dv.setBigUint64(8, h64(input, 1n), true);
963
- return result;
964
- };
965
- const Twox256 = (input) => {
966
- const result = new Uint8Array(32);
967
- const dv = new DataView(result.buffer);
968
- dv.setBigUint64(0, h64(input), true);
969
- dv.setBigUint64(8, h64(input, 1n), true);
970
- dv.setBigUint64(16, h64(input, 2n), true);
971
- dv.setBigUint64(24, h64(input, 3n), true);
972
- return result;
973
- };
974
- const Twox64Concat = (encoded) => utils.mergeUint8([scaleTs.u64.enc(h64(encoded)), encoded]);
975
-
976
980
  const textEncoder = new TextEncoder();
977
981
  const hashers = /* @__PURE__ */ new Map([
978
982
  [Identity, 0],
@@ -1258,6 +1262,7 @@ exports.Enum = Enum;
1258
1262
  exports.FixedSizeBinary = FixedSizeBinary;
1259
1263
  exports.Hex = Hex;
1260
1264
  exports.Identity = Identity;
1265
+ exports.Keccak256 = Keccak256;
1261
1266
  exports.Option = Option;
1262
1267
  exports.Result = Result;
1263
1268
  exports.ScaleEnum = ScaleEnum;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/utils/ss58-util.ts","../src/codecs/scale/AccountId.ts","../src/codecs/scale/Binary.ts","../src/codecs/scale/compact.ts","../src/codecs/scale/bitSequence.ts","../src/codecs/scale/char.ts","../src/codecs/scale/Hex.ts","../src/codecs/scale/fixed-str.ts","../src/codecs/scale/Self.ts","../src/types/enum.ts","../src/codecs/scale/with-inner.ts","../src/codecs/scale/Variant.ts","../src/codecs/scale/ethAccount.ts","../src/codecs/scale/shaped.ts","../src/codecs/scale/BitSeq.ts","../src/codecs/blockHeader.ts","../src/codecs/metadata/docs.ts","../src/codecs/metadata/lookup.ts","../src/codecs/metadata/deprecation.ts","../src/codecs/metadata/runtime-api.ts","../src/codecs/metadata/pallets.ts","../src/codecs/metadata/v14.ts","../src/codecs/metadata/v15.ts","../src/codecs/metadata/v16.ts","../src/codecs/metadata/metadata.ts","../src/codecs/metadata/unified.ts","../src/extrinsics/extrinsic-format.ts","../src/hashes/blake2.ts","../src/hashes/blake3.ts","../src/hashes/identity.ts","../src/hashes/h64.ts","../src/hashes/twoX.ts","../src/storage.ts","../src/utils/multisig.ts","../src/trie/types.ts","../src/trie/node-decoder.ts","../src/trie/proofs.ts"],"sourcesContent":["import { base58 } from \"@scure/base\"\nimport { blake2b } from \"@noble/hashes/blake2.js\"\n\nconst SS58_PREFIX = new TextEncoder().encode(\"SS58PRE\")\nconst CHECKSUM_LENGTH = 2\n\nexport type SS58String = string & { __SS58String?: unknown }\nexport type SS58AddressInfo =\n | { isValid: false }\n | { isValid: true; ss58Format: number; publicKey: Uint8Array }\n\nexport const getSs58AddressInfo = (address: SS58String): SS58AddressInfo => {\n try {\n const decoded = base58.decode(address)\n const prefixBytes = decoded.subarray(0, decoded[0] & 0b0100_0000 ? 2 : 1)\n const publicKey = decoded.subarray(\n prefixBytes.length,\n decoded.length - CHECKSUM_LENGTH,\n )\n\n const checksum = decoded.subarray(prefixBytes.length + publicKey.length)\n const expectedChecksum = blake2b(\n Uint8Array.of(...SS58_PREFIX, ...prefixBytes, ...publicKey),\n {\n dkLen: 64,\n },\n ).subarray(0, CHECKSUM_LENGTH)\n\n const isChecksumValid =\n checksum[0] === expectedChecksum[0] && checksum[1] === expectedChecksum[1]\n\n if (!isChecksumValid) return { isValid: false }\n\n return {\n isValid: true,\n ss58Format: prefixBytesToNumber(prefixBytes),\n publicKey: publicKey.slice(),\n }\n } catch (_) {\n return { isValid: false }\n }\n}\n\nconst prefixBytesToNumber = (bytes: Uint8Array) => {\n const dv = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength)\n return dv.byteLength === 1 ? dv.getUint8(0) : dv.getUint16(0)\n}\n\nexport const fromBufferToBase58 = (ss58Format: number) => {\n const prefixBytes =\n ss58Format < 64\n ? Uint8Array.of(ss58Format)\n : Uint8Array.of(\n ((ss58Format & 0b0000_0000_1111_1100) >> 2) | 0b0100_0000,\n (ss58Format >> 8) | ((ss58Format & 0b0000_0000_0000_0011) << 6),\n )\n\n return (publicKey: Uint8Array): SS58String => {\n const checksum = blake2b(\n Uint8Array.of(...SS58_PREFIX, ...prefixBytes, ...publicKey),\n {\n dkLen: 64,\n },\n ).subarray(0, CHECKSUM_LENGTH)\n return base58.encode(\n Uint8Array.of(...prefixBytes, ...publicKey, ...checksum),\n )\n }\n}\n","import { Bytes, enhanceCodec } from \"scale-ts\"\nimport {\n getSs58AddressInfo,\n SS58String,\n fromBufferToBase58,\n} from \"@/utils/ss58-util\"\n\nfunction fromBase58ToBuffer(nBytes: number, _ss58Format: number) {\n return (address: SS58String) => {\n const info = getSs58AddressInfo(address)\n if (!info.isValid) throw new Error(\"Invalid checksum\")\n const { publicKey } = info\n if (publicKey.length !== nBytes)\n throw new Error(\"Invalid public key length\")\n\n return publicKey\n }\n}\n\nexport const AccountId = (ss58Format: number = 42, nBytes: 32 | 33 = 32) =>\n enhanceCodec(\n Bytes(nBytes),\n fromBase58ToBuffer(nBytes, ss58Format),\n fromBufferToBase58(ss58Format),\n )\n","import {\n Bytes,\n Codec,\n Decoder,\n Encoder,\n Tuple,\n compact,\n createCodec,\n} from \"scale-ts\"\nimport { fromHex, mergeUint8, toHex } from \"@polkadot-api/utils\"\nimport type { HexString } from \"./Hex\"\nimport { SS58String } from \"@/utils\"\nimport { AccountId } from \"./AccountId\"\n\nconst textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder()\nconst opaqueBytesDec = Tuple(compact, Bytes(Infinity))[1]\n\nexport class Binary {\n #bytes: Uint8Array\n #opaqueBytes: Uint8Array | null = null\n #hex: HexString | null = null\n #opaqueHex: HexString | null = null\n #str: string | null = null\n\n constructor(data: Uint8Array, opaque = false) {\n if (opaque) {\n try {\n const [len, bytes] = opaqueBytesDec(data)\n if (len === bytes.length) {\n this.#bytes = bytes\n this.#opaqueBytes = data\n return\n }\n } catch (_) {}\n throw new Error(\"Invalid opaque bytes\")\n } else this.#bytes = data\n }\n\n asText = () => (this.#str ??= textDecoder.decode(this.#bytes))\n\n asHex = () => (this.#hex ||= toHex(this.#bytes))\n asOpaqueHex = () => (this.#opaqueHex ||= toHex(this.asBytes()))\n\n asBytes = () => this.#bytes\n asOpaqueBytes = () =>\n (this.#opaqueBytes ||= mergeUint8([\n this.#bytes,\n compact[0](this.#bytes.length),\n ]))\n\n static fromText(input: string): Binary {\n return new this(textEncoder.encode(input))\n }\n\n static fromHex(input: HexString): Binary {\n return new this(fromHex(input))\n }\n static fromOpaqueHex(input: HexString): Binary {\n return new this(fromHex(input), true)\n }\n\n static fromBytes(input: Uint8Array): Binary {\n return new this(input)\n }\n static fromOpaqueBytes(input: Uint8Array): Binary {\n return new this(input, true)\n }\n}\n\nconst [accountIdEncoder] = AccountId()\nexport class FixedSizeBinary<_L extends number> extends Binary {\n constructor(data: Uint8Array) {\n super(data)\n }\n\n static fromArray<L extends number, I extends Array<number> & { length: L }>(\n input: I,\n ) {\n return new this<L>(new Uint8Array(input))\n }\n\n static fromAccountId32<L extends number>(\n input: L extends 32 ? SS58String : never,\n ) {\n return new this<L>(accountIdEncoder(input))\n }\n}\n\nconst enc = (nBytes?: number): Encoder<Binary> => {\n const _enc = Bytes.enc(nBytes)\n return (value) => _enc(value.asBytes())\n}\n\nconst dec = (nBytes?: number): Decoder<Binary> => {\n const _dec = Bytes.dec(nBytes)\n const Bin = nBytes == null ? Binary : FixedSizeBinary\n return (value) => Bin.fromBytes(_dec(value))\n}\n\nexport const Bin = (nBytes?: number): Codec<Binary> =>\n createCodec(enc(nBytes), dec(nBytes))\n\nBin.enc = enc\nBin.dec = dec\n","import { compact, enhanceCodec } from \"scale-ts\"\n\nexport const compactNumber = enhanceCodec(compact, (v) => v, Number)\nexport const compactBn = enhanceCodec(compact, (v) => v, BigInt)\n","import { Bytes, Decoder, Encoder, createCodec, createDecoder } from \"scale-ts\"\nimport { compactNumber } from \"./compact\"\n\nexport interface BitSequence {\n bitsLen: number\n bytes: Uint8Array\n}\n\nconst bitSequenceDecoder: Decoder<BitSequence> = createDecoder((data) => {\n const bitsLen = compactNumber.dec(data)\n\n const bytesLen = Math.ceil(bitsLen / 8)\n const bytes = Bytes(bytesLen).dec(data)\n return { bytes, bitsLen }\n})\n\nconst bitSequenceEncoder: Encoder<BitSequence> = (input) => {\n if (input.bitsLen > input.bytes.length * 8)\n throw new Error(\n `Not enough bytes. (bitsLen:${input.bitsLen}, bytesLen:${input.bytes.length})`,\n )\n\n const lenEncoded = compactNumber.enc(input.bitsLen)\n const result = new Uint8Array(input.bytes.length + lenEncoded.length)\n result.set(lenEncoded, 0)\n result.set(input.bytes, lenEncoded.length)\n return result\n}\n\nexport const bitSequence = createCodec(bitSequenceEncoder, bitSequenceDecoder)\n","import { enhanceCodec, u8 } from \"scale-ts\"\n\nexport const char = enhanceCodec(\n u8,\n (str: string) => str.charCodeAt(0),\n String.fromCharCode,\n)\n","import { fromHex, toHex } from \"@polkadot-api/utils\"\nimport { Bytes, Codec, Decoder, Encoder, createCodec } from \"scale-ts\"\n\nexport type HexString = string & { __hexString?: unknown }\n\nconst enc = (nBytes?: number): Encoder<HexString> => {\n const _enc = Bytes.enc(nBytes)\n return (value: string) => _enc(fromHex(value))\n}\n\nconst dec = (nBytes?: number): Decoder<HexString> => {\n const _dec = Bytes.dec(nBytes)\n return (value) => toHex(_dec(value)) as HexString\n}\n\nexport const Hex = (nBytes?: number): Codec<HexString> =>\n createCodec(enc(nBytes), dec(nBytes))\n\nHex.enc = enc\nHex.dec = dec\n","import { Bytes, enhanceCodec } from \"scale-ts\"\n\nconst textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder()\n\nexport const fixedStr = (nBytes: number) =>\n enhanceCodec(\n Bytes(nBytes),\n (str: string) => textEncoder.encode(str),\n (bytes) => textDecoder.decode(bytes),\n )\n","import { Codec, Decoder, Encoder, createCodec, _void } from \"scale-ts\"\n\nexport const selfEncoder = <T>(value: () => Encoder<T>): Encoder<T> => {\n let cache: Encoder<T> = (x) => {\n const encoder = value()\n cache = encoder\n return encoder(x)\n }\n\n return (x) => cache(x)\n}\n\nexport const selfDecoder = <T>(value: () => Decoder<T>): Decoder<T> => {\n let cache: Decoder<T> = (x) => {\n const decoder = value()\n const result = decoder\n cache = decoder\n return result(x)\n }\n\n return (x) => cache(x)\n}\n\nexport const Self = <T>(value: () => Codec<T>): Codec<T> =>\n createCodec(\n selfEncoder(() => value().enc),\n selfDecoder(() => value().dec),\n )\n","export type Enum<T extends {}> = {\n [K in keyof T & string]: {\n type: K\n value: T[K]\n }\n}[keyof T & string]\n\nexport type EnumVariant<\n T extends { type: string; value?: any },\n K extends T[\"type\"],\n> = T & {\n type: K\n}\n\nexport type ExtractEnumValue<\n T extends { type: string; value?: any },\n K extends string,\n> = EnumVariant<T, K>[\"value\"]\n\ntype ValueArg<V> = undefined extends V ? [value?: V] : [value: V]\n\ninterface Discriminant {\n is<T extends { type: string; value: any }, K extends T[\"type\"]>(\n value: T,\n type: K,\n ): value is T & { type: K }\n as<T extends { type: string; value: any }, K extends T[\"type\"]>(\n value: T,\n type: K,\n ): ExtractEnumValue<T, K>\n}\nconst discriminant: Discriminant = {\n is<T extends { type: string; value: any }, K extends T[\"type\"]>(\n value: T,\n type: K,\n ): value is T & { type: K } {\n return value.type === type\n },\n as(value, type) {\n if (type !== value.type)\n throw new Error(\n `Enum.as(enum, ${type}) used with actual type ${value.type}`,\n )\n return value\n },\n}\ninterface EnumFn extends Discriminant {\n <T extends { type: string; value: any }, K extends T[\"type\"]>(\n type: K,\n ...[value]: ValueArg<ExtractEnumValue<T, K>>\n ): EnumVariant<T, K>\n}\nexport const Enum: EnumFn = Object.assign((type: string, value?: any) => {\n return {\n type,\n value,\n } as any\n}, discriminant)\n\n// well-known enums\nexport type GetEnum<T extends Enum<any>> = {\n [K in T[\"type\"]]: (\n ...args: ExtractEnumValue<T, K> extends undefined\n ? []\n : [value: ExtractEnumValue<T, K>]\n ) => EnumVariant<T, K>\n}\nexport const _Enum = new Proxy(\n {},\n {\n get(_, prop: string) {\n return (value: string) => Enum(prop, value)\n },\n },\n)\n\n// type Bar = Enum<{\n// Kaka: 1\n// Bar: 2\n// }>\n\n// type FooInput = Enum<{\n// foo: \"foo\" | undefined\n// bar: Bar\n// baz: number\n// wtf: boolean\n// }>\n\n// declare function foo(foo: FooInput): void\n// foo(Enum(\"bar\", Enum(\"Bar\", 2)))\n\n// const InputEnum: GetEnum<FooInput> = null as any;\n// InputEnum.bar(Enum('Bar', 2))\n","export const withInner = <T, I>(codec: T, inner: I): T & { inner: I } => {\n const result: T & { inner: I } = codec as any\n result.inner = inner\n return result\n}\n","import {\n Codec,\n CodecType,\n Decoder,\n DecoderType,\n Encoder,\n EncoderType,\n Enum as OEnum,\n StringRecord,\n createCodec,\n} from \"scale-ts\"\nimport { mapObject } from \"@polkadot-api/utils\"\nimport { Enum } from \"@/types/enum\"\nimport { withInner } from \"./with-inner\"\n\ntype Tuple<T, N extends number> = readonly [T, ...T[]] & { length: N }\n\ntype Push<T extends any[], V> = [...T, V]\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (\n k: infer I,\n) => void\n ? I\n : never\n\ntype LastOf<T> =\n UnionToIntersection<T extends any ? () => T : never> extends () => infer R\n ? R\n : never\n\ntype TuplifyUnion<\n T,\n L = LastOf<T>,\n N = [T] extends [never] ? true : false,\n> = true extends N ? [] : Push<TuplifyUnion<Exclude<T, L>>, L>\n\ntype RestrictedLenTuple<T, O extends StringRecord<any>> = Tuple<\n T,\n TuplifyUnion<keyof O> extends Tuple<any, infer V> ? V : 0\n>\n\nconst VariantEnc: <O extends StringRecord<Encoder<any>>>(\n inner: O,\n x?: RestrictedLenTuple<number, O> | undefined,\n) => Encoder<\n Enum<{\n [K in keyof O]: EncoderType<O[K]>\n }>\n> & { inner: O } = (...args) => {\n const enc = OEnum.enc(...(args as [any, any]))\n return withInner((v: any) => enc({ tag: v.type, value: v.value }), args[0])\n}\n\nconst VariantDec: <O extends StringRecord<Decoder<any>>>(\n inner: O,\n x?: RestrictedLenTuple<number, O> | undefined,\n) => Decoder<\n Enum<{\n [K in keyof O]: DecoderType<O[K]>\n }>\n> & { inner: O } = (...args) => {\n const dec = OEnum.dec(...(args as [any]))\n return withInner((v: any) => {\n const { tag, value } = dec(v)\n return Enum(tag as any, value as any) as any\n }, args[0])\n}\n\nexport const Variant: {\n <O extends StringRecord<Codec<any>>>(\n inner: O,\n indexes?: RestrictedLenTuple<number, O> | undefined,\n ): Codec<\n Enum<{\n [K in keyof O]: CodecType<O[K]>\n }>\n > & { inner: O }\n enc: <O_1 extends StringRecord<Encoder<any>>>(\n inner: O_1,\n x?: RestrictedLenTuple<number, O_1> | undefined,\n ) => Encoder<\n Enum<{\n [K in keyof O_1]: EncoderType<O_1[K]>\n }>\n > & { inner: O_1 }\n dec: <O_2 extends StringRecord<Decoder<any>>>(\n inner: O_2,\n x?: RestrictedLenTuple<number, O_2> | undefined,\n ) => Decoder<\n Enum<{\n [K in keyof O_2]: DecoderType<O_2[K]>\n }>\n > & { inner: O_2 }\n} = (inner, ...args) =>\n withInner(\n createCodec(\n VariantEnc(\n mapObject(inner, ([encoder]) => encoder) as any,\n ...(args as any[]),\n ),\n VariantDec(\n mapObject(inner, ([, decoder]) => decoder) as any,\n ...(args as any[]),\n ) as any,\n ),\n inner,\n ) as any\nVariant.enc = VariantEnc\nVariant.dec = VariantDec\n\nexport const ScaleEnum: {\n <O extends StringRecord<Codec<any>>>(\n inner: O,\n indexes?: RestrictedLenTuple<number, O> | undefined,\n ): Codec<\n {\n [K in keyof O]: {\n tag: K\n value: CodecType<O[K]>\n }\n }[keyof O]\n > & { inner: O }\n enc: <O_1 extends StringRecord<Encoder<any>>>(\n inner: O_1,\n x?: RestrictedLenTuple<number, O_1> | undefined,\n ) => Encoder<\n {\n [K_1 in keyof O_1]: {\n tag: K_1\n value: EncoderType<O_1[K_1]>\n }\n }[keyof O_1]\n > & { inner: O_1 }\n dec: <O_2 extends StringRecord<Decoder<any>>>(\n inner: O_2,\n x?: RestrictedLenTuple<number, O_2> | undefined,\n ) => Decoder<\n {\n [K_2 in keyof O_2]: {\n tag: K_2\n value: DecoderType<O_2[K_2]>\n }\n }[keyof O_2]\n > & { inner: O_2 }\n} = (inner, ...args) => withInner(OEnum(inner, ...(args as any[])), inner)\nScaleEnum.enc = (inner, ...rest) =>\n withInner(OEnum.enc(inner, ...(rest as any[])), inner)\nScaleEnum.dec = (inner, ...rest) =>\n withInner(OEnum.dec(inner, ...(rest as any[])), inner)\n","import { fromHex, toHex } from \"@polkadot-api/utils\"\nimport { Bytes, createCodec, createDecoder } from \"scale-ts\"\nimport { keccak_256 as keccak } from \"@noble/hashes/sha3.js\"\n\nconst getFormattedAddress = (hexAddress: string) => {\n const nonChecksum = hexAddress.slice(2)\n const hashedAddress = toHex(keccak(fromHex(hexAddress))).slice(2)\n\n const result = new Array(40)\n\n for (let i = 0; i < 40; i++) {\n const checksumVal = parseInt(hashedAddress[i], 16)\n const char = nonChecksum[i]\n result[i] = checksumVal > 7 ? char.toUpperCase() : char\n }\n\n return `0x${result.join(\"\")}`\n}\n\nconst bytes20Dec = Bytes(20)[1]\n\nexport const ethAccount = createCodec<string>(\n (input: string) => {\n const bytes = fromHex(input)\n if (bytes.length !== 20)\n throw new Error(`Invalid length found on EthAddress(${input})`)\n\n const hexAddress = toHex(bytes)\n if (input === hexAddress || input === hexAddress.toUpperCase()) return bytes\n\n if (getFormattedAddress(hexAddress) !== input)\n throw new Error(`Invalid checksum found on EthAddress(${input})`)\n\n return bytes\n },\n createDecoder((bytes) => getFormattedAddress(toHex(bytes20Dec(bytes)))),\n)\n","import {\n Struct as OStruct,\n Tuple as OTuple,\n Vector as OVector,\n Result as OResult,\n Option as OOption,\n Codec,\n Encoder,\n Decoder,\n StringRecord,\n CodecType,\n EncoderType,\n DecoderType,\n ResultPayload,\n} from \"scale-ts\"\nimport { withInner } from \"./with-inner\"\n\nexport const Struct: {\n <A extends StringRecord<Codec<any>>>(\n codecs: A,\n ): Codec<{ [K in keyof A]: CodecType<A[K]> }> & { inner: A }\n enc: <A_1 extends StringRecord<Encoder<any>>>(\n encoders: A_1,\n ) => Encoder<{ [K_1 in keyof A_1]: EncoderType<A_1[K_1]> }> & { inner: A_1 }\n dec: <A_2 extends StringRecord<Decoder<any>>>(\n decoders: A_2,\n ) => Decoder<{ [K_2 in keyof A_2]: DecoderType<A_2[K_2]> }> & { inner: A_2 }\n} = (codecs) => withInner(OStruct(codecs), codecs)\nStruct.enc = (x) => withInner(OStruct.enc(x), x)\nStruct.dec = (x) => withInner(OStruct.dec(x), x)\n\nexport const Tuple: {\n <A extends Codec<any>[]>(\n ...inner: A\n ): Codec<{ [K in keyof A]: A[K] extends Codec<infer D> ? D : unknown }> & {\n inner: A\n }\n enc: <A_1 extends Encoder<any>[]>(\n ...encoders: A_1\n ) => Encoder<{\n [K_1 in keyof A_1]: A_1[K_1] extends Encoder<infer D_1> ? D_1 : unknown\n }> & { inner: A_1 }\n dec: <A_2 extends Decoder<any>[]>(\n ...decoders: A_2\n ) => Decoder<{\n [K_2 in keyof A_2]: A_2[K_2] extends Decoder<infer D_2> ? D_2 : unknown\n }> & { inner: A_2 }\n} = (...inner) => withInner(OTuple(...inner), inner)\nTuple.enc = (...inner) => withInner(OTuple.enc(...inner), inner)\nTuple.dec = (...inner) => withInner(OTuple.dec(...inner), inner)\n\nexport const Vector: {\n <T>(\n inner: Codec<T>,\n size?: number | undefined,\n ): Codec<T[]> & { inner: Codec<T> }\n enc: <T_1>(\n inner: Encoder<T_1>,\n size?: number | undefined,\n ) => Encoder<T_1[]> & { inner: Encoder<T_1> }\n dec: <T_2>(\n getter: Decoder<T_2>,\n size?: number | undefined,\n ) => Decoder<T_2[]> & { inner: Decoder<T_2> }\n} = (inner, ...rest) => withInner(OVector(inner, ...rest), inner)\nVector.enc = (inner, ...rest) => withInner(OVector.enc(inner, ...rest), inner)\nVector.dec = (inner, ...rest) => withInner(OVector.dec(inner, ...rest), inner)\n\nexport const Result: {\n <OK, KO>(\n okCodec: Codec<OK>,\n koCodec: Codec<KO>,\n ): Codec<ResultPayload<OK, KO>> & { inner: { ok: Codec<OK>; ko: Codec<KO> } }\n dec: <OK_1, KO_1>(\n okDecoder: Decoder<OK_1>,\n koDecoder: Decoder<KO_1>,\n ) => Decoder<ResultPayload<OK_1, KO_1>> & {\n inner: { ok: Decoder<OK_1>; ko: Decoder<KO_1> }\n }\n enc: <OK_2, KO_2>(\n okEncoder: Encoder<OK_2>,\n koEncoder: Encoder<KO_2>,\n ) => Encoder<ResultPayload<OK_2, KO_2>> & {\n inner: { ok: Encoder<OK_2>; ko: Encoder<KO_2> }\n }\n} = (ok, ko) => withInner(OResult(ok, ko), { ok, ko })\nResult.enc = (ok, ko) => withInner(OResult.enc(ok, ko), { ok, ko })\nResult.dec = (ok, ko) => withInner(OResult.dec(ok, ko), { ok, ko })\n\nexport const Option: {\n <T>(inner: Codec<T>): Codec<T | undefined> & { inner: Codec<T> }\n enc: <T_1>(\n inner: Encoder<T_1>,\n ) => Encoder<T_1 | undefined> & { inner: Encoder<T_1> }\n dec: <T_2>(\n inner: Decoder<T_2>,\n ) => Decoder<T_2 | undefined> & { inner: Decoder<T_2> }\n} = (inner) => withInner(OOption(inner), inner)\nOption.enc = (inner) => withInner(OOption.enc(inner), inner)\nOption.dec = (inner) => withInner(OOption.dec(inner), inner)\n","import {\n Bytes,\n Codec,\n Decoder,\n Encoder,\n createCodec,\n createDecoder,\n} from \"scale-ts\"\nimport { compactNumber } from \"./compact\"\nimport { mergeUint8 } from \"@polkadot-api/utils\"\n\nexport type BitSeq = Array<0 | 1>\n\nconst dec: (isLsb?: boolean) => Decoder<BitSeq> = (isLsb = true) =>\n createDecoder((data) => {\n const bitsLen = compactNumber.dec(data)\n const bytesLen = Math.ceil(bitsLen / 8)\n const bytes = Bytes(bytesLen).dec(data)\n\n const result = new Array<0 | 1>(bitsLen)\n let resultIdx = 0\n bytes.forEach((val) => {\n for (let i = 0; i < 8 && resultIdx < bitsLen; i++) {\n const actualIdx = isLsb ? i : 7 - i\n result[resultIdx++] = ((val >> actualIdx) & 1) as 1 | 0\n }\n })\n return result\n })\n\nconst enc: (isLsb?: boolean) => Encoder<BitSeq> =\n (isLsb = true) =>\n (input) => {\n const lenEncoded = compactNumber.enc(input.length)\n const nBytes = Math.ceil(input.length / 8)\n\n const bytes = new Uint8Array(nBytes)\n for (let byteIdx = 0; byteIdx < nBytes; byteIdx++) {\n let inputIdx = byteIdx * 8\n let byte = 0\n for (let i = 0; i < 8 && inputIdx < input.length; i++, inputIdx++)\n byte |= input[inputIdx] << (isLsb ? i : 7 - i)\n bytes[byteIdx] = byte\n }\n\n return mergeUint8([lenEncoded, bytes])\n }\n\nexport const BitSeq = (isLsb?: boolean): Codec<BitSeq> =>\n createCodec(enc(isLsb), dec(isLsb))\n\nBitSeq.enc = enc\nBitSeq.dec = dec\n","import {\n Bytes,\n CodecType,\n Struct,\n Vector,\n _void,\n enhanceCodec,\n Hex,\n Variant,\n compactNumber,\n} from \"./scale\"\n\nconst textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder()\n\nconst fourChars = enhanceCodec(\n Bytes(4),\n textEncoder.encode.bind(textEncoder),\n textDecoder.decode.bind(textDecoder),\n)\n\nconst diggestVal = Struct({\n engine: fourChars,\n payload: Hex(),\n})\n\nconst diggest = Variant(\n {\n other: Bytes(),\n consensus: diggestVal,\n seal: diggestVal,\n preRuntime: diggestVal,\n runtimeUpdated: _void,\n },\n [0, 4, 5, 6, 8],\n)\n\nconst hex32 = Hex(32)\nexport const blockHeader = Struct({\n parentHash: hex32,\n number: compactNumber,\n stateRoot: hex32,\n extrinsicRoot: hex32,\n digests: Vector(diggest),\n})\n\nexport type BlockHeader = CodecType<typeof blockHeader>\n","import { Vector, str } from \"scale-ts\"\n\nexport const docs = Vector(str)\n","import { compactNumber } from \"../scale/compact\"\nimport {\n CodecType,\n Enum,\n Option,\n Struct,\n Vector,\n _void,\n str,\n u32,\n u8,\n} from \"scale-ts\"\nimport { docs } from \"./docs\"\n\nconst oStr = Option(str)\n\nconst primitive = Enum({\n bool: _void,\n char: _void,\n str: _void,\n u8: _void,\n u16: _void,\n u32: _void,\n u64: _void,\n u128: _void,\n u256: _void,\n i8: _void,\n i16: _void,\n i32: _void,\n i64: _void,\n i128: _void,\n i256: _void,\n})\n\nconst fields = Vector(\n Struct({\n name: oStr,\n type: compactNumber,\n typeName: oStr,\n docs,\n }),\n)\n\nconst arr = Struct({\n len: u32,\n type: compactNumber,\n})\n\nconst bitSequence = Struct({\n bitStoreType: compactNumber,\n bitOrderType: compactNumber,\n})\n\nconst variant = Vector(\n Struct({\n name: str,\n fields,\n index: u8,\n docs,\n }),\n)\n\nconst def = Enum({\n composite: fields,\n variant,\n sequence: compactNumber,\n array: arr,\n tuple: Vector(compactNumber),\n primitive,\n compact: compactNumber,\n bitSequence,\n})\n\nconst param = Struct({\n name: str,\n type: Option(compactNumber),\n})\nconst params = Vector(param)\n\nconst entry = Struct({\n id: compactNumber,\n path: docs,\n params,\n def,\n docs,\n})\n\nexport const lookup = Vector(entry)\nexport type V14Lookup = CodecType<typeof lookup>\n","import { _void, Enum, Option, str, Struct, u8, Vector } from \"scale-ts\"\n\nexport const itemDeprecation = Enum({\n NotDeprecated: _void,\n DeprecatedWithoutNote: _void,\n Deprecated: Struct({\n note: str,\n since: Option(str),\n }),\n})\n\nexport const variantDeprecation = Vector(\n Struct({\n index: u8,\n deprecation: Enum(\n {\n DeprecatedWithoutNote: _void,\n Deprecated: Struct({\n note: str,\n since: Option(str),\n }),\n },\n [1, 2],\n ),\n }),\n)\n","import { Struct, Vector, str } from \"scale-ts\"\nimport { docs } from \"./docs\"\nimport { compactNumber, Hex, compactNumber as ty } from \"../scale\"\nimport { itemDeprecation } from \"./deprecation\"\n\nexport const runtimeApiMethod = {\n name: str,\n inputs: Vector(\n Struct({\n name: str,\n type: ty,\n }),\n ),\n output: ty,\n docs,\n}\n\nexport const runtimeApiV15 = Struct({\n name: str,\n methods: Vector(Struct(runtimeApiMethod)),\n docs,\n})\n\nexport const runtimeApi = Struct({\n name: str,\n methods: Vector(\n Struct({ ...runtimeApiMethod, deprecationInfo: itemDeprecation }),\n ),\n docs,\n version: compactNumber,\n deprecationInfo: itemDeprecation,\n})\n\nexport const viewFunction = Struct({\n id: Hex(32),\n ...runtimeApiMethod,\n deprecationInfo: itemDeprecation,\n})\n","import { Hex, compactNumber } from \"@/codecs/scale\"\nimport { Struct, Option, Vector, u8, str, Enum, _void } from \"scale-ts\"\nimport { docs } from \"./docs\"\nimport { itemDeprecation, variantDeprecation } from \"./deprecation\"\nimport { viewFunction } from \"./runtime-api\"\n\nconst hashType = Enum({\n Blake2128: _void,\n Blake2256: _void,\n Blake2128Concat: _void,\n Twox128: _void,\n Twox256: _void,\n Twox64Concat: _void,\n Identity: _void,\n})\n\nconst hashers = Vector(hashType)\n\nexport const storageMap = Struct({\n hashers,\n key: compactNumber,\n value: compactNumber,\n})\n\nconst storageItem = {\n name: str,\n modifier: u8,\n type: Enum({\n plain: compactNumber,\n map: storageMap,\n }),\n fallback: Hex(),\n docs,\n}\n\nconst enumRefV14 = Option(compactNumber)\n\nexport const v14Pallet = {\n name: str,\n storage: Option(\n Struct({\n prefix: str,\n items: Vector(Struct(storageItem)),\n }),\n ),\n calls: enumRefV14,\n events: enumRefV14,\n constants: Vector(\n Struct({\n name: str,\n type: compactNumber,\n value: Hex(),\n docs,\n }),\n ),\n errors: enumRefV14,\n index: u8,\n}\n\nexport const v15Pallet = {\n ...v14Pallet,\n docs,\n}\n\nconst enumRef = Option(\n Struct({ type: compactNumber, deprecationInfo: variantDeprecation }),\n)\n\nexport const v16Pallet = {\n name: str,\n storage: Option(\n Struct({\n prefix: str,\n items: Vector(\n Struct({\n ...storageItem,\n deprecationInfo: itemDeprecation,\n }),\n ),\n }),\n ),\n calls: enumRef,\n events: enumRef,\n constants: Vector(\n Struct({\n name: str,\n type: compactNumber,\n value: Hex(),\n docs,\n deprecationInfo: itemDeprecation,\n }),\n ),\n errors: enumRef,\n associatedTypes: Vector(\n Struct({\n name: str,\n type: compactNumber,\n docs,\n }),\n ),\n viewFns: Vector(viewFunction),\n index: u8,\n docs,\n deprecationInfo: itemDeprecation,\n}\n","import { CodecType, Struct, Vector, createCodec, str, u8 } from \"scale-ts\"\nimport { lookup } from \"./lookup\"\nimport { compactNumber } from \"../scale\"\nimport { v14Pallet } from \"./pallets\"\nimport { runtimeApi } from \"./runtime-api\"\n\nconst empty = new Uint8Array()\nconst Always = <T>(value: T) =>\n createCodec<T>(\n () => empty,\n () => value,\n )\n\nconst extrinsic = Struct({\n type: compactNumber,\n version: u8,\n signedExtensions: Vector(\n Struct({\n identifier: str,\n type: compactNumber,\n additionalSigned: compactNumber,\n }),\n ),\n})\n\nexport const v14 = Struct({\n lookup,\n pallets: Vector(Struct({ ...v14Pallet, docs: Always([] as string[]) })),\n extrinsic,\n type: compactNumber,\n apis: Always([] as Array<CodecType<typeof runtimeApi>>),\n})\nexport type V14 = CodecType<typeof v14>\n","import { CodecType, Struct, Tuple, Vector, str, u8 } from \"scale-ts\"\nimport { lookup } from \"./lookup\"\nimport { v15Pallet } from \"./pallets\"\nimport { Hex, compactNumber as ty } from \"../scale\"\nimport { runtimeApiV15 } from \"./runtime-api\"\n\nconst extrinsic = Struct({\n version: u8,\n address: ty,\n call: ty,\n signature: ty,\n extra: ty,\n signedExtensions: Vector(\n Struct({\n identifier: str,\n type: ty,\n additionalSigned: ty,\n }),\n ),\n})\n\nexport const v15 = Struct({\n lookup,\n pallets: Vector(Struct(v15Pallet)),\n extrinsic,\n type: ty,\n apis: Vector(runtimeApiV15),\n outerEnums: Struct({\n call: ty,\n event: ty,\n error: ty,\n }),\n custom: Vector(Tuple(str, Struct({ type: ty, value: Hex() }))),\n})\nexport type V15 = CodecType<typeof v15>\n","import { CodecType, Struct, Tuple, Vector, str, u8 } from \"scale-ts\"\nimport { lookup } from \"./lookup\"\nimport { v16Pallet } from \"./pallets\"\nimport { compactNumber, Hex, compactNumber as ty } from \"../scale\"\nimport { runtimeApi } from \"./runtime-api\"\n\nconst extrinsic = Struct({\n version: Vector(u8),\n address: ty,\n call: ty,\n signature: ty,\n signedExtensionsByVersion: Vector(Tuple(u8, Vector(compactNumber))),\n signedExtensions: Vector(\n Struct({\n identifier: str,\n type: ty,\n additionalSigned: ty,\n }),\n ),\n})\n\nexport const v16 = Struct({\n lookup,\n pallets: Vector(Struct(v16Pallet)),\n extrinsic,\n apis: Vector(runtimeApi),\n outerEnums: Struct({\n call: ty,\n event: ty,\n error: ty,\n }),\n custom: Vector(Tuple(str, Struct({ type: ty, value: Hex() }))),\n})\nexport type V16 = CodecType<typeof v16>\n","import {\n Bytes,\n type Codec,\n type CodecType,\n Enum,\n Option,\n Struct,\n Tuple,\n compact,\n createCodec,\n u32,\n} from \"scale-ts\"\nimport type { HexString } from \"../scale\"\nimport { v14 } from \"./v14\"\nimport { v15 } from \"./v15\"\nimport { v16 } from \"./v16\"\n\nconst unsupportedFn = () => {\n throw new Error(\"Unsupported metadata version!\")\n}\n\nconst unsupported = createCodec(\n unsupportedFn,\n unsupportedFn,\n) as unknown as Codec<unknown>\n\nexport const metadata = Struct({\n magicNumber: u32,\n metadata: Enum({\n v0: unsupported,\n v1: unsupported,\n v2: unsupported,\n v3: unsupported,\n v4: unsupported,\n v5: unsupported,\n v6: unsupported,\n v7: unsupported,\n v8: unsupported,\n v9: unsupported,\n v10: unsupported,\n v11: unsupported,\n v12: unsupported,\n v13: unsupported,\n v14,\n v15,\n v16,\n }),\n})\nexport type Metadata = CodecType<typeof metadata>\n\nconst opaqueBytes = Bytes()\nconst optionOpaque = Option(opaqueBytes)\nconst opaqueOpaqueBytes = Tuple(compact, opaqueBytes)\n\nexport const decAnyMetadata = (\n input: Uint8Array | HexString,\n): CodecType<typeof metadata> => {\n try {\n return metadata.dec(input)\n } catch (_) {}\n\n // comes from metadata.metadata_at_version\n try {\n return metadata.dec(optionOpaque.dec(input)!)\n } catch (_) {}\n\n // comes from state.getMetadata\n try {\n return metadata.dec(opaqueBytes.dec(input))\n } catch (_) {}\n\n // comes from metadata.metadata\n try {\n return metadata.dec(opaqueOpaqueBytes.dec(input)[1])\n } catch (_) {}\n\n throw null\n}\n","import { CodecType } from \"scale-ts\"\nimport { V14Lookup } from \"./lookup\"\nimport { storageMap } from \"./pallets\"\nimport { HexString } from \"../scale\"\nimport { itemDeprecation, variantDeprecation } from \"./deprecation\"\nimport { viewFunction } from \"./runtime-api\"\nimport { V14 } from \"./v14\"\nimport { V16 } from \"./v16\"\nimport { V15 } from \"./v15\"\nimport { Metadata } from \"./metadata\"\n\ntype EnumRef<T> =\n | ({\n type: number\n } & (T extends 16\n ? { deprecationInfo: CodecType<typeof variantDeprecation> }\n : {}))\n | undefined\n\ntype DeprecationInfo<T> = T extends 16\n ? { deprecationInfo: CodecType<typeof itemDeprecation> }\n : {}\n\nexport type UnifiedMetadata<T extends 14 | 15 | 16 = 14 | 15 | 16> = {\n version: T\n lookup: V14Lookup\n pallets: Array<\n {\n name: string\n storage:\n | {\n prefix: string\n items: Array<\n {\n name: string\n modifier: number\n type:\n | { tag: \"plain\"; value: number }\n | { tag: \"map\"; value: CodecType<typeof storageMap> }\n fallback: HexString\n docs: string[]\n } & DeprecationInfo<T>\n >\n }\n | undefined\n calls: EnumRef<T>\n events: EnumRef<T>\n constants: Array<\n {\n name: string\n type: number\n value: HexString\n docs: string[]\n } & DeprecationInfo<T>\n >\n errors: EnumRef<T>\n associatedTypes: Array<{\n name: string\n type: number\n docs: string[]\n }>\n viewFns: Array<CodecType<typeof viewFunction>>\n index: number\n docs: string[]\n } & DeprecationInfo<T>\n >\n extrinsic: {\n version: number[]\n signedExtensions: Array<{\n identifier: string\n type: number\n additionalSigned: number\n }>\n } & (T extends 14\n ? {\n type: number\n }\n : { address: number; call: number; signature: number }) &\n (T extends 16\n ? { signedExtensionsByVersion: Array<[number, number[]]> }\n : {})\n apis: Array<\n {\n name: string\n methods: Array<\n {\n name: string\n inputs: Array<{ name: string; type: number }>\n output: number\n docs: string[]\n } & DeprecationInfo<T>\n >\n docs: string[]\n } & (T extends 16 ? { version: number } : {}) &\n DeprecationInfo<T>\n >\n} & (T extends 14\n ? {}\n : {\n outerEnums: { call: number; event: number; error: number }\n custom: Array<[string, { type: number; value: HexString }]>\n })\n\nexport const unifyMetadata = (\n metadata: Metadata | Metadata[\"metadata\"] | V14 | V15 | V16,\n): UnifiedMetadata => {\n // complete metadata\n if (\"magicNumber\" in metadata) metadata = metadata.metadata\n if (\"tag\" in metadata) {\n if (\n metadata.tag !== \"v14\" &&\n metadata.tag !== \"v15\" &&\n metadata.tag !== \"v16\"\n )\n throw new Error(\"Only metadata 14, 15, and 16 are supported\")\n metadata = metadata.value\n }\n\n // v16\n if (\"signedExtensionsByVersion\" in metadata.extrinsic) {\n return { version: 16, ...(metadata as V16) }\n }\n // v15\n if (\"custom\" in metadata) {\n const { lookup, extrinsic, custom, apis, pallets, outerEnums } =\n metadata as V15\n\n return {\n version: 15,\n lookup,\n pallets: pallets.map((p): UnifiedMetadata<15>[\"pallets\"][number] => ({\n ...p,\n calls: p.calls != null ? { type: p.calls } : undefined,\n events: p.events != null ? { type: p.events } : undefined,\n errors: p.errors != null ? { type: p.errors } : undefined,\n viewFns: [],\n associatedTypes: [],\n })),\n extrinsic: { ...extrinsic, version: [extrinsic.version] },\n apis,\n outerEnums,\n custom,\n }\n }\n // fallback, v14\n const { lookup, extrinsic, pallets } = metadata as V14\n return {\n version: 14,\n lookup,\n pallets: pallets.map((p): UnifiedMetadata<14>[\"pallets\"][number] => ({\n ...p,\n calls: p.calls != null ? { type: p.calls } : undefined,\n events: p.events != null ? { type: p.events } : undefined,\n errors: p.errors != null ? { type: p.errors } : undefined,\n viewFns: [],\n associatedTypes: [],\n })),\n extrinsic: { ...extrinsic, version: [extrinsic.version] },\n apis: [],\n }\n}\n","import { enhanceCodec, u8 } from \"scale-ts\"\n\nconst TYPES = {\n bare: 0b00,\n 0b00: \"bare\",\n general: 0b01,\n 0b01: \"general\",\n signed: 0b10,\n 0b10: \"signed\",\n} as const\n\nexport type ExtrinsicFormat =\n | { version: 4; type: \"bare\" | \"signed\" }\n | { version: 5; type: \"bare\" | \"general\" }\n\nexport const extrinsicFormat = enhanceCodec<number, ExtrinsicFormat>(\n u8,\n ({ version, type }) => version + (TYPES[type] << 6),\n (v) => {\n const version = v & 0x3f // 0b0011_1111\n const type = v >> 6\n if (version === 4 && (type === TYPES.bare || type === TYPES.signed))\n return { version, type: TYPES[type] }\n if (version === 5 && (type === TYPES.bare || type === TYPES.general))\n return { version, type: TYPES[type] }\n throw new Error(`ExtrinsicFormat ${v} not valid`)\n },\n)\n","import { mergeUint8 } from \"@polkadot-api/utils\"\nimport { blake2b } from \"@noble/hashes/blake2.js\"\n\nconst len32 = { dkLen: 32 }\nexport const Blake2256 = (encoded: Uint8Array) => blake2b(encoded, len32)\n\nconst len16 = { dkLen: 16 }\nexport const Blake2128 = (encoded: Uint8Array) => blake2b(encoded, len16)\n\nexport const Blake2128Concat = (encoded: Uint8Array) =>\n mergeUint8([Blake2128(encoded), encoded])\n","import { mergeUint8 } from \"@polkadot-api/utils\"\nimport { blake3 } from \"@noble/hashes/blake3.js\"\n\nconst len32 = { dkLen: 32 }\nexport const Blake3256 = (encoded: Uint8Array) => blake3(encoded, len32)\n\nexport const Blake3256Concat = (encoded: Uint8Array) =>\n mergeUint8([Blake3256(encoded), encoded])\n","export const Identity = (encoded: Uint8Array): Uint8Array => encoded\n","// Adapted implementation based on: https://github.com/pierrec/js-xxhash/blob/7ff5ced282f97dba121109d7013e0fa80360398c/lib/xxhash64.js\n\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n\n// helper functions\nconst bigintFromU16 = (\n v0: number,\n v1: number,\n v2: number,\n v3: number,\n): bigint =>\n new DataView(new Uint16Array([v0, v1, v2, v3]).buffer).getBigUint64(0, true)\n\nconst MASK_64 = 2n ** 64n - 1n\n\nconst rotl = (input: bigint, nBits: bigint) =>\n ((input << nBits) & MASK_64) | (input >> (64n - nBits))\n\nconst multiply = (a: bigint, b: bigint) => (a * b) & MASK_64\n\nconst add = (a: bigint, b: bigint) => (a + b) & MASK_64\n\n// constants\nconst PRIME64_1 = 11400714785074694791n\nconst PRIME64_2 = 14029467366897019727n\nconst PRIME64_3 = 1609587929392839161n\nconst PRIME64_4 = 9650029242287828579n\nconst PRIME64_5 = 2870177450012600261n\n\nexport function h64(input: Uint8Array, seed: bigint = 0n) {\n let v1 = add(add(seed, PRIME64_1), PRIME64_2)\n let v2 = add(seed, PRIME64_2)\n let v3 = seed\n let v4 = seed - PRIME64_1\n let totalLen = input.length\n let memsize = 0\n let memory: Uint8Array | null = null\n\n ;(function update() {\n let p = 0\n let bEnd = p + totalLen\n\n if (!totalLen) return\n\n memory = new Uint8Array(32)\n\n if (totalLen < 32) {\n memory.set(input.subarray(0, totalLen), memsize)\n\n memsize += totalLen\n return\n }\n\n if (p <= bEnd - 32) {\n const limit = bEnd - 32\n\n do {\n let other\n other = bigintFromU16(\n (input[p + 1] << 8) | input[p],\n (input[p + 3] << 8) | input[p + 2],\n (input[p + 5] << 8) | input[p + 4],\n (input[p + 7] << 8) | input[p + 6],\n )\n v1 = multiply(rotl(add(v1, multiply(other, PRIME64_2)), 31n), PRIME64_1)\n p += 8\n other = bigintFromU16(\n (input[p + 1] << 8) | input[p],\n (input[p + 3] << 8) | input[p + 2],\n (input[p + 5] << 8) | input[p + 4],\n (input[p + 7] << 8) | input[p + 6],\n )\n\n v2 = multiply(rotl(add(v2, multiply(other, PRIME64_2)), 31n), PRIME64_1)\n p += 8\n other = bigintFromU16(\n (input[p + 1] << 8) | input[p],\n (input[p + 3] << 8) | input[p + 2],\n (input[p + 5] << 8) | input[p + 4],\n (input[p + 7] << 8) | input[p + 6],\n )\n\n v3 = multiply(rotl(add(v3, multiply(other, PRIME64_2)), 31n), PRIME64_1)\n p += 8\n other = bigintFromU16(\n (input[p + 1] << 8) | input[p],\n (input[p + 3] << 8) | input[p + 2],\n (input[p + 5] << 8) | input[p + 4],\n (input[p + 7] << 8) | input[p + 6],\n )\n v4 = multiply(rotl(add(v4, multiply(other, PRIME64_2)), 31n), PRIME64_1)\n p += 8\n } while (p <= limit)\n }\n\n if (p < bEnd) {\n memory.set(input.subarray(p, bEnd), memsize)\n memsize = bEnd - p\n }\n })()\n\n input = memory || input\n\n let result: bigint\n let p = 0\n\n if (totalLen >= 32) {\n result = rotl(v1, 1n)\n result = add(result, rotl(v2, 7n))\n result = add(result, rotl(v3, 12n))\n result = add(result, rotl(v4, 18n))\n\n v1 = multiply(rotl(multiply(v1, PRIME64_2), 31n), PRIME64_1)\n result = result ^ v1\n result = add(multiply(result, PRIME64_1), PRIME64_4)\n\n v2 = multiply(rotl(multiply(v2, PRIME64_2), 31n), PRIME64_1)\n result = result ^ v2\n result = add(multiply(result, PRIME64_1), PRIME64_4)\n\n v3 = multiply(rotl(multiply(v3, PRIME64_2), 31n), PRIME64_1)\n result = result ^ v3\n result = add(multiply(result, PRIME64_1), PRIME64_4)\n\n v4 = multiply(rotl(multiply(v4, PRIME64_2), 31n), PRIME64_1)\n result = result ^ v4\n result = add(multiply(result, PRIME64_1), PRIME64_4)\n } else {\n result = add(seed, PRIME64_5)\n }\n\n result = add(result, BigInt(totalLen))\n\n while (p <= memsize - 8) {\n let temp = bigintFromU16(\n (input[p + 1] << 8) | input[p],\n (input[p + 3] << 8) | input[p + 2],\n (input[p + 5] << 8) | input[p + 4],\n (input[p + 7] << 8) | input[p + 6],\n )\n temp = multiply(rotl(multiply(temp, PRIME64_2), 31n), PRIME64_1)\n result = add(multiply(rotl(result ^ temp, 27n), PRIME64_1), PRIME64_4)\n p += 8\n }\n\n if (p + 4 <= memsize) {\n let temp = multiply(\n bigintFromU16(\n (input[p + 1] << 8) | input[p],\n (input[p + 3] << 8) | input[p + 2],\n 0,\n 0,\n ),\n PRIME64_1,\n )\n\n result = add(multiply(rotl(result ^ temp, 23n), PRIME64_2), PRIME64_3)\n p += 4\n }\n\n while (p < memsize) {\n const temp = multiply(bigintFromU16(input[p++], 0, 0, 0), PRIME64_5)\n result = multiply(rotl(result ^ temp, 11n), PRIME64_1)\n }\n\n let temp = result >> 33n\n result = multiply(result ^ temp, PRIME64_2)\n\n temp = result >> 29n\n result = multiply(result ^ temp, PRIME64_3)\n\n temp = result >> 32n\n result ^= temp\n\n return result\n}\n","import { mergeUint8 } from \"@polkadot-api/utils\"\nimport { u64 } from \"scale-ts\"\nimport { h64 } from \"./h64\"\n\nexport const Twox128 = (input: Uint8Array): Uint8Array => {\n const result = new Uint8Array(16)\n const dv = new DataView(result.buffer)\n\n dv.setBigUint64(0, h64(input), true)\n dv.setBigUint64(8, h64(input, 1n), true)\n\n return result\n}\n\nexport const Twox256 = (input: Uint8Array): Uint8Array => {\n const result = new Uint8Array(32)\n const dv = new DataView(result.buffer)\n\n dv.setBigUint64(0, h64(input), true)\n dv.setBigUint64(8, h64(input, 1n), true)\n dv.setBigUint64(16, h64(input, 2n), true)\n dv.setBigUint64(24, h64(input, 3n), true)\n\n return result\n}\n\nexport const Twox64Concat = (encoded: Uint8Array): Uint8Array =>\n mergeUint8([u64.enc(h64(encoded)), encoded])\n","import { fromHex, mergeUint8, toHex } from \"@polkadot-api/utils\"\nimport type { Codec } from \"scale-ts\"\nimport {\n Blake2128,\n Blake2128Concat,\n Blake2256,\n Identity,\n Twox128,\n Twox256,\n Twox64Concat,\n} from \"./hashes\"\n\nexport type EncoderWithHash<T> = [Codec<T>, (input: Uint8Array) => Uint8Array]\n\nconst textEncoder = new TextEncoder()\n\n// the value indicates:\n// - when positive: the number of bytes to skip before reaching the transparent-encoded key\n// - when negative: the number of bytes that the opaque hasher will generate\nconst hashers: Map<(input: Uint8Array) => Uint8Array, number> = new Map([\n [Identity, 0],\n [Twox64Concat, 8],\n [Blake2128Concat, 16],\n [Blake2128, -16],\n [Blake2256, -32],\n [Twox128, -16],\n [Twox256, -32],\n])\n\nexport type OpaqueKeyHash = string & { __opaqueKeyHash?: unknown }\n\nexport const Storage = (pallet: string) => {\n const palledEncoded = Twox128(textEncoder.encode(pallet))\n return <A extends Array<EncoderWithHash<any>>>(\n name: string,\n ...encoders: [...A]\n ): {\n enc: (\n ...args: {\n [K in keyof A]: A[K] extends EncoderWithHash<infer V> ? V : unknown\n }\n ) => string\n dec: (value: string) => {\n [K in keyof A]: A[K] extends EncoderWithHash<infer V> ? V : unknown\n }\n } => {\n const palletItemEncoded = mergeUint8([\n palledEncoded,\n Twox128(textEncoder.encode(name)),\n ])\n\n const palletItemEncodedHex = toHex(palletItemEncoded)\n\n const dec = (\n key: string,\n ): {\n [K in keyof A]: A[K] extends EncoderWithHash<infer V> ? V : unknown\n } => {\n if (!key.startsWith(palletItemEncodedHex))\n throw new Error(`key does not match this storage (${pallet}.${name})`)\n\n if (encoders.length === 0) return [] as any\n\n const argsKey = fromHex(key.slice(palletItemEncodedHex.length))\n const result = new Array<any>(encoders.length)\n for (let i = 0, cur = 0; i < encoders.length; i++) {\n const [codec, hasher] = encoders[i]\n const hBytes = hashers.get(hasher)\n if (hBytes == null) throw new Error(\"Unknown hasher\")\n if (hBytes < 0) {\n const opaqueBytes = hBytes * -1\n result[i] = toHex(argsKey.slice(cur, cur + opaqueBytes))\n cur += opaqueBytes\n } else {\n cur += hBytes\n result[i] = codec.dec(argsKey.slice(cur))\n cur += codec.enc(result[i]).length\n }\n }\n return result as any\n }\n\n const fns = encoders.map(\n ([{ enc }, hash]) =>\n (val: any) =>\n hash(enc(val)),\n )\n\n const enc = (\n ...args: {\n [K in keyof A]: A[K] extends EncoderWithHash<infer V> ? V : unknown\n }\n ): string =>\n toHex(\n mergeUint8([\n palletItemEncoded,\n ...args.map((val, idx) => fns[idx](val)),\n ]),\n )\n\n return {\n enc,\n dec,\n }\n }\n}\n","import { mergeUint8 } from \"@polkadot-api/utils\"\nimport { Binary, compact, u16 } from \"../codecs\"\nimport { Blake2256 } from \"../hashes\"\n\nconst PREFIX = Binary.fromText(\"modlpy/utilisuba\").asBytes()\nexport const getMultisigAccountId = ({\n threshold,\n signatories,\n}: {\n threshold: number\n signatories: Uint8Array[]\n}) => {\n const sortedSignatories = sortMultisigSignatories(signatories)\n const payload = mergeUint8([\n PREFIX,\n compact.enc(sortedSignatories.length),\n ...sortedSignatories,\n u16.enc(threshold),\n ])\n return Blake2256(payload)\n}\n\nexport const sortMultisigSignatories = (signatories: Uint8Array[]) =>\n signatories.slice().sort((a, b) => {\n for (let i = 0; ; i++) {\n const overA = i >= a.length\n const overB = i >= b.length\n\n if (overA && overB) return 0\n else if (overA) return -1\n else if (overB) return 1\n else if (a[i] !== b[i]) return a[i] > b[i] ? 1 : -1\n }\n })\n","import { type HexString } from \"../codecs\"\n\nexport const TrieNodeHeaders = {\n Leaf: \"Leaf\",\n Branch: \"Branch\",\n BranchWithVal: \"BranchWithVal\",\n LeafWithHash: \"LeafWithHash\",\n BranchWithHash: \"BranchWithHash\",\n Empty: \"Empty\",\n Reserved: \"Reserved\",\n} as const\ntype TrieNodeHeaders = typeof TrieNodeHeaders\nexport type TrieNodeHeaderKey =\n (typeof TrieNodeHeaders)[keyof typeof TrieNodeHeaders]\n\nexport type Nibble =\n | \"0\"\n | \"1\"\n | \"2\"\n | \"3\"\n | \"4\"\n | \"5\"\n | \"6\"\n | \"7\"\n | \"8\"\n | \"9\"\n | \"a\"\n | \"b\"\n | \"c\"\n | \"d\"\n | \"e\"\n | \"f\"\n\nexport type TrieNode = { partialKey: string } & (\n | {\n type: TrieNodeHeaders[\"Empty\"] | TrieNodeHeaders[\"Reserved\"]\n }\n | {\n type: TrieNodeHeaders[\"Leaf\"] | TrieNodeHeaders[\"LeafWithHash\"]\n value: HexString\n }\n | ({ children: Record<Nibble, HexString> } & (\n | { type: TrieNodeHeaders[\"Branch\"] }\n | {\n type:\n | TrieNodeHeaders[\"BranchWithHash\"]\n | TrieNodeHeaders[\"BranchWithVal\"]\n value: HexString\n }\n ))\n)\nexport type ProofTrieNode = {\n hash: HexString\n parent?: HexString\n} & (TrieNode | { type: \"Raw\"; value: HexString })\n","import { createDecoder, Hex, u16, u8, type HexString } from \"../codecs\"\nimport { type TrieNodeHeaderKey, TrieNodeHeaders, type TrieNode } from \"./types\"\n\nconst varHex = Hex().dec\nconst allHex = Hex(Infinity).dec\nconst hex32 = Hex(32).dec\nconst byte = u8.dec\n\nconst getHeader = (\n bytes: Uint8Array,\n): { type: TrieNodeHeaderKey; partialKey: string } => {\n const firstByte = byte(bytes)\n\n let bitsLeft = 6\n const typeId = firstByte >> bitsLeft\n const type: TrieNodeHeaderKey = typeId\n ? typeId === 1\n ? TrieNodeHeaders.Leaf\n : typeId === 2\n ? TrieNodeHeaders.Branch\n : TrieNodeHeaders.BranchWithVal\n : firstByte >> --bitsLeft\n ? TrieNodeHeaders.LeafWithHash\n : firstByte >> --bitsLeft\n ? TrieNodeHeaders.BranchWithHash\n : firstByte\n ? TrieNodeHeaders.Reserved\n : TrieNodeHeaders.Empty\n\n let nNibles = firstByte & (0xff >> (8 - bitsLeft))\n if (nNibles === 2 ** bitsLeft - 1) {\n let current: number\n do nNibles += current = byte(bytes)\n while (current === 255)\n }\n\n return {\n type,\n partialKey: Hex(Math.ceil(nNibles / 2))\n .dec(bytes)\n .slice(nNibles % 2 ? 3 : 2),\n }\n}\n\nexport const trieNodeDec = createDecoder((bytes): TrieNode => {\n const header = getHeader(bytes)\n const { type } = header\n\n if (type === \"Empty\" || type === \"Reserved\") return header as TrieNode\n if (type === \"Leaf\" || type === \"LeafWithHash\")\n return {\n ...header,\n value: allHex(bytes),\n } as TrieNode\n\n const bitmap = u16.dec(bytes)\n const keys: string[] = []\n for (let i = 0; i < 16; i++) if ((bitmap >> i) & 1) keys.push(i.toString(16))\n\n let value: null | HexString = null\n if (type === \"BranchWithVal\") value = varHex(bytes)\n if (type === \"BranchWithHash\") value = hex32(bytes)\n\n const result: any = {\n ...header,\n children: Object.fromEntries(keys.map((key) => [key, varHex(bytes)])),\n }\n if (value !== null) result.value = value\n return result\n})\n","import { toHex } from \"@polkadot-api/utils\"\nimport { createDecoder, type HexString } from \"../codecs\"\nimport { trieNodeDec } from \"./node-decoder\"\nimport { Blake2256 } from \"@/hashes\"\nimport { type ProofTrieNode } from \"./types\"\n\nexport const TrieNodeWithHash = (hasher: (input: Uint8Array) => Uint8Array) =>\n createDecoder((input): ProofTrieNode => {\n const hash = toHex(hasher(new Uint8Array(input.buffer)))\n try {\n return {\n hash,\n ...trieNodeDec(input),\n }\n } catch {\n // Sometimes the proofs include random raw-values which are not trie-nodes\n return { type: \"Raw\", hash, value: \"\" }\n }\n })\n\nexport const validateProofs = <T extends HexString | Uint8Array>(\n proofs: Array<T>,\n hasher: (input: Uint8Array) => Uint8Array = Blake2256,\n): { rootHash: HexString; proofs: Record<HexString, ProofTrieNode> } | null => {\n const proofsList = proofs.map(TrieNodeWithHash(hasher))\n const proofsRecord = Object.fromEntries(proofsList.map((p) => [p.hash, p]))\n const hashes = proofsList.map((p) => p.hash)\n const roots = new Set(hashes)\n\n const setRawValue = (input: {\n type: \"Raw\"\n hash: HexString\n value: HexString\n }) => {\n if (input.value) return\n const val = proofs[hashes.indexOf(input.hash)!]\n input.value = typeof val === \"string\" ? val : toHex(val)\n }\n\n proofsList.forEach((p) => {\n if (\"children\" in p) {\n Object.values(p.children).forEach((hash) => {\n const child = proofsRecord[hash]\n if (child) {\n child.parent = p.hash\n roots.delete(hash)\n }\n })\n }\n\n if (p.type === \"BranchWithHash\" || p.type === \"LeafWithHash\") {\n const childHash = p.value\n const child = proofsRecord[childHash]\n if (!child) return\n\n roots.delete(childHash)\n if (child.type !== \"Raw\") {\n Object.keys(child).forEach((k) => delete (child as any)[k])\n ;(child as any).type = \"Raw\"\n child.hash = childHash\n }\n child.parent = p.hash\n setRawValue(child as any)\n }\n\n if (p.type === \"Raw\") setRawValue(p)\n })\n\n return roots.size === 1\n ? { rootHash: roots.values().next().value!, proofs: proofsRecord }\n : null\n}\n"],"names":["base58","blake2b","enhanceCodec","Bytes","textEncoder","textDecoder","Tuple","compact","toHex","mergeUint8","fromHex","enc","dec","Bin","createCodec","createDecoder","bitSequence","u8","OEnum","mapObject","keccak","OStruct","OTuple","OVector","OResult","OOption","_void","hex32","Vector","str","Option","Enum","Struct","u32","ty","hashers","extrinsic","lookup","pallets","len32","blake3","p","temp","u64","u16"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/utils/ss58-util.ts","../src/codecs/scale/AccountId.ts","../src/codecs/scale/Binary.ts","../src/codecs/scale/compact.ts","../src/codecs/scale/bitSequence.ts","../src/codecs/scale/char.ts","../src/codecs/scale/Hex.ts","../src/codecs/scale/fixed-str.ts","../src/codecs/scale/Self.ts","../src/types/enum.ts","../src/codecs/scale/with-inner.ts","../src/codecs/scale/Variant.ts","../src/hashes/blake2.ts","../src/hashes/blake3.ts","../src/hashes/identity.ts","../src/hashes/h64.ts","../src/hashes/twoX.ts","../src/hashes/keccak.ts","../src/codecs/scale/ethAccount.ts","../src/codecs/scale/shaped.ts","../src/codecs/scale/BitSeq.ts","../src/codecs/blockHeader.ts","../src/codecs/metadata/docs.ts","../src/codecs/metadata/lookup.ts","../src/codecs/metadata/deprecation.ts","../src/codecs/metadata/runtime-api.ts","../src/codecs/metadata/pallets.ts","../src/codecs/metadata/v14.ts","../src/codecs/metadata/v15.ts","../src/codecs/metadata/v16.ts","../src/codecs/metadata/metadata.ts","../src/codecs/metadata/unified.ts","../src/extrinsics/extrinsic-format.ts","../src/storage.ts","../src/utils/multisig.ts","../src/trie/types.ts","../src/trie/node-decoder.ts","../src/trie/proofs.ts"],"sourcesContent":["import { base58 } from \"@scure/base\"\nimport { blake2b } from \"@noble/hashes/blake2.js\"\n\nconst SS58_PREFIX = new TextEncoder().encode(\"SS58PRE\")\nconst CHECKSUM_LENGTH = 2\n\nexport type SS58String = string & { __SS58String?: unknown }\nexport type SS58AddressInfo =\n | { isValid: false }\n | { isValid: true; ss58Format: number; publicKey: Uint8Array }\n\nexport const getSs58AddressInfo = (address: SS58String): SS58AddressInfo => {\n try {\n const decoded = base58.decode(address)\n const prefixBytes = decoded.subarray(0, decoded[0] & 0b0100_0000 ? 2 : 1)\n const publicKey = decoded.subarray(\n prefixBytes.length,\n decoded.length - CHECKSUM_LENGTH,\n )\n\n const checksum = decoded.subarray(prefixBytes.length + publicKey.length)\n const expectedChecksum = blake2b(\n Uint8Array.of(...SS58_PREFIX, ...prefixBytes, ...publicKey),\n {\n dkLen: 64,\n },\n ).subarray(0, CHECKSUM_LENGTH)\n\n const isChecksumValid =\n checksum[0] === expectedChecksum[0] && checksum[1] === expectedChecksum[1]\n\n if (!isChecksumValid) return { isValid: false }\n\n return {\n isValid: true,\n ss58Format: prefixBytesToNumber(prefixBytes),\n publicKey: publicKey.slice(),\n }\n } catch (_) {\n return { isValid: false }\n }\n}\n\nconst prefixBytesToNumber = (bytes: Uint8Array) => {\n const dv = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength)\n return dv.byteLength === 1 ? dv.getUint8(0) : dv.getUint16(0)\n}\n\nexport const fromBufferToBase58 = (ss58Format: number) => {\n const prefixBytes =\n ss58Format < 64\n ? Uint8Array.of(ss58Format)\n : Uint8Array.of(\n ((ss58Format & 0b0000_0000_1111_1100) >> 2) | 0b0100_0000,\n (ss58Format >> 8) | ((ss58Format & 0b0000_0000_0000_0011) << 6),\n )\n\n return (publicKey: Uint8Array): SS58String => {\n const checksum = blake2b(\n Uint8Array.of(...SS58_PREFIX, ...prefixBytes, ...publicKey),\n {\n dkLen: 64,\n },\n ).subarray(0, CHECKSUM_LENGTH)\n return base58.encode(\n Uint8Array.of(...prefixBytes, ...publicKey, ...checksum),\n )\n }\n}\n","import { Bytes, enhanceCodec } from \"scale-ts\"\nimport {\n getSs58AddressInfo,\n SS58String,\n fromBufferToBase58,\n} from \"@/utils/ss58-util\"\n\nfunction fromBase58ToBuffer(nBytes: number, _ss58Format: number) {\n return (address: SS58String) => {\n const info = getSs58AddressInfo(address)\n if (!info.isValid) throw new Error(\"Invalid checksum\")\n const { publicKey } = info\n if (publicKey.length !== nBytes)\n throw new Error(\"Invalid public key length\")\n\n return publicKey\n }\n}\n\nexport const AccountId = (ss58Format: number = 42, nBytes: 32 | 33 = 32) =>\n enhanceCodec(\n Bytes(nBytes),\n fromBase58ToBuffer(nBytes, ss58Format),\n fromBufferToBase58(ss58Format),\n )\n","import {\n Bytes,\n Codec,\n Decoder,\n Encoder,\n Tuple,\n compact,\n createCodec,\n} from \"scale-ts\"\nimport { fromHex, mergeUint8, toHex } from \"@polkadot-api/utils\"\nimport type { HexString } from \"./Hex\"\nimport { SS58String } from \"@/utils\"\nimport { AccountId } from \"./AccountId\"\n\nconst textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder()\nconst opaqueBytesDec = Tuple(compact, Bytes(Infinity))[1]\n\nexport class Binary {\n #bytes: Uint8Array\n #opaqueBytes: Uint8Array | null = null\n #hex: HexString | null = null\n #opaqueHex: HexString | null = null\n #str: string | null = null\n\n constructor(data: Uint8Array, opaque = false) {\n if (opaque) {\n try {\n const [len, bytes] = opaqueBytesDec(data)\n if (len === bytes.length) {\n this.#bytes = bytes\n this.#opaqueBytes = data\n return\n }\n } catch (_) {}\n throw new Error(\"Invalid opaque bytes\")\n } else this.#bytes = data\n }\n\n asText = () => (this.#str ??= textDecoder.decode(this.#bytes))\n\n asHex = () => (this.#hex ||= toHex(this.#bytes))\n asOpaqueHex = () => (this.#opaqueHex ||= toHex(this.asBytes()))\n\n asBytes = () => this.#bytes\n asOpaqueBytes = () =>\n (this.#opaqueBytes ||= mergeUint8([\n this.#bytes,\n compact[0](this.#bytes.length),\n ]))\n\n static fromText(input: string): Binary {\n return new this(textEncoder.encode(input))\n }\n\n static fromHex(input: HexString): Binary {\n return new this(fromHex(input))\n }\n static fromOpaqueHex(input: HexString): Binary {\n return new this(fromHex(input), true)\n }\n\n static fromBytes(input: Uint8Array): Binary {\n return new this(input)\n }\n static fromOpaqueBytes(input: Uint8Array): Binary {\n return new this(input, true)\n }\n}\n\nconst [accountIdEncoder] = AccountId()\nexport class FixedSizeBinary<_L extends number> extends Binary {\n constructor(data: Uint8Array) {\n super(data)\n }\n\n static fromArray<L extends number, I extends Array<number> & { length: L }>(\n input: I,\n ) {\n return new this<L>(new Uint8Array(input))\n }\n\n static fromAccountId32<L extends number>(\n input: L extends 32 ? SS58String : never,\n ) {\n return new this<L>(accountIdEncoder(input))\n }\n}\n\nconst enc = (nBytes?: number): Encoder<Binary> => {\n const _enc = Bytes.enc(nBytes)\n return (value) => _enc(value.asBytes())\n}\n\nconst dec = (nBytes?: number): Decoder<Binary> => {\n const _dec = Bytes.dec(nBytes)\n const Bin = nBytes == null ? Binary : FixedSizeBinary\n return (value) => Bin.fromBytes(_dec(value))\n}\n\nexport const Bin = (nBytes?: number): Codec<Binary> =>\n createCodec(enc(nBytes), dec(nBytes))\n\nBin.enc = enc\nBin.dec = dec\n","import { compact, enhanceCodec } from \"scale-ts\"\n\nexport const compactNumber = enhanceCodec(compact, (v) => v, Number)\nexport const compactBn = enhanceCodec(compact, (v) => v, BigInt)\n","import { Bytes, Decoder, Encoder, createCodec, createDecoder } from \"scale-ts\"\nimport { compactNumber } from \"./compact\"\n\nexport interface BitSequence {\n bitsLen: number\n bytes: Uint8Array\n}\n\nconst bitSequenceDecoder: Decoder<BitSequence> = createDecoder((data) => {\n const bitsLen = compactNumber.dec(data)\n\n const bytesLen = Math.ceil(bitsLen / 8)\n const bytes = Bytes(bytesLen).dec(data)\n return { bytes, bitsLen }\n})\n\nconst bitSequenceEncoder: Encoder<BitSequence> = (input) => {\n if (input.bitsLen > input.bytes.length * 8)\n throw new Error(\n `Not enough bytes. (bitsLen:${input.bitsLen}, bytesLen:${input.bytes.length})`,\n )\n\n const lenEncoded = compactNumber.enc(input.bitsLen)\n const result = new Uint8Array(input.bytes.length + lenEncoded.length)\n result.set(lenEncoded, 0)\n result.set(input.bytes, lenEncoded.length)\n return result\n}\n\nexport const bitSequence = createCodec(bitSequenceEncoder, bitSequenceDecoder)\n","import { enhanceCodec, u8 } from \"scale-ts\"\n\nexport const char = enhanceCodec(\n u8,\n (str: string) => str.charCodeAt(0),\n String.fromCharCode,\n)\n","import { fromHex, toHex } from \"@polkadot-api/utils\"\nimport { Bytes, Codec, Decoder, Encoder, createCodec } from \"scale-ts\"\n\nexport type HexString = string & { __hexString?: unknown }\n\nconst enc = (nBytes?: number): Encoder<HexString> => {\n const _enc = Bytes.enc(nBytes)\n return (value: string) => _enc(fromHex(value))\n}\n\nconst dec = (nBytes?: number): Decoder<HexString> => {\n const _dec = Bytes.dec(nBytes)\n return (value) => toHex(_dec(value)) as HexString\n}\n\nexport const Hex = (nBytes?: number): Codec<HexString> =>\n createCodec(enc(nBytes), dec(nBytes))\n\nHex.enc = enc\nHex.dec = dec\n","import { Bytes, enhanceCodec } from \"scale-ts\"\n\nexport const textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder()\n\nexport const fixedStr = (nBytes: number) =>\n enhanceCodec(\n Bytes(nBytes),\n (str: string) => textEncoder.encode(str),\n (bytes) => textDecoder.decode(bytes),\n )\n","import { Codec, Decoder, Encoder, createCodec, _void } from \"scale-ts\"\n\nexport const selfEncoder = <T>(value: () => Encoder<T>): Encoder<T> => {\n let cache: Encoder<T> = (x) => {\n const encoder = value()\n cache = encoder\n return encoder(x)\n }\n\n return (x) => cache(x)\n}\n\nexport const selfDecoder = <T>(value: () => Decoder<T>): Decoder<T> => {\n let cache: Decoder<T> = (x) => {\n const decoder = value()\n const result = decoder\n cache = decoder\n return result(x)\n }\n\n return (x) => cache(x)\n}\n\nexport const Self = <T>(value: () => Codec<T>): Codec<T> =>\n createCodec(\n selfEncoder(() => value().enc),\n selfDecoder(() => value().dec),\n )\n","export type Enum<T extends {}> = {\n [K in keyof T & string]: {\n type: K\n value: T[K]\n }\n}[keyof T & string]\n\nexport type EnumVariant<\n T extends { type: string; value?: any },\n K extends T[\"type\"],\n> = T & {\n type: K\n}\n\nexport type ExtractEnumValue<\n T extends { type: string; value?: any },\n K extends string,\n> = EnumVariant<T, K>[\"value\"]\n\ntype ValueArg<V> = undefined extends V ? [value?: V] : [value: V]\n\ninterface Discriminant {\n is<T extends { type: string; value: any }, K extends T[\"type\"]>(\n value: T,\n type: K,\n ): value is T & { type: K }\n as<T extends { type: string; value: any }, K extends T[\"type\"]>(\n value: T,\n type: K,\n ): ExtractEnumValue<T, K>\n}\nconst discriminant: Discriminant = {\n is<T extends { type: string; value: any }, K extends T[\"type\"]>(\n value: T,\n type: K,\n ): value is T & { type: K } {\n return value.type === type\n },\n as(value, type) {\n if (type !== value.type)\n throw new Error(\n `Enum.as(enum, ${type}) used with actual type ${value.type}`,\n )\n return value\n },\n}\ninterface EnumFn extends Discriminant {\n <T extends { type: string; value: any }, K extends T[\"type\"]>(\n type: K,\n ...[value]: ValueArg<ExtractEnumValue<T, K>>\n ): EnumVariant<T, K>\n}\nexport const Enum: EnumFn = Object.assign((type: string, value?: any) => {\n return {\n type,\n value,\n } as any\n}, discriminant)\n\n// well-known enums\nexport type GetEnum<T extends Enum<any>> = {\n [K in T[\"type\"]]: (\n ...args: ExtractEnumValue<T, K> extends undefined\n ? []\n : [value: ExtractEnumValue<T, K>]\n ) => EnumVariant<T, K>\n}\nexport const _Enum = new Proxy(\n {},\n {\n get(_, prop: string) {\n return (value: string) => Enum(prop, value)\n },\n },\n)\n\n// type Bar = Enum<{\n// Kaka: 1\n// Bar: 2\n// }>\n\n// type FooInput = Enum<{\n// foo: \"foo\" | undefined\n// bar: Bar\n// baz: number\n// wtf: boolean\n// }>\n\n// declare function foo(foo: FooInput): void\n// foo(Enum(\"bar\", Enum(\"Bar\", 2)))\n\n// const InputEnum: GetEnum<FooInput> = null as any;\n// InputEnum.bar(Enum('Bar', 2))\n","export const withInner = <T, I>(codec: T, inner: I): T & { inner: I } => {\n const result: T & { inner: I } = codec as any\n result.inner = inner\n return result\n}\n","import {\n Codec,\n CodecType,\n Decoder,\n DecoderType,\n Encoder,\n EncoderType,\n Enum as OEnum,\n StringRecord,\n createCodec,\n} from \"scale-ts\"\nimport { mapObject } from \"@polkadot-api/utils\"\nimport { Enum } from \"@/types/enum\"\nimport { withInner } from \"./with-inner\"\n\ntype Tuple<T, N extends number> = readonly [T, ...T[]] & { length: N }\n\ntype Push<T extends any[], V> = [...T, V]\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (\n k: infer I,\n) => void\n ? I\n : never\n\ntype LastOf<T> =\n UnionToIntersection<T extends any ? () => T : never> extends () => infer R\n ? R\n : never\n\ntype TuplifyUnion<\n T,\n L = LastOf<T>,\n N = [T] extends [never] ? true : false,\n> = true extends N ? [] : Push<TuplifyUnion<Exclude<T, L>>, L>\n\ntype RestrictedLenTuple<T, O extends StringRecord<any>> = Tuple<\n T,\n TuplifyUnion<keyof O> extends Tuple<any, infer V> ? V : 0\n>\n\nconst VariantEnc: <O extends StringRecord<Encoder<any>>>(\n inner: O,\n x?: RestrictedLenTuple<number, O> | undefined,\n) => Encoder<\n Enum<{\n [K in keyof O]: EncoderType<O[K]>\n }>\n> & { inner: O } = (...args) => {\n const enc = OEnum.enc(...(args as [any, any]))\n return withInner((v: any) => enc({ tag: v.type, value: v.value }), args[0])\n}\n\nconst VariantDec: <O extends StringRecord<Decoder<any>>>(\n inner: O,\n x?: RestrictedLenTuple<number, O> | undefined,\n) => Decoder<\n Enum<{\n [K in keyof O]: DecoderType<O[K]>\n }>\n> & { inner: O } = (...args) => {\n const dec = OEnum.dec(...(args as [any]))\n return withInner((v: any) => {\n const { tag, value } = dec(v)\n return Enum(tag as any, value as any) as any\n }, args[0])\n}\n\nexport const Variant: {\n <O extends StringRecord<Codec<any>>>(\n inner: O,\n indexes?: RestrictedLenTuple<number, O> | undefined,\n ): Codec<\n Enum<{\n [K in keyof O]: CodecType<O[K]>\n }>\n > & { inner: O }\n enc: <O_1 extends StringRecord<Encoder<any>>>(\n inner: O_1,\n x?: RestrictedLenTuple<number, O_1> | undefined,\n ) => Encoder<\n Enum<{\n [K in keyof O_1]: EncoderType<O_1[K]>\n }>\n > & { inner: O_1 }\n dec: <O_2 extends StringRecord<Decoder<any>>>(\n inner: O_2,\n x?: RestrictedLenTuple<number, O_2> | undefined,\n ) => Decoder<\n Enum<{\n [K in keyof O_2]: DecoderType<O_2[K]>\n }>\n > & { inner: O_2 }\n} = (inner, ...args) =>\n withInner(\n createCodec(\n VariantEnc(\n mapObject(inner, ([encoder]) => encoder) as any,\n ...(args as any[]),\n ),\n VariantDec(\n mapObject(inner, ([, decoder]) => decoder) as any,\n ...(args as any[]),\n ) as any,\n ),\n inner,\n ) as any\nVariant.enc = VariantEnc\nVariant.dec = VariantDec\n\nexport const ScaleEnum: {\n <O extends StringRecord<Codec<any>>>(\n inner: O,\n indexes?: RestrictedLenTuple<number, O> | undefined,\n ): Codec<\n {\n [K in keyof O]: {\n tag: K\n value: CodecType<O[K]>\n }\n }[keyof O]\n > & { inner: O }\n enc: <O_1 extends StringRecord<Encoder<any>>>(\n inner: O_1,\n x?: RestrictedLenTuple<number, O_1> | undefined,\n ) => Encoder<\n {\n [K_1 in keyof O_1]: {\n tag: K_1\n value: EncoderType<O_1[K_1]>\n }\n }[keyof O_1]\n > & { inner: O_1 }\n dec: <O_2 extends StringRecord<Decoder<any>>>(\n inner: O_2,\n x?: RestrictedLenTuple<number, O_2> | undefined,\n ) => Decoder<\n {\n [K_2 in keyof O_2]: {\n tag: K_2\n value: DecoderType<O_2[K_2]>\n }\n }[keyof O_2]\n > & { inner: O_2 }\n} = (inner, ...args) => withInner(OEnum(inner, ...(args as any[])), inner)\nScaleEnum.enc = (inner, ...rest) =>\n withInner(OEnum.enc(inner, ...(rest as any[])), inner)\nScaleEnum.dec = (inner, ...rest) =>\n withInner(OEnum.dec(inner, ...(rest as any[])), inner)\n","import { mergeUint8 } from \"@polkadot-api/utils\"\nimport { blake2b } from \"@noble/hashes/blake2.js\"\n\nconst len32 = { dkLen: 32 }\nexport const Blake2256 = (encoded: Uint8Array) => blake2b(encoded, len32)\n\nconst len16 = { dkLen: 16 }\nexport const Blake2128 = (encoded: Uint8Array) => blake2b(encoded, len16)\n\nexport const Blake2128Concat = (encoded: Uint8Array) =>\n mergeUint8([Blake2128(encoded), encoded])\n","import { mergeUint8 } from \"@polkadot-api/utils\"\nimport { blake3 } from \"@noble/hashes/blake3.js\"\n\nconst len32 = { dkLen: 32 }\nexport const Blake3256 = (encoded: Uint8Array) => blake3(encoded, len32)\n\nexport const Blake3256Concat = (encoded: Uint8Array) =>\n mergeUint8([Blake3256(encoded), encoded])\n","export const Identity = (encoded: Uint8Array): Uint8Array => encoded\n","// Adapted implementation based on: https://github.com/pierrec/js-xxhash/blob/7ff5ced282f97dba121109d7013e0fa80360398c/lib/xxhash64.js\n\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n\n// helper functions\nconst bigintFromU16 = (\n v0: number,\n v1: number,\n v2: number,\n v3: number,\n): bigint =>\n new DataView(new Uint16Array([v0, v1, v2, v3]).buffer).getBigUint64(0, true)\n\nconst MASK_64 = 2n ** 64n - 1n\n\nconst rotl = (input: bigint, nBits: bigint) =>\n ((input << nBits) & MASK_64) | (input >> (64n - nBits))\n\nconst multiply = (a: bigint, b: bigint) => (a * b) & MASK_64\n\nconst add = (a: bigint, b: bigint) => (a + b) & MASK_64\n\n// constants\nconst PRIME64_1 = 11400714785074694791n\nconst PRIME64_2 = 14029467366897019727n\nconst PRIME64_3 = 1609587929392839161n\nconst PRIME64_4 = 9650029242287828579n\nconst PRIME64_5 = 2870177450012600261n\n\nexport function h64(input: Uint8Array, seed: bigint = 0n) {\n let v1 = add(add(seed, PRIME64_1), PRIME64_2)\n let v2 = add(seed, PRIME64_2)\n let v3 = seed\n let v4 = seed - PRIME64_1\n let totalLen = input.length\n let memsize = 0\n let memory: Uint8Array | null = null\n\n ;(function update() {\n let p = 0\n let bEnd = p + totalLen\n\n if (!totalLen) return\n\n memory = new Uint8Array(32)\n\n if (totalLen < 32) {\n memory.set(input.subarray(0, totalLen), memsize)\n\n memsize += totalLen\n return\n }\n\n if (p <= bEnd - 32) {\n const limit = bEnd - 32\n\n do {\n let other\n other = bigintFromU16(\n (input[p + 1] << 8) | input[p],\n (input[p + 3] << 8) | input[p + 2],\n (input[p + 5] << 8) | input[p + 4],\n (input[p + 7] << 8) | input[p + 6],\n )\n v1 = multiply(rotl(add(v1, multiply(other, PRIME64_2)), 31n), PRIME64_1)\n p += 8\n other = bigintFromU16(\n (input[p + 1] << 8) | input[p],\n (input[p + 3] << 8) | input[p + 2],\n (input[p + 5] << 8) | input[p + 4],\n (input[p + 7] << 8) | input[p + 6],\n )\n\n v2 = multiply(rotl(add(v2, multiply(other, PRIME64_2)), 31n), PRIME64_1)\n p += 8\n other = bigintFromU16(\n (input[p + 1] << 8) | input[p],\n (input[p + 3] << 8) | input[p + 2],\n (input[p + 5] << 8) | input[p + 4],\n (input[p + 7] << 8) | input[p + 6],\n )\n\n v3 = multiply(rotl(add(v3, multiply(other, PRIME64_2)), 31n), PRIME64_1)\n p += 8\n other = bigintFromU16(\n (input[p + 1] << 8) | input[p],\n (input[p + 3] << 8) | input[p + 2],\n (input[p + 5] << 8) | input[p + 4],\n (input[p + 7] << 8) | input[p + 6],\n )\n v4 = multiply(rotl(add(v4, multiply(other, PRIME64_2)), 31n), PRIME64_1)\n p += 8\n } while (p <= limit)\n }\n\n if (p < bEnd) {\n memory.set(input.subarray(p, bEnd), memsize)\n memsize = bEnd - p\n }\n })()\n\n input = memory || input\n\n let result: bigint\n let p = 0\n\n if (totalLen >= 32) {\n result = rotl(v1, 1n)\n result = add(result, rotl(v2, 7n))\n result = add(result, rotl(v3, 12n))\n result = add(result, rotl(v4, 18n))\n\n v1 = multiply(rotl(multiply(v1, PRIME64_2), 31n), PRIME64_1)\n result = result ^ v1\n result = add(multiply(result, PRIME64_1), PRIME64_4)\n\n v2 = multiply(rotl(multiply(v2, PRIME64_2), 31n), PRIME64_1)\n result = result ^ v2\n result = add(multiply(result, PRIME64_1), PRIME64_4)\n\n v3 = multiply(rotl(multiply(v3, PRIME64_2), 31n), PRIME64_1)\n result = result ^ v3\n result = add(multiply(result, PRIME64_1), PRIME64_4)\n\n v4 = multiply(rotl(multiply(v4, PRIME64_2), 31n), PRIME64_1)\n result = result ^ v4\n result = add(multiply(result, PRIME64_1), PRIME64_4)\n } else {\n result = add(seed, PRIME64_5)\n }\n\n result = add(result, BigInt(totalLen))\n\n while (p <= memsize - 8) {\n let temp = bigintFromU16(\n (input[p + 1] << 8) | input[p],\n (input[p + 3] << 8) | input[p + 2],\n (input[p + 5] << 8) | input[p + 4],\n (input[p + 7] << 8) | input[p + 6],\n )\n temp = multiply(rotl(multiply(temp, PRIME64_2), 31n), PRIME64_1)\n result = add(multiply(rotl(result ^ temp, 27n), PRIME64_1), PRIME64_4)\n p += 8\n }\n\n if (p + 4 <= memsize) {\n let temp = multiply(\n bigintFromU16(\n (input[p + 1] << 8) | input[p],\n (input[p + 3] << 8) | input[p + 2],\n 0,\n 0,\n ),\n PRIME64_1,\n )\n\n result = add(multiply(rotl(result ^ temp, 23n), PRIME64_2), PRIME64_3)\n p += 4\n }\n\n while (p < memsize) {\n const temp = multiply(bigintFromU16(input[p++], 0, 0, 0), PRIME64_5)\n result = multiply(rotl(result ^ temp, 11n), PRIME64_1)\n }\n\n let temp = result >> 33n\n result = multiply(result ^ temp, PRIME64_2)\n\n temp = result >> 29n\n result = multiply(result ^ temp, PRIME64_3)\n\n temp = result >> 32n\n result ^= temp\n\n return result\n}\n","import { mergeUint8 } from \"@polkadot-api/utils\"\nimport { u64 } from \"scale-ts\"\nimport { h64 } from \"./h64\"\n\nexport const Twox128 = (input: Uint8Array): Uint8Array => {\n const result = new Uint8Array(16)\n const dv = new DataView(result.buffer)\n\n dv.setBigUint64(0, h64(input), true)\n dv.setBigUint64(8, h64(input, 1n), true)\n\n return result\n}\n\nexport const Twox256 = (input: Uint8Array): Uint8Array => {\n const result = new Uint8Array(32)\n const dv = new DataView(result.buffer)\n\n dv.setBigUint64(0, h64(input), true)\n dv.setBigUint64(8, h64(input, 1n), true)\n dv.setBigUint64(16, h64(input, 2n), true)\n dv.setBigUint64(24, h64(input, 3n), true)\n\n return result\n}\n\nexport const Twox64Concat = (encoded: Uint8Array): Uint8Array =>\n mergeUint8([u64.enc(h64(encoded)), encoded])\n","import { keccak_256 } from \"@noble/hashes/sha3.js\"\n\nexport const Keccak256: (input: Uint8Array) => Uint8Array = keccak_256\n","import { fromHex, toHex } from \"@polkadot-api/utils\"\nimport { Bytes, createCodec, createDecoder } from \"scale-ts\"\nimport { Keccak256 } from \"../../hashes\"\nimport { textEncoder } from \"./fixed-str\"\n\nconst getFormattedAddress = (hexAddress: string) => {\n const nonChecksum = hexAddress.slice(2)\n const hashedAddress = toHex(Keccak256(textEncoder.encode(nonChecksum))).slice(\n 2,\n )\n const result = new Array(40)\n\n for (let i = 0; i < 40; i++) {\n const checksumVal = parseInt(hashedAddress[i], 16)\n const char = nonChecksum[i]\n result[i] = checksumVal > 7 ? char.toUpperCase() : char\n }\n\n return `0x${result.join(\"\")}`\n}\n\nconst bytes20Dec = Bytes(20)[1]\n\nexport const ethAccount = createCodec<string>(\n (input: string) => {\n const bytes = fromHex(input)\n if (bytes.length !== 20)\n throw new Error(`Invalid length found on EthAddress(${input})`)\n\n const hexAddress = toHex(bytes)\n if (input === hexAddress || input === hexAddress.toUpperCase()) return bytes\n\n if (getFormattedAddress(hexAddress) !== input)\n throw new Error(`Invalid checksum found on EthAddress(${input})`)\n\n return bytes\n },\n createDecoder((bytes) => getFormattedAddress(toHex(bytes20Dec(bytes)))),\n)\n","import {\n Struct as OStruct,\n Tuple as OTuple,\n Vector as OVector,\n Result as OResult,\n Option as OOption,\n Codec,\n Encoder,\n Decoder,\n StringRecord,\n CodecType,\n EncoderType,\n DecoderType,\n ResultPayload,\n} from \"scale-ts\"\nimport { withInner } from \"./with-inner\"\n\nexport const Struct: {\n <A extends StringRecord<Codec<any>>>(\n codecs: A,\n ): Codec<{ [K in keyof A]: CodecType<A[K]> }> & { inner: A }\n enc: <A_1 extends StringRecord<Encoder<any>>>(\n encoders: A_1,\n ) => Encoder<{ [K_1 in keyof A_1]: EncoderType<A_1[K_1]> }> & { inner: A_1 }\n dec: <A_2 extends StringRecord<Decoder<any>>>(\n decoders: A_2,\n ) => Decoder<{ [K_2 in keyof A_2]: DecoderType<A_2[K_2]> }> & { inner: A_2 }\n} = (codecs) => withInner(OStruct(codecs), codecs)\nStruct.enc = (x) => withInner(OStruct.enc(x), x)\nStruct.dec = (x) => withInner(OStruct.dec(x), x)\n\nexport const Tuple: {\n <A extends Codec<any>[]>(\n ...inner: A\n ): Codec<{ [K in keyof A]: A[K] extends Codec<infer D> ? D : unknown }> & {\n inner: A\n }\n enc: <A_1 extends Encoder<any>[]>(\n ...encoders: A_1\n ) => Encoder<{\n [K_1 in keyof A_1]: A_1[K_1] extends Encoder<infer D_1> ? D_1 : unknown\n }> & { inner: A_1 }\n dec: <A_2 extends Decoder<any>[]>(\n ...decoders: A_2\n ) => Decoder<{\n [K_2 in keyof A_2]: A_2[K_2] extends Decoder<infer D_2> ? D_2 : unknown\n }> & { inner: A_2 }\n} = (...inner) => withInner(OTuple(...inner), inner)\nTuple.enc = (...inner) => withInner(OTuple.enc(...inner), inner)\nTuple.dec = (...inner) => withInner(OTuple.dec(...inner), inner)\n\nexport const Vector: {\n <T>(\n inner: Codec<T>,\n size?: number | undefined,\n ): Codec<T[]> & { inner: Codec<T> }\n enc: <T_1>(\n inner: Encoder<T_1>,\n size?: number | undefined,\n ) => Encoder<T_1[]> & { inner: Encoder<T_1> }\n dec: <T_2>(\n getter: Decoder<T_2>,\n size?: number | undefined,\n ) => Decoder<T_2[]> & { inner: Decoder<T_2> }\n} = (inner, ...rest) => withInner(OVector(inner, ...rest), inner)\nVector.enc = (inner, ...rest) => withInner(OVector.enc(inner, ...rest), inner)\nVector.dec = (inner, ...rest) => withInner(OVector.dec(inner, ...rest), inner)\n\nexport const Result: {\n <OK, KO>(\n okCodec: Codec<OK>,\n koCodec: Codec<KO>,\n ): Codec<ResultPayload<OK, KO>> & { inner: { ok: Codec<OK>; ko: Codec<KO> } }\n dec: <OK_1, KO_1>(\n okDecoder: Decoder<OK_1>,\n koDecoder: Decoder<KO_1>,\n ) => Decoder<ResultPayload<OK_1, KO_1>> & {\n inner: { ok: Decoder<OK_1>; ko: Decoder<KO_1> }\n }\n enc: <OK_2, KO_2>(\n okEncoder: Encoder<OK_2>,\n koEncoder: Encoder<KO_2>,\n ) => Encoder<ResultPayload<OK_2, KO_2>> & {\n inner: { ok: Encoder<OK_2>; ko: Encoder<KO_2> }\n }\n} = (ok, ko) => withInner(OResult(ok, ko), { ok, ko })\nResult.enc = (ok, ko) => withInner(OResult.enc(ok, ko), { ok, ko })\nResult.dec = (ok, ko) => withInner(OResult.dec(ok, ko), { ok, ko })\n\nexport const Option: {\n <T>(inner: Codec<T>): Codec<T | undefined> & { inner: Codec<T> }\n enc: <T_1>(\n inner: Encoder<T_1>,\n ) => Encoder<T_1 | undefined> & { inner: Encoder<T_1> }\n dec: <T_2>(\n inner: Decoder<T_2>,\n ) => Decoder<T_2 | undefined> & { inner: Decoder<T_2> }\n} = (inner) => withInner(OOption(inner), inner)\nOption.enc = (inner) => withInner(OOption.enc(inner), inner)\nOption.dec = (inner) => withInner(OOption.dec(inner), inner)\n","import {\n Bytes,\n Codec,\n Decoder,\n Encoder,\n createCodec,\n createDecoder,\n} from \"scale-ts\"\nimport { compactNumber } from \"./compact\"\nimport { mergeUint8 } from \"@polkadot-api/utils\"\n\nexport type BitSeq = Array<0 | 1>\n\nconst dec: (isLsb?: boolean) => Decoder<BitSeq> = (isLsb = true) =>\n createDecoder((data) => {\n const bitsLen = compactNumber.dec(data)\n const bytesLen = Math.ceil(bitsLen / 8)\n const bytes = Bytes(bytesLen).dec(data)\n\n const result = new Array<0 | 1>(bitsLen)\n let resultIdx = 0\n bytes.forEach((val) => {\n for (let i = 0; i < 8 && resultIdx < bitsLen; i++) {\n const actualIdx = isLsb ? i : 7 - i\n result[resultIdx++] = ((val >> actualIdx) & 1) as 1 | 0\n }\n })\n return result\n })\n\nconst enc: (isLsb?: boolean) => Encoder<BitSeq> =\n (isLsb = true) =>\n (input) => {\n const lenEncoded = compactNumber.enc(input.length)\n const nBytes = Math.ceil(input.length / 8)\n\n const bytes = new Uint8Array(nBytes)\n for (let byteIdx = 0; byteIdx < nBytes; byteIdx++) {\n let inputIdx = byteIdx * 8\n let byte = 0\n for (let i = 0; i < 8 && inputIdx < input.length; i++, inputIdx++)\n byte |= input[inputIdx] << (isLsb ? i : 7 - i)\n bytes[byteIdx] = byte\n }\n\n return mergeUint8([lenEncoded, bytes])\n }\n\nexport const BitSeq = (isLsb?: boolean): Codec<BitSeq> =>\n createCodec(enc(isLsb), dec(isLsb))\n\nBitSeq.enc = enc\nBitSeq.dec = dec\n","import {\n Bytes,\n CodecType,\n Struct,\n Vector,\n _void,\n enhanceCodec,\n Hex,\n Variant,\n compactNumber,\n} from \"./scale\"\n\nconst textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder()\n\nconst fourChars = enhanceCodec(\n Bytes(4),\n textEncoder.encode.bind(textEncoder),\n textDecoder.decode.bind(textDecoder),\n)\n\nconst diggestVal = Struct({\n engine: fourChars,\n payload: Hex(),\n})\n\nconst diggest = Variant(\n {\n other: Bytes(),\n consensus: diggestVal,\n seal: diggestVal,\n preRuntime: diggestVal,\n runtimeUpdated: _void,\n },\n [0, 4, 5, 6, 8],\n)\n\nconst hex32 = Hex(32)\nexport const blockHeader = Struct({\n parentHash: hex32,\n number: compactNumber,\n stateRoot: hex32,\n extrinsicRoot: hex32,\n digests: Vector(diggest),\n})\n\nexport type BlockHeader = CodecType<typeof blockHeader>\n","import { Vector, str } from \"scale-ts\"\n\nexport const docs = Vector(str)\n","import { compactNumber } from \"../scale/compact\"\nimport {\n CodecType,\n Enum,\n Option,\n Struct,\n Vector,\n _void,\n str,\n u32,\n u8,\n} from \"scale-ts\"\nimport { docs } from \"./docs\"\n\nconst oStr = Option(str)\n\nconst primitive = Enum({\n bool: _void,\n char: _void,\n str: _void,\n u8: _void,\n u16: _void,\n u32: _void,\n u64: _void,\n u128: _void,\n u256: _void,\n i8: _void,\n i16: _void,\n i32: _void,\n i64: _void,\n i128: _void,\n i256: _void,\n})\n\nconst fields = Vector(\n Struct({\n name: oStr,\n type: compactNumber,\n typeName: oStr,\n docs,\n }),\n)\n\nconst arr = Struct({\n len: u32,\n type: compactNumber,\n})\n\nconst bitSequence = Struct({\n bitStoreType: compactNumber,\n bitOrderType: compactNumber,\n})\n\nconst variant = Vector(\n Struct({\n name: str,\n fields,\n index: u8,\n docs,\n }),\n)\n\nconst def = Enum({\n composite: fields,\n variant,\n sequence: compactNumber,\n array: arr,\n tuple: Vector(compactNumber),\n primitive,\n compact: compactNumber,\n bitSequence,\n})\n\nconst param = Struct({\n name: str,\n type: Option(compactNumber),\n})\nconst params = Vector(param)\n\nconst entry = Struct({\n id: compactNumber,\n path: docs,\n params,\n def,\n docs,\n})\n\nexport const lookup = Vector(entry)\nexport type V14Lookup = CodecType<typeof lookup>\n","import { _void, Enum, Option, str, Struct, u8, Vector } from \"scale-ts\"\n\nexport const itemDeprecation = Enum({\n NotDeprecated: _void,\n DeprecatedWithoutNote: _void,\n Deprecated: Struct({\n note: str,\n since: Option(str),\n }),\n})\n\nexport const variantDeprecation = Vector(\n Struct({\n index: u8,\n deprecation: Enum(\n {\n DeprecatedWithoutNote: _void,\n Deprecated: Struct({\n note: str,\n since: Option(str),\n }),\n },\n [1, 2],\n ),\n }),\n)\n","import { Struct, Vector, str } from \"scale-ts\"\nimport { docs } from \"./docs\"\nimport { compactNumber, Hex, compactNumber as ty } from \"../scale\"\nimport { itemDeprecation } from \"./deprecation\"\n\nexport const runtimeApiMethod = {\n name: str,\n inputs: Vector(\n Struct({\n name: str,\n type: ty,\n }),\n ),\n output: ty,\n docs,\n}\n\nexport const runtimeApiV15 = Struct({\n name: str,\n methods: Vector(Struct(runtimeApiMethod)),\n docs,\n})\n\nexport const runtimeApi = Struct({\n name: str,\n methods: Vector(\n Struct({ ...runtimeApiMethod, deprecationInfo: itemDeprecation }),\n ),\n docs,\n version: compactNumber,\n deprecationInfo: itemDeprecation,\n})\n\nexport const viewFunction = Struct({\n id: Hex(32),\n ...runtimeApiMethod,\n deprecationInfo: itemDeprecation,\n})\n","import { Hex, compactNumber } from \"@/codecs/scale\"\nimport { Struct, Option, Vector, u8, str, Enum, _void } from \"scale-ts\"\nimport { docs } from \"./docs\"\nimport { itemDeprecation, variantDeprecation } from \"./deprecation\"\nimport { viewFunction } from \"./runtime-api\"\n\nconst hashType = Enum({\n Blake2128: _void,\n Blake2256: _void,\n Blake2128Concat: _void,\n Twox128: _void,\n Twox256: _void,\n Twox64Concat: _void,\n Identity: _void,\n})\n\nconst hashers = Vector(hashType)\n\nexport const storageMap = Struct({\n hashers,\n key: compactNumber,\n value: compactNumber,\n})\n\nconst storageItem = {\n name: str,\n modifier: u8,\n type: Enum({\n plain: compactNumber,\n map: storageMap,\n }),\n fallback: Hex(),\n docs,\n}\n\nconst enumRefV14 = Option(compactNumber)\n\nexport const v14Pallet = {\n name: str,\n storage: Option(\n Struct({\n prefix: str,\n items: Vector(Struct(storageItem)),\n }),\n ),\n calls: enumRefV14,\n events: enumRefV14,\n constants: Vector(\n Struct({\n name: str,\n type: compactNumber,\n value: Hex(),\n docs,\n }),\n ),\n errors: enumRefV14,\n index: u8,\n}\n\nexport const v15Pallet = {\n ...v14Pallet,\n docs,\n}\n\nconst enumRef = Option(\n Struct({ type: compactNumber, deprecationInfo: variantDeprecation }),\n)\n\nexport const v16Pallet = {\n name: str,\n storage: Option(\n Struct({\n prefix: str,\n items: Vector(\n Struct({\n ...storageItem,\n deprecationInfo: itemDeprecation,\n }),\n ),\n }),\n ),\n calls: enumRef,\n events: enumRef,\n constants: Vector(\n Struct({\n name: str,\n type: compactNumber,\n value: Hex(),\n docs,\n deprecationInfo: itemDeprecation,\n }),\n ),\n errors: enumRef,\n associatedTypes: Vector(\n Struct({\n name: str,\n type: compactNumber,\n docs,\n }),\n ),\n viewFns: Vector(viewFunction),\n index: u8,\n docs,\n deprecationInfo: itemDeprecation,\n}\n","import { CodecType, Struct, Vector, createCodec, str, u8 } from \"scale-ts\"\nimport { lookup } from \"./lookup\"\nimport { compactNumber } from \"../scale\"\nimport { v14Pallet } from \"./pallets\"\nimport { runtimeApi } from \"./runtime-api\"\n\nconst empty = new Uint8Array()\nconst Always = <T>(value: T) =>\n createCodec<T>(\n () => empty,\n () => value,\n )\n\nconst extrinsic = Struct({\n type: compactNumber,\n version: u8,\n signedExtensions: Vector(\n Struct({\n identifier: str,\n type: compactNumber,\n additionalSigned: compactNumber,\n }),\n ),\n})\n\nexport const v14 = Struct({\n lookup,\n pallets: Vector(Struct({ ...v14Pallet, docs: Always([] as string[]) })),\n extrinsic,\n type: compactNumber,\n apis: Always([] as Array<CodecType<typeof runtimeApi>>),\n})\nexport type V14 = CodecType<typeof v14>\n","import { CodecType, Struct, Tuple, Vector, str, u8 } from \"scale-ts\"\nimport { lookup } from \"./lookup\"\nimport { v15Pallet } from \"./pallets\"\nimport { Hex, compactNumber as ty } from \"../scale\"\nimport { runtimeApiV15 } from \"./runtime-api\"\n\nconst extrinsic = Struct({\n version: u8,\n address: ty,\n call: ty,\n signature: ty,\n extra: ty,\n signedExtensions: Vector(\n Struct({\n identifier: str,\n type: ty,\n additionalSigned: ty,\n }),\n ),\n})\n\nexport const v15 = Struct({\n lookup,\n pallets: Vector(Struct(v15Pallet)),\n extrinsic,\n type: ty,\n apis: Vector(runtimeApiV15),\n outerEnums: Struct({\n call: ty,\n event: ty,\n error: ty,\n }),\n custom: Vector(Tuple(str, Struct({ type: ty, value: Hex() }))),\n})\nexport type V15 = CodecType<typeof v15>\n","import { CodecType, Struct, Tuple, Vector, str, u8 } from \"scale-ts\"\nimport { lookup } from \"./lookup\"\nimport { v16Pallet } from \"./pallets\"\nimport { compactNumber, Hex, compactNumber as ty } from \"../scale\"\nimport { runtimeApi } from \"./runtime-api\"\n\nconst extrinsic = Struct({\n version: Vector(u8),\n address: ty,\n call: ty,\n signature: ty,\n signedExtensionsByVersion: Vector(Tuple(u8, Vector(compactNumber))),\n signedExtensions: Vector(\n Struct({\n identifier: str,\n type: ty,\n additionalSigned: ty,\n }),\n ),\n})\n\nexport const v16 = Struct({\n lookup,\n pallets: Vector(Struct(v16Pallet)),\n extrinsic,\n apis: Vector(runtimeApi),\n outerEnums: Struct({\n call: ty,\n event: ty,\n error: ty,\n }),\n custom: Vector(Tuple(str, Struct({ type: ty, value: Hex() }))),\n})\nexport type V16 = CodecType<typeof v16>\n","import {\n Bytes,\n type Codec,\n type CodecType,\n Enum,\n Option,\n Struct,\n Tuple,\n compact,\n createCodec,\n u32,\n} from \"scale-ts\"\nimport type { HexString } from \"../scale\"\nimport { v14 } from \"./v14\"\nimport { v15 } from \"./v15\"\nimport { v16 } from \"./v16\"\n\nconst unsupportedFn = () => {\n throw new Error(\"Unsupported metadata version!\")\n}\n\nconst unsupported = createCodec(\n unsupportedFn,\n unsupportedFn,\n) as unknown as Codec<unknown>\n\nexport const metadata = Struct({\n magicNumber: u32,\n metadata: Enum({\n v0: unsupported,\n v1: unsupported,\n v2: unsupported,\n v3: unsupported,\n v4: unsupported,\n v5: unsupported,\n v6: unsupported,\n v7: unsupported,\n v8: unsupported,\n v9: unsupported,\n v10: unsupported,\n v11: unsupported,\n v12: unsupported,\n v13: unsupported,\n v14,\n v15,\n v16,\n }),\n})\nexport type Metadata = CodecType<typeof metadata>\n\nconst opaqueBytes = Bytes()\nconst optionOpaque = Option(opaqueBytes)\nconst opaqueOpaqueBytes = Tuple(compact, opaqueBytes)\n\nexport const decAnyMetadata = (\n input: Uint8Array | HexString,\n): CodecType<typeof metadata> => {\n try {\n return metadata.dec(input)\n } catch (_) {}\n\n // comes from metadata.metadata_at_version\n try {\n return metadata.dec(optionOpaque.dec(input)!)\n } catch (_) {}\n\n // comes from state.getMetadata\n try {\n return metadata.dec(opaqueBytes.dec(input))\n } catch (_) {}\n\n // comes from metadata.metadata\n try {\n return metadata.dec(opaqueOpaqueBytes.dec(input)[1])\n } catch (_) {}\n\n throw null\n}\n","import { CodecType } from \"scale-ts\"\nimport { V14Lookup } from \"./lookup\"\nimport { storageMap } from \"./pallets\"\nimport { HexString } from \"../scale\"\nimport { itemDeprecation, variantDeprecation } from \"./deprecation\"\nimport { viewFunction } from \"./runtime-api\"\nimport { V14 } from \"./v14\"\nimport { V16 } from \"./v16\"\nimport { V15 } from \"./v15\"\nimport { Metadata } from \"./metadata\"\n\ntype EnumRef<T> =\n | ({\n type: number\n } & (T extends 16\n ? { deprecationInfo: CodecType<typeof variantDeprecation> }\n : {}))\n | undefined\n\ntype DeprecationInfo<T> = T extends 16\n ? { deprecationInfo: CodecType<typeof itemDeprecation> }\n : {}\n\nexport type UnifiedMetadata<T extends 14 | 15 | 16 = 14 | 15 | 16> = {\n version: T\n lookup: V14Lookup\n pallets: Array<\n {\n name: string\n storage:\n | {\n prefix: string\n items: Array<\n {\n name: string\n modifier: number\n type:\n | { tag: \"plain\"; value: number }\n | { tag: \"map\"; value: CodecType<typeof storageMap> }\n fallback: HexString\n docs: string[]\n } & DeprecationInfo<T>\n >\n }\n | undefined\n calls: EnumRef<T>\n events: EnumRef<T>\n constants: Array<\n {\n name: string\n type: number\n value: HexString\n docs: string[]\n } & DeprecationInfo<T>\n >\n errors: EnumRef<T>\n associatedTypes: Array<{\n name: string\n type: number\n docs: string[]\n }>\n viewFns: Array<CodecType<typeof viewFunction>>\n index: number\n docs: string[]\n } & DeprecationInfo<T>\n >\n extrinsic: {\n version: number[]\n signedExtensions: Array<{\n identifier: string\n type: number\n additionalSigned: number\n }>\n } & (T extends 14\n ? {\n type: number\n }\n : { address: number; call: number; signature: number }) &\n (T extends 16\n ? { signedExtensionsByVersion: Array<[number, number[]]> }\n : {})\n apis: Array<\n {\n name: string\n methods: Array<\n {\n name: string\n inputs: Array<{ name: string; type: number }>\n output: number\n docs: string[]\n } & DeprecationInfo<T>\n >\n docs: string[]\n } & (T extends 16 ? { version: number } : {}) &\n DeprecationInfo<T>\n >\n} & (T extends 14\n ? {}\n : {\n outerEnums: { call: number; event: number; error: number }\n custom: Array<[string, { type: number; value: HexString }]>\n })\n\nexport const unifyMetadata = (\n metadata: Metadata | Metadata[\"metadata\"] | V14 | V15 | V16,\n): UnifiedMetadata => {\n // complete metadata\n if (\"magicNumber\" in metadata) metadata = metadata.metadata\n if (\"tag\" in metadata) {\n if (\n metadata.tag !== \"v14\" &&\n metadata.tag !== \"v15\" &&\n metadata.tag !== \"v16\"\n )\n throw new Error(\"Only metadata 14, 15, and 16 are supported\")\n metadata = metadata.value\n }\n\n // v16\n if (\"signedExtensionsByVersion\" in metadata.extrinsic) {\n return { version: 16, ...(metadata as V16) }\n }\n // v15\n if (\"custom\" in metadata) {\n const { lookup, extrinsic, custom, apis, pallets, outerEnums } =\n metadata as V15\n\n return {\n version: 15,\n lookup,\n pallets: pallets.map((p): UnifiedMetadata<15>[\"pallets\"][number] => ({\n ...p,\n calls: p.calls != null ? { type: p.calls } : undefined,\n events: p.events != null ? { type: p.events } : undefined,\n errors: p.errors != null ? { type: p.errors } : undefined,\n viewFns: [],\n associatedTypes: [],\n })),\n extrinsic: { ...extrinsic, version: [extrinsic.version] },\n apis,\n outerEnums,\n custom,\n }\n }\n // fallback, v14\n const { lookup, extrinsic, pallets } = metadata as V14\n return {\n version: 14,\n lookup,\n pallets: pallets.map((p): UnifiedMetadata<14>[\"pallets\"][number] => ({\n ...p,\n calls: p.calls != null ? { type: p.calls } : undefined,\n events: p.events != null ? { type: p.events } : undefined,\n errors: p.errors != null ? { type: p.errors } : undefined,\n viewFns: [],\n associatedTypes: [],\n })),\n extrinsic: { ...extrinsic, version: [extrinsic.version] },\n apis: [],\n }\n}\n","import { enhanceCodec, u8 } from \"scale-ts\"\n\nconst TYPES = {\n bare: 0b00,\n 0b00: \"bare\",\n general: 0b01,\n 0b01: \"general\",\n signed: 0b10,\n 0b10: \"signed\",\n} as const\n\nexport type ExtrinsicFormat =\n | { version: 4; type: \"bare\" | \"signed\" }\n | { version: 5; type: \"bare\" | \"general\" }\n\nexport const extrinsicFormat = enhanceCodec<number, ExtrinsicFormat>(\n u8,\n ({ version, type }) => version + (TYPES[type] << 6),\n (v) => {\n const version = v & 0x3f // 0b0011_1111\n const type = v >> 6\n if (version === 4 && (type === TYPES.bare || type === TYPES.signed))\n return { version, type: TYPES[type] }\n if (version === 5 && (type === TYPES.bare || type === TYPES.general))\n return { version, type: TYPES[type] }\n throw new Error(`ExtrinsicFormat ${v} not valid`)\n },\n)\n","import { fromHex, mergeUint8, toHex } from \"@polkadot-api/utils\"\nimport type { Codec } from \"scale-ts\"\nimport {\n Blake2128,\n Blake2128Concat,\n Blake2256,\n Identity,\n Twox128,\n Twox256,\n Twox64Concat,\n} from \"./hashes\"\n\nexport type EncoderWithHash<T> = [Codec<T>, (input: Uint8Array) => Uint8Array]\n\nconst textEncoder = new TextEncoder()\n\n// the value indicates:\n// - when positive: the number of bytes to skip before reaching the transparent-encoded key\n// - when negative: the number of bytes that the opaque hasher will generate\nconst hashers: Map<(input: Uint8Array) => Uint8Array, number> = new Map([\n [Identity, 0],\n [Twox64Concat, 8],\n [Blake2128Concat, 16],\n [Blake2128, -16],\n [Blake2256, -32],\n [Twox128, -16],\n [Twox256, -32],\n])\n\nexport type OpaqueKeyHash = string & { __opaqueKeyHash?: unknown }\n\nexport const Storage = (pallet: string) => {\n const palledEncoded = Twox128(textEncoder.encode(pallet))\n return <A extends Array<EncoderWithHash<any>>>(\n name: string,\n ...encoders: [...A]\n ): {\n enc: (\n ...args: {\n [K in keyof A]: A[K] extends EncoderWithHash<infer V> ? V : unknown\n }\n ) => string\n dec: (value: string) => {\n [K in keyof A]: A[K] extends EncoderWithHash<infer V> ? V : unknown\n }\n } => {\n const palletItemEncoded = mergeUint8([\n palledEncoded,\n Twox128(textEncoder.encode(name)),\n ])\n\n const palletItemEncodedHex = toHex(palletItemEncoded)\n\n const dec = (\n key: string,\n ): {\n [K in keyof A]: A[K] extends EncoderWithHash<infer V> ? V : unknown\n } => {\n if (!key.startsWith(palletItemEncodedHex))\n throw new Error(`key does not match this storage (${pallet}.${name})`)\n\n if (encoders.length === 0) return [] as any\n\n const argsKey = fromHex(key.slice(palletItemEncodedHex.length))\n const result = new Array<any>(encoders.length)\n for (let i = 0, cur = 0; i < encoders.length; i++) {\n const [codec, hasher] = encoders[i]\n const hBytes = hashers.get(hasher)\n if (hBytes == null) throw new Error(\"Unknown hasher\")\n if (hBytes < 0) {\n const opaqueBytes = hBytes * -1\n result[i] = toHex(argsKey.slice(cur, cur + opaqueBytes))\n cur += opaqueBytes\n } else {\n cur += hBytes\n result[i] = codec.dec(argsKey.slice(cur))\n cur += codec.enc(result[i]).length\n }\n }\n return result as any\n }\n\n const fns = encoders.map(\n ([{ enc }, hash]) =>\n (val: any) =>\n hash(enc(val)),\n )\n\n const enc = (\n ...args: {\n [K in keyof A]: A[K] extends EncoderWithHash<infer V> ? V : unknown\n }\n ): string =>\n toHex(\n mergeUint8([\n palletItemEncoded,\n ...args.map((val, idx) => fns[idx](val)),\n ]),\n )\n\n return {\n enc,\n dec,\n }\n }\n}\n","import { mergeUint8 } from \"@polkadot-api/utils\"\nimport { Binary, compact, u16 } from \"../codecs\"\nimport { Blake2256 } from \"../hashes\"\n\nconst PREFIX = Binary.fromText(\"modlpy/utilisuba\").asBytes()\nexport const getMultisigAccountId = ({\n threshold,\n signatories,\n}: {\n threshold: number\n signatories: Uint8Array[]\n}) => {\n const sortedSignatories = sortMultisigSignatories(signatories)\n const payload = mergeUint8([\n PREFIX,\n compact.enc(sortedSignatories.length),\n ...sortedSignatories,\n u16.enc(threshold),\n ])\n return Blake2256(payload)\n}\n\nexport const sortMultisigSignatories = (signatories: Uint8Array[]) =>\n signatories.slice().sort((a, b) => {\n for (let i = 0; ; i++) {\n const overA = i >= a.length\n const overB = i >= b.length\n\n if (overA && overB) return 0\n else if (overA) return -1\n else if (overB) return 1\n else if (a[i] !== b[i]) return a[i] > b[i] ? 1 : -1\n }\n })\n","import { type HexString } from \"../codecs\"\n\nexport const TrieNodeHeaders = {\n Leaf: \"Leaf\",\n Branch: \"Branch\",\n BranchWithVal: \"BranchWithVal\",\n LeafWithHash: \"LeafWithHash\",\n BranchWithHash: \"BranchWithHash\",\n Empty: \"Empty\",\n Reserved: \"Reserved\",\n} as const\ntype TrieNodeHeaders = typeof TrieNodeHeaders\nexport type TrieNodeHeaderKey =\n (typeof TrieNodeHeaders)[keyof typeof TrieNodeHeaders]\n\nexport type Nibble =\n | \"0\"\n | \"1\"\n | \"2\"\n | \"3\"\n | \"4\"\n | \"5\"\n | \"6\"\n | \"7\"\n | \"8\"\n | \"9\"\n | \"a\"\n | \"b\"\n | \"c\"\n | \"d\"\n | \"e\"\n | \"f\"\n\nexport type TrieNode = { partialKey: string } & (\n | {\n type: TrieNodeHeaders[\"Empty\"] | TrieNodeHeaders[\"Reserved\"]\n }\n | {\n type: TrieNodeHeaders[\"Leaf\"] | TrieNodeHeaders[\"LeafWithHash\"]\n value: HexString\n }\n | ({ children: Record<Nibble, HexString> } & (\n | { type: TrieNodeHeaders[\"Branch\"] }\n | {\n type:\n | TrieNodeHeaders[\"BranchWithHash\"]\n | TrieNodeHeaders[\"BranchWithVal\"]\n value: HexString\n }\n ))\n)\nexport type ProofTrieNode = {\n hash: HexString\n parent?: HexString\n} & (TrieNode | { type: \"Raw\"; value: HexString })\n","import { createDecoder, Hex, u16, u8, type HexString } from \"../codecs\"\nimport { type TrieNodeHeaderKey, TrieNodeHeaders, type TrieNode } from \"./types\"\n\nconst varHex = Hex().dec\nconst allHex = Hex(Infinity).dec\nconst hex32 = Hex(32).dec\nconst byte = u8.dec\n\nconst getHeader = (\n bytes: Uint8Array,\n): { type: TrieNodeHeaderKey; partialKey: string } => {\n const firstByte = byte(bytes)\n\n let bitsLeft = 6\n const typeId = firstByte >> bitsLeft\n const type: TrieNodeHeaderKey = typeId\n ? typeId === 1\n ? TrieNodeHeaders.Leaf\n : typeId === 2\n ? TrieNodeHeaders.Branch\n : TrieNodeHeaders.BranchWithVal\n : firstByte >> --bitsLeft\n ? TrieNodeHeaders.LeafWithHash\n : firstByte >> --bitsLeft\n ? TrieNodeHeaders.BranchWithHash\n : firstByte\n ? TrieNodeHeaders.Reserved\n : TrieNodeHeaders.Empty\n\n let nNibles = firstByte & (0xff >> (8 - bitsLeft))\n if (nNibles === 2 ** bitsLeft - 1) {\n let current: number\n do nNibles += current = byte(bytes)\n while (current === 255)\n }\n\n return {\n type,\n partialKey: Hex(Math.ceil(nNibles / 2))\n .dec(bytes)\n .slice(nNibles % 2 ? 3 : 2),\n }\n}\n\nexport const trieNodeDec = createDecoder((bytes): TrieNode => {\n const header = getHeader(bytes)\n const { type } = header\n\n if (type === \"Empty\" || type === \"Reserved\") return header as TrieNode\n if (type === \"Leaf\" || type === \"LeafWithHash\")\n return {\n ...header,\n value: allHex(bytes),\n } as TrieNode\n\n const bitmap = u16.dec(bytes)\n const keys: string[] = []\n for (let i = 0; i < 16; i++) if ((bitmap >> i) & 1) keys.push(i.toString(16))\n\n let value: null | HexString = null\n if (type === \"BranchWithVal\") value = varHex(bytes)\n if (type === \"BranchWithHash\") value = hex32(bytes)\n\n const result: any = {\n ...header,\n children: Object.fromEntries(keys.map((key) => [key, varHex(bytes)])),\n }\n if (value !== null) result.value = value\n return result\n})\n","import { toHex } from \"@polkadot-api/utils\"\nimport { createDecoder, type HexString } from \"../codecs\"\nimport { trieNodeDec } from \"./node-decoder\"\nimport { Blake2256 } from \"@/hashes\"\nimport { type ProofTrieNode } from \"./types\"\n\nexport const TrieNodeWithHash = (hasher: (input: Uint8Array) => Uint8Array) =>\n createDecoder((input): ProofTrieNode => {\n const hash = toHex(hasher(new Uint8Array(input.buffer)))\n try {\n return {\n hash,\n ...trieNodeDec(input),\n }\n } catch {\n // Sometimes the proofs include random raw-values which are not trie-nodes\n return { type: \"Raw\", hash, value: \"\" }\n }\n })\n\nexport const validateProofs = <T extends HexString | Uint8Array>(\n proofs: Array<T>,\n hasher: (input: Uint8Array) => Uint8Array = Blake2256,\n): { rootHash: HexString; proofs: Record<HexString, ProofTrieNode> } | null => {\n const proofsList = proofs.map(TrieNodeWithHash(hasher))\n const proofsRecord = Object.fromEntries(proofsList.map((p) => [p.hash, p]))\n const hashes = proofsList.map((p) => p.hash)\n const roots = new Set(hashes)\n\n const setRawValue = (input: {\n type: \"Raw\"\n hash: HexString\n value: HexString\n }) => {\n if (input.value) return\n const val = proofs[hashes.indexOf(input.hash)!]\n input.value = typeof val === \"string\" ? val : toHex(val)\n }\n\n proofsList.forEach((p) => {\n if (\"children\" in p) {\n Object.values(p.children).forEach((hash) => {\n const child = proofsRecord[hash]\n if (child) {\n child.parent = p.hash\n roots.delete(hash)\n }\n })\n }\n\n if (p.type === \"BranchWithHash\" || p.type === \"LeafWithHash\") {\n const childHash = p.value\n const child = proofsRecord[childHash]\n if (!child) return\n\n roots.delete(childHash)\n if (child.type !== \"Raw\") {\n Object.keys(child).forEach((k) => delete (child as any)[k])\n ;(child as any).type = \"Raw\"\n child.hash = childHash\n }\n child.parent = p.hash\n setRawValue(child as any)\n }\n\n if (p.type === \"Raw\") setRawValue(p)\n })\n\n return roots.size === 1\n ? { rootHash: roots.values().next().value!, proofs: proofsRecord }\n : null\n}\n"],"names":["base58","blake2b","enhanceCodec","Bytes","textEncoder","textDecoder","Tuple","compact","toHex","mergeUint8","fromHex","enc","dec","Bin","createCodec","createDecoder","bitSequence","u8","OEnum","mapObject","len32","blake3","p","temp","u64","keccak_256","OStruct","OTuple","OVector","OResult","OOption","_void","hex32","Vector","str","Option","Enum","Struct","u32","ty","hashers","extrinsic","lookup","pallets","u16"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polkadot-api/substrate-bindings",
3
- "version": "0.16.2",
3
+ "version": "0.16.3",
4
4
  "author": "Josep M Sobrepere (https://github.com/josepot)",
5
5
  "repository": {
6
6
  "type": "git",