@rialo/ts-cdk 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -2
- package/dist/index.d.mts +938 -661
- package/dist/index.d.ts +938 -661
- package/dist/index.js +1793 -1505
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1789 -1504
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../node_modules/@protobufjs/float/index.js","../node_modules/@protobufjs/utf8/index.js","../src/error.ts","../src/constants.ts","../src/transaction/account-meta-table.ts","../src/transaction/errors.ts","../src/serialization/compact-u16.ts","../node_modules/@dao-xyz/borsh/src/binary.ts","../node_modules/@dao-xyz/borsh/src/bigint.ts","../node_modules/@dao-xyz/borsh/src/error.ts","../node_modules/@dao-xyz/borsh/src/types.ts","../node_modules/@dao-xyz/borsh/src/index.ts","../src/serialization/borsh.ts","../src/transaction/instructions/borsh-instruction.ts","../node_modules/@scure/base/index.ts","../src/crypto/blockhash.ts","../src/crypto/errors.ts","../node_modules/@noble/ed25519/index.js","../node_modules/@noble/hashes/src/utils.ts","../node_modules/@noble/hashes/src/_md.ts","../node_modules/@noble/hashes/src/_u64.ts","../node_modules/@noble/hashes/src/sha2.ts","../src/crypto/public-key.ts","../src/crypto/signature.ts","../src/crypto/keypair.ts","../node_modules/@noble/hashes/src/hmac.ts","../node_modules/@scure/bip39/node_modules/@noble/hashes/src/utils.ts","../node_modules/@scure/bip39/node_modules/@noble/hashes/src/hmac.ts","../node_modules/@scure/bip39/node_modules/@noble/hashes/src/pbkdf2.ts","../node_modules/@scure/bip39/node_modules/@noble/hashes/src/_md.ts","../node_modules/@scure/bip39/node_modules/@noble/hashes/src/_u64.ts","../node_modules/@scure/bip39/node_modules/@noble/hashes/src/sha2.ts","../node_modules/@scure/bip39/index.js","../node_modules/@scure/bip39/wordlists/english.js","../src/crypto/mnemonic.ts","../src/transaction/instructions/system.ts","../src/rpc/errors.ts","../src/rpc/clients/base-client.ts","../src/utils.ts","../src/rpc/clients/query-client.ts","../src/rpc/clients/transaction-client.ts","../src/rpc/clients/client.ts","../src/rpc/http-transport.ts","../src/rpc/index.ts","../src/transaction/message.ts","../src/transaction/transaction.ts","../src/transaction/transaction-builder.ts","../src/signer/keypair-signer.ts"],"names":["exports","sign","utf8","RialoErrorType","TransactionErrorCode","i","obj","field","padding","CryptoErrorCode","isBytes","C","G","P","anumber","abytes","h","cr","ahash","aexists","aoutput","clean","createView","rotr","createHasher","randomBytes","oidNist","_HMAC","hmac","Chi","Maj","HashMD","SHA256_IV","SHA512_IV","U32_MASK64","_32n","fromBig","split","shrSH","shrSL","rotrSH","rotrSL","rotrBH","rotrBL","add","add3L","add3H","add4L","add4H","add5L","add5H","K512","SHA512_Kh","SHA512_Kl","SHA512_W_H","SHA512_W_L","SHA2_64B","_SHA512","sha512","wordlist","SystemInstruction","RpcErrorCode","deserializeCompactU16"],"mappings":"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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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","file":"index.mjs","sourcesContent":["\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Error handling for the Rialo CDK.\n *\n * This module defines the common error types used throughout the Rialo CDK.\n * It provides a centralized error handling mechanism for all operations.\n */\n\n/**\n * Structured RPC error information parsed from JSON-RPC error responses.\n */\nexport interface RpcErrorDetails {\n\t/** HTTP status code (e.g., 200, 422, 500) */\n\tstatus?: number;\n\t/** JSON-RPC error code (e.g., -32002) */\n\tcode: number;\n\t/** Human-readable error message */\n\tmessage: string;\n}\n\n/**\n * Error types for different subsystems in the Rialo CDK.\n */\nexport enum RialoErrorType {\n\t/** Errors related to file or system I/O operations */\n\tIO = \"IO\",\n\t/** Errors occurring during RPC communication with blockchain nodes */\n\tRPC = \"RPC\",\n\t/** Errors related to public key parsing or validation */\n\tPARSE_PUBKEY = \"PARSE_PUBKEY\",\n\t/** Errors related to blockhash parsing or validation */\n\tINVALID_BLOCKHASH_FORMAT = \"INVALID_BLOCKHASH_FORMAT\",\n\t/** Errors related to wallet operations such as creation, loading, or signing */\n\tWALLET = \"WALLET\",\n\t/** Errors related to configuration loading, parsing, or validation */\n\tCONFIG = \"CONFIG\",\n\t/** Errors occurring during transaction building, signing, or submission */\n\tTRANSACTION = \"TRANSACTION\",\n\t/** Network-related errors, including HTTP client errors */\n\tNETWORK = \"NETWORK\",\n\t/** Errors related to password handling, validation, or verification */\n\tPASSWORD = \"PASSWORD\",\n\t/** Errors related to encryption or decryption operations */\n\tENCRYPTION = \"ENCRYPTION\",\n\t/** Errors occurring during JSON parsing, serialization, or deserialization */\n\tJSON = \"JSON\",\n\t/** Errors related to BIP32 key derivation */\n\tBIP32 = \"BIP32\",\n\t/** Errors related to invalid input parameters or data */\n\tINVALID_INPUT = \"INVALID_INPUT\",\n\t/** Errors related to serialization/deserialization */\n\tSERIALIZATION = \"SERIALIZATION\",\n}\n\n/**\n * Base error class for all Rialo CDK errors.\n *\n * Provides structured error handling with type categorization and optional\n * cause tracking for error chains. Use the static factory methods for\n * consistent error creation across the SDK.\n *\n * @example\n * ```typescript\n * // Create typed errors using factory methods\n * throw RialoError.invalidInput(\"Amount must be positive\");\n * throw RialoError.network(\"Connection failed\", originalError);\n * throw RialoError.rpc({ code: -32002, message: \"Invalid params\" });\n *\n * // Handle errors with type information\n * try {\n * await client.sendTransaction(tx);\n * } catch (error) {\n * if (error instanceof RialoError && error.type === RialoErrorType.NETWORK) {\n * console.log(\"Network error, retrying...\");\n * }\n * }\n * ```\n */\nexport class RialoError extends Error {\n\tpublic readonly type: RialoErrorType;\n\tpublic readonly cause?: Error;\n\tpublic readonly details?: RpcErrorDetails;\n\n\tpublic constructor(\n\t\ttype: RialoErrorType,\n\t\tmessage: string,\n\t\tcause?: Error,\n\t\tdetails?: RpcErrorDetails,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"RialoError\";\n\t\tthis.type = type;\n\t\tthis.cause = cause;\n\t\tthis.details = details;\n\n\t\t// Maintains proper stack trace for where our error was thrown (only available on V8)\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, RialoError);\n\t\t}\n\t}\n\n\t/**\n\t * Creates an IO error.\n\t */\n\tpublic static io(message: string, cause?: Error): RialoError {\n\t\treturn new RialoError(RialoErrorType.IO, `I/O error: ${message}`, cause);\n\t}\n\n\t/**\n\t * Creates an RPC error.\n\t */\n\tpublic static rpc(details: RpcErrorDetails): RialoError {\n\t\tlet message: string = details.message;\n\t\tif (details.status !== undefined) {\n\t\t\tmessage = `${details.message} [HTTP ${details.status} code ${details.code}]`;\n\t\t} else if (details.code !== 0) {\n\t\t\tmessage = `${details.message} (code ${details.code})`;\n\t\t}\n\t\treturn new RialoError(\n\t\t\tRialoErrorType.RPC,\n\t\t\t`RPC error: ${message}`,\n\t\t\tundefined,\n\t\t\tdetails,\n\t\t);\n\t}\n\n\t/**\n\t * Creates a public key parsing error.\n\t */\n\tpublic static parsePubkey(message: string): RialoError {\n\t\treturn new RialoError(\n\t\t\tRialoErrorType.PARSE_PUBKEY,\n\t\t\t`Pubkey error: ${message}`,\n\t\t);\n\t}\n\n\t/**\n\t * Creates a blockhash format error.\n\t */\n\tpublic static invalidBlockhash(message: string): RialoError {\n\t\treturn new RialoError(\n\t\t\tRialoErrorType.INVALID_BLOCKHASH_FORMAT,\n\t\t\t`Invalid blockhash format: ${message}`,\n\t\t);\n\t}\n\n\t/**\n\t * Creates a wallet error.\n\t */\n\tpublic static wallet(message: string): RialoError {\n\t\treturn new RialoError(RialoErrorType.WALLET, `Wallet error: ${message}`);\n\t}\n\n\t/**\n\t * Creates a configuration error.\n\t */\n\tpublic static config(message: string): RialoError {\n\t\treturn new RialoError(RialoErrorType.CONFIG, `Config error: ${message}`);\n\t}\n\n\t/**\n\t * Creates a transaction error.\n\t */\n\tpublic static transaction(message: string): RialoError {\n\t\treturn new RialoError(\n\t\t\tRialoErrorType.TRANSACTION,\n\t\t\t`Transaction error: ${message}`,\n\t\t);\n\t}\n\n\t/**\n\t * Creates a network error.\n\t */\n\tpublic static network(message: string, cause?: Error): RialoError {\n\t\treturn new RialoError(\n\t\t\tRialoErrorType.NETWORK,\n\t\t\t`Network error: ${message}`,\n\t\t\tcause,\n\t\t);\n\t}\n\n\t/**\n\t * Creates a password error.\n\t */\n\tpublic static password(message: string): RialoError {\n\t\treturn new RialoError(\n\t\t\tRialoErrorType.PASSWORD,\n\t\t\t`Password error: ${message}`,\n\t\t);\n\t}\n\n\t/**\n\t * Creates an encryption error.\n\t */\n\tpublic static encryption(message: string): RialoError {\n\t\treturn new RialoError(\n\t\t\tRialoErrorType.ENCRYPTION,\n\t\t\t`Encryption error: ${message}`,\n\t\t);\n\t}\n\n\t/**\n\t * Creates a JSON error.\n\t */\n\tpublic static json(message: string, cause?: Error): RialoError {\n\t\treturn new RialoError(RialoErrorType.JSON, `JSON error: ${message}`, cause);\n\t}\n\n\t/**\n\t * Creates a BIP32 error.\n\t */\n\tpublic static bip32(message: string): RialoError {\n\t\treturn new RialoError(RialoErrorType.BIP32, `BIP32 error: ${message}`);\n\t}\n\n\t/**\n\t * Creates an invalid input error.\n\t */\n\tpublic static invalidInput(message: string): RialoError {\n\t\treturn new RialoError(\n\t\t\tRialoErrorType.INVALID_INPUT,\n\t\t\t`Invalid input: ${message}`,\n\t\t);\n\t}\n\n\t/**\n\t * Creates a serialization error.\n\t */\n\tpublic static serialization(message: string): RialoError {\n\t\treturn new RialoError(\n\t\t\tRialoErrorType.SERIALIZATION,\n\t\t\t`Serialization error: ${message}`,\n\t\t);\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/** Default number of accounts to derive in HD wallets */\nexport const DEFAULT_NUM_ACCOUNTS: number = 1;\n\n/** Rialo mainnet RPC URL */\nexport const URL_MAINNET: string = \"https://mainnet.rialo.io:4100\";\n\n/** Rialo testnet RPC URL */\nexport const URL_TESTNET: string = \"https://testnet.rialo.io:4100\";\n\n/** Rialo devnet RPC URL */\nexport const URL_DEVNET: string = \"https://devnet.rialo.io:4101\";\n\n/** Rialo localnet RPC URL */\nexport const URL_LOCALNET: string = \"http://localhost:4100\";\n\n/** System program ID */\nexport const SYSTEM_PROGRAM_ID: string = \"11111111111111111111111111111111\";\n\n/** Base derivation path for Rialo wallets (BIP44 coin type 756) */\n/** Coin type 756 follows the telephone keypad convention: R=7, L=5, O=6 */\nexport const BASE_DERIVATION_PATH: string = \"m/44'/756'/\";\n\n\n\nexport const KELVIN_PER_RLO: number = 1_000_000_000;\n\nexport const PUBLIC_KEY_LENGTH: number = 32;\n\nexport const SECRET_KEY_LENGTH: number = 32;\n\nexport const SIGNATURE_LENGTH: number = 64;\n\nexport const BLOCKHASH_LENGTH: number = 32;\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Account metadata table for deduplication and sorting.\n * Avoids: Complex account sorting logic scattered throughout builder\n */\n\nimport type { PublicKey } from \"../crypto\";\nimport type { AccountMeta, MessageHeader } from \"./types\";\n\n/**\n * Internal account entry with aggregated metadata.\n */\ninterface AccountEntry {\n\tpubkey: PublicKey;\n\tisSigner: boolean;\n\tisWritable: boolean;\n}\n\n/**\n * Manages account deduplication and sorting for transaction messages.\n *\n * Accounts are sorted according to these rules:\n * 1. Signer + writable accounts first\n * 2. Then signer + readonly accounts\n * 3. Then non-signer + writable accounts\n * 4. Finally non-signer + readonly accounts\n * 5. Within each group, sort by public key bytes\n *\n * This matches Solana's account sorting rules for compatibility.\n */\nexport class AccountMetaTable {\n\tprivate readonly accounts: Map<string, AccountEntry> = new Map();\n\tprivate readonly accountOrder: string[] = [];\n\n\t/**\n\t * Add or update an account in the table.\n\t * If account already exists, merges signer/writable flags (OR operation).\n\t */\n\tadd(meta: AccountMeta): void {\n\t\tconst key = meta.pubkey.toString();\n\n\t\tif (this.accounts.has(key)) {\n\t\t\t// Merge with existing entry (OR flags)\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: we know the key is in the map\n\t\t\tconst existing = this.accounts.get(key)!;\n\t\t\texisting.isSigner ||= meta.isSigner;\n\t\t\texisting.isWritable ||= meta.isWritable;\n\t\t} else {\n\t\t\t// New entry\n\t\t\tthis.accounts.set(key, {\n\t\t\t\tpubkey: meta.pubkey,\n\t\t\t\tisSigner: meta.isSigner,\n\t\t\t\tisWritable: meta.isWritable,\n\t\t\t});\n\t\t\tthis.accountOrder.push(key);\n\t\t}\n\t}\n\n\t/**\n\t * Add multiple accounts at once.\n\t */\n\taddAll(metas: readonly AccountMeta[]): void {\n\t\tfor (const meta of metas) {\n\t\t\tthis.add(meta);\n\t\t}\n\t}\n\n\t/**\n\t * Get the index of an account in the sorted order.\n\t * Returns -1 if account not found.\n\t */\n\tgetIndex(pubkey: PublicKey): number {\n\t\tconst sorted = this.getSortedAccounts();\n\t\treturn sorted.findIndex((entry) => entry.pubkey.equals(pubkey));\n\t}\n\n\t/**\n\t * Get sorted accounts according to transaction rules.\n\t */\n\tgetSortedAccounts(): readonly AccountEntry[] {\n\t\t// biome-ignore lint/style/noNonNullAssertion: we know the key is in the map\n\t\tconst entries = this.accountOrder.map((key) => this.accounts.get(key)!);\n\n\t\treturn entries.sort((a, b): number => {\n\t\t\t// Priority 1: Signer + writable\n\t\t\tconst aPriority =\n\t\t\t\ta.isSigner && a.isWritable ? 0 : a.isSigner ? 1 : a.isWritable ? 2 : 3;\n\t\t\tconst bPriority =\n\t\t\t\tb.isSigner && b.isWritable ? 0 : b.isSigner ? 1 : b.isWritable ? 2 : 3;\n\n\t\t\tif (aPriority !== bPriority) {\n\t\t\t\treturn aPriority - bPriority;\n\t\t\t}\n\n\t\t\t// Priority 2: Sort by public key bytes\n\t\t\tconst aBytes = a.pubkey.toBytes();\n\t\t\tconst bBytes = b.pubkey.toBytes();\n\n\t\t\tfor (let i = 0; i < 32; i++) {\n\t\t\t\tif (aBytes[i] !== bBytes[i]) {\n\t\t\t\t\treturn aBytes[i] - bBytes[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t});\n\t}\n\n\t/**\n\t * Get the message header based on sorted accounts.\n\t */\n\tgetHeader(): MessageHeader {\n\t\tconst sorted = this.getSortedAccounts();\n\n\t\tlet numRequiredSignatures = 0;\n\t\tlet numReadonlySignedAccounts = 0;\n\t\tlet numReadonlyUnsignedAccounts = 0;\n\n\t\tfor (const entry of sorted) {\n\t\t\tif (entry.isSigner) {\n\t\t\t\tnumRequiredSignatures++;\n\t\t\t\tif (!entry.isWritable) {\n\t\t\t\t\tnumReadonlySignedAccounts++;\n\t\t\t\t}\n\t\t\t} else if (!entry.isWritable) {\n\t\t\t\tnumReadonlyUnsignedAccounts++;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tnumRequiredSignatures,\n\t\t\tnumReadonlySignedAccounts,\n\t\t\tnumReadonlyUnsignedAccounts,\n\t\t};\n\t}\n\n\t/**\n\t * Get sorted public keys.\n\t */\n\tgetPublicKeys(): readonly PublicKey[] {\n\t\treturn this.getSortedAccounts().map((entry) => entry.pubkey);\n\t}\n\n\t/**\n\t * Get number of accounts in table.\n\t */\n\tsize(): number {\n\t\treturn this.accounts.size;\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Error codes for transaction operations.\n */\nexport enum TransactionErrorCode {\n\t// Building errors\n\tINVALID_INSTRUCTION = \"INVALID_INSTRUCTION\",\n\tINVALID_ACCOUNT_META = \"INVALID_ACCOUNT_META\",\n\tNO_INSTRUCTIONS = \"NO_INSTRUCTIONS\",\n\tDUPLICATE_ACCOUNT = \"DUPLICATE_ACCOUNT\",\n\n\t// Signing errors\n\tMISSING_SIGNATURE = \"MISSING_SIGNATURE\",\n\tINVALID_SIGNATURE = \"INVALID_SIGNATURE\",\n\tSIGNATURE_OUT_OF_BOUNDS = \"SIGNATURE_OUT_OF_BOUNDS\",\n\tSIGNER_NOT_FOUND = \"SIGNER_NOT_FOUND\",\n\tALREADY_SIGNED = \"ALREADY_SIGNED\",\n\n\t// Serialization errors\n\tINVALID_MESSAGE_FORMAT = \"INVALID_MESSAGE_FORMAT\",\n\tINSUFFICIENT_DATA = \"INSUFFICIENT_DATA\",\n\tSERIALIZATION_FAILED = \"SERIALIZATION_FAILED\",\n\n\t// Simulation errors\n\tSIMULATION_FAILED = \"SIMULATION_FAILED\",\n\tINSUFFICIENT_FUNDS = \"INSUFFICIENT_FUNDS\",\n\tBLOCKHASH_EXPIRED = \"BLOCKHASH_EXPIRED\",\n}\n\n/**\n * Error class for transaction operations with structured error information.\n */\nexport class TransactionError extends Error {\n\tconstructor(\n\t\tpublic readonly code: TransactionErrorCode,\n\t\tmessage: string,\n\t\tpublic readonly details?: Record<string, unknown>,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"TransactionError\";\n\t}\n\n\tstatic noInstructions(): TransactionError {\n\t\treturn new TransactionError(\n\t\t\tTransactionErrorCode.NO_INSTRUCTIONS,\n\t\t\t\"Transaction must contain at least one instruction. Use addInstruction() to add instructions.\",\n\t\t);\n\t}\n\n\tstatic signerNotFound(pubkey: string): TransactionError {\n\t\treturn new TransactionError(\n\t\t\tTransactionErrorCode.SIGNER_NOT_FOUND,\n\t\t\t`Public key ${pubkey} is not a required signer for this transaction. Check that the account is marked as a signer in the instruction.`,\n\t\t\t{ pubkey },\n\t\t);\n\t}\n\n\tstatic missingSignature(index: number, pubkey: string): TransactionError {\n\t\treturn new TransactionError(\n\t\t\tTransactionErrorCode.MISSING_SIGNATURE,\n\t\t\t`Missing signature for signer ${index} (${pubkey}). Transaction requires ${index + 1} signatures.`,\n\t\t\t{ index, pubkey },\n\t\t);\n\t}\n\n\tstatic simulationFailed(logs: string[], error: string): TransactionError {\n\t\treturn new TransactionError(\n\t\t\tTransactionErrorCode.SIMULATION_FAILED,\n\t\t\t`Transaction simulation failed: ${error}`,\n\t\t\t{ logs, error },\n\t\t);\n\t}\n\n\tstatic insufficientFunds(\n\t\trequired: bigint,\n\t\tavailable: bigint,\n\t): TransactionError {\n\t\treturn new TransactionError(\n\t\t\tTransactionErrorCode.INSUFFICIENT_FUNDS,\n\t\t\t`Insufficient funds: need ${required}, have ${available}`,\n\t\t\t{ required: required.toString(), available: available.toString() },\n\t\t);\n\t}\n\n\ttoJSON(): {\n\t\tcode: TransactionErrorCode;\n\t\tmessage: string;\n\t\tdetails?: Record<string, unknown>;\n\t} {\n\t\treturn {\n\t\t\tcode: this.code,\n\t\t\tmessage: this.message,\n\t\t\tdetails: this.details,\n\t\t};\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Compact-u16 encoding for efficient variable-length integer serialization.\n *\n * Uses 1-3 bytes depending on value size:\n * - 0-127: 1 byte (7 bits)\n * - 128-16,383: 2 bytes (14 bits)\n * - 16,384-65,535: 3 bytes (16 bits)\n *\n * This encoding saves space for small numbers while supporting the full u16 range.\n */\nimport {\n\tTransactionError,\n\tTransactionErrorCode,\n} from \"../transaction/index.js\";\n\n/**\n * Serializes a u16 value into compact encoding.\n *\n * @param buffer - Output buffer to append bytes to\n * @param value - Value to encode (0-65535)\n * @throws {TransactionError} If value is out of range\n */\nexport function serializeCompactU16(buffer: number[], value: number): void {\n\tif (value < 0 || value > 0xffff) {\n\t\tthrow new TransactionError(\n\t\t\tTransactionErrorCode.SERIALIZATION_FAILED,\n\t\t\t`Value out of range for compact-u16: ${value}`,\n\t\t);\n\t}\n\n\t// Single byte (0-127)\n\tif (value <= 0x7f) {\n\t\tbuffer.push(value);\n\t\treturn;\n\t}\n\n\t// Two bytes (128-16383)\n\tif (value <= 0x3fff) {\n\t\tbuffer.push((value & 0x7f) | 0x80);\n\t\tbuffer.push((value >> 7) & 0x7f);\n\t\treturn;\n\t}\n\n\t// Three bytes (16384-65535)\n\tbuffer.push((value & 0x7f) | 0x80);\n\tbuffer.push(((value >> 7) & 0x7f) | 0x80);\n\tbuffer.push((value >> 14) & 0xff);\n}\n\n/**\n * Deserializes a compact-u16 value from bytes.\n *\n * @param data - Input byte array\n * @param currentCursor - Starting position in the array\n * @returns Tuple of [decoded value, new cursor position]\n * @throws {TransactionError} If data is insufficient or malformed\n */\nexport function deserializeCompactU16(\n\tdata: Uint8Array,\n\tcurrentCursor: number,\n): [number, number] {\n\tlet cursor = currentCursor;\n\tif (cursor >= data.length) {\n\t\tthrow new TransactionError(\n\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\"Insufficient data for compact-u16\",\n\t\t);\n\t}\n\n\tconst firstByte = data[cursor++];\n\n\t// Single byte encoding (0-127)\n\tif ((firstByte & 0x80) === 0) {\n\t\treturn [firstByte, cursor];\n\t}\n\n\t// Multi-byte encoding\n\tif (cursor >= data.length) {\n\t\tthrow new TransactionError(\n\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\"Incomplete compact-u16 encoding\",\n\t\t);\n\t}\n\n\tconst secondByte = data[cursor++];\n\n\t// Two-byte encoding (128-16383)\n\tif ((secondByte & 0x80) === 0) {\n\t\treturn [(firstByte & 0x7f) | (secondByte << 7), cursor];\n\t}\n\n\t// Three-byte encoding (16384-65535)\n\tif (cursor >= data.length) {\n\t\tthrow new TransactionError(\n\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\"Incomplete compact-u16 encoding\",\n\t\t);\n\t}\n\n\tconst thirdByte = data[cursor++];\n\tconst value =\n\t\t(firstByte & 0x7f) | ((secondByte & 0x7f) << 7) | (thirdByte << 14);\n\n\treturn [value, cursor];\n}\n\n/**\n * Writes a compact-u16 value directly to a buffer (zero-copy).\n *\n * Optimized version for in-place writing without intermediate allocations.\n *\n * @param buffer - Target buffer\n * @param offset - Starting position to write at\n * @param value - Value to encode (0-127 only, uses 1-2 bytes)\n * @returns New offset after writing\n */\nexport function writeCompactU16(\n\tbuffer: Uint8Array,\n\toffset: number,\n\tvalue: number,\n): number {\n\tif (value < 0x80) {\n\t\tbuffer[offset] = value;\n\t\treturn offset + 1;\n\t}\n\tbuffer[offset] = (value & 0x7f) | 0x80;\n\tbuffer[offset + 1] = value >> 7;\n\treturn offset + 2;\n}\n",null,null,null,null,null,"// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n\tdeserialize,\n\tfield,\n\tfixedArray,\n\toption,\n\tserialize,\n\tvec,\n} from \"@dao-xyz/borsh\";\n\n/**\n * Serializes data using Borsh (Binary Object Representation Serializer for Hashing) encoding.\n *\n * Borsh is efficient for complex types like enums, Options, vectors, and nested structs.\n * Use the exported decorators (@field, @option, @vec) to define your data structures.\n *\n * @param data - Data object to serialize\n * @returns Serialized bytes\n *\n * @example\n * ```typescript\n * import { serializeBorsh, field, option } from '@rialo/ts-cdk';\n *\n * class SwapInstruction {\n * @field({ type: 'u8' })\n * instruction: number;\n *\n * @field({ type: 'u64' })\n * amountIn: bigint;\n *\n * @field({ type: option('u64') })\n * minAmountOut?: bigint;\n * }\n *\n * const data = serializeBorsh(new SwapInstruction({\n * instruction: 1,\n * amountIn: 1000n,\n * minAmountOut: 900n,\n * }));\n * ```\n */\nexport function serializeBorsh<T>(data: T): Uint8Array {\n\treturn serialize(data);\n}\n\n/**\n * Deserializes Borsh-encoded data into a typed object.\n *\n * @param data - Borsh-encoded bytes\n * @param type - Class constructor for the target type\n * @returns Deserialized object instance\n */\nexport function deserializeBorsh<T>(data: Uint8Array, type: new () => T): T {\n\treturn deserialize(data, type);\n}\n\n// Re-export Borsh decorators for convenience\nexport { field, fixedArray, option, vec };\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { PublicKey } from \"../../crypto\";\nimport { serializeBorsh } from \"../../serialization\";\nimport type { AccountMeta, Instruction } from \"../types\";\n\n/**\n * Create an instruction with Borsh-encoded data.\n *\n * @example\n * ```typescript\n * // Define your instruction data class\n * class MyInstructionData {\n * @field({ type: 'u8' })\n * instruction: number;\n *\n * @field({ type: 'u64' })\n * amount: bigint;\n *\n * @field({ type: option('string') })\n * memo?: string;\n * }\n *\n * // Create instruction\n * const instruction = createBorshInstruction({\n * programId: myProgramId,\n * accounts: [\n * { pubkey: account1, isSigner: true, isWritable: true },\n * { pubkey: account2, isSigner: false, isWritable: false },\n * ],\n * data: new MyInstructionData({\n * instruction: 5,\n * amount: 1000n,\n * memo: \"Hello, Rialo!\",\n * }),\n * });\n * ```\n */\nexport function createBorshInstruction<T>(params: {\n\tprogramId: PublicKey;\n\taccounts: AccountMeta[];\n\tdata: T;\n}): Instruction {\n\treturn {\n\t\tprogramId: params.programId,\n\t\taccounts: params.accounts,\n\t\tdata: serializeBorsh(params.data),\n\t};\n}\n\n/**\n * Helper for creating Borsh-serialized instruction data from a plain object.\n *\n * This is useful when you don't want to define a class with decorators.\n *\n * @example\n * ```typescript\n * const data = encodeBorshData({\n * instruction: { type: 'u8', value: 1 },\n * amount: { type: 'u64', value: 1000n },\n * recipient: { type: fixedArray('u8', 32), value: recipientBytes },\n * });\n * ```\n */\nexport function encodeBorshData(\n\t_schema: Record<string, { type: unknown; value: unknown }>,\n): Uint8Array {\n\t// TODO: Implement this\n\tthrow new Error(\"Use class-based Borsh serialization with decorators\");\n}\n","/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\nexport interface Coder<F, T> {\n encode(from: F): T;\n decode(to: T): F;\n}\n\nexport interface BytesCoder extends Coder<Uint8Array, string> {\n encode: (data: Uint8Array) => string;\n decode: (str: string) => Uint8Array;\n}\n\nfunction isBytes(a: unknown): a is Uint8Array {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is Uint8Array. */\nfunction abytes(b: Uint8Array | undefined): void {\n if (!isBytes(b)) throw new Error('Uint8Array expected');\n}\n\nfunction isArrayOf(isString: boolean, arr: any[]) {\n if (!Array.isArray(arr)) return false;\n if (arr.length === 0) return true;\n if (isString) {\n return arr.every((item) => typeof item === 'string');\n } else {\n return arr.every((item) => Number.isSafeInteger(item));\n }\n}\n\nfunction afn(input: Function): input is Function {\n if (typeof input !== 'function') throw new Error('function expected');\n return true;\n}\n\nfunction astr(label: string, input: unknown): input is string {\n if (typeof input !== 'string') throw new Error(`${label}: string expected`);\n return true;\n}\n\nfunction anumber(n: number): void {\n if (!Number.isSafeInteger(n)) throw new Error(`invalid integer: ${n}`);\n}\n\nfunction aArr(input: any[]) {\n if (!Array.isArray(input)) throw new Error('array expected');\n}\nfunction astrArr(label: string, input: string[]) {\n if (!isArrayOf(true, input)) throw new Error(`${label}: array of strings expected`);\n}\nfunction anumArr(label: string, input: number[]) {\n if (!isArrayOf(false, input)) throw new Error(`${label}: array of numbers expected`);\n}\n\n// TODO: some recusive type inference so it would check correct order of input/output inside rest?\n// like <string, number>, <number, bytes>, <bytes, float>\ntype Chain = [Coder<any, any>, ...Coder<any, any>[]];\n// Extract info from Coder type\ntype Input<F> = F extends Coder<infer T, any> ? T : never;\ntype Output<F> = F extends Coder<any, infer T> ? T : never;\n// Generic function for arrays\ntype First<T> = T extends [infer U, ...any[]] ? U : never;\ntype Last<T> = T extends [...any[], infer U] ? U : never;\ntype Tail<T> = T extends [any, ...infer U] ? U : never;\n\ntype AsChain<C extends Chain, Rest = Tail<C>> = {\n // C[K] = Coder<Input<C[K]>, Input<Rest[k]>>\n [K in keyof C]: Coder<Input<C[K]>, Input<K extends keyof Rest ? Rest[K] : any>>;\n};\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction chain<T extends Chain & AsChain<T>>(...args: T): Coder<Input<First<T>>, Output<Last<T>>> {\n const id = (a: any) => a;\n // Wrap call in closure so JIT can inline calls\n const wrap = (a: any, b: any) => (c: any) => a(b(c));\n // Construct chain of args[-1].encode(args[-2].encode([...]))\n const encode = args.map((x) => x.encode).reduceRight(wrap, id);\n // Construct chain of args[0].decode(args[1].decode(...))\n const decode = args.map((x) => x.decode).reduce(wrap, id);\n return { encode, decode };\n}\n\n/**\n * Encodes integer radix representation to array of strings using alphabet and back.\n * Could also be array of strings.\n * @__NO_SIDE_EFFECTS__\n */\nfunction alphabet(letters: string | string[]): Coder<number[], string[]> {\n // mapping 1 to \"b\"\n const lettersA = typeof letters === 'string' ? letters.split('') : letters;\n const len = lettersA.length;\n astrArr('alphabet', lettersA);\n\n // mapping \"b\" to 1\n const indexes = new Map(lettersA.map((l, i) => [l, i]));\n return {\n encode: (digits: number[]) => {\n aArr(digits);\n return digits.map((i) => {\n if (!Number.isSafeInteger(i) || i < 0 || i >= len)\n throw new Error(\n `alphabet.encode: digit index outside alphabet \"${i}\". Allowed: ${letters}`\n );\n return lettersA[i]!;\n });\n },\n decode: (input: string[]): number[] => {\n aArr(input);\n return input.map((letter) => {\n astr('alphabet.decode', letter);\n const i = indexes.get(letter);\n if (i === undefined) throw new Error(`Unknown letter: \"${letter}\". Allowed: ${letters}`);\n return i;\n });\n },\n };\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction join(separator = ''): Coder<string[], string> {\n astr('join', separator);\n return {\n encode: (from) => {\n astrArr('join.decode', from);\n return from.join(separator);\n },\n decode: (to) => {\n astr('join.decode', to);\n return to.split(separator);\n },\n };\n}\n\n/**\n * Pad strings array so it has integer number of bits\n * @__NO_SIDE_EFFECTS__\n */\nfunction padding(bits: number, chr = '='): Coder<string[], string[]> {\n anumber(bits);\n astr('padding', chr);\n return {\n encode(data: string[]): string[] {\n astrArr('padding.encode', data);\n while ((data.length * bits) % 8) data.push(chr);\n return data;\n },\n decode(input: string[]): string[] {\n astrArr('padding.decode', input);\n let end = input.length;\n if ((end * bits) % 8)\n throw new Error('padding: invalid, string should have whole number of bytes');\n for (; end > 0 && input[end - 1] === chr; end--) {\n const last = end - 1;\n const byte = last * bits;\n if (byte % 8 === 0) throw new Error('padding: invalid, string has too much padding');\n }\n return input.slice(0, end);\n },\n };\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction normalize<T>(fn: (val: T) => T): Coder<T, T> {\n afn(fn);\n return { encode: (from: T) => from, decode: (to: T) => fn(to) };\n}\n\n/**\n * Slow: O(n^2) time complexity\n */\nfunction convertRadix(data: number[], from: number, to: number): number[] {\n // base 1 is impossible\n if (from < 2) throw new Error(`convertRadix: invalid from=${from}, base cannot be less than 2`);\n if (to < 2) throw new Error(`convertRadix: invalid to=${to}, base cannot be less than 2`);\n aArr(data);\n if (!data.length) return [];\n let pos = 0;\n const res = [];\n const digits = Array.from(data, (d) => {\n anumber(d);\n if (d < 0 || d >= from) throw new Error(`invalid integer: ${d}`);\n return d;\n });\n const dlen = digits.length;\n while (true) {\n let carry = 0;\n let done = true;\n for (let i = pos; i < dlen; i++) {\n const digit = digits[i]!;\n const fromCarry = from * carry;\n const digitBase = fromCarry + digit;\n if (\n !Number.isSafeInteger(digitBase) ||\n fromCarry / from !== carry ||\n digitBase - digit !== fromCarry\n ) {\n throw new Error('convertRadix: carry overflow');\n }\n const div = digitBase / to;\n carry = digitBase % to;\n const rounded = Math.floor(div);\n digits[i] = rounded;\n if (!Number.isSafeInteger(rounded) || rounded * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow');\n if (!done) continue;\n else if (!rounded) pos = i;\n else done = false;\n }\n res.push(carry);\n if (done) break;\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++) res.push(0);\n return res.reverse();\n}\n\nconst gcd = (a: number, b: number): number => (b === 0 ? a : gcd(b, a % b));\nconst radix2carry = /* @__NO_SIDE_EFFECTS__ */ (from: number, to: number) =>\n from + (to - gcd(from, to));\nconst powers: number[] = /* @__PURE__ */ (() => {\n let res = [];\n for (let i = 0; i < 40; i++) res.push(2 ** i);\n return res;\n})();\n/**\n * Implemented with numbers, because BigInt is 5x slower\n */\nfunction convertRadix2(data: number[], from: number, to: number, padding: boolean): number[] {\n aArr(data);\n if (from <= 0 || from > 32) throw new Error(`convertRadix2: wrong from=${from}`);\n if (to <= 0 || to > 32) throw new Error(`convertRadix2: wrong to=${to}`);\n if (radix2carry(from, to) > 32) {\n throw new Error(\n `convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`\n );\n }\n let carry = 0;\n let pos = 0; // bitwise position in current element\n const max = powers[from]!;\n const mask = powers[to]! - 1;\n const res: number[] = [];\n for (const n of data) {\n anumber(n);\n if (n >= max) throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32) throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to) res.push(((carry >> (pos - to)) & mask) >>> 0);\n const pow = powers[pos];\n if (pow === undefined) throw new Error('invalid carry');\n carry &= pow - 1; // clean carry, otherwise it will cause overflow\n }\n carry = (carry << (to - pos)) & mask;\n if (!padding && pos >= from) throw new Error('Excess padding');\n if (!padding && carry > 0) throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0) res.push(carry >>> 0);\n return res;\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix(num: number): Coder<Uint8Array, number[]> {\n anumber(num);\n const _256 = 2 ** 8;\n return {\n encode: (bytes: Uint8Array) => {\n if (!isBytes(bytes)) throw new Error('radix.encode input should be Uint8Array');\n return convertRadix(Array.from(bytes), _256, num);\n },\n decode: (digits: number[]) => {\n anumArr('radix.decode', digits);\n return Uint8Array.from(convertRadix(digits, num, _256));\n },\n };\n}\n\n/**\n * If both bases are power of same number (like `2**8 <-> 2**64`),\n * there is a linear algorithm. For now we have implementation for power-of-two bases only.\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix2(bits: number, revPadding = false): Coder<Uint8Array, number[]> {\n anumber(bits);\n if (bits <= 0 || bits > 32) throw new Error('radix2: bits should be in (0..32]');\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow');\n return {\n encode: (bytes: Uint8Array) => {\n if (!isBytes(bytes)) throw new Error('radix2.encode input should be Uint8Array');\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n },\n decode: (digits: number[]) => {\n anumArr('radix2.decode', digits);\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n },\n };\n}\n\ntype ArgumentTypes<F extends Function> = F extends (...args: infer A) => any ? A : never;\nfunction unsafeWrapper<T extends (...args: any) => any>(fn: T) {\n afn(fn);\n return function (...args: ArgumentTypes<T>): ReturnType<T> | void {\n try {\n return fn.apply(null, args);\n } catch (e) {}\n };\n}\n\nfunction checksum(\n len: number,\n fn: (data: Uint8Array) => Uint8Array\n): Coder<Uint8Array, Uint8Array> {\n anumber(len);\n afn(fn);\n return {\n encode(data: Uint8Array) {\n if (!isBytes(data)) throw new Error('checksum.encode: input should be Uint8Array');\n const sum = fn(data).slice(0, len);\n const res = new Uint8Array(data.length + len);\n res.set(data);\n res.set(sum, data.length);\n return res;\n },\n decode(data: Uint8Array) {\n if (!isBytes(data)) throw new Error('checksum.decode: input should be Uint8Array');\n const payload = data.slice(0, -len);\n const oldChecksum = data.slice(-len);\n const newChecksum = fn(payload).slice(0, len);\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i]) throw new Error('Invalid checksum');\n return payload;\n },\n };\n}\n\n// prettier-ignore\nexport const utils: { alphabet: typeof alphabet; chain: typeof chain; checksum: typeof checksum; convertRadix: typeof convertRadix; convertRadix2: typeof convertRadix2; radix: typeof radix; radix2: typeof radix2; join: typeof join; padding: typeof padding; } = {\n alphabet, chain, checksum, convertRadix, convertRadix2, radix, radix2, join, padding,\n};\n\n// RFC 4648 aka RFC 3548\n// ---------------------\n\n/**\n * base16 encoding from RFC 4648.\n * @example\n * ```js\n * base16.encode(Uint8Array.from([0x12, 0xab]));\n * // => '12AB'\n * ```\n */\nexport const base16: BytesCoder = chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\n\n/**\n * base32 encoding from RFC 4648. Has padding.\n * Use `base32nopad` for unpadded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ===='\n * base32.decode('CKVQ====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32: BytesCoder = chain(\n radix2(5),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'),\n padding(5),\n join('')\n);\n\n/**\n * base32 encoding from RFC 4648. No padding.\n * Use `base32` for padded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ'\n * base32nopad.decode('CKVQ');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32nopad: BytesCoder = chain(\n radix2(5),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'),\n join('')\n);\n/**\n * base32 encoding from RFC 4648. Padded. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hexnopad` for unpadded version.\n * @example\n * ```js\n * base32hex.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG===='\n * base32hex.decode('2ALG====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hex: BytesCoder = chain(\n radix2(5),\n alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'),\n padding(5),\n join('')\n);\n\n/**\n * base32 encoding from RFC 4648. No padding. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hex` for padded version.\n * @example\n * ```js\n * base32hexnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG'\n * base32hexnopad.decode('2ALG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hexnopad: BytesCoder = chain(\n radix2(5),\n alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'),\n join('')\n);\n/**\n * base32 encoding from RFC 4648. Doug Crockford's version.\n * https://www.crockford.com/base32.html\n * @example\n * ```js\n * base32crockford.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ANG'\n * base32crockford.decode('2ANG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32crockford: BytesCoder = chain(\n radix2(5),\n alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'),\n join(''),\n normalize((s: string) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1'))\n);\n\n// Built-in base64 conversion https://caniuse.com/mdn-javascript_builtins_uint8array_frombase64\n// prettier-ignore\nconst hasBase64Builtin: boolean = /* @__PURE__ */ (() =>\n typeof (Uint8Array as any).from([]).toBase64 === 'function' &&\n typeof (Uint8Array as any).fromBase64 === 'function')();\n\nconst decodeBase64Builtin = (s: string, isUrl: boolean) => {\n astr('base64', s);\n const re = isUrl ? /^[A-Za-z0-9=_-]+$/ : /^[A-Za-z0-9=+/]+$/;\n const alphabet = isUrl ? 'base64url' : 'base64';\n if (s.length > 0 && !re.test(s)) throw new Error('invalid base64');\n return (Uint8Array as any).fromBase64(s, { alphabet, lastChunkHandling: 'strict' });\n};\n\n/**\n * base64 from RFC 4648. Padded.\n * Use `base64nopad` for unpadded version.\n * Also check out `base64url`, `base64urlnopad`.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64: BytesCoder = hasBase64Builtin ? {\n encode(b) { abytes(b); return (b as any).toBase64(); },\n decode(s) { return decodeBase64Builtin(s, false); },\n} : chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'),\n padding(6),\n join('')\n);\n/**\n * base64 from RFC 4648. No padding.\n * Use `base64` for padded version.\n * @example\n * ```js\n * base64nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64nopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64nopad: BytesCoder = chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'),\n join('')\n);\n\n/**\n * base64 from RFC 4648, using URL-safe alphabet. Padded.\n * Use `base64urlnopad` for unpadded version.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64url.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64url.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64url: BytesCoder = hasBase64Builtin ? {\n encode(b) { abytes(b); return (b as any).toBase64({ alphabet: 'base64url' }); },\n decode(s) { return decodeBase64Builtin(s, true); },\n} : chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'),\n padding(6),\n join('')\n);\n\n/**\n * base64 from RFC 4648, using URL-safe alphabet. No padding.\n * Use `base64url` for padded version.\n * @example\n * ```js\n * base64urlnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64urlnopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64urlnopad: BytesCoder = chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'),\n join('')\n);\n\n// base58 code\n// -----------\nconst genBase58 = /* @__NO_SIDE_EFFECTS__ */ (abc: string) =>\n chain(radix(58), alphabet(abc), join(''));\n\n/**\n * base58: base64 without ambigous characters +, /, 0, O, I, l.\n * Quadratic (O(n^2)) - so, can't be used on large inputs.\n * @example\n * ```js\n * base58.decode('01abcdef');\n * // => '3UhJW'\n * ```\n */\nexport const base58: BytesCoder = genBase58(\n '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n);\n/**\n * base58: flickr version. Check out `base58`.\n */\nexport const base58flickr: BytesCoder = genBase58(\n '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n);\n/**\n * base58: XRP version. Check out `base58`.\n */\nexport const base58xrp: BytesCoder = genBase58(\n 'rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz'\n);\n\n// Data len (index) -> encoded block len\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\n\n/**\n * base58: XMR version. Check out `base58`.\n * Done in 8-byte blocks (which equals 11 chars in decoding). Last (non-full) block padded with '1' to size in XMR_BLOCK_LEN.\n * Block encoding significantly reduces quadratic complexity of base58.\n */\nexport const base58xmr: BytesCoder = {\n encode(data: Uint8Array) {\n let res = '';\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8);\n res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length]!, '1');\n }\n return res;\n },\n decode(str: string) {\n let res: number[] = [];\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11);\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n const block = base58.decode(slice);\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0) throw new Error('base58xmr: wrong padding');\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)));\n }\n return Uint8Array.from(res);\n },\n};\n\n/**\n * Method, which creates base58check encoder.\n * Requires function, calculating sha256.\n */\nexport const createBase58check = (sha256: (data: Uint8Array) => Uint8Array): BytesCoder =>\n chain(\n checksum(4, (data) => sha256(sha256(data))),\n base58\n );\n\n/**\n * Use `createBase58check` instead.\n * @deprecated\n */\nexport const base58check: (sha256: (data: Uint8Array) => Uint8Array) => BytesCoder =\n createBase58check;\n\n// Bech32 code\n// -----------\nexport interface Bech32Decoded<Prefix extends string = string> {\n prefix: Prefix;\n words: number[];\n}\nexport interface Bech32DecodedWithArray<Prefix extends string = string> {\n prefix: Prefix;\n words: number[];\n bytes: Uint8Array;\n}\n\nconst BECH_ALPHABET: Coder<number[], string> = chain(\n alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'),\n join('')\n);\n\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\nfunction bech32Polymod(pre: number): number {\n const b = pre >> 25;\n let chk = (pre & 0x1ffffff) << 5;\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1) chk ^= POLYMOD_GENERATORS[i]!;\n }\n return chk;\n}\n\nfunction bechChecksum(prefix: string, words: number[], encodingConst = 1): string {\n const len = prefix.length;\n let chk = 1;\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126) throw new Error(`Invalid prefix (${prefix})`);\n chk = bech32Polymod(chk) ^ (c >> 5);\n }\n chk = bech32Polymod(chk);\n for (let i = 0; i < len; i++) chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n for (let v of words) chk = bech32Polymod(chk) ^ v;\n for (let i = 0; i < 6; i++) chk = bech32Polymod(chk);\n chk ^= encodingConst;\n return BECH_ALPHABET.encode(convertRadix2([chk % powers[30]!], 30, 5, false));\n}\n\nexport interface Bech32 {\n encode<Prefix extends string>(\n prefix: Prefix,\n words: number[] | Uint8Array,\n limit?: number | false\n ): `${Lowercase<Prefix>}1${string}`;\n decode<Prefix extends string>(\n str: `${Prefix}1${string}`,\n limit?: number | false\n ): Bech32Decoded<Prefix>;\n encodeFromBytes(prefix: string, bytes: Uint8Array): string;\n decodeToBytes(str: string): Bech32DecodedWithArray;\n decodeUnsafe(str: string, limit?: number | false): void | Bech32Decoded<string>;\n fromWords(to: number[]): Uint8Array;\n fromWordsUnsafe(to: number[]): void | Uint8Array;\n toWords(from: Uint8Array): number[];\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction genBech32(encoding: 'bech32' | 'bech32m'): Bech32 {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n const _words = radix2(5);\n const fromWords = _words.decode;\n const toWords = _words.encode;\n const fromWordsUnsafe = unsafeWrapper(fromWords);\n\n function encode<Prefix extends string>(\n prefix: Prefix,\n words: number[] | Uint8Array,\n limit: number | false = 90\n ): `${Lowercase<Prefix>}1${string}` {\n astr('bech32.encode prefix', prefix);\n if (isBytes(words)) words = Array.from(words);\n anumArr('bech32.encode', words);\n const plen = prefix.length;\n if (plen === 0) throw new TypeError(`Invalid prefix length ${plen}`);\n const actualLength = plen + 7 + words.length;\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n const lowered = prefix.toLowerCase();\n const sum = bechChecksum(lowered, words, ENCODING_CONST);\n return `${lowered}1${BECH_ALPHABET.encode(words)}${sum}` as `${Lowercase<Prefix>}1${string}`;\n }\n\n function decode<Prefix extends string>(\n str: `${Prefix}1${string}`,\n limit?: number | false\n ): Bech32Decoded<Prefix>;\n function decode(str: string, limit?: number | false): Bech32Decoded;\n function decode(str: string, limit: number | false = 90): Bech32Decoded {\n astr('bech32.decode input', str);\n const slen = str.length;\n if (slen < 8 || (limit !== false && slen > limit))\n throw new TypeError(`invalid string length: ${slen} (${str}). Expected (8..${limit})`);\n // don't allow mixed case\n const lowered = str.toLowerCase();\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`);\n const sepIndex = lowered.lastIndexOf('1');\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`);\n const prefix = lowered.slice(0, sepIndex);\n const data = lowered.slice(sepIndex + 1);\n if (data.length < 6) throw new Error('Data must be at least 6 characters long');\n const words = BECH_ALPHABET.decode(data).slice(0, -6);\n const sum = bechChecksum(prefix, words, ENCODING_CONST);\n if (!data.endsWith(sum)) throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n return { prefix, words };\n }\n\n const decodeUnsafe = unsafeWrapper(decode);\n\n function decodeToBytes(str: string): Bech32DecodedWithArray {\n const { prefix, words } = decode(str, false);\n return { prefix, words, bytes: fromWords(words) };\n }\n\n function encodeFromBytes(prefix: string, bytes: Uint8Array) {\n return encode(prefix, toWords(bytes));\n }\n\n return {\n encode,\n decode,\n encodeFromBytes,\n decodeToBytes,\n decodeUnsafe,\n fromWords,\n fromWordsUnsafe,\n toWords,\n };\n}\n\n/**\n * bech32 from BIP 173. Operates on words.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32: Bech32 = genBech32('bech32');\n\n/**\n * bech32m from BIP 350. Operates on words.\n * It was to mitigate `bech32` weaknesses.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32m: Bech32 = genBech32('bech32m');\n\ndeclare const TextEncoder: any;\ndeclare const TextDecoder: any;\n\n/**\n * UTF-8-to-byte decoder. Uses built-in TextDecoder / TextEncoder.\n * @example\n * ```js\n * const b = utf8.decode(\"hey\"); // => new Uint8Array([ 104, 101, 121 ])\n * const str = utf8.encode(b); // \"hey\"\n * ```\n */\nexport const utf8: BytesCoder = {\n encode: (data) => new TextDecoder().decode(data),\n decode: (str) => new TextEncoder().encode(str),\n};\n\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\n// prettier-ignore\nconst hasHexBuiltin: boolean = /* @__PURE__ */ (() =>\n typeof (Uint8Array as any).from([]).toHex === 'function' &&\n typeof (Uint8Array as any).fromHex === 'function')();\n// prettier-ignore\nconst hexBuiltin: BytesCoder = {\n encode(data) { abytes(data); return (data as any).toHex(); },\n decode(s) { astr('hex', s); return (Uint8Array as any).fromHex(s); },\n};\n/**\n * hex string decoder. Uses built-in function, when available.\n * @example\n * ```js\n * const b = hex.decode(\"0102ff\"); // => new Uint8Array([ 1, 2, 255 ])\n * const str = hex.encode(b); // \"0102ff\"\n * ```\n */\nexport const hex: BytesCoder = hasHexBuiltin\n ? hexBuiltin\n : chain(\n radix2(4),\n alphabet('0123456789abcdef'),\n join(''),\n normalize((s: string) => {\n if (typeof s !== 'string' || s.length % 2 !== 0)\n throw new TypeError(\n `hex.decode: expected string, got ${typeof s} with length ${s.length}`\n );\n return s.toLowerCase();\n })\n );\n\nexport type SomeCoders = {\n utf8: BytesCoder;\n hex: BytesCoder;\n base16: BytesCoder;\n base32: BytesCoder;\n base64: BytesCoder;\n base64url: BytesCoder;\n base58: BytesCoder;\n base58xmr: BytesCoder;\n};\n// prettier-ignore\nconst CODERS: SomeCoders = {\n utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n};\ntype CoderType = keyof SomeCoders;\nconst coderTypeError =\n 'Invalid encoding type. Available types: utf8, hex, base16, base32, base64, base64url, base58, base58xmr';\n\n/** @deprecated */\nexport const bytesToString = (type: CoderType, bytes: Uint8Array): string => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type)) throw new TypeError(coderTypeError);\n if (!isBytes(bytes)) throw new TypeError('bytesToString() expects Uint8Array');\n return CODERS[type].encode(bytes);\n};\n\n/** @deprecated */\nexport const str: (type: CoderType, bytes: Uint8Array) => string = bytesToString; // as in python, but for bytes only\n\n/** @deprecated */\nexport const stringToBytes = (type: CoderType, str: string): Uint8Array => {\n if (!CODERS.hasOwnProperty(type)) throw new TypeError(coderTypeError);\n if (typeof str !== 'string') throw new TypeError('stringToBytes() expects string');\n return CODERS[type].decode(str);\n};\n/** @deprecated */\nexport const bytes: (type: CoderType, str: string) => Uint8Array = stringToBytes;\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { base58 } from \"@scure/base\";\nimport { CryptoError, CryptoErrorCode } from \".\";\nimport { BLOCKHASH_LENGTH } from \"../constants\";\n\n/**\n * Represents a 32-byte blockhash used for transaction replay protection.\n *\n * @example\n * ```typescript\n * // From RPC response\n * const blockhash = Blockhash.fromString(rpcBlockhash);\n *\n * // Comparison\n * if (blockhash1.equals(blockhash2)) {\n * console.log(\"Same blockhash\");\n * }\n * ```\n */\nexport class Blockhash {\n\tprivate readonly bytes: Uint8Array;\n\n\tprivate constructor(bytes: Uint8Array) {\n\t\tif (bytes.length !== BLOCKHASH_LENGTH) {\n\t\t\tthrow CryptoError.invalidKeyLength(BLOCKHASH_LENGTH, bytes.length);\n\t\t}\n\t\tthis.bytes = new Uint8Array(bytes);\n\t}\n\n\t/**\n\t * Creates a Blockhash from raw bytes.\n\t *\n\t * @param bytes - 32-byte blockhash\n\t * @throws {CryptoError} If bytes length is not 32\n\t */\n\tstatic fromBytes(bytes: Uint8Array): Blockhash {\n\t\treturn new Blockhash(bytes);\n\t}\n\n\t/**\n\t * Creates a Blockhash from a base58-encoded string.\n\t *\n\t * @param str - Base58-encoded blockhash\n\t * @throws {CryptoError} If string is invalid or decodes to wrong length\n\t */\n\tstatic fromString(str: string): Blockhash {\n\t\ttry {\n\t\t\tconst bytes = base58.decode(str);\n\t\t\treturn new Blockhash(bytes);\n\t\t} catch (error) {\n\t\t\tthrow new CryptoError(\n\t\t\t\tCryptoErrorCode.INVALID_BLOCKHASH,\n\t\t\t\t`Invalid base58 blockhash: ${error instanceof Error ? error.message : \"unknown error\"}`,\n\t\t\t\t{ input: str },\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Returns a copy of the raw bytes.\n\t */\n\ttoBytes(): Uint8Array {\n\t\treturn new Uint8Array(this.bytes);\n\t}\n\n\t/**\n\t * Returns the base58-encoded string representation.\n\t */\n\ttoString(): string {\n\t\treturn base58.encode(this.bytes);\n\t}\n\n\t/**\n\t * Checks equality with another blockhash using constant-time comparison.\n\t */\n\tequals(other: Blockhash): boolean {\n\t\tif (!other) return false;\n\t\tif (this.bytes.length !== other.bytes.length) return false;\n\t\tfor (let i = 0; i < this.bytes.length; i++) {\n\t\t\tif (this.bytes[i] !== other.bytes[i]) return false;\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * JSON serialization (returns base58 string).\n\t */\n\ttoJSON(): string {\n\t\treturn this.toString();\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Error codes for cryptographic operations.\n */\nexport enum CryptoErrorCode {\n\tINVALID_KEY_LENGTH = \"INVALID_KEY_LENGTH\",\n\tINVALID_SIGNATURE = \"INVALID_SIGNATURE\",\n\tINVALID_PUBLIC_KEY = \"INVALID_PUBLIC_KEY\",\n\tINVALID_BLOCKHASH = \"INVALID_BLOCKHASH\",\n\tINVALID_MNEMONIC = \"INVALID_MNEMONIC\",\n\tKEY_DERIVATION_FAILED = \"KEY_DERIVATION_FAILED\",\n\tKEYPAIR_DISPOSED = \"KEYPAIR_DISPOSED\",\n}\n\n/**\n * Error class for cryptographic operations.\n *\n * Provides structured error information with error codes and contextual details\n * for better debugging and error handling.\n */\nexport class CryptoError extends Error {\n\tpublic readonly code: CryptoErrorCode;\n\tpublic readonly details?: Record<string, unknown>;\n\n\tconstructor(\n\t\tcode: CryptoErrorCode,\n\t\tmessage: string,\n\t\tdetails?: Record<string, unknown>,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"CryptoError\";\n\t\tthis.code = code;\n\t\tthis.details = details;\n\t}\n\n\tstatic invalidKeyLength(expected: number, actual: number): CryptoError {\n\t\treturn new CryptoError(\n\t\t\tCryptoErrorCode.INVALID_KEY_LENGTH,\n\t\t\t`Invalid key length: expected ${expected} bytes, got ${actual} bytes`,\n\t\t\t{ expected, actual },\n\t\t);\n\t}\n\n\tstatic invalidMnemonic(reason?: string): CryptoError {\n\t\tconst message = reason\n\t\t\t? `Invalid mnemonic: ${reason}`\n\t\t\t: \"Invalid mnemonic phrase. Check that all words are valid and in the correct order.\";\n\t\treturn new CryptoError(CryptoErrorCode.INVALID_MNEMONIC, message);\n\t}\n\n\tstatic keyDerivationFailed(path: string, cause?: Error): CryptoError {\n\t\treturn new CryptoError(\n\t\t\tCryptoErrorCode.KEY_DERIVATION_FAILED,\n\t\t\t`Failed to derive key at path: ${path}`,\n\t\t\t{ path, cause: cause?.message },\n\t\t);\n\t}\n\n\tstatic keypairDisposed(): CryptoError {\n\t\treturn new CryptoError(\n\t\t\tCryptoErrorCode.KEYPAIR_DISPOSED,\n\t\t\t\"Cannot use disposed keypair. The private key has been securely erased from memory.\",\n\t\t);\n\t}\n}\n","/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\n/**\n * 5KB JS implementation of ed25519 EdDSA signatures.\n * Compliant with RFC8032, FIPS 186-5 & ZIP215.\n * @module\n * @example\n * ```js\nimport * as ed from '@noble/ed25519';\n(async () => {\n const secretKey = ed.utils.randomSecretKey();\n const message = Uint8Array.from([0xab, 0xbc, 0xcd, 0xde]);\n const pubKey = await ed.getPublicKeyAsync(secretKey); // Sync methods are also present\n const signature = await ed.signAsync(message, secretKey);\n const isValid = await ed.verifyAsync(signature, message, pubKey);\n})();\n```\n */\n/**\n * Curve params. ed25519 is twisted edwards curve. Equation is −x² + y² = -a + dx²y².\n * * P = `2n**255n - 19n` // field over which calculations are done\n * * N = `2n**252n + 27742317777372353535851937790883648493n` // group order, amount of curve points\n * * h = 8 // cofactor\n * * a = `Fp.create(BigInt(-1))` // equation param\n * * d = -121665/121666 a.k.a. `Fp.neg(121665 * Fp.inv(121666))` // equation param\n * * Gx, Gy are coordinates of Generator / base point\n */\nconst ed25519_CURVE = {\n p: 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,\n n: 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,\n h: 8n,\n a: 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,\n d: 0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,\n Gx: 0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,\n Gy: 0x6666666666666666666666666666666666666666666666666666666666666658n,\n};\nconst { p: P, n: N, Gx, Gy, a: _a, d: _d, h } = ed25519_CURVE;\nconst L = 32; // field / group byte length\nconst L2 = 64;\n// Helpers and Precomputes sections are reused between libraries\n// ## Helpers\n// ----------\nconst captureTrace = (...args) => {\n if ('captureStackTrace' in Error && typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(...args);\n }\n};\nconst err = (message = '') => {\n const e = new Error(message);\n captureTrace(e, err);\n throw e;\n};\nconst isBig = (n) => typeof n === 'bigint'; // is big integer\nconst isStr = (s) => typeof s === 'string'; // is string\nconst isBytes = (a) => a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n/** Asserts something is Uint8Array. */\nconst abytes = (value, length, title = '') => {\n const bytes = isBytes(value);\n const len = value?.length;\n const needsLen = length !== undefined;\n if (!bytes || (needsLen && len !== length)) {\n const prefix = title && `\"${title}\" `;\n const ofLen = needsLen ? ` of length ${length}` : '';\n const got = bytes ? `length=${len}` : `type=${typeof value}`;\n err(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);\n }\n return value;\n};\n/** create Uint8Array */\nconst u8n = (len) => new Uint8Array(len);\nconst u8fr = (buf) => Uint8Array.from(buf);\nconst padh = (n, pad) => n.toString(16).padStart(pad, '0');\nconst bytesToHex = (b) => Array.from(abytes(b))\n .map((e) => padh(e, 2))\n .join('');\nconst C = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 }; // ASCII characters\nconst _ch = (ch) => {\n if (ch >= C._0 && ch <= C._9)\n return ch - C._0; // '2' => 50-48\n if (ch >= C.A && ch <= C.F)\n return ch - (C.A - 10); // 'B' => 66-(65-10)\n if (ch >= C.a && ch <= C.f)\n return ch - (C.a - 10); // 'b' => 98-(97-10)\n return;\n};\nconst hexToBytes = (hex) => {\n const e = 'hex invalid';\n if (!isStr(hex))\n return err(e);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n return err(e);\n const array = u8n(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n // treat each char as ASCII\n const n1 = _ch(hex.charCodeAt(hi)); // parse first char, multiply it by 16\n const n2 = _ch(hex.charCodeAt(hi + 1)); // parse second char\n if (n1 === undefined || n2 === undefined)\n return err(e);\n array[ai] = n1 * 16 + n2; // example: 'A9' => 10*16 + 9\n }\n return array;\n};\nconst cr = () => globalThis?.crypto; // WebCrypto is available in all modern environments\nconst subtle = () => cr()?.subtle ?? err('crypto.subtle must be defined, consider polyfill');\n// prettier-ignore\nconst concatBytes = (...arrs) => {\n const r = u8n(arrs.reduce((sum, a) => sum + abytes(a).length, 0)); // create u8a of summed length\n let pad = 0; // walk through each array,\n arrs.forEach(a => { r.set(a, pad); pad += a.length; }); // ensure they have proper type\n return r;\n};\n/** WebCrypto OS-level CSPRNG (random number generator). Will throw when not available. */\nconst randomBytes = (len = L) => {\n const c = cr();\n return c.getRandomValues(u8n(len));\n};\nconst big = BigInt;\nconst assertRange = (n, min, max, msg = 'bad number: out of range') => (isBig(n) && min <= n && n < max ? n : err(msg));\n/** modular division */\nconst M = (a, b = P) => {\n const r = a % b;\n return r >= 0n ? r : b + r;\n};\nconst modN = (a) => M(a, N);\n/** Modular inversion using euclidean GCD (non-CT). No negative exponent for now. */\n// prettier-ignore\nconst invert = (num, md) => {\n if (num === 0n || md <= 0n)\n err('no inverse n=' + num + ' mod=' + md);\n let a = M(num, md), b = md, x = 0n, y = 1n, u = 1n, v = 0n;\n while (a !== 0n) {\n const q = b / a, r = b % a;\n const m = x - u * q, n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n return b === 1n ? M(x, md) : err('no inverse'); // b is gcd at this point\n};\nconst callHash = (name) => {\n // @ts-ignore\n const fn = hashes[name];\n if (typeof fn !== 'function')\n err('hashes.' + name + ' not set');\n return fn;\n};\nconst hash = (msg) => callHash('sha512')(msg);\nconst apoint = (p) => (p instanceof Point ? p : err('Point expected'));\n// ## End of Helpers\n// -----------------\nconst B256 = 2n ** 256n;\n/** Point in XYZT extended coordinates. */\nclass Point {\n static BASE;\n static ZERO;\n X;\n Y;\n Z;\n T;\n constructor(X, Y, Z, T) {\n const max = B256;\n this.X = assertRange(X, 0n, max);\n this.Y = assertRange(Y, 0n, max);\n this.Z = assertRange(Z, 1n, max);\n this.T = assertRange(T, 0n, max);\n Object.freeze(this);\n }\n static CURVE() {\n return ed25519_CURVE;\n }\n static fromAffine(p) {\n return new Point(p.x, p.y, 1n, M(p.x * p.y));\n }\n /** RFC8032 5.1.3: Uint8Array to Point. */\n static fromBytes(hex, zip215 = false) {\n const d = _d;\n // Copy array to not mess it up.\n const normed = u8fr(abytes(hex, L));\n // adjust first LE byte = last BE byte\n const lastByte = hex[31];\n normed[31] = lastByte & ~0x80;\n const y = bytesToNumLE(normed);\n // zip215=true: 0 <= y < 2^256\n // zip215=false, RFC8032: 0 <= y < 2^255-19\n const max = zip215 ? B256 : P;\n assertRange(y, 0n, max);\n const y2 = M(y * y); // y²\n const u = M(y2 - 1n); // u=y²-1\n const v = M(d * y2 + 1n); // v=dy²+1\n let { isValid, value: x } = uvRatio(u, v); // (uv³)(uv⁷)^(p-5)/8; square root\n if (!isValid)\n err('bad point: y not sqrt'); // not square root: bad point\n const isXOdd = (x & 1n) === 1n; // adjust sign of x coordinate\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (!zip215 && x === 0n && isLastByteOdd)\n err('bad point: x==0, isLastByteOdd'); // x=0, x_0=1\n if (isLastByteOdd !== isXOdd)\n x = M(-x);\n return new Point(x, y, 1n, M(x * y)); // Z=1, T=xy\n }\n static fromHex(hex, zip215) {\n return Point.fromBytes(hexToBytes(hex), zip215);\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n /** Checks if the point is valid and on-curve. */\n assertValidity() {\n const a = _a;\n const d = _d;\n const p = this;\n if (p.is0())\n return err('bad point: ZERO'); // TODO: optimize, with vars below?\n // Equation in affine coordinates: ax² + y² = 1 + dx²y²\n // Equation in projective coordinates (X/Z, Y/Z, Z): (aX² + Y²)Z² = Z⁴ + dX²Y²\n const { X, Y, Z, T } = p;\n const X2 = M(X * X); // X²\n const Y2 = M(Y * Y); // Y²\n const Z2 = M(Z * Z); // Z²\n const Z4 = M(Z2 * Z2); // Z⁴\n const aX2 = M(X2 * a); // aX²\n const left = M(Z2 * M(aX2 + Y2)); // (aX² + Y²)Z²\n const right = M(Z4 + M(d * M(X2 * Y2))); // Z⁴ + dX²Y²\n if (left !== right)\n return err('bad point: equation left != right (1)');\n // In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T\n const XY = M(X * Y);\n const ZT = M(Z * T);\n if (XY !== ZT)\n return err('bad point: equation left != right (2)');\n return this;\n }\n /** Equality check: compare points P&Q. */\n equals(other) {\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const { X: X2, Y: Y2, Z: Z2 } = apoint(other); // checks class equality\n const X1Z2 = M(X1 * Z2);\n const X2Z1 = M(X2 * Z1);\n const Y1Z2 = M(Y1 * Z2);\n const Y2Z1 = M(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n is0() {\n return this.equals(I);\n }\n /** Flip point over y coordinate. */\n negate() {\n return new Point(M(-this.X), this.Y, this.Z, M(-this.T));\n }\n /** Point doubling. Complete formula. Cost: `4M + 4S + 1*a + 6add + 1*2`. */\n double() {\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const a = _a;\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n const A = M(X1 * X1);\n const B = M(Y1 * Y1);\n const C = M(2n * M(Z1 * Z1));\n const D = M(a * A);\n const x1y1 = X1 + Y1;\n const E = M(M(x1y1 * x1y1) - A - B);\n const G = D + B;\n const F = G - C;\n const H = D - B;\n const X3 = M(E * F);\n const Y3 = M(G * H);\n const T3 = M(E * H);\n const Z3 = M(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n /** Point addition. Complete formula. Cost: `8M + 1*k + 8add + 1*2`. */\n add(other) {\n const { X: X1, Y: Y1, Z: Z1, T: T1 } = this;\n const { X: X2, Y: Y2, Z: Z2, T: T2 } = apoint(other); // doesn't check if other on-curve\n const a = _a;\n const d = _d;\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-3\n const A = M(X1 * X2);\n const B = M(Y1 * Y2);\n const C = M(T1 * d * T2);\n const D = M(Z1 * Z2);\n const E = M((X1 + Y1) * (X2 + Y2) - A - B);\n const F = M(D - C);\n const G = M(D + C);\n const H = M(B - a * A);\n const X3 = M(E * F);\n const Y3 = M(G * H);\n const T3 = M(E * H);\n const Z3 = M(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n subtract(other) {\n return this.add(apoint(other).negate());\n }\n /**\n * Point-by-scalar multiplication. Scalar must be in range 1 <= n < CURVE.n.\n * Uses {@link wNAF} for base point.\n * Uses fake point to mitigate side-channel leakage.\n * @param n scalar by which point is multiplied\n * @param safe safe mode guards against timing attacks; unsafe mode is faster\n */\n multiply(n, safe = true) {\n if (!safe && (n === 0n || this.is0()))\n return I;\n assertRange(n, 1n, N);\n if (n === 1n)\n return this;\n if (this.equals(G))\n return wNAF(n).p;\n // init result point & fake point\n let p = I;\n let f = G;\n for (let d = this; n > 0n; d = d.double(), n >>= 1n) {\n // if bit is present, add to point\n // if not present, add to fake, for timing safety\n if (n & 1n)\n p = p.add(d);\n else if (safe)\n f = f.add(d);\n }\n return p;\n }\n multiplyUnsafe(scalar) {\n return this.multiply(scalar, false);\n }\n /** Convert point to 2d xy affine point. (X, Y, Z) ∋ (x=X/Z, y=Y/Z) */\n toAffine() {\n const { X, Y, Z } = this;\n // fast-paths for ZERO point OR Z=1\n if (this.equals(I))\n return { x: 0n, y: 1n };\n const iz = invert(Z, P);\n // (Z * Z^-1) must be 1, otherwise bad math\n if (M(Z * iz) !== 1n)\n err('invalid inverse');\n // x = X*Z^-1; y = Y*Z^-1\n const x = M(X * iz);\n const y = M(Y * iz);\n return { x, y };\n }\n toBytes() {\n const { x, y } = this.assertValidity().toAffine();\n const b = numTo32bLE(y);\n // store sign in first LE byte\n b[31] |= x & 1n ? 0x80 : 0;\n return b;\n }\n toHex() {\n return bytesToHex(this.toBytes());\n }\n clearCofactor() {\n return this.multiply(big(h), false);\n }\n isSmallOrder() {\n return this.clearCofactor().is0();\n }\n isTorsionFree() {\n // Multiply by big number N. We can't `mul(N)` because of checks. Instead, we `mul(N/2)*2+1`\n let p = this.multiply(N / 2n, false).double();\n if (N % 2n)\n p = p.add(this);\n return p.is0();\n }\n}\n/** Generator / base point */\nconst G = new Point(Gx, Gy, 1n, M(Gx * Gy));\n/** Identity / zero point */\nconst I = new Point(0n, 1n, 1n, 0n);\n// Static aliases\nPoint.BASE = G;\nPoint.ZERO = I;\nconst numTo32bLE = (num) => hexToBytes(padh(assertRange(num, 0n, B256), L2)).reverse();\nconst bytesToNumLE = (b) => big('0x' + bytesToHex(u8fr(abytes(b)).reverse()));\nconst pow2 = (x, power) => {\n // pow2(x, 4) == x^(2^4)\n let r = x;\n while (power-- > 0n) {\n r *= r;\n r %= P;\n }\n return r;\n};\n// prettier-ignore\nconst pow_2_252_3 = (x) => {\n const x2 = (x * x) % P; // x^2, bits 1\n const b2 = (x2 * x) % P; // x^3, bits 11\n const b4 = (pow2(b2, 2n) * b2) % P; // x^(2^4-1), bits 1111\n const b5 = (pow2(b4, 1n) * x) % P; // x^(2^5-1), bits 11111\n const b10 = (pow2(b5, 5n) * b5) % P; // x^(2^10)\n const b20 = (pow2(b10, 10n) * b10) % P; // x^(2^20)\n const b40 = (pow2(b20, 20n) * b20) % P; // x^(2^40)\n const b80 = (pow2(b40, 40n) * b40) % P; // x^(2^80)\n const b160 = (pow2(b80, 80n) * b80) % P; // x^(2^160)\n const b240 = (pow2(b160, 80n) * b80) % P; // x^(2^240)\n const b250 = (pow2(b240, 10n) * b10) % P; // x^(2^250)\n const pow_p_5_8 = (pow2(b250, 2n) * x) % P; // < To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n};\nconst RM1 = 0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n; // √-1\n// for sqrt comp\n// prettier-ignore\nconst uvRatio = (u, v) => {\n const v3 = M(v * v * v); // v³\n const v7 = M(v3 * v3 * v); // v⁷\n const pow = pow_2_252_3(u * v7).pow_p_5_8; // (uv⁷)^(p-5)/8\n let x = M(u * v3 * pow); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = M(v * x * x); // vx²\n const root1 = x; // First root candidate\n const root2 = M(x * RM1); // Second root candidate; RM1 is √-1\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === M(-u); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === M(-u * RM1); // There is no valid root, vx² = -u√-1\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2; // We return root2 anyway, for const-time\n if ((M(x) & 1n) === 1n)\n x = M(-x); // edIsNegative\n return { isValid: useRoot1 || useRoot2, value: x };\n};\n// N == L, just weird naming\nconst modL_LE = (hash) => modN(bytesToNumLE(hash)); // modulo L; but little-endian\n/** hashes.sha512 should conform to the interface. */\n// TODO: rename\nconst sha512a = (...m) => hashes.sha512Async(concatBytes(...m)); // Async SHA512\nconst sha512s = (...m) => callHash('sha512')(concatBytes(...m));\n// RFC8032 5.1.5\nconst hash2extK = (hashed) => {\n // slice creates a copy, unlike subarray\n const head = hashed.slice(0, L);\n head[0] &= 248; // Clamp bits: 0b1111_1000\n head[31] &= 127; // 0b0111_1111\n head[31] |= 64; // 0b0100_0000\n const prefix = hashed.slice(L, L2); // secret key \"prefix\"\n const scalar = modL_LE(head); // modular division over curve order\n const point = G.multiply(scalar); // public key point\n const pointBytes = point.toBytes(); // point serialized to Uint8Array\n return { head, prefix, scalar, point, pointBytes };\n};\n// RFC8032 5.1.5; getPublicKey async, sync. Hash priv key and extract point.\nconst getExtendedPublicKeyAsync = (secretKey) => sha512a(abytes(secretKey, L)).then(hash2extK);\nconst getExtendedPublicKey = (secretKey) => hash2extK(sha512s(abytes(secretKey, L)));\n/** Creates 32-byte ed25519 public key from 32-byte secret key. Async. */\nconst getPublicKeyAsync = (secretKey) => getExtendedPublicKeyAsync(secretKey).then((p) => p.pointBytes);\n/** Creates 32-byte ed25519 public key from 32-byte secret key. To use, set `hashes.sha512` first. */\nconst getPublicKey = (priv) => getExtendedPublicKey(priv).pointBytes;\nconst hashFinishA = (res) => sha512a(res.hashable).then(res.finish);\nconst hashFinishS = (res) => res.finish(sha512s(res.hashable));\n// Code, shared between sync & async sign\nconst _sign = (e, rBytes, msg) => {\n const { pointBytes: P, scalar: s } = e;\n const r = modL_LE(rBytes); // r was created outside, reduce it modulo L\n const R = G.multiply(r).toBytes(); // R = [r]B\n const hashable = concatBytes(R, P, msg); // dom2(F, C) || R || A || PH(M)\n const finish = (hashed) => {\n // k = SHA512(dom2(F, C) || R || A || PH(M))\n const S = modN(r + modL_LE(hashed) * s); // S = (r + k * s) mod L; 0 <= s < l\n return abytes(concatBytes(R, numTo32bLE(S)), L2); // 64-byte sig: 32b R.x + 32b LE(S)\n };\n return { hashable, finish };\n};\n/**\n * Signs message using secret key. Async.\n * Follows RFC8032 5.1.6.\n */\nconst signAsync = async (message, secretKey) => {\n const m = abytes(message);\n const e = await getExtendedPublicKeyAsync(secretKey);\n const rBytes = await sha512a(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinishA(_sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\n/**\n * Signs message using secret key. To use, set `hashes.sha512` first.\n * Follows RFC8032 5.1.6.\n */\nconst sign = (message, secretKey) => {\n const m = abytes(message);\n const e = getExtendedPublicKey(secretKey);\n const rBytes = sha512s(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinishS(_sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst defaultVerifyOpts = { zip215: true };\nconst _verify = (sig, msg, pub, opts = defaultVerifyOpts) => {\n sig = abytes(sig, L2); // Signature hex str/Bytes, must be 64 bytes\n msg = abytes(msg); // Message hex str/Bytes\n pub = abytes(pub, L);\n const { zip215 } = opts; // switch between zip215 and rfc8032 verif\n let A;\n let R;\n let s;\n let SB;\n let hashable = Uint8Array.of();\n try {\n A = Point.fromBytes(pub, zip215); // public key A decoded\n R = Point.fromBytes(sig.slice(0, L), zip215); // 0 <= R < 2^256: ZIP215 R can be >= P\n s = bytesToNumLE(sig.slice(L, L2)); // Decode second half as an integer S\n SB = G.multiply(s, false); // in the range 0 <= s < L\n hashable = concatBytes(R.toBytes(), A.toBytes(), msg); // dom2(F, C) || R || A || PH(M)\n }\n catch (error) { }\n const finish = (hashed) => {\n // k = SHA512(dom2(F, C) || R || A || PH(M))\n if (SB == null)\n return false; // false if try-catch catched an error\n if (!zip215 && A.isSmallOrder())\n return false; // false for SBS: Strongly Binding Signature\n const k = modL_LE(hashed); // decode in little-endian, modulo L\n const RkA = R.add(A.multiply(k, false)); // [8]R + [8][k]A'\n return RkA.add(SB.negate()).clearCofactor().is0(); // [8][S]B = [8]R + [8][k]A'\n };\n return { hashable, finish };\n};\n/** Verifies signature on message and public key. Async. Follows RFC8032 5.1.7. */\nconst verifyAsync = async (signature, message, publicKey, opts = defaultVerifyOpts) => hashFinishA(_verify(signature, message, publicKey, opts));\n/** Verifies signature on message and public key. To use, set `hashes.sha512` first. Follows RFC8032 5.1.7. */\nconst verify = (signature, message, publicKey, opts = defaultVerifyOpts) => hashFinishS(_verify(signature, message, publicKey, opts));\n/** Math, hex, byte helpers. Not in `utils` because utils share API with noble-curves. */\nconst etc = {\n bytesToHex: bytesToHex,\n hexToBytes: hexToBytes,\n concatBytes: concatBytes,\n mod: M,\n invert: invert,\n randomBytes: randomBytes,\n};\nconst hashes = {\n sha512Async: async (message) => {\n const s = subtle();\n const m = concatBytes(message);\n return u8n(await s.digest('SHA-512', m.buffer));\n },\n sha512: undefined,\n};\n// FIPS 186 B.4.1 compliant key generation produces private keys\n// with modulo bias being neglible. takes >N+16 bytes, returns (hash mod n-1)+1\nconst randomSecretKey = (seed = randomBytes(L)) => seed;\nconst keygen = (seed) => {\n const secretKey = randomSecretKey(seed);\n const publicKey = getPublicKey(secretKey);\n return { secretKey, publicKey };\n};\nconst keygenAsync = async (seed) => {\n const secretKey = randomSecretKey(seed);\n const publicKey = await getPublicKeyAsync(secretKey);\n return { secretKey, publicKey };\n};\n/** ed25519-specific key utilities. */\nconst utils = {\n getExtendedPublicKeyAsync: getExtendedPublicKeyAsync,\n getExtendedPublicKey: getExtendedPublicKey,\n randomSecretKey: randomSecretKey,\n};\n// ## Precomputes\n// --------------\nconst W = 8; // W is window size\nconst scalarBits = 256;\nconst pwindows = Math.ceil(scalarBits / W) + 1; // 33 for W=8, NOT 32 - see wNAF loop\nconst pwindowSize = 2 ** (W - 1); // 128 for W=8\nconst precompute = () => {\n const points = [];\n let p = G;\n let b = p;\n for (let w = 0; w < pwindows; w++) {\n b = p;\n points.push(b);\n for (let i = 1; i < pwindowSize; i++) {\n b = b.add(p);\n points.push(b);\n } // i=1, bc we skip 0\n p = b.double();\n }\n return points;\n};\nlet Gpows = undefined; // precomputes for base point G\n// const-time negate\nconst ctneg = (cnd, p) => {\n const n = p.negate();\n return cnd ? n : p;\n};\n/**\n * Precomputes give 12x faster getPublicKey(), 10x sign(), 2x verify() by\n * caching multiples of G (base point). Cache is stored in 32MB of RAM.\n * Any time `G.multiply` is done, precomputes are used.\n * Not used for getSharedSecret, which instead multiplies random pubkey `P.multiply`.\n *\n * w-ary non-adjacent form (wNAF) precomputation method is 10% slower than windowed method,\n * but takes 2x less RAM. RAM reduction is possible by utilizing `.subtract`.\n *\n * !! Precomputes can be disabled by commenting-out call of the wNAF() inside Point#multiply().\n */\nconst wNAF = (n) => {\n const comp = Gpows || (Gpows = precompute());\n let p = I;\n let f = G; // f must be G, or could become I in the end\n const pow_2_w = 2 ** W; // 256 for W=8\n const maxNum = pow_2_w; // 256 for W=8\n const mask = big(pow_2_w - 1); // 255 for W=8 == mask 0b11111111\n const shiftBy = big(W); // 8 for W=8\n for (let w = 0; w < pwindows; w++) {\n let wbits = Number(n & mask); // extract W bits.\n n >>= shiftBy; // shift number by W bits.\n // We use negative indexes to reduce size of precomputed table by 2x.\n // Instead of needing precomputes 0..256, we only calculate them for 0..128.\n // If an index > 128 is found, we do (256-index) - where 256 is next window.\n // Naive: index +127 => 127, +224 => 224\n // Optimized: index +127 => 127, +224 => 256-32\n if (wbits > pwindowSize) {\n wbits -= maxNum;\n n += 1n;\n }\n const off = w * pwindowSize;\n const offF = off; // offsets, evaluate both\n const offP = off + Math.abs(wbits) - 1;\n const isEven = w % 2 !== 0; // conditions, evaluate both\n const isNeg = wbits < 0;\n if (wbits === 0) {\n // off == I: can't add it. Adding random offF instead.\n f = f.add(ctneg(isEven, comp[offF])); // bits are 0: add garbage to fake point\n }\n else {\n p = p.add(ctneg(isNeg, comp[offP])); // bits are 1: add to result point\n }\n }\n if (n !== 0n)\n err('invalid wnaf');\n return { p, f }; // return both real and fake points for JIT\n};\n// !! Remove the export to easily use in REPL / browser console\nexport { etc, getPublicKey, getPublicKeyAsync, hash, hashes, keygen, keygenAsync, Point, sign, signAsync, utils, verify, verifyAsync, };\n","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a: unknown): a is Uint8Array {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\n/** Asserts something is positive integer. */\nexport function anumber(n: number, title: string = ''): void {\n if (!Number.isSafeInteger(n) || n < 0) {\n const prefix = title && `\"${title}\" `;\n throw new Error(`${prefix}expected integer >0, got ${n}`);\n }\n}\n\n/** Asserts something is Uint8Array. */\nexport function abytes(value: Uint8Array, length?: number, title: string = ''): Uint8Array {\n const bytes = isBytes(value);\n const len = value?.length;\n const needsLen = length !== undefined;\n if (!bytes || (needsLen && len !== length)) {\n const prefix = title && `\"${title}\" `;\n const ofLen = needsLen ? ` of length ${length}` : '';\n const got = bytes ? `length=${len}` : `type=${typeof value}`;\n throw new Error(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);\n }\n return value;\n}\n\n/** Asserts something is hash */\nexport function ahash(h: CHash): void {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash must wrapped by utils.createHasher');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\n\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance: any, checkFinished = true): void {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\n\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out: any, instance: any): void {\n abytes(out, undefined, 'digestInto() output');\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('\"digestInto() output\" expected to be of length >=' + min);\n }\n}\n\n/** Generic type encompassing 8/16/32-byte arrays - but not 64-byte. */\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr: TypedArray): Uint8Array {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr: TypedArray): Uint32Array {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays: TypedArray[]): void {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr: TypedArray): DataView {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word: number, shift: number): number {\n return (word << (32 - shift)) | (word >>> shift);\n}\n\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word: number, shift: number): number {\n return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE: boolean = /* @__PURE__ */ (() =>\n new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n\n/** The byte swap operation for uint32 */\nexport function byteSwap(word: number): number {\n return (\n ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff)\n );\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE: (n: number) => number = isLE\n ? (n: number) => n\n : (n: number) => byteSwap(n);\n\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr: Uint32Array): Uint32Array {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n return arr;\n}\n\nexport const swap32IfBE: (u: Uint32Array) => Uint32Array = isLE\n ? (u: Uint32Array) => u\n : byteSwap32;\n\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin: boolean = /* @__PURE__ */ (() =>\n // @ts-ignore\n typeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin) return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 } as const;\nfunction asciiToBase16(ch: number): number | undefined {\n if (ch >= asciis._0 && ch <= asciis._9) return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F) return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f) return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n // @ts-ignore\n if (hasHexBuiltin) return Uint8Array.fromHex(hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async (): Promise<void> => {};\n\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(\n iters: number,\n tick: number,\n cb: (i: number) => void\n): Promise<void> {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols, but ts doesn't see them: https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * Converts string to bytes using UTF8 encoding.\n * Built-in doesn't validate input to be string: we do the check.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n/** KDFs can accept string or Uint8Array for user convenience. */\nexport type KDFInput = string | Uint8Array;\n\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data: KDFInput, errorTitle = ''): Uint8Array {\n if (typeof data === 'string') return utf8ToBytes(data);\n return abytes(data, undefined, errorTitle);\n}\n\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\ntype EmptyObj = {};\n/** Merges default options and passed options. */\nexport function checkOpts<T1 extends EmptyObj, T2 extends EmptyObj>(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('options must be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\n/** Common interface for all hashes. */\nexport interface Hash<T> {\n blockLen: number; // Bytes per block\n outputLen: number; // Bytes in output\n update(buf: Uint8Array): this;\n digestInto(buf: Uint8Array): void;\n digest(): Uint8Array;\n destroy(): void;\n _cloneInto(to?: T): T;\n clone(): T;\n}\n\n/** PseudoRandom (number) Generator */\nexport interface PRG {\n addEntropy(seed: Uint8Array): void;\n randomBytes(length: number): Uint8Array;\n clean(): void;\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF<T extends Hash<T>> = Hash<T> & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\n/** Hash constructor */\nexport type HasherCons<T, Opts = undefined> = Opts extends undefined ? () => T : (opts?: Opts) => T;\n/** Optional hash params. */\nexport type HashInfo = {\n oid?: Uint8Array; // DER encoded OID in bytes\n};\n/** Hash function */\nexport type CHash<T extends Hash<T> = Hash<any>, Opts = undefined> = {\n outputLen: number;\n blockLen: number;\n} & HashInfo &\n (Opts extends undefined\n ? {\n (msg: Uint8Array): Uint8Array;\n create(): T;\n }\n : {\n (msg: Uint8Array, opts?: Opts): Uint8Array;\n create(opts?: Opts): T;\n });\n/** XOF with output */\nexport type CHashXOF<T extends HashXOF<T> = HashXOF<any>, Opts = undefined> = CHash<T, Opts>;\n\n/** Creates function with outputLen, blockLen, create properties from a class constructor. */\nexport function createHasher<T extends Hash<T>, Opts = undefined>(\n hashCons: HasherCons<T, Opts>,\n info: HashInfo = {}\n): CHash<T, Opts> {\n const hashC: any = (msg: Uint8Array, opts?: Opts) => hashCons(opts).update(msg).digest();\n const tmp = hashCons(undefined);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts?: Opts) => hashCons(opts);\n Object.assign(hashC, info);\n return Object.freeze(hashC);\n}\n\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n const cr = typeof globalThis === 'object' ? (globalThis as any).crypto : null;\n if (typeof cr?.getRandomValues !== 'function')\n throw new Error('crypto.getRandomValues must be defined');\n return cr.getRandomValues(new Uint8Array(bytesLength));\n}\n\n/** Creates OID opts for NIST hashes, with prefix 06 09 60 86 48 01 65 03 04 02. */\nexport const oidNist = (suffix: number): Required<HashInfo> => ({\n oid: Uint8Array.from([0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, suffix]),\n});\n","/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nimport { abytes, aexists, aoutput, clean, createView, type Hash } from './utils.ts';\n\n/** Choice: a ? b : c */\nexport function Chi(a: number, b: number, c: number): number {\n return (a & b) ^ (~a & c);\n}\n\n/** Majority function, true if any two inputs is true. */\nexport function Maj(a: number, b: number, c: number): number {\n return (a & b) ^ (a & c) ^ (b & c);\n}\n\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport abstract class HashMD<T extends HashMD<T>> implements Hash<T> {\n protected abstract process(buf: DataView, offset: number): void;\n protected abstract get(): number[];\n protected abstract set(...args: number[]): void;\n abstract destroy(): void;\n protected abstract roundClean(): void;\n\n readonly blockLen: number;\n readonly outputLen: number;\n readonly padOffset: number;\n readonly isLE: boolean;\n\n // For partial updates less than block size\n protected buffer: Uint8Array;\n protected view: DataView;\n protected finished = false;\n protected length = 0;\n protected pos = 0;\n protected destroyed = false;\n\n constructor(blockLen: number, outputLen: number, padOffset: number, isLE: boolean) {\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data: Uint8Array): this {\n aexists(this);\n abytes(data);\n const { view, buffer, blockLen } = this;\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen) this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out: Uint8Array): void {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n clean(this.buffer.subarray(pos));\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++) buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n view.setBigUint64(blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which must be fused in single op with modulo by JIT\n if (len % 4) throw new Error('_sha2: outputLen must be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length) throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++) oview.setUint32(4 * i, state[i], isLE);\n }\n digest(): Uint8Array {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to?: T): T {\n to ||= new (this.constructor as any)() as T;\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.destroyed = destroyed;\n to.finished = finished;\n to.length = length;\n to.pos = pos;\n if (length % blockLen) to.buffer.set(buffer);\n return to as unknown as any;\n }\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53.\n * Check out `test/misc/sha2-gen-iv.js` for recomputation guide.\n */\n\n/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */\nexport const SHA256_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n]);\n\n/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */\nexport const SHA224_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4,\n]);\n\n/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */\nexport const SHA384_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4,\n]);\n\n/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */\nexport const SHA512_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,\n]);\n","/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\nfunction fromBig(\n n: bigint,\n le = false\n): {\n h: number;\n l: number;\n} {\n if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nfunction split(lst: bigint[], le = false): Uint32Array[] {\n const len = lst.length;\n let Ah = new Uint32Array(len);\n let Al = new Uint32Array(len);\n for (let i = 0; i < len; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number): bigint => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number): number => h >>> s;\nconst shrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number): number => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number): number => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number): number => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number): number => l;\nconst rotr32L = (h: number, _l: number): number => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number): number => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number): number => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number): number => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number): number => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(\n Ah: number,\n Al: number,\n Bh: number,\n Bl: number\n): {\n h: number;\n l: number;\n} {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number): number => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number): number =>\n (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number): number =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number): number =>\n (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number): number =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number): number =>\n (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig\n};\n// prettier-ignore\nconst u64: { fromBig: typeof fromBig; split: typeof split; toBig: (h: number, l: number) => bigint; shrSH: (h: number, _l: number, s: number) => number; shrSL: (h: number, l: number, s: number) => number; rotrSH: (h: number, l: number, s: number) => number; rotrSL: (h: number, l: number, s: number) => number; rotrBH: (h: number, l: number, s: number) => number; rotrBL: (h: number, l: number, s: number) => number; rotr32H: (_h: number, l: number) => number; rotr32L: (h: number, _l: number) => number; rotlSH: (h: number, l: number, s: number) => number; rotlSL: (h: number, l: number, s: number) => number; rotlBH: (h: number, l: number, s: number) => number; rotlBL: (h: number, l: number, s: number) => number; add: typeof add; add3L: (Al: number, Bl: number, Cl: number) => number; add3H: (low: number, Ah: number, Bh: number, Ch: number) => number; add4L: (Al: number, Bl: number, Cl: number, Dl: number) => number; add4H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number) => number; add5H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) => number; add5L: (Al: number, Bl: number, Cl: number, Dl: number, El: number) => number; } = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n","/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out [RFC 4634](https://www.rfc-editor.org/rfc/rfc4634) and\n * [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nimport { Chi, HashMD, Maj, SHA224_IV, SHA256_IV, SHA384_IV, SHA512_IV } from './_md.ts';\nimport * as u64 from './_u64.ts';\nimport { type CHash, clean, createHasher, oidNist, rotr } from './utils.ts';\n\n/**\n * Round constants:\n * First 32 bits of fractional parts of the cube roots of the first 64 primes 2..311)\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n\n/** Reusable temporary buffer. \"W\" comes straight from spec. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\n\n/** Internal 32-byte base SHA2 hash class. */\nabstract class SHA2_32B<T extends SHA2_32B<T>> extends HashMD<T> {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n protected abstract A: number;\n protected abstract B: number;\n protected abstract C: number;\n protected abstract D: number;\n protected abstract E: number;\n protected abstract F: number;\n protected abstract G: number;\n protected abstract H: number;\n\n constructor(outputLen: number) {\n super(64, outputLen, 8, false);\n }\n protected get(): [number, number, number, number, number, number, number, number] {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n protected set(\n A: number, B: number, C: number, D: number, E: number, F: number, G: number, H: number\n ): void {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n protected process(view: DataView, offset: number): void {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n protected roundClean(): void {\n clean(SHA256_W);\n }\n destroy(): void {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n clean(this.buffer);\n }\n}\n\n/** Internal SHA2-256 hash class. */\nexport class _SHA256 extends SHA2_32B<_SHA256> {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n protected A: number = SHA256_IV[0] | 0;\n protected B: number = SHA256_IV[1] | 0;\n protected C: number = SHA256_IV[2] | 0;\n protected D: number = SHA256_IV[3] | 0;\n protected E: number = SHA256_IV[4] | 0;\n protected F: number = SHA256_IV[5] | 0;\n protected G: number = SHA256_IV[6] | 0;\n protected H: number = SHA256_IV[7] | 0;\n constructor() {\n super(32);\n }\n}\n\n/** Internal SHA2-224 hash class. */\nexport class _SHA224 extends SHA2_32B<_SHA224> {\n protected A: number = SHA224_IV[0] | 0;\n protected B: number = SHA224_IV[1] | 0;\n protected C: number = SHA224_IV[2] | 0;\n protected D: number = SHA224_IV[3] | 0;\n protected E: number = SHA224_IV[4] | 0;\n protected F: number = SHA224_IV[5] | 0;\n protected G: number = SHA224_IV[6] | 0;\n protected H: number = SHA224_IV[7] | 0;\n constructor() {\n super(28);\n }\n}\n\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n\n// Round contants\n// First 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409\n// prettier-ignore\nconst K512 = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n\n// Reusable temporary buffers\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\n\n/** Internal 64-byte base SHA2 hash class. */\nabstract class SHA2_64B<T extends SHA2_64B<T>> extends HashMD<T> {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n // h -- high 32 bits, l -- low 32 bits\n protected abstract Ah: number;\n protected abstract Al: number;\n protected abstract Bh: number;\n protected abstract Bl: number;\n protected abstract Ch: number;\n protected abstract Cl: number;\n protected abstract Dh: number;\n protected abstract Dl: number;\n protected abstract Eh: number;\n protected abstract El: number;\n protected abstract Fh: number;\n protected abstract Fl: number;\n protected abstract Gh: number;\n protected abstract Gl: number;\n protected abstract Hh: number;\n protected abstract Hl: number;\n\n constructor(outputLen: number) {\n super(128, outputLen, 16, false);\n }\n // prettier-ignore\n protected get(): [\n number, number, number, number, number, number, number, number,\n number, number, number, number, number, number, number, number\n ] {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n protected set(\n Ah: number, Al: number, Bh: number, Bl: number, Ch: number, Cl: number, Dh: number, Dl: number,\n Eh: number, El: number, Fh: number, Fl: number, Gh: number, Gl: number, Hh: number, Hl: number\n ): void {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n protected process(view: DataView, offset: number): void {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n protected roundClean(): void {\n clean(SHA512_W_H, SHA512_W_L);\n }\n destroy(): void {\n clean(this.buffer);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\n\n/** Internal SHA2-512 hash class. */\nexport class _SHA512 extends SHA2_64B<_SHA512> {\n protected Ah: number = SHA512_IV[0] | 0;\n protected Al: number = SHA512_IV[1] | 0;\n protected Bh: number = SHA512_IV[2] | 0;\n protected Bl: number = SHA512_IV[3] | 0;\n protected Ch: number = SHA512_IV[4] | 0;\n protected Cl: number = SHA512_IV[5] | 0;\n protected Dh: number = SHA512_IV[6] | 0;\n protected Dl: number = SHA512_IV[7] | 0;\n protected Eh: number = SHA512_IV[8] | 0;\n protected El: number = SHA512_IV[9] | 0;\n protected Fh: number = SHA512_IV[10] | 0;\n protected Fl: number = SHA512_IV[11] | 0;\n protected Gh: number = SHA512_IV[12] | 0;\n protected Gl: number = SHA512_IV[13] | 0;\n protected Hh: number = SHA512_IV[14] | 0;\n protected Hl: number = SHA512_IV[15] | 0;\n\n constructor() {\n super(64);\n }\n}\n\n/** Internal SHA2-384 hash class. */\nexport class _SHA384 extends SHA2_64B<_SHA384> {\n protected Ah: number = SHA384_IV[0] | 0;\n protected Al: number = SHA384_IV[1] | 0;\n protected Bh: number = SHA384_IV[2] | 0;\n protected Bl: number = SHA384_IV[3] | 0;\n protected Ch: number = SHA384_IV[4] | 0;\n protected Cl: number = SHA384_IV[5] | 0;\n protected Dh: number = SHA384_IV[6] | 0;\n protected Dl: number = SHA384_IV[7] | 0;\n protected Eh: number = SHA384_IV[8] | 0;\n protected El: number = SHA384_IV[9] | 0;\n protected Fh: number = SHA384_IV[10] | 0;\n protected Fl: number = SHA384_IV[11] | 0;\n protected Gh: number = SHA384_IV[12] | 0;\n protected Gl: number = SHA384_IV[13] | 0;\n protected Hh: number = SHA384_IV[14] | 0;\n protected Hl: number = SHA384_IV[15] | 0;\n\n constructor() {\n super(48);\n }\n}\n\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See `test/misc/sha2-gen-iv.js`.\n */\n\n/** SHA512/224 IV */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n 0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n 0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n\n/** SHA512/256 IV */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n 0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n 0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\n\n/** Internal SHA2-512/224 hash class. */\nexport class _SHA512_224 extends SHA2_64B<_SHA512_224> {\n protected Ah: number = T224_IV[0] | 0;\n protected Al: number = T224_IV[1] | 0;\n protected Bh: number = T224_IV[2] | 0;\n protected Bl: number = T224_IV[3] | 0;\n protected Ch: number = T224_IV[4] | 0;\n protected Cl: number = T224_IV[5] | 0;\n protected Dh: number = T224_IV[6] | 0;\n protected Dl: number = T224_IV[7] | 0;\n protected Eh: number = T224_IV[8] | 0;\n protected El: number = T224_IV[9] | 0;\n protected Fh: number = T224_IV[10] | 0;\n protected Fl: number = T224_IV[11] | 0;\n protected Gh: number = T224_IV[12] | 0;\n protected Gl: number = T224_IV[13] | 0;\n protected Hh: number = T224_IV[14] | 0;\n protected Hl: number = T224_IV[15] | 0;\n\n constructor() {\n super(28);\n }\n}\n\n/** Internal SHA2-512/256 hash class. */\nexport class _SHA512_256 extends SHA2_64B<_SHA512_256> {\n protected Ah: number = T256_IV[0] | 0;\n protected Al: number = T256_IV[1] | 0;\n protected Bh: number = T256_IV[2] | 0;\n protected Bl: number = T256_IV[3] | 0;\n protected Ch: number = T256_IV[4] | 0;\n protected Cl: number = T256_IV[5] | 0;\n protected Dh: number = T256_IV[6] | 0;\n protected Dl: number = T256_IV[7] | 0;\n protected Eh: number = T256_IV[8] | 0;\n protected El: number = T256_IV[9] | 0;\n protected Fh: number = T256_IV[10] | 0;\n protected Fl: number = T256_IV[11] | 0;\n protected Gh: number = T256_IV[12] | 0;\n protected Gl: number = T256_IV[13] | 0;\n protected Hh: number = T256_IV[14] | 0;\n protected Hl: number = T256_IV[15] | 0;\n\n constructor() {\n super(32);\n }\n}\n\n/**\n * SHA2-256 hash function from RFC 4634. In JS it's the fastest: even faster than Blake3. Some info:\n *\n * - Trying 2^128 hashes would get 50% chance of collision, using birthday attack.\n * - BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n * - Each sha256 hash is executing 2^18 bit operations.\n * - Good 2024 ASICs can do 200Th/sec with 3500 watts of power, corresponding to 2^36 hashes/joule.\n */\nexport const sha256: CHash<_SHA256> = /* @__PURE__ */ createHasher(\n () => new _SHA256(),\n /* @__PURE__ */ oidNist(0x01)\n);\n/** SHA2-224 hash function from RFC 4634 */\nexport const sha224: CHash<_SHA224> = /* @__PURE__ */ createHasher(\n () => new _SHA224(),\n /* @__PURE__ */ oidNist(0x04)\n);\n\n/** SHA2-512 hash function from RFC 4634. */\nexport const sha512: CHash<_SHA512> = /* @__PURE__ */ createHasher(\n () => new _SHA512(),\n /* @__PURE__ */ oidNist(0x03)\n);\n/** SHA2-384 hash function from RFC 4634. */\nexport const sha384: CHash<_SHA384> = /* @__PURE__ */ createHasher(\n () => new _SHA384(),\n /* @__PURE__ */ oidNist(0x02)\n);\n\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_256: CHash<_SHA512_256> = /* @__PURE__ */ createHasher(\n () => new _SHA512_256(),\n /* @__PURE__ */ oidNist(0x06)\n);\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_224: CHash<_SHA512_224> = /* @__PURE__ */ createHasher(\n () => new _SHA512_224(),\n /* @__PURE__ */ oidNist(0x05)\n);\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { base58 } from \"@scure/base\";\nimport * as ed25519 from \"@noble/ed25519\";\nimport { PUBLIC_KEY_LENGTH } from \"../constants\";\nimport { CryptoError, CryptoErrorCode } from \"./errors\";\nimport type { Signature } from \"./signature\";\n\n/**\n * Represents a 32-byte Ed25519 public key.\n *\n * @example\n * ```typescript\n * // From base58 string\n * const pubkey = PublicKey.fromString(\"5ZqB9U...\");\n *\n * // From bytes\n * const pubkey = PublicKey.fromBytes(new Uint8Array(32));\n *\n * // Comparison\n * if (pubkey1.equals(pubkey2)) {\n * console.log(\"Keys match\");\n * }\n * ```\n */\nexport class PublicKey {\n\tprivate readonly bytes: Uint8Array;\n\n\tprivate constructor(bytes: Uint8Array) {\n\t\tif (bytes.length !== PUBLIC_KEY_LENGTH) {\n\t\t\tthrow CryptoError.invalidKeyLength(PUBLIC_KEY_LENGTH, bytes.length);\n\t\t}\n\t\tthis.bytes = new Uint8Array(bytes);\n\t}\n\n\t/**\n\t * Creates a PublicKey from raw bytes.\n\t *\n\t * @param bytes - 32-byte Ed25519 public key\n\t * @throws {CryptoError} If bytes length is not 32\n\t */\n\tstatic fromBytes(bytes: Uint8Array): PublicKey {\n\t\treturn new PublicKey(bytes);\n\t}\n\n\t/**\n\t * Creates a PublicKey from a base58-encoded string.\n\t *\n\t * @param str - Base58-encoded public key\n\t * @throws {CryptoError} If string is invalid or decodes to wrong length\n\t */\n\tstatic fromString(str: string): PublicKey {\n\t\ttry {\n\t\t\tconst bytes = base58.decode(str);\n\t\t\treturn new PublicKey(bytes);\n\t\t} catch (error) {\n\t\t\tthrow new CryptoError(\n\t\t\t\tCryptoErrorCode.INVALID_PUBLIC_KEY,\n\t\t\t\t`Invalid base58 public key: ${error instanceof Error ? error.message : \"unknown error\"}`,\n\t\t\t\t{ input: str },\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Returns a copy of the raw bytes.\n\t */\n\ttoBytes(): Uint8Array {\n\t\treturn new Uint8Array(this.bytes);\n\t}\n\n\t/**\n\t * Returns the base58-encoded string representation.\n\t */\n\ttoString(): string {\n\t\treturn base58.encode(this.bytes);\n\t}\n\n\t/**\n\t * Checks equality with another public key using constant-time comparison.\n\t */\n\tequals(other: PublicKey): boolean {\n\t\tif (!other) return false;\n\t\tif (this.bytes.length !== other.bytes.length) return false;\n\t\tfor (let i = 0; i < this.bytes.length; i++) {\n\t\t\tif (this.bytes[i] !== other.bytes[i]) return false;\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Verifies an Ed25519 signature over a message.\n\t *\n\t * @param message - Message bytes that were signed\n\t * @param signature - Signature to verify\n\t * @returns True if signature is valid, false otherwise\n\t *\n\t * @example\n\t * ```typescript\n\t * const message = new Uint8Array([1, 2, 3]);\n\t * const signature = keypair.sign(message);\n\t * const isValid = keypair.publicKey.verify(message, signature);\n\t * ```\n\t */\n\tverify(message: Uint8Array, signature: Signature): boolean {\n\t\treturn ed25519.verify(\n\t\t\tsignature.toBytes(),\n\t\t\tmessage,\n\t\t\tthis.bytes,\n\t\t);\n\t}\n\n\t/**\n\t * JSON serialization (returns base58 string).\n\t */\n\ttoJSON(): string {\n\t\treturn this.toString();\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { base58 } from \"@scure/base\";\nimport { SIGNATURE_LENGTH } from \"../constants\";\nimport { CryptoError, CryptoErrorCode } from \"./errors\";\n\n/**\n * Represents a 64-byte Ed25519 signature.\n *\n * @example\n * ```typescript\n * // From bytes\n * const sig = Signature.fromBytes(signatureBytes);\n *\n * // From base58 string\n * const sig = Signature.fromString(\"3Bxs4h...\");\n *\n * // Serialize\n * const base58 = sig.toString();\n * ```\n */\nexport class Signature {\n\tprivate readonly bytes: Uint8Array;\n\n\tprivate constructor(bytes: Uint8Array) {\n\t\tif (bytes.length !== SIGNATURE_LENGTH) {\n\t\t\tthrow CryptoError.invalidKeyLength(SIGNATURE_LENGTH, bytes.length);\n\t\t}\n\t\tthis.bytes = new Uint8Array(bytes);\n\t}\n\n\t/**\n\t * Creates a Signature from raw bytes.\n\t *\n\t * @param bytes - 64-byte Ed25519 signature\n\t * @throws {CryptoError} If bytes length is not 64\n\t */\n\tstatic fromBytes(bytes: Uint8Array): Signature {\n\t\treturn new Signature(bytes);\n\t}\n\n\t/**\n\t * Creates a Signature from a base58-encoded string.\n\t *\n\t * @param str - Base58-encoded signature\n\t * @throws {CryptoError} If string is invalid or decodes to wrong length\n\t */\n\tstatic fromString(str: string): Signature {\n\t\ttry {\n\t\t\tconst bytes = base58.decode(str);\n\t\t\treturn new Signature(bytes);\n\t\t} catch (error) {\n\t\t\tthrow new CryptoError(\n\t\t\t\tCryptoErrorCode.INVALID_SIGNATURE,\n\t\t\t\t`Invalid base58 signature: ${error instanceof Error ? error.message : \"unknown error\"}`,\n\t\t\t\t{ input: str },\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Returns a copy of the raw bytes.\n\t */\n\ttoBytes(): Uint8Array {\n\t\treturn new Uint8Array(this.bytes);\n\t}\n\n\t/**\n\t * Returns the base58-encoded string representation.\n\t */\n\ttoString(): string {\n\t\treturn base58.encode(this.bytes);\n\t}\n\n\t/**\n\t * JSON serialization (returns base58 string).\n\t */\n\ttoJSON(): string {\n\t\treturn this.toString();\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as ed25519 from \"@noble/ed25519\";\nimport { sha512 } from \"@noble/hashes/sha2\";\nimport { randomBytes } from \"@noble/hashes/utils\";\nimport { SECRET_KEY_LENGTH } from \"../constants\";\nimport { CryptoError } from \"./errors\";\nimport { PublicKey } from \"./public-key\";\nimport { Signature } from \"./signature\";\n\n// Configure ed25519 to use SHA-512\ned25519.hashes.sha512 = sha512;\n\n/**\n * Represents an Ed25519 keypair for signing transactions.\n *\n * Provides secure key generation, signing, and disposal capabilities.\n * Call {@link dispose} when finished to securely erase the private key from memory.\n *\n * @example\n * ```typescript\n * // Generate random keypair\n * const keypair = Keypair.generate();\n *\n * // Sign a message\n * const message = new TextEncoder().encode(\"Hello\");\n * const signature = keypair.sign(message);\n *\n * // Verify signature\n * const isValid = keypair.verify(message, signature);\n *\n * // Secure cleanup\n * keypair.dispose();\n * ```\n */\nexport class Keypair {\n\tpublic readonly publicKey: PublicKey;\n\tprivate secretKey: Uint8Array | null;\n\tprivate disposed = false;\n\n\tprivate constructor(secretKey: Uint8Array, publicKey?: Uint8Array) {\n\t\tif (secretKey.length !== SECRET_KEY_LENGTH) {\n\t\t\tthrow CryptoError.invalidKeyLength(SECRET_KEY_LENGTH, secretKey.length);\n\t\t}\n\n\t\tthis.secretKey = new Uint8Array(secretKey);\n\n\t\tif (publicKey) {\n\t\t\tthis.publicKey = PublicKey.fromBytes(publicKey);\n\t\t} else {\n\t\t\tconst publicKeyBytes = ed25519.getPublicKey(secretKey);\n\t\t\tthis.publicKey = PublicKey.fromBytes(publicKeyBytes);\n\t\t}\n\t}\n\n\t/**\n\t * Generates a random keypair using cryptographically secure randomness.\n\t */\n\tstatic generate(): Keypair {\n\t\tconst secretKey = randomBytes(SECRET_KEY_LENGTH);\n\t\treturn new Keypair(secretKey);\n\t}\n\n\t/**\n\t * Creates a keypair from a 32-byte secret key.\n\t * The public key will be derived from the secret key.\n\t *\n\t * @param secretKey - 32-byte Ed25519 secret key\n\t */\n\tstatic fromSecretKey(secretKey: Uint8Array): Keypair {\n\t\treturn new Keypair(secretKey);\n\t}\n\n\t/**\n\t * Creates a keypair from a secret key and pre-computed public key.\n\t *\n\t * Use this for SLIP-0010/BIP32 derived keys where the public key\n\t * should NOT be re-derived (compatibility with hierarchical derivation).\n\t *\n\t * @param secretKey - 32-byte Ed25519 secret key\n\t * @param publicKey - 32-byte Ed25519 public key (pre-computed)\n\t */\n\tstatic fromKeyPair(secretKey: Uint8Array, publicKey: Uint8Array): Keypair {\n\t\treturn new Keypair(secretKey, publicKey);\n\t}\n\n\t/**\n\t * Signs a message with this keypair.\n\t *\n\t * @param message - Message bytes to sign\n\t * @returns Ed25519 signature\n\t * @throws {CryptoError} If keypair has been disposed\n\t */\n\tsign(message: Uint8Array): Signature {\n\t\tthis.ensureNotDisposed();\n\n\t\tif (!this.secretKey) {\n\t\t\tthrow CryptoError.keypairDisposed();\n\t\t}\n\n\t\tconst signatureBytes = ed25519.sign(message, this.secretKey);\n\t\treturn Signature.fromBytes(signatureBytes);\n\t}\n\n\t/**\n\t * Verifies a signature against a message using this keypair's public key.\n\t *\n\t * @param message - Original message that was signed\n\t * @param signature - Signature to verify\n\t * @returns true if signature is valid\n\t */\n\tverify(message: Uint8Array, signature: Signature): boolean {\n\t\treturn ed25519.verify(\n\t\t\tsignature.toBytes(),\n\t\t\tmessage,\n\t\t\tthis.publicKey.toBytes(),\n\t\t);\n\t}\n\n\t/**\n\t * Exports the secret key for storage.\n\t *\n\t * **WARNING**: Keep this secret! Never expose it in logs, APIs, or client-side code.\n\t *\n\t * @returns Copy of the 32-byte secret key\n\t * @throws {CryptoError} If keypair has been disposed\n\t */\n\tsecretKeyBytes(): Uint8Array {\n\t\tthis.ensureNotDisposed();\n\n\t\tif (!this.secretKey) {\n\t\t\tthrow CryptoError.keypairDisposed();\n\t\t}\n\n\t\treturn new Uint8Array(this.secretKey);\n\t}\n\n\t/**\n\t * Checks if this keypair has been disposed.\n\t */\n\tisDisposed(): boolean {\n\t\treturn this.disposed;\n\t}\n\n\t/**\n\t * Securely erases the secret key from memory.\n\t *\n\t * After calling this method, the keypair can no longer be used for signing.\n\t * This is important for security when the keypair is no longer needed.\n\t */\n\tdispose(): void {\n\t\tif (this.disposed) return;\n\n\t\tif (this.secretKey) {\n\t\t\tthis.secretKey.fill(0);\n\t\t\tthis.secretKey = null;\n\t\t}\n\t\tthis.disposed = true;\n\t}\n\n\tprivate ensureNotDisposed(): void {\n\t\tif (this.disposed) {\n\t\t\tthrow CryptoError.keypairDisposed();\n\t\t}\n\t}\n}\n","/**\n * HMAC: RFC2104 message authentication code.\n * @module\n */\nimport { abytes, aexists, ahash, clean, type CHash, type Hash } from './utils.ts';\n\n/** Internal class for HMAC. */\nexport class _HMAC<T extends Hash<T>> implements Hash<_HMAC<T>> {\n oHash: T;\n iHash: T;\n blockLen: number;\n outputLen: number;\n private finished = false;\n private destroyed = false;\n\n constructor(hash: CHash, key: Uint8Array) {\n ahash(hash);\n abytes(key, undefined, 'key');\n this.iHash = hash.create() as T;\n if (typeof this.iHash.update !== 'function')\n throw new Error('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create() as T;\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n clean(pad);\n }\n update(buf: Uint8Array): this {\n aexists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out: Uint8Array): void {\n aexists(this);\n abytes(out, this.outputLen, 'output');\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest(): Uint8Array {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to?: _HMAC<T>): _HMAC<T> {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to ||= Object.create(Object.getPrototypeOf(this), {});\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to as this;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n clone(): _HMAC<T> {\n return this._cloneInto();\n }\n destroy(): void {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n * @example\n * import { hmac } from '@noble/hashes/hmac';\n * import { sha256 } from '@noble/hashes/sha2';\n * const mac1 = hmac(sha256, 'key', 'message');\n */\nexport const hmac: {\n (hash: CHash, key: Uint8Array, message: Uint8Array): Uint8Array;\n create(hash: CHash, key: Uint8Array): _HMAC<any>;\n} = (hash: CHash, key: Uint8Array, message: Uint8Array): Uint8Array =>\n new _HMAC<any>(hash, key).update(message).digest();\nhmac.create = (hash: CHash, key: Uint8Array) => new _HMAC<any>(hash, key);\n","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a: unknown): a is Uint8Array {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\n/** Asserts something is positive integer. */\nexport function anumber(n: number, title: string = ''): void {\n if (!Number.isSafeInteger(n) || n < 0) {\n const prefix = title && `\"${title}\" `;\n throw new Error(`${prefix}expected integer >= 0, got ${n}`);\n }\n}\n\n/** Asserts something is Uint8Array. */\nexport function abytes(value: Uint8Array, length?: number, title: string = ''): Uint8Array {\n const bytes = isBytes(value);\n const len = value?.length;\n const needsLen = length !== undefined;\n if (!bytes || (needsLen && len !== length)) {\n const prefix = title && `\"${title}\" `;\n const ofLen = needsLen ? ` of length ${length}` : '';\n const got = bytes ? `length=${len}` : `type=${typeof value}`;\n throw new Error(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);\n }\n return value;\n}\n\n/** Asserts something is hash */\nexport function ahash(h: CHash): void {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash must wrapped by utils.createHasher');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\n\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance: any, checkFinished = true): void {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\n\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out: any, instance: any): void {\n abytes(out, undefined, 'digestInto() output');\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('\"digestInto() output\" expected to be of length >=' + min);\n }\n}\n\n/** Generic type encompassing 8/16/32-byte arrays - but not 64-byte. */\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr: TypedArray): Uint8Array {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr: TypedArray): Uint32Array {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays: TypedArray[]): void {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr: TypedArray): DataView {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word: number, shift: number): number {\n return (word << (32 - shift)) | (word >>> shift);\n}\n\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word: number, shift: number): number {\n return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE: boolean = /* @__PURE__ */ (() =>\n new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n\n/** The byte swap operation for uint32 */\nexport function byteSwap(word: number): number {\n return (\n ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff)\n );\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE: (n: number) => number = isLE\n ? (n: number) => n\n : (n: number) => byteSwap(n);\n\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr: Uint32Array): Uint32Array {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n return arr;\n}\n\nexport const swap32IfBE: (u: Uint32Array) => Uint32Array = isLE\n ? (u: Uint32Array) => u\n : byteSwap32;\n\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin: boolean = /* @__PURE__ */ (() =>\n // @ts-ignore\n typeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin) return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 } as const;\nfunction asciiToBase16(ch: number): number | undefined {\n if (ch >= asciis._0 && ch <= asciis._9) return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F) return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f) return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n // @ts-ignore\n if (hasHexBuiltin) return Uint8Array.fromHex(hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async (): Promise<void> => {};\n\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(\n iters: number,\n tick: number,\n cb: (i: number) => void\n): Promise<void> {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols, but ts doesn't see them: https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * Converts string to bytes using UTF8 encoding.\n * Built-in doesn't validate input to be string: we do the check.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n/** KDFs can accept string or Uint8Array for user convenience. */\nexport type KDFInput = string | Uint8Array;\n\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data: KDFInput, errorTitle = ''): Uint8Array {\n if (typeof data === 'string') return utf8ToBytes(data);\n return abytes(data, undefined, errorTitle);\n}\n\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\ntype EmptyObj = {};\n/** Merges default options and passed options. */\nexport function checkOpts<T1 extends EmptyObj, T2 extends EmptyObj>(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('options must be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\n/** Common interface for all hashes. */\nexport interface Hash<T> {\n blockLen: number; // Bytes per block\n outputLen: number; // Bytes in output\n update(buf: Uint8Array): this;\n digestInto(buf: Uint8Array): void;\n digest(): Uint8Array;\n destroy(): void;\n _cloneInto(to?: T): T;\n clone(): T;\n}\n\n/** PseudoRandom (number) Generator */\nexport interface PRG {\n addEntropy(seed: Uint8Array): void;\n randomBytes(length: number): Uint8Array;\n clean(): void;\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF<T extends Hash<T>> = Hash<T> & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\n/** Hash constructor */\nexport type HasherCons<T, Opts = undefined> = Opts extends undefined ? () => T : (opts?: Opts) => T;\n/** Optional hash params. */\nexport type HashInfo = {\n oid?: Uint8Array; // DER encoded OID in bytes\n};\n/** Hash function */\nexport type CHash<T extends Hash<T> = Hash<any>, Opts = undefined> = {\n outputLen: number;\n blockLen: number;\n} & HashInfo &\n (Opts extends undefined\n ? {\n (msg: Uint8Array): Uint8Array;\n create(): T;\n }\n : {\n (msg: Uint8Array, opts?: Opts): Uint8Array;\n create(opts?: Opts): T;\n });\n/** XOF with output */\nexport type CHashXOF<T extends HashXOF<T> = HashXOF<any>, Opts = undefined> = CHash<T, Opts>;\n\n/** Creates function with outputLen, blockLen, create properties from a class constructor. */\nexport function createHasher<T extends Hash<T>, Opts = undefined>(\n hashCons: HasherCons<T, Opts>,\n info: HashInfo = {}\n): CHash<T, Opts> {\n const hashC: any = (msg: Uint8Array, opts?: Opts) => hashCons(opts).update(msg).digest();\n const tmp = hashCons(undefined);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts?: Opts) => hashCons(opts);\n Object.assign(hashC, info);\n return Object.freeze(hashC);\n}\n\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n const cr = typeof globalThis === 'object' ? (globalThis as any).crypto : null;\n if (typeof cr?.getRandomValues !== 'function')\n throw new Error('crypto.getRandomValues must be defined');\n return cr.getRandomValues(new Uint8Array(bytesLength));\n}\n\n/** Creates OID opts for NIST hashes, with prefix 06 09 60 86 48 01 65 03 04 02. */\nexport const oidNist = (suffix: number): Required<HashInfo> => ({\n oid: Uint8Array.from([0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, suffix]),\n});\n","/**\n * HMAC: RFC2104 message authentication code.\n * @module\n */\nimport { abytes, aexists, ahash, clean, type CHash, type Hash } from './utils.ts';\n\n/** Internal class for HMAC. */\nexport class _HMAC<T extends Hash<T>> implements Hash<_HMAC<T>> {\n oHash: T;\n iHash: T;\n blockLen: number;\n outputLen: number;\n private finished = false;\n private destroyed = false;\n\n constructor(hash: CHash, key: Uint8Array) {\n ahash(hash);\n abytes(key, undefined, 'key');\n this.iHash = hash.create() as T;\n if (typeof this.iHash.update !== 'function')\n throw new Error('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create() as T;\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n clean(pad);\n }\n update(buf: Uint8Array): this {\n aexists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out: Uint8Array): void {\n aexists(this);\n abytes(out, this.outputLen, 'output');\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest(): Uint8Array {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to?: _HMAC<T>): _HMAC<T> {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to ||= Object.create(Object.getPrototypeOf(this), {});\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to as this;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n clone(): _HMAC<T> {\n return this._cloneInto();\n }\n destroy(): void {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n * @example\n * import { hmac } from '@noble/hashes/hmac';\n * import { sha256 } from '@noble/hashes/sha2';\n * const mac1 = hmac(sha256, 'key', 'message');\n */\nexport const hmac: {\n (hash: CHash, key: Uint8Array, message: Uint8Array): Uint8Array;\n create(hash: CHash, key: Uint8Array): _HMAC<any>;\n} = (hash: CHash, key: Uint8Array, message: Uint8Array): Uint8Array =>\n new _HMAC<any>(hash, key).update(message).digest();\nhmac.create = (hash: CHash, key: Uint8Array) => new _HMAC<any>(hash, key);\n","/**\n * PBKDF (RFC 2898). Can be used to create a key from password and salt.\n * @module\n */\nimport { hmac } from './hmac.ts';\n// prettier-ignore\nimport {\n ahash, anumber,\n asyncLoop, checkOpts, clean, createView, kdfInputToBytes,\n type CHash,\n type Hash,\n type KDFInput\n} from './utils.ts';\n\n/**\n * PBKDF2 options:\n * * c: iterations, should probably be higher than 100_000\n * * dkLen: desired length of derived key in bytes\n * * asyncTick: max time in ms for which async function can block execution\n */\nexport type Pbkdf2Opt = {\n c: number;\n dkLen?: number;\n asyncTick?: number;\n};\n// Common start and end for sync/async functions\nfunction pbkdf2Init(hash: CHash, _password: KDFInput, _salt: KDFInput, _opts: Pbkdf2Opt) {\n ahash(hash);\n const opts = checkOpts({ dkLen: 32, asyncTick: 10 }, _opts);\n const { c, dkLen, asyncTick } = opts;\n anumber(c, 'c');\n anumber(dkLen, 'dkLen');\n anumber(asyncTick, 'asyncTick');\n if (c < 1) throw new Error('iterations (c) must be >= 1');\n const password = kdfInputToBytes(_password, 'password');\n const salt = kdfInputToBytes(_salt, 'salt');\n // DK = PBKDF2(PRF, Password, Salt, c, dkLen);\n const DK = new Uint8Array(dkLen);\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n const PRF = hmac.create(hash, password);\n const PRFSalt = PRF._cloneInto().update(salt);\n return { c, dkLen, asyncTick, DK, PRF, PRFSalt };\n}\n\nfunction pbkdf2Output<T extends Hash<T>>(\n PRF: Hash<T>,\n PRFSalt: Hash<T>,\n DK: Uint8Array,\n prfW: Hash<T>,\n u: Uint8Array\n) {\n PRF.destroy();\n PRFSalt.destroy();\n if (prfW) prfW.destroy();\n clean(u);\n return DK;\n}\n\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function\n * @param hash - hash function that would be used e.g. sha256\n * @param password - password from which a derived key is generated\n * @param salt - cryptographic salt\n * @param opts - {c, dkLen} where c is work factor and dkLen is output message size\n * @example\n * const key = pbkdf2(sha256, 'password', 'salt', { dkLen: 32, c: Math.pow(2, 18) });\n */\nexport function pbkdf2(\n hash: CHash,\n password: KDFInput,\n salt: KDFInput,\n opts: Pbkdf2Opt\n): Uint8Array {\n const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW: any; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n for (let ui = 1; ui < c; ui++) {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++) Ti[i] ^= u[i];\n }\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\n\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function. Async version.\n * @example\n * await pbkdf2Async(sha256, 'password', 'salt', { dkLen: 32, c: 500_000 });\n */\nexport async function pbkdf2Async(\n hash: CHash,\n password: KDFInput,\n salt: KDFInput,\n opts: Pbkdf2Opt\n): Promise<Uint8Array> {\n const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW: any; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n await asyncLoop(c - 1, asyncTick, () => {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++) Ti[i] ^= u[i];\n });\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\n","/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nimport { abytes, aexists, aoutput, clean, createView, type Hash } from './utils.ts';\n\n/** Choice: a ? b : c */\nexport function Chi(a: number, b: number, c: number): number {\n return (a & b) ^ (~a & c);\n}\n\n/** Majority function, true if any two inputs is true. */\nexport function Maj(a: number, b: number, c: number): number {\n return (a & b) ^ (a & c) ^ (b & c);\n}\n\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport abstract class HashMD<T extends HashMD<T>> implements Hash<T> {\n protected abstract process(buf: DataView, offset: number): void;\n protected abstract get(): number[];\n protected abstract set(...args: number[]): void;\n abstract destroy(): void;\n protected abstract roundClean(): void;\n\n readonly blockLen: number;\n readonly outputLen: number;\n readonly padOffset: number;\n readonly isLE: boolean;\n\n // For partial updates less than block size\n protected buffer: Uint8Array;\n protected view: DataView;\n protected finished = false;\n protected length = 0;\n protected pos = 0;\n protected destroyed = false;\n\n constructor(blockLen: number, outputLen: number, padOffset: number, isLE: boolean) {\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data: Uint8Array): this {\n aexists(this);\n abytes(data);\n const { view, buffer, blockLen } = this;\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen) this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out: Uint8Array): void {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n clean(this.buffer.subarray(pos));\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++) buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n view.setBigUint64(blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which must be fused in single op with modulo by JIT\n if (len % 4) throw new Error('_sha2: outputLen must be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length) throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++) oview.setUint32(4 * i, state[i], isLE);\n }\n digest(): Uint8Array {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to?: T): T {\n to ||= new (this.constructor as any)() as T;\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.destroyed = destroyed;\n to.finished = finished;\n to.length = length;\n to.pos = pos;\n if (length % blockLen) to.buffer.set(buffer);\n return to as unknown as any;\n }\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53.\n * Check out `test/misc/sha2-gen-iv.js` for recomputation guide.\n */\n\n/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */\nexport const SHA256_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n]);\n\n/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */\nexport const SHA224_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4,\n]);\n\n/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */\nexport const SHA384_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4,\n]);\n\n/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */\nexport const SHA512_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,\n]);\n","/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\nfunction fromBig(\n n: bigint,\n le = false\n): {\n h: number;\n l: number;\n} {\n if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nfunction split(lst: bigint[], le = false): Uint32Array[] {\n const len = lst.length;\n let Ah = new Uint32Array(len);\n let Al = new Uint32Array(len);\n for (let i = 0; i < len; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number): bigint => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number): number => h >>> s;\nconst shrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number): number => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number): number => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number): number => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number): number => l;\nconst rotr32L = (h: number, _l: number): number => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number): number => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number): number => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number): number => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number): number => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(\n Ah: number,\n Al: number,\n Bh: number,\n Bl: number\n): {\n h: number;\n l: number;\n} {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number): number => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number): number =>\n (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number): number =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number): number =>\n (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number): number =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number): number =>\n (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig\n};\n// prettier-ignore\nconst u64: { fromBig: typeof fromBig; split: typeof split; toBig: (h: number, l: number) => bigint; shrSH: (h: number, _l: number, s: number) => number; shrSL: (h: number, l: number, s: number) => number; rotrSH: (h: number, l: number, s: number) => number; rotrSL: (h: number, l: number, s: number) => number; rotrBH: (h: number, l: number, s: number) => number; rotrBL: (h: number, l: number, s: number) => number; rotr32H: (_h: number, l: number) => number; rotr32L: (h: number, _l: number) => number; rotlSH: (h: number, l: number, s: number) => number; rotlSL: (h: number, l: number, s: number) => number; rotlBH: (h: number, l: number, s: number) => number; rotlBL: (h: number, l: number, s: number) => number; add: typeof add; add3L: (Al: number, Bl: number, Cl: number) => number; add3H: (low: number, Ah: number, Bh: number, Ch: number) => number; add4L: (Al: number, Bl: number, Cl: number, Dl: number) => number; add4H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number) => number; add5H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) => number; add5L: (Al: number, Bl: number, Cl: number, Dl: number, El: number) => number; } = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n","/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out [RFC 4634](https://www.rfc-editor.org/rfc/rfc4634) and\n * [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nimport { Chi, HashMD, Maj, SHA224_IV, SHA256_IV, SHA384_IV, SHA512_IV } from './_md.ts';\nimport * as u64 from './_u64.ts';\nimport { type CHash, clean, createHasher, oidNist, rotr } from './utils.ts';\n\n/**\n * Round constants:\n * First 32 bits of fractional parts of the cube roots of the first 64 primes 2..311)\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n\n/** Reusable temporary buffer. \"W\" comes straight from spec. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\n\n/** Internal 32-byte base SHA2 hash class. */\nabstract class SHA2_32B<T extends SHA2_32B<T>> extends HashMD<T> {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n protected abstract A: number;\n protected abstract B: number;\n protected abstract C: number;\n protected abstract D: number;\n protected abstract E: number;\n protected abstract F: number;\n protected abstract G: number;\n protected abstract H: number;\n\n constructor(outputLen: number) {\n super(64, outputLen, 8, false);\n }\n protected get(): [number, number, number, number, number, number, number, number] {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n protected set(\n A: number, B: number, C: number, D: number, E: number, F: number, G: number, H: number\n ): void {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n protected process(view: DataView, offset: number): void {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n protected roundClean(): void {\n clean(SHA256_W);\n }\n destroy(): void {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n clean(this.buffer);\n }\n}\n\n/** Internal SHA2-256 hash class. */\nexport class _SHA256 extends SHA2_32B<_SHA256> {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n protected A: number = SHA256_IV[0] | 0;\n protected B: number = SHA256_IV[1] | 0;\n protected C: number = SHA256_IV[2] | 0;\n protected D: number = SHA256_IV[3] | 0;\n protected E: number = SHA256_IV[4] | 0;\n protected F: number = SHA256_IV[5] | 0;\n protected G: number = SHA256_IV[6] | 0;\n protected H: number = SHA256_IV[7] | 0;\n constructor() {\n super(32);\n }\n}\n\n/** Internal SHA2-224 hash class. */\nexport class _SHA224 extends SHA2_32B<_SHA224> {\n protected A: number = SHA224_IV[0] | 0;\n protected B: number = SHA224_IV[1] | 0;\n protected C: number = SHA224_IV[2] | 0;\n protected D: number = SHA224_IV[3] | 0;\n protected E: number = SHA224_IV[4] | 0;\n protected F: number = SHA224_IV[5] | 0;\n protected G: number = SHA224_IV[6] | 0;\n protected H: number = SHA224_IV[7] | 0;\n constructor() {\n super(28);\n }\n}\n\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n\n// Round contants\n// First 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409\n// prettier-ignore\nconst K512 = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n\n// Reusable temporary buffers\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\n\n/** Internal 64-byte base SHA2 hash class. */\nabstract class SHA2_64B<T extends SHA2_64B<T>> extends HashMD<T> {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n // h -- high 32 bits, l -- low 32 bits\n protected abstract Ah: number;\n protected abstract Al: number;\n protected abstract Bh: number;\n protected abstract Bl: number;\n protected abstract Ch: number;\n protected abstract Cl: number;\n protected abstract Dh: number;\n protected abstract Dl: number;\n protected abstract Eh: number;\n protected abstract El: number;\n protected abstract Fh: number;\n protected abstract Fl: number;\n protected abstract Gh: number;\n protected abstract Gl: number;\n protected abstract Hh: number;\n protected abstract Hl: number;\n\n constructor(outputLen: number) {\n super(128, outputLen, 16, false);\n }\n // prettier-ignore\n protected get(): [\n number, number, number, number, number, number, number, number,\n number, number, number, number, number, number, number, number\n ] {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n protected set(\n Ah: number, Al: number, Bh: number, Bl: number, Ch: number, Cl: number, Dh: number, Dl: number,\n Eh: number, El: number, Fh: number, Fl: number, Gh: number, Gl: number, Hh: number, Hl: number\n ): void {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n protected process(view: DataView, offset: number): void {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n protected roundClean(): void {\n clean(SHA512_W_H, SHA512_W_L);\n }\n destroy(): void {\n clean(this.buffer);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\n\n/** Internal SHA2-512 hash class. */\nexport class _SHA512 extends SHA2_64B<_SHA512> {\n protected Ah: number = SHA512_IV[0] | 0;\n protected Al: number = SHA512_IV[1] | 0;\n protected Bh: number = SHA512_IV[2] | 0;\n protected Bl: number = SHA512_IV[3] | 0;\n protected Ch: number = SHA512_IV[4] | 0;\n protected Cl: number = SHA512_IV[5] | 0;\n protected Dh: number = SHA512_IV[6] | 0;\n protected Dl: number = SHA512_IV[7] | 0;\n protected Eh: number = SHA512_IV[8] | 0;\n protected El: number = SHA512_IV[9] | 0;\n protected Fh: number = SHA512_IV[10] | 0;\n protected Fl: number = SHA512_IV[11] | 0;\n protected Gh: number = SHA512_IV[12] | 0;\n protected Gl: number = SHA512_IV[13] | 0;\n protected Hh: number = SHA512_IV[14] | 0;\n protected Hl: number = SHA512_IV[15] | 0;\n\n constructor() {\n super(64);\n }\n}\n\n/** Internal SHA2-384 hash class. */\nexport class _SHA384 extends SHA2_64B<_SHA384> {\n protected Ah: number = SHA384_IV[0] | 0;\n protected Al: number = SHA384_IV[1] | 0;\n protected Bh: number = SHA384_IV[2] | 0;\n protected Bl: number = SHA384_IV[3] | 0;\n protected Ch: number = SHA384_IV[4] | 0;\n protected Cl: number = SHA384_IV[5] | 0;\n protected Dh: number = SHA384_IV[6] | 0;\n protected Dl: number = SHA384_IV[7] | 0;\n protected Eh: number = SHA384_IV[8] | 0;\n protected El: number = SHA384_IV[9] | 0;\n protected Fh: number = SHA384_IV[10] | 0;\n protected Fl: number = SHA384_IV[11] | 0;\n protected Gh: number = SHA384_IV[12] | 0;\n protected Gl: number = SHA384_IV[13] | 0;\n protected Hh: number = SHA384_IV[14] | 0;\n protected Hl: number = SHA384_IV[15] | 0;\n\n constructor() {\n super(48);\n }\n}\n\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See `test/misc/sha2-gen-iv.js`.\n */\n\n/** SHA512/224 IV */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n 0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n 0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n\n/** SHA512/256 IV */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n 0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n 0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\n\n/** Internal SHA2-512/224 hash class. */\nexport class _SHA512_224 extends SHA2_64B<_SHA512_224> {\n protected Ah: number = T224_IV[0] | 0;\n protected Al: number = T224_IV[1] | 0;\n protected Bh: number = T224_IV[2] | 0;\n protected Bl: number = T224_IV[3] | 0;\n protected Ch: number = T224_IV[4] | 0;\n protected Cl: number = T224_IV[5] | 0;\n protected Dh: number = T224_IV[6] | 0;\n protected Dl: number = T224_IV[7] | 0;\n protected Eh: number = T224_IV[8] | 0;\n protected El: number = T224_IV[9] | 0;\n protected Fh: number = T224_IV[10] | 0;\n protected Fl: number = T224_IV[11] | 0;\n protected Gh: number = T224_IV[12] | 0;\n protected Gl: number = T224_IV[13] | 0;\n protected Hh: number = T224_IV[14] | 0;\n protected Hl: number = T224_IV[15] | 0;\n\n constructor() {\n super(28);\n }\n}\n\n/** Internal SHA2-512/256 hash class. */\nexport class _SHA512_256 extends SHA2_64B<_SHA512_256> {\n protected Ah: number = T256_IV[0] | 0;\n protected Al: number = T256_IV[1] | 0;\n protected Bh: number = T256_IV[2] | 0;\n protected Bl: number = T256_IV[3] | 0;\n protected Ch: number = T256_IV[4] | 0;\n protected Cl: number = T256_IV[5] | 0;\n protected Dh: number = T256_IV[6] | 0;\n protected Dl: number = T256_IV[7] | 0;\n protected Eh: number = T256_IV[8] | 0;\n protected El: number = T256_IV[9] | 0;\n protected Fh: number = T256_IV[10] | 0;\n protected Fl: number = T256_IV[11] | 0;\n protected Gh: number = T256_IV[12] | 0;\n protected Gl: number = T256_IV[13] | 0;\n protected Hh: number = T256_IV[14] | 0;\n protected Hl: number = T256_IV[15] | 0;\n\n constructor() {\n super(32);\n }\n}\n\n/**\n * SHA2-256 hash function from RFC 4634. In JS it's the fastest: even faster than Blake3. Some info:\n *\n * - Trying 2^128 hashes would get 50% chance of collision, using birthday attack.\n * - BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n * - Each sha256 hash is executing 2^18 bit operations.\n * - Good 2024 ASICs can do 200Th/sec with 3500 watts of power, corresponding to 2^36 hashes/joule.\n */\nexport const sha256: CHash<_SHA256> = /* @__PURE__ */ createHasher(\n () => new _SHA256(),\n /* @__PURE__ */ oidNist(0x01)\n);\n/** SHA2-224 hash function from RFC 4634 */\nexport const sha224: CHash<_SHA224> = /* @__PURE__ */ createHasher(\n () => new _SHA224(),\n /* @__PURE__ */ oidNist(0x04)\n);\n\n/** SHA2-512 hash function from RFC 4634. */\nexport const sha512: CHash<_SHA512> = /* @__PURE__ */ createHasher(\n () => new _SHA512(),\n /* @__PURE__ */ oidNist(0x03)\n);\n/** SHA2-384 hash function from RFC 4634. */\nexport const sha384: CHash<_SHA384> = /* @__PURE__ */ createHasher(\n () => new _SHA384(),\n /* @__PURE__ */ oidNist(0x02)\n);\n\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_256: CHash<_SHA512_256> = /* @__PURE__ */ createHasher(\n () => new _SHA512_256(),\n /* @__PURE__ */ oidNist(0x06)\n);\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_224: CHash<_SHA512_224> = /* @__PURE__ */ createHasher(\n () => new _SHA512_224(),\n /* @__PURE__ */ oidNist(0x05)\n);\n","/*! scure-bip39 - MIT License (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) */\nimport { pbkdf2, pbkdf2Async } from '@noble/hashes/pbkdf2.js';\nimport { sha256, sha512 } from '@noble/hashes/sha2.js';\nimport { abytes, anumber, randomBytes } from '@noble/hashes/utils.js';\nimport { pbkdf2 as pbkdf2web, sha512 as sha512web } from '@noble/hashes/webcrypto.js';\nimport { utils as baseUtils } from '@scure/base';\n// Japanese wordlist\nconst isJapanese = (wordlist) => wordlist[0] === '\\u3042\\u3044\\u3053\\u304f\\u3057\\u3093';\n// Normalization replaces equivalent sequences of characters\n// so that any two texts that are equivalent will be reduced\n// to the same sequence of code points, called the normal form of the original text.\n// https://tonsky.me/blog/unicode/#why-is-a----\nfunction nfkd(str) {\n if (typeof str !== 'string')\n throw new TypeError('invalid mnemonic type: ' + typeof str);\n return str.normalize('NFKD');\n}\nfunction normalize(str) {\n const norm = nfkd(str);\n const words = norm.split(' ');\n if (![12, 15, 18, 21, 24].includes(words.length))\n throw new Error('Invalid mnemonic');\n return { nfkd: norm, words };\n}\nfunction aentropy(ent) {\n abytes(ent);\n if (![16, 20, 24, 28, 32].includes(ent.length))\n throw new Error('invalid entropy length');\n}\n/**\n * Generate x random words. Uses Cryptographically-Secure Random Number Generator.\n * @param wordlist imported wordlist for specific language\n * @param strength mnemonic strength 128-256 bits\n * @example\n * generateMnemonic(wordlist, 128)\n * // 'legal winner thank year wave sausage worth useful legal winner thank yellow'\n */\nexport function generateMnemonic(wordlist, strength = 128) {\n anumber(strength);\n if (strength % 32 !== 0 || strength > 256)\n throw new TypeError('Invalid entropy');\n return entropyToMnemonic(randomBytes(strength / 8), wordlist);\n}\nconst calcChecksum = (entropy) => {\n // Checksum is ent.length/4 bits long\n const bitsLeft = 8 - entropy.length / 4;\n // Zero rightmost \"bitsLeft\" bits in byte\n // For example: bitsLeft=4 val=10111101 -> 10110000\n return new Uint8Array([(sha256(entropy)[0] >> bitsLeft) << bitsLeft]);\n};\nfunction getCoder(wordlist) {\n if (!Array.isArray(wordlist) || wordlist.length !== 2048 || typeof wordlist[0] !== 'string')\n throw new Error('Wordlist: expected array of 2048 strings');\n wordlist.forEach((i) => {\n if (typeof i !== 'string')\n throw new Error('wordlist: non-string element: ' + i);\n });\n return baseUtils.chain(baseUtils.checksum(1, calcChecksum), baseUtils.radix2(11, true), baseUtils.alphabet(wordlist));\n}\n/**\n * Reversible: Converts mnemonic string to raw entropy in form of byte array.\n * @param mnemonic 12-24 words\n * @param wordlist imported wordlist for specific language\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * mnemonicToEntropy(mnem, wordlist)\n * // Produces\n * new Uint8Array([\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f\n * ])\n */\nexport function mnemonicToEntropy(mnemonic, wordlist) {\n const { words } = normalize(mnemonic);\n const entropy = getCoder(wordlist).decode(words);\n aentropy(entropy);\n return entropy;\n}\n/**\n * Reversible: Converts raw entropy in form of byte array to mnemonic string.\n * @param entropy byte array\n * @param wordlist imported wordlist for specific language\n * @returns 12-24 words\n * @example\n * const ent = new Uint8Array([\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f\n * ]);\n * entropyToMnemonic(ent, wordlist);\n * // 'legal winner thank year wave sausage worth useful legal winner thank yellow'\n */\nexport function entropyToMnemonic(entropy, wordlist) {\n aentropy(entropy);\n const words = getCoder(wordlist).encode(entropy);\n return words.join(isJapanese(wordlist) ? '\\u3000' : ' ');\n}\n/**\n * Validates mnemonic for being 12-24 words contained in `wordlist`.\n */\nexport function validateMnemonic(mnemonic, wordlist) {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n }\n catch (e) {\n return false;\n }\n return true;\n}\nconst psalt = (passphrase) => nfkd('mnemonic' + passphrase);\n/**\n * Irreversible: Uses KDF to derive 64 bytes of key data from mnemonic + optional password.\n * @param mnemonic 12-24 words\n * @param passphrase string that will additionally protect the key\n * @returns 64 bytes of key data\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * await mnemonicToSeed(mnem, 'password');\n * // new Uint8Array([...64 bytes])\n */\nexport function mnemonicToSeed(mnemonic, passphrase = '') {\n return pbkdf2Async(sha512, normalize(mnemonic).nfkd, psalt(passphrase), { c: 2048, dkLen: 64 });\n}\n/**\n * Irreversible: Uses KDF to derive 64 bytes of key data from mnemonic + optional password.\n * @param mnemonic 12-24 words\n * @param passphrase string that will additionally protect the key\n * @returns 64 bytes of key data\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * mnemonicToSeedSync(mnem, 'password');\n * // new Uint8Array([...64 bytes])\n */\nexport function mnemonicToSeedSync(mnemonic, passphrase = '') {\n return pbkdf2(sha512, normalize(mnemonic).nfkd, psalt(passphrase), { c: 2048, dkLen: 64 });\n}\n/**\n * Uses native, built-in functionality, provided by globalThis.crypto.\n * Irreversible: Uses KDF to derive 64 bytes of key data from mnemonic + optional password.\n * @param mnemonic 12-24 words\n * @param passphrase string that will additionally protect the key\n * @returns 64 bytes of key data\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * mnemonicToSeedWebcrypto(mnem, 'password');\n * // new Uint8Array([...64 bytes])\n */\nexport function mnemonicToSeedWebcrypto(mnemonic, passphrase = '') {\n return pbkdf2web(sha512web, normalize(mnemonic).nfkd, psalt(passphrase), { c: 2048, dkLen: 64 });\n}\n","export const wordlist = `abandon\nability\nable\nabout\nabove\nabsent\nabsorb\nabstract\nabsurd\nabuse\naccess\naccident\naccount\naccuse\nachieve\nacid\nacoustic\nacquire\nacross\nact\naction\nactor\nactress\nactual\nadapt\nadd\naddict\naddress\nadjust\nadmit\nadult\nadvance\nadvice\naerobic\naffair\nafford\nafraid\nagain\nage\nagent\nagree\nahead\naim\nair\nairport\naisle\nalarm\nalbum\nalcohol\nalert\nalien\nall\nalley\nallow\nalmost\nalone\nalpha\nalready\nalso\nalter\nalways\namateur\namazing\namong\namount\namused\nanalyst\nanchor\nancient\nanger\nangle\nangry\nanimal\nankle\nannounce\nannual\nanother\nanswer\nantenna\nantique\nanxiety\nany\napart\napology\nappear\napple\napprove\napril\narch\narctic\narea\narena\nargue\narm\narmed\narmor\narmy\naround\narrange\narrest\narrive\narrow\nart\nartefact\nartist\nartwork\nask\naspect\nassault\nasset\nassist\nassume\nasthma\nathlete\natom\nattack\nattend\nattitude\nattract\nauction\naudit\naugust\naunt\nauthor\nauto\nautumn\naverage\navocado\navoid\nawake\naware\naway\nawesome\nawful\nawkward\naxis\nbaby\nbachelor\nbacon\nbadge\nbag\nbalance\nbalcony\nball\nbamboo\nbanana\nbanner\nbar\nbarely\nbargain\nbarrel\nbase\nbasic\nbasket\nbattle\nbeach\nbean\nbeauty\nbecause\nbecome\nbeef\nbefore\nbegin\nbehave\nbehind\nbelieve\nbelow\nbelt\nbench\nbenefit\nbest\nbetray\nbetter\nbetween\nbeyond\nbicycle\nbid\nbike\nbind\nbiology\nbird\nbirth\nbitter\nblack\nblade\nblame\nblanket\nblast\nbleak\nbless\nblind\nblood\nblossom\nblouse\nblue\nblur\nblush\nboard\nboat\nbody\nboil\nbomb\nbone\nbonus\nbook\nboost\nborder\nboring\nborrow\nboss\nbottom\nbounce\nbox\nboy\nbracket\nbrain\nbrand\nbrass\nbrave\nbread\nbreeze\nbrick\nbridge\nbrief\nbright\nbring\nbrisk\nbroccoli\nbroken\nbronze\nbroom\nbrother\nbrown\nbrush\nbubble\nbuddy\nbudget\nbuffalo\nbuild\nbulb\nbulk\nbullet\nbundle\nbunker\nburden\nburger\nburst\nbus\nbusiness\nbusy\nbutter\nbuyer\nbuzz\ncabbage\ncabin\ncable\ncactus\ncage\ncake\ncall\ncalm\ncamera\ncamp\ncan\ncanal\ncancel\ncandy\ncannon\ncanoe\ncanvas\ncanyon\ncapable\ncapital\ncaptain\ncar\ncarbon\ncard\ncargo\ncarpet\ncarry\ncart\ncase\ncash\ncasino\ncastle\ncasual\ncat\ncatalog\ncatch\ncategory\ncattle\ncaught\ncause\ncaution\ncave\nceiling\ncelery\ncement\ncensus\ncentury\ncereal\ncertain\nchair\nchalk\nchampion\nchange\nchaos\nchapter\ncharge\nchase\nchat\ncheap\ncheck\ncheese\nchef\ncherry\nchest\nchicken\nchief\nchild\nchimney\nchoice\nchoose\nchronic\nchuckle\nchunk\nchurn\ncigar\ncinnamon\ncircle\ncitizen\ncity\ncivil\nclaim\nclap\nclarify\nclaw\nclay\nclean\nclerk\nclever\nclick\nclient\ncliff\nclimb\nclinic\nclip\nclock\nclog\nclose\ncloth\ncloud\nclown\nclub\nclump\ncluster\nclutch\ncoach\ncoast\ncoconut\ncode\ncoffee\ncoil\ncoin\ncollect\ncolor\ncolumn\ncombine\ncome\ncomfort\ncomic\ncommon\ncompany\nconcert\nconduct\nconfirm\ncongress\nconnect\nconsider\ncontrol\nconvince\ncook\ncool\ncopper\ncopy\ncoral\ncore\ncorn\ncorrect\ncost\ncotton\ncouch\ncountry\ncouple\ncourse\ncousin\ncover\ncoyote\ncrack\ncradle\ncraft\ncram\ncrane\ncrash\ncrater\ncrawl\ncrazy\ncream\ncredit\ncreek\ncrew\ncricket\ncrime\ncrisp\ncritic\ncrop\ncross\ncrouch\ncrowd\ncrucial\ncruel\ncruise\ncrumble\ncrunch\ncrush\ncry\ncrystal\ncube\nculture\ncup\ncupboard\ncurious\ncurrent\ncurtain\ncurve\ncushion\ncustom\ncute\ncycle\ndad\ndamage\ndamp\ndance\ndanger\ndaring\ndash\ndaughter\ndawn\nday\ndeal\ndebate\ndebris\ndecade\ndecember\ndecide\ndecline\ndecorate\ndecrease\ndeer\ndefense\ndefine\ndefy\ndegree\ndelay\ndeliver\ndemand\ndemise\ndenial\ndentist\ndeny\ndepart\ndepend\ndeposit\ndepth\ndeputy\nderive\ndescribe\ndesert\ndesign\ndesk\ndespair\ndestroy\ndetail\ndetect\ndevelop\ndevice\ndevote\ndiagram\ndial\ndiamond\ndiary\ndice\ndiesel\ndiet\ndiffer\ndigital\ndignity\ndilemma\ndinner\ndinosaur\ndirect\ndirt\ndisagree\ndiscover\ndisease\ndish\ndismiss\ndisorder\ndisplay\ndistance\ndivert\ndivide\ndivorce\ndizzy\ndoctor\ndocument\ndog\ndoll\ndolphin\ndomain\ndonate\ndonkey\ndonor\ndoor\ndose\ndouble\ndove\ndraft\ndragon\ndrama\ndrastic\ndraw\ndream\ndress\ndrift\ndrill\ndrink\ndrip\ndrive\ndrop\ndrum\ndry\nduck\ndumb\ndune\nduring\ndust\ndutch\nduty\ndwarf\ndynamic\neager\neagle\nearly\nearn\nearth\neasily\neast\neasy\necho\necology\neconomy\nedge\nedit\neducate\neffort\negg\neight\neither\nelbow\nelder\nelectric\nelegant\nelement\nelephant\nelevator\nelite\nelse\nembark\nembody\nembrace\nemerge\nemotion\nemploy\nempower\nempty\nenable\nenact\nend\nendless\nendorse\nenemy\nenergy\nenforce\nengage\nengine\nenhance\nenjoy\nenlist\nenough\nenrich\nenroll\nensure\nenter\nentire\nentry\nenvelope\nepisode\nequal\nequip\nera\nerase\nerode\nerosion\nerror\nerupt\nescape\nessay\nessence\nestate\neternal\nethics\nevidence\nevil\nevoke\nevolve\nexact\nexample\nexcess\nexchange\nexcite\nexclude\nexcuse\nexecute\nexercise\nexhaust\nexhibit\nexile\nexist\nexit\nexotic\nexpand\nexpect\nexpire\nexplain\nexpose\nexpress\nextend\nextra\neye\neyebrow\nfabric\nface\nfaculty\nfade\nfaint\nfaith\nfall\nfalse\nfame\nfamily\nfamous\nfan\nfancy\nfantasy\nfarm\nfashion\nfat\nfatal\nfather\nfatigue\nfault\nfavorite\nfeature\nfebruary\nfederal\nfee\nfeed\nfeel\nfemale\nfence\nfestival\nfetch\nfever\nfew\nfiber\nfiction\nfield\nfigure\nfile\nfilm\nfilter\nfinal\nfind\nfine\nfinger\nfinish\nfire\nfirm\nfirst\nfiscal\nfish\nfit\nfitness\nfix\nflag\nflame\nflash\nflat\nflavor\nflee\nflight\nflip\nfloat\nflock\nfloor\nflower\nfluid\nflush\nfly\nfoam\nfocus\nfog\nfoil\nfold\nfollow\nfood\nfoot\nforce\nforest\nforget\nfork\nfortune\nforum\nforward\nfossil\nfoster\nfound\nfox\nfragile\nframe\nfrequent\nfresh\nfriend\nfringe\nfrog\nfront\nfrost\nfrown\nfrozen\nfruit\nfuel\nfun\nfunny\nfurnace\nfury\nfuture\ngadget\ngain\ngalaxy\ngallery\ngame\ngap\ngarage\ngarbage\ngarden\ngarlic\ngarment\ngas\ngasp\ngate\ngather\ngauge\ngaze\ngeneral\ngenius\ngenre\ngentle\ngenuine\ngesture\nghost\ngiant\ngift\ngiggle\nginger\ngiraffe\ngirl\ngive\nglad\nglance\nglare\nglass\nglide\nglimpse\nglobe\ngloom\nglory\nglove\nglow\nglue\ngoat\ngoddess\ngold\ngood\ngoose\ngorilla\ngospel\ngossip\ngovern\ngown\ngrab\ngrace\ngrain\ngrant\ngrape\ngrass\ngravity\ngreat\ngreen\ngrid\ngrief\ngrit\ngrocery\ngroup\ngrow\ngrunt\nguard\nguess\nguide\nguilt\nguitar\ngun\ngym\nhabit\nhair\nhalf\nhammer\nhamster\nhand\nhappy\nharbor\nhard\nharsh\nharvest\nhat\nhave\nhawk\nhazard\nhead\nhealth\nheart\nheavy\nhedgehog\nheight\nhello\nhelmet\nhelp\nhen\nhero\nhidden\nhigh\nhill\nhint\nhip\nhire\nhistory\nhobby\nhockey\nhold\nhole\nholiday\nhollow\nhome\nhoney\nhood\nhope\nhorn\nhorror\nhorse\nhospital\nhost\nhotel\nhour\nhover\nhub\nhuge\nhuman\nhumble\nhumor\nhundred\nhungry\nhunt\nhurdle\nhurry\nhurt\nhusband\nhybrid\nice\nicon\nidea\nidentify\nidle\nignore\nill\nillegal\nillness\nimage\nimitate\nimmense\nimmune\nimpact\nimpose\nimprove\nimpulse\ninch\ninclude\nincome\nincrease\nindex\nindicate\nindoor\nindustry\ninfant\ninflict\ninform\ninhale\ninherit\ninitial\ninject\ninjury\ninmate\ninner\ninnocent\ninput\ninquiry\ninsane\ninsect\ninside\ninspire\ninstall\nintact\ninterest\ninto\ninvest\ninvite\ninvolve\niron\nisland\nisolate\nissue\nitem\nivory\njacket\njaguar\njar\njazz\njealous\njeans\njelly\njewel\njob\njoin\njoke\njourney\njoy\njudge\njuice\njump\njungle\njunior\njunk\njust\nkangaroo\nkeen\nkeep\nketchup\nkey\nkick\nkid\nkidney\nkind\nkingdom\nkiss\nkit\nkitchen\nkite\nkitten\nkiwi\nknee\nknife\nknock\nknow\nlab\nlabel\nlabor\nladder\nlady\nlake\nlamp\nlanguage\nlaptop\nlarge\nlater\nlatin\nlaugh\nlaundry\nlava\nlaw\nlawn\nlawsuit\nlayer\nlazy\nleader\nleaf\nlearn\nleave\nlecture\nleft\nleg\nlegal\nlegend\nleisure\nlemon\nlend\nlength\nlens\nleopard\nlesson\nletter\nlevel\nliar\nliberty\nlibrary\nlicense\nlife\nlift\nlight\nlike\nlimb\nlimit\nlink\nlion\nliquid\nlist\nlittle\nlive\nlizard\nload\nloan\nlobster\nlocal\nlock\nlogic\nlonely\nlong\nloop\nlottery\nloud\nlounge\nlove\nloyal\nlucky\nluggage\nlumber\nlunar\nlunch\nluxury\nlyrics\nmachine\nmad\nmagic\nmagnet\nmaid\nmail\nmain\nmajor\nmake\nmammal\nman\nmanage\nmandate\nmango\nmansion\nmanual\nmaple\nmarble\nmarch\nmargin\nmarine\nmarket\nmarriage\nmask\nmass\nmaster\nmatch\nmaterial\nmath\nmatrix\nmatter\nmaximum\nmaze\nmeadow\nmean\nmeasure\nmeat\nmechanic\nmedal\nmedia\nmelody\nmelt\nmember\nmemory\nmention\nmenu\nmercy\nmerge\nmerit\nmerry\nmesh\nmessage\nmetal\nmethod\nmiddle\nmidnight\nmilk\nmillion\nmimic\nmind\nminimum\nminor\nminute\nmiracle\nmirror\nmisery\nmiss\nmistake\nmix\nmixed\nmixture\nmobile\nmodel\nmodify\nmom\nmoment\nmonitor\nmonkey\nmonster\nmonth\nmoon\nmoral\nmore\nmorning\nmosquito\nmother\nmotion\nmotor\nmountain\nmouse\nmove\nmovie\nmuch\nmuffin\nmule\nmultiply\nmuscle\nmuseum\nmushroom\nmusic\nmust\nmutual\nmyself\nmystery\nmyth\nnaive\nname\nnapkin\nnarrow\nnasty\nnation\nnature\nnear\nneck\nneed\nnegative\nneglect\nneither\nnephew\nnerve\nnest\nnet\nnetwork\nneutral\nnever\nnews\nnext\nnice\nnight\nnoble\nnoise\nnominee\nnoodle\nnormal\nnorth\nnose\nnotable\nnote\nnothing\nnotice\nnovel\nnow\nnuclear\nnumber\nnurse\nnut\noak\nobey\nobject\noblige\nobscure\nobserve\nobtain\nobvious\noccur\nocean\noctober\nodor\noff\noffer\noffice\noften\noil\nokay\nold\nolive\nolympic\nomit\nonce\none\nonion\nonline\nonly\nopen\nopera\nopinion\noppose\noption\norange\norbit\norchard\norder\nordinary\norgan\norient\noriginal\norphan\nostrich\nother\noutdoor\nouter\noutput\noutside\noval\noven\nover\nown\nowner\noxygen\noyster\nozone\npact\npaddle\npage\npair\npalace\npalm\npanda\npanel\npanic\npanther\npaper\nparade\nparent\npark\nparrot\nparty\npass\npatch\npath\npatient\npatrol\npattern\npause\npave\npayment\npeace\npeanut\npear\npeasant\npelican\npen\npenalty\npencil\npeople\npepper\nperfect\npermit\nperson\npet\nphone\nphoto\nphrase\nphysical\npiano\npicnic\npicture\npiece\npig\npigeon\npill\npilot\npink\npioneer\npipe\npistol\npitch\npizza\nplace\nplanet\nplastic\nplate\nplay\nplease\npledge\npluck\nplug\nplunge\npoem\npoet\npoint\npolar\npole\npolice\npond\npony\npool\npopular\nportion\nposition\npossible\npost\npotato\npottery\npoverty\npowder\npower\npractice\npraise\npredict\nprefer\nprepare\npresent\npretty\nprevent\nprice\npride\nprimary\nprint\npriority\nprison\nprivate\nprize\nproblem\nprocess\nproduce\nprofit\nprogram\nproject\npromote\nproof\nproperty\nprosper\nprotect\nproud\nprovide\npublic\npudding\npull\npulp\npulse\npumpkin\npunch\npupil\npuppy\npurchase\npurity\npurpose\npurse\npush\nput\npuzzle\npyramid\nquality\nquantum\nquarter\nquestion\nquick\nquit\nquiz\nquote\nrabbit\nraccoon\nrace\nrack\nradar\nradio\nrail\nrain\nraise\nrally\nramp\nranch\nrandom\nrange\nrapid\nrare\nrate\nrather\nraven\nraw\nrazor\nready\nreal\nreason\nrebel\nrebuild\nrecall\nreceive\nrecipe\nrecord\nrecycle\nreduce\nreflect\nreform\nrefuse\nregion\nregret\nregular\nreject\nrelax\nrelease\nrelief\nrely\nremain\nremember\nremind\nremove\nrender\nrenew\nrent\nreopen\nrepair\nrepeat\nreplace\nreport\nrequire\nrescue\nresemble\nresist\nresource\nresponse\nresult\nretire\nretreat\nreturn\nreunion\nreveal\nreview\nreward\nrhythm\nrib\nribbon\nrice\nrich\nride\nridge\nrifle\nright\nrigid\nring\nriot\nripple\nrisk\nritual\nrival\nriver\nroad\nroast\nrobot\nrobust\nrocket\nromance\nroof\nrookie\nroom\nrose\nrotate\nrough\nround\nroute\nroyal\nrubber\nrude\nrug\nrule\nrun\nrunway\nrural\nsad\nsaddle\nsadness\nsafe\nsail\nsalad\nsalmon\nsalon\nsalt\nsalute\nsame\nsample\nsand\nsatisfy\nsatoshi\nsauce\nsausage\nsave\nsay\nscale\nscan\nscare\nscatter\nscene\nscheme\nschool\nscience\nscissors\nscorpion\nscout\nscrap\nscreen\nscript\nscrub\nsea\nsearch\nseason\nseat\nsecond\nsecret\nsection\nsecurity\nseed\nseek\nsegment\nselect\nsell\nseminar\nsenior\nsense\nsentence\nseries\nservice\nsession\nsettle\nsetup\nseven\nshadow\nshaft\nshallow\nshare\nshed\nshell\nsheriff\nshield\nshift\nshine\nship\nshiver\nshock\nshoe\nshoot\nshop\nshort\nshoulder\nshove\nshrimp\nshrug\nshuffle\nshy\nsibling\nsick\nside\nsiege\nsight\nsign\nsilent\nsilk\nsilly\nsilver\nsimilar\nsimple\nsince\nsing\nsiren\nsister\nsituate\nsix\nsize\nskate\nsketch\nski\nskill\nskin\nskirt\nskull\nslab\nslam\nsleep\nslender\nslice\nslide\nslight\nslim\nslogan\nslot\nslow\nslush\nsmall\nsmart\nsmile\nsmoke\nsmooth\nsnack\nsnake\nsnap\nsniff\nsnow\nsoap\nsoccer\nsocial\nsock\nsoda\nsoft\nsolar\nsoldier\nsolid\nsolution\nsolve\nsomeone\nsong\nsoon\nsorry\nsort\nsoul\nsound\nsoup\nsource\nsouth\nspace\nspare\nspatial\nspawn\nspeak\nspecial\nspeed\nspell\nspend\nsphere\nspice\nspider\nspike\nspin\nspirit\nsplit\nspoil\nsponsor\nspoon\nsport\nspot\nspray\nspread\nspring\nspy\nsquare\nsqueeze\nsquirrel\nstable\nstadium\nstaff\nstage\nstairs\nstamp\nstand\nstart\nstate\nstay\nsteak\nsteel\nstem\nstep\nstereo\nstick\nstill\nsting\nstock\nstomach\nstone\nstool\nstory\nstove\nstrategy\nstreet\nstrike\nstrong\nstruggle\nstudent\nstuff\nstumble\nstyle\nsubject\nsubmit\nsubway\nsuccess\nsuch\nsudden\nsuffer\nsugar\nsuggest\nsuit\nsummer\nsun\nsunny\nsunset\nsuper\nsupply\nsupreme\nsure\nsurface\nsurge\nsurprise\nsurround\nsurvey\nsuspect\nsustain\nswallow\nswamp\nswap\nswarm\nswear\nsweet\nswift\nswim\nswing\nswitch\nsword\nsymbol\nsymptom\nsyrup\nsystem\ntable\ntackle\ntag\ntail\ntalent\ntalk\ntank\ntape\ntarget\ntask\ntaste\ntattoo\ntaxi\nteach\nteam\ntell\nten\ntenant\ntennis\ntent\nterm\ntest\ntext\nthank\nthat\ntheme\nthen\ntheory\nthere\nthey\nthing\nthis\nthought\nthree\nthrive\nthrow\nthumb\nthunder\nticket\ntide\ntiger\ntilt\ntimber\ntime\ntiny\ntip\ntired\ntissue\ntitle\ntoast\ntobacco\ntoday\ntoddler\ntoe\ntogether\ntoilet\ntoken\ntomato\ntomorrow\ntone\ntongue\ntonight\ntool\ntooth\ntop\ntopic\ntopple\ntorch\ntornado\ntortoise\ntoss\ntotal\ntourist\ntoward\ntower\ntown\ntoy\ntrack\ntrade\ntraffic\ntragic\ntrain\ntransfer\ntrap\ntrash\ntravel\ntray\ntreat\ntree\ntrend\ntrial\ntribe\ntrick\ntrigger\ntrim\ntrip\ntrophy\ntrouble\ntruck\ntrue\ntruly\ntrumpet\ntrust\ntruth\ntry\ntube\ntuition\ntumble\ntuna\ntunnel\nturkey\nturn\nturtle\ntwelve\ntwenty\ntwice\ntwin\ntwist\ntwo\ntype\ntypical\nugly\numbrella\nunable\nunaware\nuncle\nuncover\nunder\nundo\nunfair\nunfold\nunhappy\nuniform\nunique\nunit\nuniverse\nunknown\nunlock\nuntil\nunusual\nunveil\nupdate\nupgrade\nuphold\nupon\nupper\nupset\nurban\nurge\nusage\nuse\nused\nuseful\nuseless\nusual\nutility\nvacant\nvacuum\nvague\nvalid\nvalley\nvalve\nvan\nvanish\nvapor\nvarious\nvast\nvault\nvehicle\nvelvet\nvendor\nventure\nvenue\nverb\nverify\nversion\nvery\nvessel\nveteran\nviable\nvibrant\nvicious\nvictory\nvideo\nview\nvillage\nvintage\nviolin\nvirtual\nvirus\nvisa\nvisit\nvisual\nvital\nvivid\nvocal\nvoice\nvoid\nvolcano\nvolume\nvote\nvoyage\nwage\nwagon\nwait\nwalk\nwall\nwalnut\nwant\nwarfare\nwarm\nwarrior\nwash\nwasp\nwaste\nwater\nwave\nway\nwealth\nweapon\nwear\nweasel\nweather\nweb\nwedding\nweekend\nweird\nwelcome\nwest\nwet\nwhale\nwhat\nwheat\nwheel\nwhen\nwhere\nwhip\nwhisper\nwide\nwidth\nwife\nwild\nwill\nwin\nwindow\nwine\nwing\nwink\nwinner\nwinter\nwire\nwisdom\nwise\nwish\nwitness\nwolf\nwoman\nwonder\nwood\nwool\nword\nwork\nworld\nworry\nworth\nwrap\nwreck\nwrestle\nwrist\nwrite\nwrong\nyard\nyear\nyellow\nyou\nyoung\nyouth\nzebra\nzero\nzone\nzoo`.split('\\n');\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { hmac } from \"@noble/hashes/hmac\";\nimport { sha512 } from \"@noble/hashes/sha2\";\nimport * as bip39 from \"@scure/bip39\";\nimport { wordlist } from \"@scure/bip39/wordlists/english.js\";\nimport { BASE_DERIVATION_PATH } from \"../constants\";\nimport { CryptoError, CryptoErrorCode } from \"./errors\";\nimport { Keypair } from \"./keypair\";\n\nexport type MnemonicStrength = 128 | 256;\n\ninterface HDKeyNode {\n\tprivateKey: Uint8Array;\n\tchainCode: Uint8Array;\n}\n\n/**\n * Represents a validated BIP39 mnemonic phrase with SLIP-0010 Ed25519 hierarchical key derivation.\n *\n * Implements the SLIP-0010 standard for Ed25519 key derivation, ensuring compatibility\n * with other implementations (e.g., Rust CDK). The default derivation path uses coin type\n * 756 (R=7, L=5, O=6 on telephone keypad).\n *\n * @example\n * ```typescript\n * // Generate new mnemonic (12 or 24 words)\n * const mnemonic = Mnemonic.generate(128); // 12 words\n *\n * // Restore from existing phrase\n * const restored = Mnemonic.fromPhrase(\"word1 word2 ...\");\n *\n * // Derive keypairs at specific account indices\n * const keypair0 = await mnemonic.toKeypair(0); // m/44'/756'/0'/0'\n * const keypair1 = await mnemonic.toKeypair(1); // m/44'/756'/1'/0'\n *\n * // With custom passphrase (BIP39 extension)\n * const secure = await mnemonic.toKeypair(0, {\n * passphrase: \"my-secret\"\n * });\n * ```\n *\n * @see {@link https://github.com/satoshilabs/slips/blob/master/slip-0010.md SLIP-0010 Specification}\n */\nexport class Mnemonic {\n\tprivate readonly phrase: string;\n\n\tprivate constructor(phrase: string) {\n\t\tif (!bip39.validateMnemonic(phrase, wordlist)) {\n\t\t\tthrow CryptoError.invalidMnemonic(\"Invalid BIP39 mnemonic phrase\");\n\t\t}\n\t\tthis.phrase = phrase;\n\t}\n\n\t/**\n\t * Generates a new random BIP39 mnemonic phrase.\n\t *\n\t * @param strength - Entropy strength (128 = 12 words, 256 = 24 words). Default: 128\n\t * @returns Validated Mnemonic instance\n\t */\n\tstatic generate(strength: MnemonicStrength = 128): Mnemonic {\n\t\tconst phrase = bip39.generateMnemonic(wordlist, strength);\n\t\treturn new Mnemonic(phrase);\n\t}\n\n\t/**\n\t * Creates a Mnemonic from an existing phrase.\n\t *\n\t * @param phrase - BIP39 mnemonic phrase (12 or 24 space-separated words)\n\t * @returns Validated Mnemonic instance\n\t * @throws {CryptoError} If phrase is invalid (wrong words or checksum)\n\t */\n\tstatic fromPhrase(phrase: string): Mnemonic {\n\t\treturn new Mnemonic(phrase);\n\t}\n\n\t/**\n\t * Validates a phrase without creating an instance.\n\t *\n\t * Checks both word validity and BIP39 checksum.\n\t *\n\t * @param phrase - Mnemonic phrase to validate\n\t * @returns true if phrase is valid\n\t */\n\tstatic isValid(phrase: string): boolean {\n\t\treturn bip39.validateMnemonic(phrase, wordlist);\n\t}\n\n\tprivate getMasterKeyFromSeed(seed: Uint8Array): HDKeyNode {\n\t\tconst seedKey = new TextEncoder().encode(\"ed25519 seed\");\n\t\tconst digest = hmac(sha512, seedKey, seed);\n\n\t\treturn {\n\t\t\tprivateKey: digest.slice(0, 32),\n\t\t\tchainCode: digest.slice(32, 64),\n\t\t};\n\t}\n\n\tprivate deriveChildKey(parentKey: HDKeyNode, index: number): HDKeyNode {\n\t\tconst hardenedIndex = index | 0x80000000;\n\t\tconst data = new Uint8Array(1 + 32 + 4);\n\t\tdata[0] = 0x00;\n\t\tdata.set(parentKey.privateKey, 1);\n\n\t\tconst view = new DataView(data.buffer);\n\t\tview.setUint32(33, hardenedIndex, false);\n\n\t\tconst digest = hmac(sha512, parentKey.chainCode, data);\n\n\t\treturn {\n\t\t\tprivateKey: digest.slice(0, 32),\n\t\t\tchainCode: digest.slice(32, 64),\n\t\t};\n\t}\n\n\tprivate derivePath(path: string, seed: Uint8Array): HDKeyNode {\n\t\tif (!path.startsWith(\"m/\")) {\n\t\t\tthrow new CryptoError(\n\t\t\t\tCryptoErrorCode.KEY_DERIVATION_FAILED,\n\t\t\t\t\"Derivation path must start with 'm/'\",\n\t\t\t);\n\t\t}\n\n\t\tlet node = this.getMasterKeyFromSeed(seed);\n\t\tconst segments = path.slice(2).split(\"/\");\n\n\t\tfor (const segment of segments) {\n\t\t\tif (!segment) continue;\n\n\t\t\tconst index = segment.endsWith(\"'\")\n\t\t\t\t? Number.parseInt(segment.slice(0, -1), 10)\n\t\t\t\t: Number.parseInt(segment, 10);\n\n\t\t\tif (Number.isNaN(index) || index < 0) {\n\t\t\t\tthrow new CryptoError(\n\t\t\t\t\tCryptoErrorCode.KEY_DERIVATION_FAILED,\n\t\t\t\t\t`Invalid path segment: ${segment}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tnode = this.deriveChildKey(node, index);\n\t\t}\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Derives a keypair at a specific account index.\n\t *\n\t * Uses SLIP-0010 Ed25519 derivation with the default path:\n\t * `m/44'/756'/{accountIndex}'/0'`\n\t *\n\t * Coin type 756 follows the telephone keypad convention (R=7, L=5, O=6).\n\t *\n\t * @param accountIndex - Account index to derive (default: 0)\n\t * @param options - Derivation options\n\t * @param options.passphrase - Optional BIP39 passphrase for additional security\n\t * @param options.baseDerivationPath - Base path (default: \"m/44'/756'\")\n\t * @returns Keypair for the derived account\n\t */\n\tasync toKeypair(\n\t\taccountIndex = 0,\n\t\toptions?: {\n\t\t\tpassphrase?: string;\n\t\t\tbaseDerivationPath?: string;\n\t\t},\n\t): Promise<Keypair> {\n\t\tif (accountIndex < 0 || !Number.isInteger(accountIndex)) {\n\t\t\tthrow new CryptoError(\n\t\t\t\tCryptoErrorCode.KEY_DERIVATION_FAILED,\n\t\t\t\t\"Account index must be a non-negative integer\",\n\t\t\t\t{ accountIndex },\n\t\t\t);\n\t\t}\n\n\t\tconst { passphrase = \"\", baseDerivationPath = BASE_DERIVATION_PATH } =\n\t\t\toptions ?? {};\n\n\t\ttry {\n\t\t\tconst fullPath = this.buildFullPath(baseDerivationPath, accountIndex);\n\t\t\tconst seed = await bip39.mnemonicToSeed(this.phrase, passphrase);\n\t\t\tconst derivedNode = this.derivePath(fullPath, seed);\n\n\t\t\treturn Keypair.fromSecretKey(derivedNode.privateKey);\n\t\t} catch (error) {\n\t\t\tif (error instanceof CryptoError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tthrow CryptoError.keyDerivationFailed(\n\t\t\t\tbaseDerivationPath,\n\t\t\t\terror instanceof Error ? error : undefined,\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Derives a keypair using an explicit full derivation path.\n\t *\n\t * @param fullPath - Complete derivation path (e.g., \"m/44'/756'/0'/0'\")\n\t * @param passphrase - Optional BIP39 passphrase\n\t */\n\tasync toKeypairWithPath(fullPath: string, passphrase = \"\"): Promise<Keypair> {\n\t\ttry {\n\t\t\tconst seed = await bip39.mnemonicToSeed(this.phrase, passphrase);\n\t\t\tconst derivedNode = this.derivePath(fullPath, seed);\n\t\t\treturn Keypair.fromSecretKey(derivedNode.privateKey);\n\t\t} catch (error) {\n\t\t\tif (error instanceof CryptoError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tthrow CryptoError.keyDerivationFailed(\n\t\t\t\tfullPath,\n\t\t\t\terror instanceof Error ? error : undefined,\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Derives multiple keypairs sequentially from this mnemonic.\n\t *\n\t * @param count - Number of keypairs to derive\n\t * @param startIndex - Starting account index (default: 0)\n\t * @param options - Derivation options (passphrase and path)\n\t */\n\tasync deriveKeypairs(\n\t\tcount: number,\n\t\tstartIndex = 0,\n\t\toptions?: {\n\t\t\tpassphrase?: string;\n\t\t\tbaseDerivationPath?: string;\n\t\t},\n\t): Promise<Keypair[]> {\n\t\tif (count <= 0 || !Number.isInteger(count)) {\n\t\t\tthrow new CryptoError(\n\t\t\t\tCryptoErrorCode.KEY_DERIVATION_FAILED,\n\t\t\t\t\"Count must be a positive integer\",\n\t\t\t\t{ count },\n\t\t\t);\n\t\t}\n\n\t\tconst keypairs: Keypair[] = [];\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst keypair = await this.toKeypair(startIndex + i, options);\n\t\t\tkeypairs.push(keypair);\n\t\t}\n\n\t\treturn keypairs;\n\t}\n\n\t/**\n\t * Converts the mnemonic to a BIP39 seed.\n\t *\n\t * @param passphrase - Optional BIP39 passphrase for additional security\n\t * @returns 64-byte seed\n\t */\n\tasync toSeed(passphrase = \"\"): Promise<Uint8Array> {\n\t\treturn bip39.mnemonicToSeed(this.phrase, passphrase);\n\t}\n\n\t/**\n\t * Returns the mnemonic phrase as a string.\n\t */\n\ttoString(): string {\n\t\treturn this.phrase;\n\t}\n\n\t/**\n\t * Returns the individual words of the mnemonic.\n\t */\n\tgetWords(): string[] {\n\t\treturn this.phrase.split(\" \");\n\t}\n\n\t/**\n\t * Returns the word count (12 or 24).\n\t */\n\tgetWordCount(): 12 | 24 {\n\t\tconst count = this.getWords().length;\n\t\treturn count === 24 ? 24 : 12;\n\t}\n\n\t/**\n\t * Returns the entropy strength (128 or 256 bits).\n\t */\n\tgetStrength(): MnemonicStrength {\n\t\treturn this.getWordCount() === 12 ? 128 : 256;\n\t}\n\n\t/**\n\t * Checks equality with another mnemonic using constant-time comparison.\n\t */\n\tequals(other: Mnemonic): boolean {\n\t\tif (this.phrase.length !== other.phrase.length) return false;\n\t\tlet result = 0;\n\t\tfor (let i = 0; i < this.phrase.length; i++) {\n\t\t\tresult |= this.phrase.charCodeAt(i) ^ other.phrase.charCodeAt(i);\n\t\t}\n\t\treturn result === 0;\n\t}\n\n\t/**\n\t * JSON serialization (returns the mnemonic phrase).\n\t */\n\ttoJSON(): string {\n\t\treturn this.phrase;\n\t}\n\n\tprivate buildFullPath(\n\t\tbaseDerivationPath: string,\n\t\taccountIndex: number,\n\t): string {\n\t\tconst cleanBasePath = baseDerivationPath.replace(/\\/$/, \"\");\n\n\t\tif (!cleanBasePath.startsWith(\"m/\")) {\n\t\t\tthrow new CryptoError(\n\t\t\t\tCryptoErrorCode.KEY_DERIVATION_FAILED,\n\t\t\t\t\"Derivation path must start with 'm/'\",\n\t\t\t);\n\t\t}\n\n\t\treturn `${cleanBasePath}/${accountIndex}'/0'`;\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SYSTEM_PROGRAM_ID } from \"../../constants\";\nimport { PublicKey } from \"../../crypto\";\nimport type { Instruction } from \"../types\";\n\n/**\n * System program instruction types.\n */\nexport enum SystemInstruction {\n\tCreateAccount = 0,\n\tAssign = 1,\n\tTransfer = 2,\n\tCreateAccountWithSeed = 3,\n\tAdvanceNonceAccount = 4,\n\tWithdrawNonceAccount = 5,\n\tInitializeNonceAccount = 6,\n\tAuthorizeNonceAccount = 7,\n\tAllocate = 8,\n\tAllocateWithSeed = 9,\n\tAssignWithSeed = 10,\n\tTransferWithSeed = 11,\n}\n\n/**\n * Create a transfer instruction.\n *\n * Transfers native tokens from one account to another.\n *\n * @param from - Source account (must be signer)\n * @param to - Destination account\n * @param amount - Amount to transfer in smallest denomination (lamports)\n *\n * @example\n * ```typescript\n * const instruction = transferInstruction(fromPubkey, toPubkey, 1_000_000n);\n *\n * const tx = TransactionBuilder.create()\n * .setPayer(fromPubkey)\n * .setRecentBlockhash(blockhash)\n * .addInstruction(instruction)\n * .build();\n * ```\n */\nexport function transferInstruction(\n\tfrom: PublicKey,\n\tto: PublicKey,\n\tamount: bigint,\n): Instruction {\n\t// Instruction data: bincode serialization format\n\t// - 4 bytes: variant index as u32 little-endian (2 for Transfer)\n\t// - 8 bytes: amount as u64 little-endian\n\tconst data = new Uint8Array(12);\n\n\t// Write variant index (u32) - Transfer is variant 2\n\tconst variant = 2;\n\tdata[0] = variant & 0xff;\n\tdata[1] = (variant >> 8) & 0xff;\n\tdata[2] = (variant >> 16) & 0xff;\n\tdata[3] = (variant >> 24) & 0xff;\n\n\t// Write amount as little-endian u64\n\tfor (let i = 0; i < 8; i++) {\n\t\tdata[4 + i] = Number((amount >> BigInt(i * 8)) & 0xffn);\n\t}\n\n\treturn {\n\t\tprogramId: PublicKey.fromString(SYSTEM_PROGRAM_ID),\n\t\taccounts: [\n\t\t\t{ pubkey: from, isSigner: true, isWritable: true },\n\t\t\t{ pubkey: to, isSigner: false, isWritable: true },\n\t\t],\n\t\tdata,\n\t};\n}\n\n/**\n * Create an account creation instruction.\n *\n * @param from - Funding account (must be signer)\n * @param newAccount - New account to create (must be signer)\n * @param lamports - Initial balance for new account\n * @param space - Number of bytes to allocate for account data\n * @param owner - Program that will own the new account\n */\nexport function createAccount(\n\tfrom: PublicKey,\n\tnewAccount: PublicKey,\n\tlamports: bigint,\n\tspace: bigint,\n\towner: PublicKey,\n): Instruction {\n\t// Instruction data: [type (1 byte), lamports (8), space (8), owner (32)]\n\tconst data = new Uint8Array(49);\n\tdata[0] = SystemInstruction.CreateAccount;\n\n\t// Write lamports\n\tfor (let i = 0; i < 8; i++) {\n\t\tdata[1 + i] = Number((lamports >> BigInt(i * 8)) & 0xffn);\n\t}\n\n\t// Write space\n\tfor (let i = 0; i < 8; i++) {\n\t\tdata[9 + i] = Number((space >> BigInt(i * 8)) & 0xffn);\n\t}\n\n\t// Write owner\n\tdata.set(owner.toBytes(), 17);\n\n\treturn {\n\t\tprogramId: PublicKey.fromString(SYSTEM_PROGRAM_ID),\n\t\taccounts: [\n\t\t\t{ pubkey: from, isSigner: true, isWritable: true },\n\t\t\t{ pubkey: newAccount, isSigner: true, isWritable: true },\n\t\t],\n\t\tdata,\n\t};\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Error codes for RPC operations, categorized by type.\n */\nexport enum RpcErrorCode {\n\t// Network errors (retryable)\n\tREQUEST_TIMEOUT = \"REQUEST_TIMEOUT\",\n\tNETWORK_ERROR = \"NETWORK_ERROR\",\n\tCONNECTION_REFUSED = \"CONNECTION_REFUSED\",\n\n\t// RPC protocol errors\n\tINVALID_RESPONSE = \"INVALID_RESPONSE\",\n\tPARSE_ERROR = \"PARSE_ERROR\",\n\tINVALID_REQUEST = \"INVALID_REQUEST\",\n\tMETHOD_NOT_FOUND = \"METHOD_NOT_FOUND\",\n\tINVALID_PARAMS = \"INVALID_PARAMS\",\n\tINTERNAL_ERROR = \"INTERNAL_ERROR\",\n\n\t// Transaction errors\n\tTRANSACTION_REJECTED = \"TRANSACTION_REJECTED\",\n\tINSUFFICIENT_FUNDS = \"INSUFFICIENT_FUNDS\",\n\n\t// Resource errors\n\tACCOUNT_NOT_FOUND = \"ACCOUNT_NOT_FOUND\",\n\tBLOCKHASH_NOT_FOUND = \"BLOCKHASH_NOT_FOUND\",\n\n\t// Rate limiting (retryable after delay)\n\tRATE_LIMIT_EXCEEDED = \"RATE_LIMIT_EXCEEDED\",\n\n\t// Node health\n\tNODE_UNHEALTHY = \"NODE_UNHEALTHY\",\n}\n\n/**\n * Detailed error context for debugging and error handling.\n */\ninterface RpcErrorDetails {\n\tmethod?: string;\n\tparams?: unknown;\n\trequestId?: number;\n\turl?: string;\n\thttpStatus?: number;\n\trpcCode?: number;\n\ttimeout?: number;\n\tattempts?: number;\n\t[key: string]: unknown;\n}\n\n/**\n * Error class for RPC operations with structured error information.\n *\n * Provides actionable error messages and indicates whether errors are retryable.\n */\nexport class RpcError extends Error {\n\tpublic readonly code: RpcErrorCode;\n\tpublic readonly details: RpcErrorDetails;\n\tpublic readonly retryable: boolean;\n\n\tconstructor(\n\t\tcode: RpcErrorCode,\n\t\tmessage: string,\n\t\tdetails: RpcErrorDetails = {},\n\t\tretryable = false,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"RpcError\";\n\t\tthis.code = code;\n\t\tthis.details = details;\n\t\tthis.retryable = retryable;\n\t}\n\n\tstatic requestTimeout(timeoutMs: number, details: RpcErrorDetails): RpcError {\n\t\treturn new RpcError(\n\t\t\tRpcErrorCode.REQUEST_TIMEOUT,\n\t\t\t`RPC request timed out after ${timeoutMs}ms. The node may be slow or unreachable.`,\n\t\t\t{ ...details, timeout: timeoutMs },\n\t\t\ttrue, // Retryable\n\t\t);\n\t}\n\n\tstatic networkError(message: string, details: RpcErrorDetails): RpcError {\n\t\treturn new RpcError(\n\t\t\tRpcErrorCode.NETWORK_ERROR,\n\t\t\t`Network error: ${message}. Check your internet connection and node URL.`,\n\t\t\tdetails,\n\t\t\ttrue, // Retryable\n\t\t);\n\t}\n\n\tstatic invalidResponse(details: RpcErrorDetails): RpcError {\n\t\treturn new RpcError(\n\t\t\tRpcErrorCode.INVALID_RESPONSE,\n\t\t\t\"Received invalid response from RPC node. The response format is unexpected.\",\n\t\t\tdetails,\n\t\t\tfalse,\n\t\t);\n\t}\n\n\tstatic accountNotFound(pubkey: string): RpcError {\n\t\treturn new RpcError(\n\t\t\tRpcErrorCode.ACCOUNT_NOT_FOUND,\n\t\t\t`Account ${pubkey} not found on chain. It may not exist or has zero balance.`,\n\t\t\t{ pubkey },\n\t\t\tfalse,\n\t\t);\n\t}\n\n\tstatic rateLimitExceeded(details: RpcErrorDetails): RpcError {\n\t\treturn new RpcError(\n\t\t\tRpcErrorCode.RATE_LIMIT_EXCEEDED,\n\t\t\t\"Rate limit exceeded. Too many requests to the RPC endpoint. Try again later or use a different endpoint.\",\n\t\t\tdetails,\n\t\t\ttrue, // Can retry after delay\n\t\t);\n\t}\n\n\tstatic fromRpcCode(\n\t\trpcCode: number,\n\t\tmessage: string,\n\t\tdetails: RpcErrorDetails,\n\t): RpcError {\n\t\t// Map JSON-RPC error codes to our error codes\n\t\tconst codeMap: Record<number, RpcErrorCode> = {\n\t\t\t[-32700]: RpcErrorCode.PARSE_ERROR,\n\t\t\t[-32600]: RpcErrorCode.INVALID_REQUEST,\n\t\t\t[-32601]: RpcErrorCode.METHOD_NOT_FOUND,\n\t\t\t[-32602]: RpcErrorCode.INVALID_PARAMS,\n\t\t\t[-32603]: RpcErrorCode.INTERNAL_ERROR,\n\t\t\t[429]: RpcErrorCode.RATE_LIMIT_EXCEEDED,\n\t\t};\n\n\t\tconst code = codeMap[rpcCode] || RpcErrorCode.INTERNAL_ERROR;\n\t\tconst retryable = rpcCode === 429 || rpcCode === -32603;\n\n\t\treturn new RpcError(code, message, { ...details, rpcCode }, retryable);\n\t}\n\n\ttoJSON(): { code: RpcErrorCode; message: string; details?: Record<string, unknown>; retryable: boolean } {\n\t\treturn {\n\t\t\tcode: this.code,\n\t\t\tmessage: this.message,\n\t\t\tdetails: this.details,\n\t\t\tretryable: this.retryable,\n\t\t};\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Base RPC client with JSON-RPC 2.0 protocol handling.\n *\n * Provides common functionality for all RPC clients including\n * request/response validation and error handling.\n */\nimport { RpcError } from \"../errors\";\nimport type { HttpTransport } from \"../http-transport\";\n\ninterface JsonRpcRequest {\n\tjsonrpc: \"2.0\";\n\tid: number;\n\tmethod: string;\n\tparams: unknown[];\n}\n\ninterface JsonRpcResponse<T> {\n\tjsonrpc: \"2.0\";\n\tid: number;\n\tresult?: T;\n\terror?: {\n\t\tcode: number;\n\t\tmessage: string;\n\t\tdata?: unknown;\n\t};\n}\n\n/**\n * Base client with JSON-RPC protocol handling.\n *\n * All specific clients (QueryClient, TransactionClient) extend this.\n */\nexport class BaseRpcClient {\n\tprotected readonly transport: HttpTransport;\n\tprivate requestId = 1;\n\n\tconstructor(transport: HttpTransport) {\n\t\tthis.transport = transport;\n\t}\n\n\t/**\n\t * Makes a JSON-RPC 2.0 method call with type safety.\n\t *\n\t * Handles request serialization, response validation, and error mapping.\n\t */\n\tprotected async call<T>(method: string, params: unknown[] = []): Promise<T> {\n\t\tconst requestId = this.requestId++;\n\n\t\tconst request: JsonRpcRequest = {\n\t\t\tjsonrpc: \"2.0\",\n\t\t\tid: requestId,\n\t\t\tmethod,\n\t\t\tparams,\n\t\t};\n\n\t\tconst requestBody = JSON.stringify(request);\n\t\tconst requestDetails = { method, params, requestId };\n\n\t\t// Make HTTP request with retry logic\n\t\tconst data = await this.transport.request(requestBody, requestDetails);\n\n\t\t// Validate response structure\n\t\tif (!this.isValidJsonRpcResponse(data)) {\n\t\t\tthrow RpcError.invalidResponse({\n\t\t\t\t...requestDetails,\n\t\t\t\tresponse: data,\n\t\t\t});\n\t\t}\n\n\t\tconst response = data as JsonRpcResponse<T>;\n\n\t\t// Check for RPC error\n\t\tif (response.error) {\n\t\t\tthrow RpcError.fromRpcCode(response.error.code, response.error.message, {\n\t\t\t\t...requestDetails,\n\t\t\t\trpcData: response.error.data,\n\t\t\t});\n\t\t}\n\n\t\t// Check for result\n\t\tif (!(\"result\" in response)) {\n\t\t\tthrow RpcError.invalidResponse({\n\t\t\t\t...requestDetails,\n\t\t\t\tresponse,\n\t\t\t});\n\t\t}\n\n\t\treturn response.result as T;\n\t}\n\n\t/**\n\t * Validate JSON-RPC response structure\n\t */\n\tprivate isValidJsonRpcResponse(data: unknown): boolean {\n\t\tif (typeof data !== \"object\" || data === null) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst response = data as Record<string, unknown>;\n\n\t\treturn (\n\t\t\tresponse.jsonrpc === \"2.0\" &&\n\t\t\ttypeof response.id === \"number\" &&\n\t\t\t(\"result\" in response || \"error\" in response)\n\t\t);\n\t}\n\n\t/**\n\t * Returns the configured RPC endpoint URL.\n\t */\n\tgetUrl(): string {\n\t\treturn this.transport.getUrl();\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n\tURL_DEVNET,\n\tURL_LOCALNET,\n\tURL_MAINNET,\n\tURL_TESTNET,\n} from \"./constants\";\n\n/**\n * Converts bytes to base64 string.\n *\n * Works in both browser and Node.js environments.\n */\nexport function toBase64(bytes: Uint8Array): string {\n\t// Browser environment\n\tif (typeof btoa !== \"undefined\") {\n\t\t// For large arrays, chunk to avoid call stack size exceeded\n\t\tconst chunkSize = 8192;\n\t\tlet result = \"\";\n\n\t\tfor (let i = 0; i < bytes.length; i += chunkSize) {\n\t\t\tconst chunk = bytes.slice(i, i + chunkSize);\n\t\t\tresult += String.fromCharCode(...chunk);\n\t\t}\n\n\t\treturn btoa(result);\n\t}\n\n\t// Node.js environment\n\tif (typeof Buffer !== \"undefined\") {\n\t\treturn Buffer.from(bytes).toString(\"base64\");\n\t}\n\n\tthrow new Error(\"No base64 encoding available in this environment\");\n}\n\n/**\n * Converts base64 string to bytes.\n *\n * Works in both browser and Node.js environments.\n */\nexport function fromBase64(base64: string): Uint8Array {\n\t// Browser environment\n\tif (typeof atob !== \"undefined\") {\n\t\tconst binary = atob(base64);\n\t\tconst bytes = new Uint8Array(binary.length);\n\t\tfor (let i = 0; i < binary.length; i++) {\n\t\t\tbytes[i] = binary.charCodeAt(i);\n\t\t}\n\t\treturn bytes;\n\t}\n\n\t// Node.js environment\n\tif (typeof Buffer !== \"undefined\") {\n\t\treturn new Uint8Array(Buffer.from(base64, \"base64\"));\n\t}\n\n\tthrow new Error(\"No base64 decoding available in this environment\");\n}\n\n/**\n * Sleeps for the specified duration.\n *\n * @param ms - Milliseconds to sleep\n */\nexport function sleep(ms: number): Promise<void> {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Calculates exponential backoff delay with jitter.\n *\n * @param attempt - Current retry attempt (0-indexed)\n * @param baseMs - Base delay in milliseconds\n * @param maxMs - Maximum delay in milliseconds\n * @returns Calculated delay with 30% random jitter\n */\nexport function calculateBackoff(\n\tattempt: number,\n\tbaseMs = 1000,\n\tmaxMs = 30000,\n): number {\n\tconst exponentialDelay = baseMs * 2 ** attempt;\n\tconst jitter = Math.random() * 0.3 * exponentialDelay; // 30% jitter\n\treturn Math.min(exponentialDelay + jitter, maxMs);\n}\n\n/**\n * Returns the devnet RPC URL.\n */\nexport function getDevnetUrl(): string {\n\treturn URL_DEVNET;\n}\n\n/**\n * Returns the testnet RPC URL.\n */\nexport function getTestnetUrl(): string {\n\treturn URL_TESTNET;\n}\n\n/**\n * Returns the mainnet RPC URL.\n */\nexport function getMainnetUrl(): string {\n\treturn URL_MAINNET;\n}\n\n/**\n * Returns the localnet RPC URL.\n */\nexport function getLocalnetUrl(): string {\n\treturn URL_LOCALNET;\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Query client for read-only RPC operations.\n */\n\nimport { PublicKey } from \"../../crypto\";\nimport { Blockhash } from \"../../crypto/blockhash\";\nimport { fromBase64 } from \"../../utils\";\nimport type {\n\tAccountInfo,\n\tEpochInfoResponse,\n\tSignatureStatus,\n\tTransactionResponse,\n} from \"../types\";\nimport { BaseRpcClient } from \"./base-client\";\n\n/**\n * Client for querying blockchain state.\n *\n * Handles all read-only operations like getting balances, account info, etc.\n */\nexport class QueryRpcClient extends BaseRpcClient {\n\t/**\n\t * Get the latest blockhash from the blockchain\n\t */\n\tasync getLatestBlockhash(): Promise<Blockhash> {\n\t\tconst result = await this.call<{ value: { blockhash: string } }>(\n\t\t\t\"getLatestBlockhash\",\n\t\t\t[],\n\t\t);\n\t\treturn Blockhash.fromString(result.value.blockhash);\n\t}\n\n\t/**\n\t * Get the balance of an account\n\t */\n\tasync getBalance(pubkey: PublicKey): Promise<bigint> {\n\t\tconst result = await this.call<{ value: number }>(\"getBalance\", [\n\t\t\t{ address: pubkey.toString() },\n\t\t]);\n\t\treturn BigInt(result.value);\n\t}\n\n\t/**\n\t * Get detailed information about an account\n\t */\n\tasync getAccountInfo(pubkey: PublicKey): Promise<AccountInfo | null> {\n\t\tconst result = await this.call<{\n\t\t\tvalue: {\n\t\t\t\tbalance: number;\n\t\t\t\towner: string;\n\t\t\t\tdata: string;\n\t\t\t\texecutable: boolean;\n\t\t\t\trentEpoch: number;\n\t\t\t} | null;\n\t\t}>(\"getAccountInfo\", [{ address: pubkey.toString(), encoding: \"base64\" }]);\n\n\t\tif (!result.value) {\n\t\t\treturn null; // Account doesn't exist\n\t\t}\n\n\t\treturn {\n\t\t\tbalance: BigInt(result.value.balance),\n\t\t\towner: PublicKey.fromString(result.value.owner),\n\t\t\tdata: fromBase64(result.value.data),\n\t\t\texecutable: result.value.executable,\n\t\t\trentEpoch: BigInt(result.value.rentEpoch),\n\t\t};\n\t}\n\n\t/**\n\t * Get the current block height\n\t */\n\tasync getBlockHeight(): Promise<bigint> {\n\t\tconst result = await this.call<number>(\"getBlockHeight\", []);\n\t\treturn BigInt(result);\n\t}\n\n\t/**\n\t * Get detailed information about a transaction\n\t */\n\tasync getTransaction(signature: string): Promise<TransactionResponse | null> {\n\t\tconst result = await this.call<{\n\t\t\tslot: number;\n\t\t\tblockTime?: number;\n\t\t\terr?: string;\n\t\t} | null>(\"getTransaction\", [signature]);\n\n\t\tif (!result) {\n\t\t\treturn null; // Transaction not found\n\t\t}\n\n\t\treturn {\n\t\t\tsignature,\n\t\t\tslot: BigInt(result.slot),\n\t\t\tblockTime: result.blockTime ? BigInt(result.blockTime) : undefined,\n\t\t\terr: result.err,\n\t\t};\n\t}\n\n\t/**\n\t * Get the total number of transactions processed since genesis\n\t */\n\tasync getTransactionCount(): Promise<bigint> {\n\t\tconst result = await this.call<number>(\"getTransactionCount\", []);\n\t\treturn BigInt(result);\n\t}\n\n\t/**\n\t * Get the status of multiple transaction signatures\n\t */\n\tasync getSignatureStatuses(\n\t\tsignatures: string[],\n\t): Promise<(SignatureStatus | null)[]> {\n\t\tconst result = await this.call<{\n\t\t\tvalue: Array<{\n\t\t\t\tslot: number;\n\t\t\t\tconfirmations?: number;\n\t\t\t\terr?: string;\n\t\t\t} | null>;\n\t\t}>(\"getSignatureStatuses\", [signatures]);\n\n\t\treturn result.value.map((status) => {\n\t\t\tif (!status) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tslot: BigInt(status.slot),\n\t\t\t\tconfirmations: status.confirmations,\n\t\t\t\terr: status.err,\n\t\t\t};\n\t\t});\n\t}\n\n\t/**\n\t * Get epoch information\n\t */\n\tasync getEpochInfo(): Promise<EpochInfoResponse> {\n\t\tconst result = await this.call<{\n\t\t\tepoch: number;\n\t\t\tslotIndex: number;\n\t\t\tslotsInEpoch: number;\n\t\t\tabsoluteSlot: number;\n\t\t\tblockHeight: number;\n\t\t\ttransactionCount?: number;\n\t\t}>(\"getEpochInfo\", []);\n\n\t\treturn {\n\t\t\tepoch: BigInt(result.epoch),\n\t\t\tslotIndex: BigInt(result.slotIndex),\n\t\t\tslotsInEpoch: BigInt(result.slotsInEpoch),\n\t\t\tabsoluteSlot: BigInt(result.absoluteSlot),\n\t\t\tblockHeight: BigInt(result.blockHeight),\n\t\t\ttransactionCount: result.transactionCount\n\t\t\t\t? BigInt(result.transactionCount)\n\t\t\t\t: undefined,\n\t\t};\n\t}\n\n\t/**\n\t * Get the health status of the node\n\t */\n\tasync getHealth(): Promise<\"ok\" | string> {\n\t\tconst result = await this.call<string>(\"getHealth\", []);\n\t\treturn result;\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Query client for read-only RPC operations.\n */\n\nimport type { PublicKey } from \"../../crypto\";\nimport { toBase64 } from \"../../utils\";\nimport type { SendTransactionOptions } from \"../types\";\nimport { BaseRpcClient } from \"./base-client\";\n\n/**\n * Client for sending/simulating transactions and requesting airdrops.\n *\n * Handles all transaction operations like sending transactions, requesting airdrops, etc.\n */\nexport class TransactionRpcClient extends BaseRpcClient {\n\t/**\n\t * Submit a signed transaction to the blockchain\n\t */\n\tasync sendTransaction(\n\t\ttransaction: Uint8Array,\n\t\toptions?: SendTransactionOptions,\n\t): Promise<string> {\n\t\tconst base64Tx = toBase64(transaction);\n\n\t\tconst config = {\n\t\t\tencoding: \"base64\",\n\t\t\tskipPreflight: options?.skipPreflight ?? false,\n\t\t\tmaxRetries: options?.maxRetries ?? 5,\n\t\t};\n\n\t\tconst signature = await this.call<string>(\"sendTransaction\", [\n\t\t\tbase64Tx,\n\t\t\tconfig,\n\t\t]);\n\t\treturn signature;\n\t}\n\n\t/**\n\t * Request an airdrop of tokens to an account (devnet/testnet only)\n\t */\n\tasync requestAirdrop(pubkey: PublicKey, amount: bigint): Promise<string> {\n\t\tconst signature = await this.call<string>(\"requestAirdrop\", [\n\t\t\tpubkey.toString(),\n\t\t\tNumber(amount),\n\t\t]);\n\t\treturn signature;\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Main Rialo RPC client for blockchain interactions.\n */\nimport type { PublicKey } from \"../../crypto\";\nimport type { Blockhash } from \"../../crypto/blockhash\";\nimport type { HttpTransport } from \"../http-transport\";\nimport type {\n\tAccountInfo,\n\tEpochInfoResponse,\n\tSendTransactionOptions,\n\tSignatureStatus,\n\tTransactionResponse,\n} from \"../types\";\nimport { QueryRpcClient } from \"./query-client\";\nimport { TransactionRpcClient } from \"./transaction-client\";\n\n/**\n * High-level Rialo RPC client for blockchain interactions.\n *\n * Provides a unified interface for querying blockchain state and\n * sending transactions. Internally delegates to specialized clients\n * (QueryRpcClient, TransactionRpcClient) for modular organization.\n *\n * @example\n * ```typescript\n * const client = createRialoClient(URL_DEVNET);\n *\n * // Query operations\n * const balance = await client.getBalance(publicKey);\n * const blockhash = await client.getLatestBlockhash();\n *\n * // Transaction operations\n * const signature = await client.sendTransaction(signedTx);\n * ```\n */\nexport class RialoClient {\n\tprivate readonly queryClient: QueryRpcClient;\n\tprivate readonly transactionClient: TransactionRpcClient;\n\tprivate readonly transport: HttpTransport;\n\n\tconstructor(transport: HttpTransport) {\n\t\tthis.transport = transport;\n\t\tthis.queryClient = new QueryRpcClient(transport);\n\t\tthis.transactionClient = new TransactionRpcClient(transport);\n\t}\n\n\t/**\n\t * Returns the configured RPC endpoint URL.\n\t */\n\tgetUrl(): string {\n\t\treturn this.transport.getUrl();\n\t}\n\n\t/**\n\t * Retrieves the latest blockhash from the blockchain.\n\t *\n\t * Required for transaction creation and replay protection.\n\t */\n\tasync getLatestBlockhash(): Promise<Blockhash> {\n\t\treturn await this.queryClient.getLatestBlockhash();\n\t}\n\n\t/**\n\t * Retrieves the balance of an account in kelvins (smallest unit).\n\t */\n\tasync getBalance(pubkey: PublicKey): Promise<bigint> {\n\t\treturn await this.queryClient.getBalance(pubkey);\n\t}\n\n\t/**\n\t * Retrieves detailed information about an account.\n\t *\n\t * @returns Account info or null if account doesn't exist\n\t */\n\tasync getAccountInfo(pubkey: PublicKey): Promise<AccountInfo | null> {\n\t\treturn await this.queryClient.getAccountInfo(pubkey);\n\t}\n\n\t/**\n\t * Retrieves the current block height.\n\t */\n\tasync getBlockHeight(): Promise<bigint> {\n\t\treturn await this.queryClient.getBlockHeight();\n\t}\n\n\t/**\n\t * Retrieves detailed information about a transaction.\n\t *\n\t * @returns Transaction info or null if transaction not found\n\t */\n\tasync getTransaction(signature: string): Promise<TransactionResponse | null> {\n\t\treturn await this.queryClient.getTransaction(signature);\n\t}\n\n\t/**\n\t * Retrieves the total number of transactions processed since genesis.\n\t */\n\tasync getTransactionCount(): Promise<bigint> {\n\t\treturn await this.queryClient.getTransactionCount();\n\t}\n\n\t/**\n\t * Retrieves the status of multiple transaction signatures.\n\t */\n\tasync getSignatureStatuses(\n\t\tsignatures: string[],\n\t): Promise<(SignatureStatus | null)[]> {\n\t\treturn await this.queryClient.getSignatureStatuses(signatures);\n\t}\n\n\t/**\n\t * Retrieves current epoch information.\n\t */\n\tasync getEpochInfo(): Promise<EpochInfoResponse> {\n\t\treturn await this.queryClient.getEpochInfo();\n\t}\n\n\t/**\n\t * Checks the health status of the RPC node.\n\t *\n\t * @returns \"ok\" if healthy, error message otherwise\n\t */\n\tasync getHealth(): Promise<\"ok\" | string> {\n\t\treturn await this.queryClient.getHealth();\n\t}\n\n\t/**\n\t * Submits a signed transaction to the blockchain.\n\t *\n\t * @param transaction - Serialized signed transaction bytes\n\t * @param options - Transaction submission options\n\t * @returns Transaction signature\n\t */\n\tasync sendTransaction(\n\t\ttransaction: Uint8Array,\n\t\toptions?: SendTransactionOptions,\n\t): Promise<string> {\n\t\treturn await this.transactionClient.sendTransaction(transaction, options);\n\t}\n\n\t/**\n\t * Requests an airdrop of tokens to an account.\n\t *\n\t * **Note**: Only available on devnet and testnet.\n\t *\n\t * @param pubkey - Account to receive the airdrop\n\t * @param amount - Amount in kelvins (smallest unit)\n\t * @returns Transaction signature\n\t */\n\tasync requestAirdrop(pubkey: PublicKey, amount: bigint): Promise<string> {\n\t\treturn await this.transactionClient.requestAirdrop(pubkey, amount);\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Low-level HTTP transport with retry logic and timeout handling.\n *\n * Provides robust network communication with automatic retry,\n * exponential backoff, and proper error handling.\n */\nimport { calculateBackoff, sleep } from \"../utils\";\nimport { RpcError, RpcErrorCode } from \"./errors\";\n\nexport interface HttpTransportConfig {\n\t/** Request timeout in milliseconds */\n\ttimeout?: number;\n\t/** Maximum number of retry attempts */\n\tmaxRetries?: number;\n\t/** Base delay for exponential backoff (ms) */\n\tretryBaseDelay?: number;\n\t/** Maximum retry delay (ms) */\n\tretryMaxDelay?: number;\n\t/** Custom headers to include in requests */\n\theaders?: Record<string, string>;\n}\n\ninterface RequestOptions {\n\tmethod: string;\n\theaders: Record<string, string>;\n\tbody: string;\n\tsignal?: AbortSignal;\n}\n\nconst DEFAULT_CONFIG: Required<HttpTransportConfig> = {\n\ttimeout: 30000, // 30 seconds\n\tmaxRetries: 3,\n\tretryBaseDelay: 1000, // 1 second\n\tretryMaxDelay: 30000, // 30 seconds\n\theaders: {},\n};\n\n/**\n * HTTP transport with built-in retry logic and timeout handling.\n *\n * Features:\n * - Automatic retries with exponential backoff\n * - Request timeouts using AbortController\n * - Network error recovery\n * - Rate limit handling\n * - Proper HTTP status code handling\n */\nexport class HttpTransport {\n\tprivate readonly url: string;\n\tprivate readonly config: Required<HttpTransportConfig>;\n\n\tconstructor(url: string, config: HttpTransportConfig = {}) {\n\t\tthis.url = url;\n\t\tthis.config = { ...DEFAULT_CONFIG, ...config };\n\t}\n\n\t/**\n\t * Makes an HTTP request with automatic retry logic.\n\t *\n\t * Retries are attempted for network errors and server errors (5xx).\n\t * Uses exponential backoff between retry attempts.\n\t */\n\tasync request(\n\t\tbody: string,\n\t\trequestDetails: Record<string, unknown> = {},\n\t): Promise<unknown> {\n\t\tlet lastError: Error | undefined;\n\n\t\tfor (let attempt = 0; attempt <= this.config.maxRetries; attempt++) {\n\t\t\ttry {\n\t\t\t\treturn await this.makeRequest(body, requestDetails, attempt);\n\t\t\t} catch (error) {\n\t\t\t\tlastError = error as Error;\n\n\t\t\t\t// Don't retry if it's not a retryable error\n\t\t\t\tif (error instanceof RpcError && !error.retryable) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\n\t\t\t\t// Don't retry on the last attempt\n\t\t\t\tif (attempt === this.config.maxRetries) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\n\t\t\t\t// Calculate backoff delay\n\t\t\t\tconst delay = calculateBackoff(\n\t\t\t\t\tattempt,\n\t\t\t\t\tthis.config.retryBaseDelay,\n\t\t\t\t\tthis.config.retryMaxDelay,\n\t\t\t\t);\n\n\t\t\t\t// Wait before retrying\n\t\t\t\tawait sleep(delay);\n\t\t\t}\n\t\t}\n\n\t\t// Should never reach here, but TypeScript doesn't know that\n\t\tthrow lastError;\n\t}\n\n\t/**\n\t * Make a single HTTP request with timeout\n\t */\n\tprivate async makeRequest(\n\t\tbody: string,\n\t\trequestDetails: Record<string, unknown>,\n\t\tattempt: number,\n\t): Promise<unknown> {\n\t\tconst controller = new AbortController();\n\t\tconst timeoutId = setTimeout(() => controller.abort(), this.config.timeout);\n\n\t\ttry {\n\t\t\tconst options: RequestOptions = {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\t...this.config.headers,\n\t\t\t\t},\n\t\t\t\tbody,\n\t\t\t\tsignal: controller.signal,\n\t\t\t};\n\n\t\t\tconst response = await fetch(this.url, options);\n\n\t\t\t// Handle HTTP errors\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow await this.handleHttpError(response, requestDetails, attempt);\n\t\t\t}\n\n\t\t\t// Parse JSON response\n\t\t\tconst data = await response.json();\n\t\t\treturn data;\n\t\t} catch (error) {\n\t\t\t// Handle timeout\n\t\t\tif (error instanceof Error && error.name === \"AbortError\") {\n\t\t\t\tthrow RpcError.requestTimeout(this.config.timeout, {\n\t\t\t\t\t...requestDetails,\n\t\t\t\t\turl: this.url,\n\t\t\t\t\tattempts: attempt + 1,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Handle network errors\n\t\t\tif (error instanceof TypeError) {\n\t\t\t\tthrow RpcError.networkError(error.message, {\n\t\t\t\t\t...requestDetails,\n\t\t\t\t\turl: this.url,\n\t\t\t\t\tattempts: attempt + 1,\n\t\t\t\t\tcause: error.message,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Re-throw RpcError\n\t\t\tif (error instanceof RpcError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\t// Unknown error\n\t\t\tthrow RpcError.networkError(\"Unknown network error\", {\n\t\t\t\t...requestDetails,\n\t\t\t\turl: this.url,\n\t\t\t\tattempts: attempt + 1,\n\t\t\t\tcause: error instanceof Error ? error.message : String(error),\n\t\t\t});\n\t\t} finally {\n\t\t\tclearTimeout(timeoutId);\n\t\t}\n\t}\n\n\t/**\n\t * Handle HTTP error responses\n\t */\n\tprivate async handleHttpError(\n\t\tresponse: Response,\n\t\trequestDetails: Record<string, unknown>,\n\t\tattempt: number,\n\t): Promise<RpcError> {\n\t\tconst status = response.status;\n\n\t\t// Rate limiting\n\t\tif (status === 429) {\n\t\t\treturn RpcError.rateLimitExceeded({\n\t\t\t\t...requestDetails,\n\t\t\t\thttpStatus: status,\n\t\t\t\turl: this.url,\n\t\t\t\tattempts: attempt + 1,\n\t\t\t});\n\t\t}\n\n\t\t// Server errors (5xx) are retryable\n\t\tif (status >= 500) {\n\t\t\treturn RpcError.networkError(`Server error: ${status}`, {\n\t\t\t\t...requestDetails,\n\t\t\t\thttpStatus: status,\n\t\t\t\turl: this.url,\n\t\t\t\tattempts: attempt + 1,\n\t\t\t});\n\t\t}\n\n\t\t// Client errors (4xx) are not retryable\n\t\tlet message = `HTTP ${status}: ${response.statusText}`;\n\t\ttry {\n\t\t\tconst errorData = await response.json();\n\t\t\tif (\n\t\t\t\terrorData &&\n\t\t\t\ttypeof errorData === \"object\" &&\n\t\t\t\t\"message\" in errorData\n\t\t\t) {\n\t\t\t\tmessage = String(errorData.message);\n\t\t\t}\n\t\t} catch {\n\t\t\t// Ignore JSON parse errors\n\t\t}\n\n\t\treturn new RpcError(\n\t\t\tRpcErrorCode.NETWORK_ERROR,\n\t\t\tmessage,\n\t\t\t{\n\t\t\t\t...requestDetails,\n\t\t\t\thttpStatus: status,\n\t\t\t\turl: this.url,\n\t\t\t\tattempts: attempt + 1,\n\t\t\t},\n\t\t\tfalse, // 4xx errors are not retryable\n\t\t);\n\t}\n\n\t/**\n\t * Returns the configured RPC endpoint URL.\n\t */\n\tgetUrl(): string {\n\t\treturn this.url;\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * RPC client module for communicating with Rialo blockchain nodes.\n *\n * Provides a high-level client interface with automatic retry logic,\n * connection management, and type-safe RPC methods.\n *\n * @example\n * ```typescript\n * import { createRialoClient, URL_DEVNET } from '@rialo/ts-cdk';\n *\n * // Create client with custom configuration\n * const client = createRialoClient(URL_DEVNET, {\n * timeout: 30000,\n * maxRetries: 3,\n * });\n *\n * // Query blockchain state\n * const balance = await client.getBalance(publicKey);\n * const blockHeight = await client.getBlockHeight();\n *\n * // Send transactions\n * const signature = await client.sendTransaction(signedTx);\n * ```\n */\n\nexport * from \"../crypto/blockhash\";\nexport * from \"./clients\";\nexport * from \"./errors\";\nexport * from \"./http-transport\";\nexport * from \"./types\";\n\nimport { RialoClient } from \"./clients\";\nimport { HttpTransport, type HttpTransportConfig } from \"./http-transport\";\n\n/**\n * Creates an RPC client with automatic retry and timeout handling.\n *\n * @param url - RPC endpoint URL (e.g., URL_DEVNET, URL_MAINNET)\n * @param config - Transport configuration (timeout, retries, headers)\n * @returns Configured RialoClient instance\n */\nexport function createRialoClient(\n\turl: string,\n\tconfig?: HttpTransportConfig,\n): RialoClient {\n\tconst transport = new HttpTransport(url, config);\n\n\treturn new RialoClient(transport);\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { PublicKey } from \"../crypto\";\nimport { Blockhash } from \"../rpc\";\nimport { TransactionError, TransactionErrorCode } from \"./errors\";\nimport type { CompiledInstruction, MessageHeader } from \"./types\";\n\n/**\n * An unsigned transaction message ready to be signed.\n *\n * This is the data that gets signed by transaction signers.\n * It's immutable to prevent accidental modification after creation.\n *\n * @example\n * ```typescript\n * const message = MessageBuilder.create()\n * .setPayer(payer)\n * .setRecentBlockhash(blockhash)\n * .setCreationTime(txCreationTime)\n * .addInstruction(transferInstruction)\n * .build();\n *\n * // Serialize for signing\n * const messageBytes = message.serialize();\n * ```\n */\nexport class Message {\n\t/** Message header with signature requirements */\n\tpublic readonly header: MessageHeader;\n\n\t/** All account public keys referenced in the transaction */\n\tpublic readonly accountKeys: readonly PublicKey[];\n\n\t/** Recent blockhash for replay protection */\n\tpublic readonly recentBlockhash: Blockhash;\n\n /** Transaction creation timestamp (milliseconds since Unix epoch) */\n txCreationTime?: bigint;\n\n\t/** Compiled instructions with account indices */\n\tpublic readonly instructions: readonly CompiledInstruction[];\n\n\t/** Cached serialized bytes */\n\tprivate serializedCache?: Uint8Array;\n\n\tconstructor(\n\t\theader: MessageHeader,\n\t\taccountKeys: readonly PublicKey[],\n\t\trecentBlockhash: Blockhash,\n txCreationTime: bigint,\n\t\tinstructions: readonly CompiledInstruction[],\n\t) {\n\t\tthis.header = Object.freeze({ ...header });\n\t\tthis.accountKeys = Object.freeze([...accountKeys]);\n\t\tthis.recentBlockhash = recentBlockhash;\n this.txCreationTime = txCreationTime;\n\t\tthis.instructions = Object.freeze(\n\t\t\tinstructions.map((ix) => Object.freeze({ ...ix })),\n\t\t);\n\t}\n\n\t/**\n\t * Serialize message to bytes for signing.\n\t * Result is cached for performance.\n\t */\n\tserialize(): Uint8Array {\n\t\tif (!this.serializedCache) {\n\t\t\tthis.serializedCache = this.serializeInternal();\n\t\t}\n\t\treturn new Uint8Array(this.serializedCache); // Return copy\n\t}\n\n\t/**\n\t * Deserialize a message from wire format.\n\t *\n\t * @param data - Serialized message bytes\n\t * @returns Deserialized Message\n\t */\n\tstatic deserialize(data: Uint8Array): Message {\n\t\tif (data.length < 3) {\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\t\"Insufficient data for message header\",\n\t\t\t);\n\t\t}\n\n\t\tlet cursor = 0;\n\n\t\t// Deserialize header (3 bytes)\n\t\tconst header: MessageHeader = {\n\t\t\tnumRequiredSignatures: data[cursor++],\n\t\t\tnumReadonlySignedAccounts: data[cursor++],\n\t\t\tnumReadonlyUnsignedAccounts: data[cursor++],\n\t\t};\n\n\t\t// Deserialize account keys with compact-u16 length prefix\n\t\tconst [accountKeysLength, newCursor1] = deserializeCompactU16(data, cursor);\n\t\tcursor = newCursor1;\n\n\t\tconst accountKeys: PublicKey[] = [];\n\t\tfor (let i = 0; i < accountKeysLength; i++) {\n\t\t\tif (data.length < cursor + 32) {\n\t\t\t\tthrow new TransactionError(\n\t\t\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\t\t`Insufficient data for account key ${i}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst keyBytes = data.slice(cursor, cursor + 32);\n\t\t\taccountKeys.push(PublicKey.fromBytes(keyBytes));\n\t\t\tcursor += 32;\n\t\t}\n\n\t\t// Deserialize recent blockhash (32 bytes)\n\t\tif (data.length < cursor + 32) {\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\t\"Insufficient data for blockhash\",\n\t\t\t);\n\t\t}\n\t\tconst recentBlockhash = Blockhash.fromBytes(\n\t\t\tdata.slice(cursor, cursor + 32),\n\t\t);\n\t\tcursor += 32;\n\n\t\t// Deserialize recent tx creation time (8 bytes)\n\t\tif (data.length < cursor + 8) {\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\t\"Insufficient data for TxCreationTime\",\n\t\t\t);\n\t\t}\n const txCreationTimeBytes = data.slice(cursor, cursor + 8);\n const txCreationTime = BigInt.asUintN(64, new DataView(txCreationTimeBytes.buffer).getBigUint64(0));\n cursor += 8;\n\n\t\t// Deserialize instructions with compact-u16 length prefix\n\t\tconst [instructionsLength, newCursor2] = deserializeCompactU16(\n\t\t\tdata,\n\t\t\tcursor,\n\t\t);\n\t\tcursor = newCursor2;\n\n\t\tconst instructions: CompiledInstruction[] = [];\n\t\tfor (let i = 0; i < instructionsLength; i++) {\n\t\t\t// Read program ID index\n\t\t\tif (data.length < cursor + 1) {\n\t\t\t\tthrow new TransactionError(\n\t\t\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\t\t`Insufficient data for instruction ${i} program index`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst programIdIndex = data[cursor++];\n\n\t\t\t// Read account key indexes array\n\t\t\tconst [accountIndexesLength, newCursor3] = deserializeCompactU16(\n\t\t\t\tdata,\n\t\t\t\tcursor,\n\t\t\t);\n\t\t\tcursor = newCursor3;\n\n\t\t\tconst accountKeyIndexes: number[] = [];\n\t\t\tfor (let j = 0; j < accountIndexesLength; j++) {\n\t\t\t\tif (data.length < cursor + 1) {\n\t\t\t\t\tthrow new TransactionError(\n\t\t\t\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\t\t\t`Insufficient data for instruction ${i} account index ${j}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\taccountKeyIndexes.push(data[cursor++]);\n\t\t\t}\n\n\t\t\t// Read instruction data array\n\t\t\tconst [dataLength, newCursor4] = deserializeCompactU16(data, cursor);\n\t\t\tcursor = newCursor4;\n\n\t\t\tif (data.length < cursor + dataLength) {\n\t\t\t\tthrow new TransactionError(\n\t\t\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\t\t`Insufficient data for instruction ${i} data`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst instructionData = data.slice(cursor, cursor + dataLength);\n\t\t\tcursor += dataLength;\n\n\t\t\tinstructions.push({\n\t\t\t\tprogramIdIndex,\n\t\t\t\taccountKeyIndexes: Object.freeze(accountKeyIndexes),\n\t\t\t\tdata: instructionData,\n\t\t\t});\n\t\t}\n\n\t\treturn new Message(header, accountKeys, recentBlockhash, txCreationTime, instructions);\n\t}\n\n\tprivate serializeInternal(): Uint8Array {\n\t\tconst buffer: number[] = [];\n\n\t\t// Serialize header (3 bytes)\n\t\tbuffer.push(this.header.numRequiredSignatures);\n\t\tbuffer.push(this.header.numReadonlySignedAccounts);\n\t\tbuffer.push(this.header.numReadonlyUnsignedAccounts);\n\n\t\t// Serialize account keys with compact-u16 length prefix\n\t\tthis.serializeCompactArray(buffer, this.accountKeys, (buf, key) => {\n\t\t\tbuf.push(...key.toBytes());\n\t\t});\n\n\t\t// Serialize recent blockhash (32 bytes)\n\t\tbuffer.push(...this.recentBlockhash.toBytes());\n\n // Serialize recent tx creation time (8 bytes)\n const txCreationTimeBuffer = new ArrayBuffer(8);\n new DataView(txCreationTimeBuffer).setBigUint64(0, this.txCreationTime ?? BigInt(0));\n buffer.push(...new Uint8Array(txCreationTimeBuffer));\n\n\t\t// Serialize instructions with compact-u16 length prefix\n\t\tthis.serializeCompactArray(buffer, this.instructions, (buf, ix) => {\n\t\t\t// Program ID index (1 byte)\n\t\t\tbuf.push(ix.programIdIndex);\n\n\t\t\t// Account indexes array\n\t\t\tthis.serializeCompactArray(buf, ix.accountKeyIndexes, (b, idx) => {\n\t\t\t\tb.push(idx);\n\t\t\t});\n\n\t\t\t// Instruction data array\n\t\t\tthis.serializeCompactArray(buf, Array.from(ix.data), (b, byte) => {\n\t\t\t\tb.push(byte);\n\t\t\t});\n\t\t});\n\n\t\treturn new Uint8Array(buffer);\n\t}\n\n\tprivate serializeCompactArray<T>(\n\t\tbuffer: number[],\n\t\titems: readonly T[],\n\t\tserializeItem: (buf: number[], item: T) => void,\n\t): void {\n\t\t// Serialize length as compact-u16\n\t\tthis.serializeCompactU16(buffer, items.length);\n\n\t\t// Serialize each item\n\t\tfor (const item of items) {\n\t\t\tserializeItem(buffer, item);\n\t\t}\n\t}\n\n\tprivate serializeCompactU16(buffer: number[], value: number): void {\n\t\tif (value < 0 || value > 0xffff) {\n\t\t\tthrow new Error(`Value out of range for compact-u16: ${value}`);\n\t\t}\n\n\t\t// Single byte (0-127)\n\t\tif (value <= 0x7f) {\n\t\t\tbuffer.push(value);\n\t\t\treturn;\n\t\t}\n\n\t\t// Two bytes (128-16383)\n\t\tif (value <= 0x3fff) {\n\t\t\tbuffer.push((value & 0x7f) | 0x80);\n\t\t\tbuffer.push((value >> 7) & 0x7f);\n\t\t\treturn;\n\t\t}\n\n\t\t// Three bytes (16384-65535)\n\t\tbuffer.push((value & 0x7f) | 0x80);\n\t\tbuffer.push(((value >> 7) & 0x7f) | 0x80);\n\t\tbuffer.push((value >> 14) & 0xff);\n\t}\n\n\t/**\n\t * Get all signers required for this message.\n\t */\n\tgetSigners(): readonly PublicKey[] {\n\t\treturn this.accountKeys.slice(0, this.header.numRequiredSignatures);\n\t}\n\n\t/**\n\t * Check if a public key is a required signer.\n\t */\n\tisSignerRequired(pubkey: PublicKey): boolean {\n\t\treturn this.getSigners().some((signer) => signer.equals(pubkey));\n\t}\n\n\t/**\n\t * Get the index of a signer in the signers array.\n\t * Returns -1 if not a signer.\n\t */\n\tgetSignerIndex(pubkey: PublicKey): number {\n\t\treturn this.getSigners().findIndex((signer) => signer.equals(pubkey));\n\t}\n}\n\nfunction deserializeCompactU16(\n\tdata: Uint8Array,\n\tcurrentCursor: number,\n): [number, number] {\n\tlet cursor = currentCursor;\n\tif (cursor >= data.length) {\n\t\tthrow new TransactionError(\n\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\"Insufficient data for compact-u16\",\n\t\t);\n\t}\n\n\tconst firstByte = data[cursor++];\n\n\t// Single byte encoding (0-127)\n\tif ((firstByte & 0x80) === 0) {\n\t\treturn [firstByte, cursor];\n\t}\n\n\t// Multi-byte encoding\n\tif (cursor >= data.length) {\n\t\tthrow new TransactionError(\n\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\"Incomplete compact-u16 encoding\",\n\t\t);\n\t}\n\n\tconst secondByte = data[cursor++];\n\n\t// Two-byte encoding (128-16383)\n\tif ((secondByte & 0x80) === 0) {\n\t\treturn [(firstByte & 0x7f) | (secondByte << 7), cursor];\n\t}\n\n\t// Three-byte encoding (16384-65535)\n\tif (cursor >= data.length) {\n\t\tthrow new TransactionError(\n\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\"Incomplete compact-u16 encoding\",\n\t\t);\n\t}\n\n\tconst thirdByte = data[cursor++];\n\tconst value =\n\t\t(firstByte & 0x7f) | ((secondByte & 0x7f) << 7) | (thirdByte << 14);\n\n\treturn [value, cursor];\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n// transaction/transaction.ts\n// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SIGNATURE_LENGTH } from \"../constants\";\nimport type { Keypair, PublicKey, Signature } from \"../crypto\";\nimport { deserializeCompactU16, writeCompactU16 } from \"../serialization\";\nimport type { Signer } from \"../signer\";\nimport { TransactionError, TransactionErrorCode } from \"./errors\";\nimport { Message } from \"./message\";\n\n/**\n * A transaction with zero or more signatures.\n *\n * Transactions are immutable - signing methods return new instances.\n * This prevents accidental modification and signature tampering.\n *\n * @example\n * ```typescript\n * // Simple signing\n * const tx = builder.build();\n * const signed = tx.sign(keypair);\n *\n * // Method chaining\n * const signed = tx\n * .sign(keypair1)\n * .sign(keypair2)\n * .sign(keypair3);\n *\n * // Multi-sig convenience\n * const signed = tx.signAll([keypair1, keypair2, keypair3]);\n * ```\n */\nexport class Transaction {\n\t/** The unsigned message */\n\tprivate readonly message: Message;\n\n\t/** Signatures (64 bytes each), aligned with message.header.numRequiredSignatures */\n\tprivate readonly signatures: readonly Uint8Array[];\n\n\t// Private constructor - use static factories\n\tprivate constructor(message: Message, signatures: readonly Uint8Array[]) {\n\t\tthis.message = message;\n\n\t\t// Deep copy signatures to prevent external mutation\n\t\tthis.signatures = signatures.map((sig) => new Uint8Array(sig));\n\n\t\t// Validate signature count matches required signers\n\t\tif (signatures.length !== message.header.numRequiredSignatures) {\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.INVALID_SIGNATURE,\n\t\t\t\t`Signature count (${signatures.length}) doesn't match required signers (${message.header.numRequiredSignatures})`,\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Create an unsigned transaction from a message.\n\t * All signature slots are initialized to zero.\n\t *\n\t * @internal - Users should use TransactionBuilder instead\n\t */\n\tstatic fromMessage(message: Message): Transaction {\n\t\tconst numSignatures = message.header.numRequiredSignatures;\n\t\tconst signatures = Array.from(\n\t\t\t{ length: numSignatures },\n\t\t\t() => new Uint8Array(SIGNATURE_LENGTH),\n\t\t);\n\n\t\treturn new Transaction(message, signatures);\n\t}\n\n\t/**\n\t * Create transaction from message and existing signatures.\n\t * @internal\n\t */\n\tstatic fromMessageAndSignatures(\n\t\tmessage: Message,\n\t\tsignatures: readonly Uint8Array[],\n\t): Transaction {\n\t\treturn new Transaction(message, signatures);\n\t}\n\n\t/**\n\t * Deserialize a transaction from wire format.\n\t */\n\tstatic deserialize(data: Uint8Array): Transaction {\n\t\tif (data.length === 0) {\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.SERIALIZATION_FAILED,\n\t\t\t\t\"Cannot deserialize empty transaction data\",\n\t\t\t);\n\t\t}\n\n\t\tlet cursor = 0;\n\n\t\t// Deserialize signatures with compact-u16 length prefix\n\t\tconst [signaturesLength, newCursor] = deserializeCompactU16(data, cursor);\n\t\tcursor = newCursor;\n\n\t\tconst signatures: Uint8Array[] = [];\n\t\tfor (let i = 0; i < signaturesLength; i++) {\n\t\t\tif (data.length < cursor + SIGNATURE_LENGTH) {\n\t\t\t\tthrow new TransactionError(\n\t\t\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\t\t`Insufficient data for signature ${i}: need ${SIGNATURE_LENGTH} bytes at offset ${cursor}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst signature = data.slice(cursor, cursor + SIGNATURE_LENGTH);\n\t\t\tsignatures.push(signature);\n\t\t\tcursor += SIGNATURE_LENGTH;\n\t\t}\n\n\t\t// Remaining data is the message\n\t\tif (cursor >= data.length) {\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\t\"No message data found after signatures\",\n\t\t\t);\n\t\t}\n\n\t\tconst messageBytes = data.slice(cursor);\n\t\tconst message = Message.deserialize(messageBytes);\n\n\t\treturn new Transaction(message, signatures);\n\t}\n\n\tgetMessage(): Message {\n\t\treturn this.message;\n\t}\n\n\t/**\n\t * Sign the transaction with a keypair.\n\t * Returns a NEW Transaction instance.\n\t *\n\t * @param keypair - Keypair to sign with\n\t * @returns New Transaction instance with signature added\n\t *\n\t * @example\n\t * ```typescript\n\t * const signedTx = tx.sign(keypair);\n\t * await client.sendTransaction(signedTx.serialize());\n\t * ```\n\t */\n\tsign(keypair: Keypair): Transaction {\n\t\tconst messageBytes = this.message.serialize();\n\t\tconst signature = keypair.sign(messageBytes);\n\t\treturn this.addSignatureForPubkey(keypair.publicKey, signature);\n\t}\n\n\t/**\n\t * Sign with multiple keypairs at once.\n\t * Returns a NEW Transaction instance.\n\t *\n\t * @example\n\t * ```typescript\n\t * const signed = tx.signAll([keypair1, keypair2, keypair3]);\n\t * ```\n\t */\n\tsignAll(keypairs: Keypair[]): Transaction {\n\t\tlet result: Transaction = this;\n\t\tfor (const keypair of keypairs) {\n\t\t\tresult = result.sign(keypair);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * Sign the transaction with a Signer interface (async).\n\t * Returns a NEW Transaction instance.\n\t *\n\t * @example\n\t * ```typescript\n\t * const signedTx = await tx.signWith(browserWallet);\n\t * ```\n\t */\n\tasync signWith(signer: Signer): Promise<Transaction> {\n\t\tconst pubkey = await signer.getPublicKey();\n\t\tconst messageBytes = this.message.serialize();\n\t\tconst signature = await signer.signMessage(messageBytes);\n\t\treturn this.addSignatureForPubkey(pubkey, signature);\n\t}\n\n\t/**\n\t * Sign with multiple signers.\n\t * Returns a NEW Transaction instance.\n\t */\n\tasync signAllWith(signers: Signer[]): Promise<Transaction> {\n\t\tlet result: Transaction = this;\n\t\tfor (const signer of signers) {\n\t\t\tresult = await result.signWith(signer);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * Partially sign the transaction (for multi-sig transactions).\n\t * Returns a NEW Transaction instance.\n\t *\n\t * @example\n\t * ```typescript\n\t * const signedTx = tx\n\t * .partialSign(signer1)\n\t * .partialSign(signer2);\n\t * ```\n\t */\n\tpartialSign(keypair: Keypair): Transaction {\n\t\treturn this.sign(keypair);\n\t}\n\n\t/**\n\t * Partially sign with a Signer interface (async).\n\t * Returns a NEW Transaction instance.\n\t */\n\tasync partialSignWith(signer: Signer): Promise<Transaction> {\n\t\treturn this.signWith(signer);\n\t}\n\n\t/**\n\t * Add a signature at a specific index.\n\t * Returns a NEW Transaction instance.\n\t *\n\t * Most users should use sign() or signAll() instead.\n\t */\n\taddSignature(index: number, signature: Signature | Uint8Array): Transaction {\n\t\tif (index < 0 || index >= this.signatures.length) {\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.SIGNATURE_OUT_OF_BOUNDS,\n\t\t\t\t`Signature index ${index} out of bounds (must be 0-${this.signatures.length - 1})`,\n\t\t\t);\n\t\t}\n\n\t\tconst sigBytes =\n\t\t\tsignature instanceof Uint8Array ? signature : signature.toBytes();\n\n\t\tif (sigBytes.length !== SIGNATURE_LENGTH) {\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.INVALID_SIGNATURE,\n\t\t\t\t`Signature must be ${SIGNATURE_LENGTH} bytes, got ${sigBytes.length}`,\n\t\t\t);\n\t\t}\n\n\t\t// Create NEW signatures array (immutable update)\n\t\tconst newSignatures = this.signatures.map((sig, i) =>\n\t\t\ti === index ? new Uint8Array(sigBytes) : new Uint8Array(sig),\n\t\t);\n\n\t\t// Return NEW Transaction instance\n\t\treturn new Transaction(this.message, newSignatures);\n\t}\n\n\t/**\n\t * Add a signature for a specific public key.\n\t * Returns a NEW Transaction instance.\n\t *\n\t * Most users should use sign() or signAll() instead.\n\t */\n\taddSignatureForPubkey(\n\t\tpubkey: PublicKey,\n\t\tsignature: Signature | Uint8Array,\n\t): Transaction {\n\t\tconst signerIndex = this.message.getSignerIndex(pubkey);\n\n\t\tif (signerIndex === -1) {\n\t\t\tthrow TransactionError.signerNotFound(pubkey.toString());\n\t\t}\n\n\t\treturn this.addSignature(signerIndex, signature);\n\t}\n\n\t/**\n\t * Check if transaction is fully signed (all signatures present).\n\t */\n\tisSigned(): boolean {\n\t\treturn this.signatures.every((sig) => sig.some((byte) => byte !== 0));\n\t}\n\n\t/**\n\t * Check if a specific signature slot is filled.\n\t */\n\tisSignaturePresent(index: number): boolean {\n\t\tif (index < 0 || index >= this.signatures.length) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.signatures[index].some((byte) => byte !== 0);\n\t}\n\n\t/**\n\t * Get all signatures (returns copies to prevent mutation).\n\t */\n\tgetSignatures(): readonly Uint8Array[] {\n\t\treturn this.signatures.map((sig) => new Uint8Array(sig));\n\t}\n\n\t/**\n\t * Get a specific signature (returns copy).\n\t */\n\tgetSignature(index: number): Uint8Array {\n\t\tif (index < 0 || index >= this.signatures.length) {\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.SIGNATURE_OUT_OF_BOUNDS,\n\t\t\t\t`Signature index ${index} out of bounds`,\n\t\t\t);\n\t\t}\n\t\treturn new Uint8Array(this.signatures[index]);\n\t}\n\n\t/**\n\t * Get a specific signature for a public key.\n\t */\n\tgetSignatureForPubkey(pubkey: PublicKey): Uint8Array {\n\t\tconst signerIndex = this.message.getSignerIndex(pubkey);\n\t\tif (signerIndex === -1) {\n\t\t\tthrow TransactionError.signerNotFound(pubkey.toString());\n\t\t}\n\t\treturn this.getSignature(signerIndex);\n\t}\n\n\t\n\n\t/**\n\t * Get required signers for this transaction.\n\t */\n\tgetSigners(): readonly PublicKey[] {\n\t\treturn this.message.getSigners();\n\t}\n\n\t/**\n\t * Get the number of required signatures.\n\t */\n\tgetRequiredSignatureCount(): number {\n\t\treturn this.message.header.numRequiredSignatures;\n\t}\n\n\t/**\n\t * Throw an error if the transaction is not fully signed.\n\t *\n\t * @throws {TransactionError} If transaction is not fully signed\n\t *\n\t * @example\n\t * ```typescript\n\t * signedTx.ensureSigned(); // Throws if not signed\n\t * await client.sendTransaction(signedTx.serialize());\n\t * ```\n\t */\n\tensureSigned(): void {\n\t\tif (!this.isSigned()) {\n\t\t\tconst missingIndices = this.signatures\n\t\t\t\t.map((sig, i) => ({ sig, i }))\n\t\t\t\t.filter(({ sig }) => !sig.some((byte) => byte !== 0))\n\t\t\t\t.map(({ i }) => i);\n\n\t\t\tconst signers = this.getSigners();\n\t\t\tconst missingSigners = missingIndices.map((i) => signers[i].toString());\n\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.MISSING_SIGNATURE,\n\t\t\t\t`Transaction is not fully signed. Missing signatures for: ${missingSigners.join(\", \")}`,\n\t\t\t\t{ missingIndices, missingSigners },\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Serialize transaction to wire format.\n\t */\n\tserialize(): Uint8Array {\n\t\t// Calculate exact size\n\t\tconst compactU16Size = this.signatures.length < 128 ? 1 : 2;\n\t\tconst sigsSize = compactU16Size + this.signatures.length * SIGNATURE_LENGTH;\n\t\tconst messageBytes = this.message.serialize();\n\t\tconst totalSize = sigsSize + messageBytes.length;\n\n\t\t// Pre-allocate buffer\n\t\tconst buffer = new Uint8Array(totalSize);\n\t\tlet offset = 0;\n\n\t\t// Write signature count\n\t\toffset = writeCompactU16(buffer, offset, this.signatures.length);\n\n\t\t// Write signatures\n\t\tfor (const sig of this.signatures) {\n\t\t\tbuffer.set(sig, offset);\n\t\t\toffset += SIGNATURE_LENGTH;\n\t\t}\n\n\t\t// Write message\n\t\tbuffer.set(messageBytes, offset);\n\n\t\treturn buffer;\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Fluent API for building transactions.\n * Returns Transaction directly (not Message).\n */\n\nimport type { PublicKey } from \"../crypto\";\nimport type { Blockhash } from \"../rpc\";\nimport { AccountMetaTable } from \"./account-meta-table\";\nimport { TransactionError, TransactionErrorCode } from \"./errors\";\nimport { Message } from \"./message\";\nimport { Transaction } from \"./transaction\";\nimport type { CompiledInstruction, Instruction } from \"./types\";\n\n/**\n * Builder for creating transactions with a fluent API.\n *\n * Provides an intuitive interface for constructing transactions.\n * Call build() to get an unsigned Transaction ready for signing.\n *\n * @example\n * ```typescript\n * // Simple transfer\n * const tx = TransactionBuilder.create()\n * .setPayer(payer)\n * .setRecentBlockhash(blockhash)\n * .setTxCreationTime(txCreationTime)\n * .addInstruction(transfer(from, to, 1_000_000n))\n * .build();\n *\n * const signedTx = tx.sign(keypair);\n * await client.transaction.sendTransaction(signedTx.serialize());\n * ```\n *\n * @example\n * ```typescript\n * // Multi-instruction transaction\n * const tx = TransactionBuilder.create()\n * .setPayer(payer)\n * .setRecentBlockhash(blockhash)\n * .setTxCreationTime(txCreationTime)\n * .addInstruction(transfer(from, to, 1_000_000n))\n * .addInstruction(memoInstruction(\"Payment for invoice #123\"))\n * .build();\n * ```\n */\nexport class TransactionBuilder {\n\tprivate payer?: PublicKey;\n\tprivate recentBlockhash?: Blockhash;\n private txCreationTime?: bigint;\n\tprivate readonly instructions: Instruction[] = [];\n\n\tprivate constructor() {}\n\n\t/**\n\t * Create a new transaction builder.\n\t */\n\tstatic create(): TransactionBuilder {\n\t\treturn new TransactionBuilder();\n\t}\n\n\t/**\n\t * Set the fee payer for this transaction.\n\t *\n\t * The payer will be the first account and must sign the transaction.\n\t * The payer pays for transaction fees.\n\t *\n\t * @param payer - Public key of the fee payer\n\t */\n\tsetPayer(payer: PublicKey): this {\n\t\tthis.payer = payer;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the recent blockhash for replay protection.\n\t *\n\t * Get this from client.getLatestBlockhash().\n\t * Transactions are only valid for ~60 seconds after the blockhash.\n\t *\n\t * @param blockhash - Recent blockhash from the network\n\t */\n\tsetRecentBlockhash(blockhash: Blockhash): this {\n\t\tthis.recentBlockhash = blockhash;\n\t\treturn this;\n\t}\n\n /**\n * Set the transaction creation timestamp.\n *\n * This is the time the transaction was created, in milliseconds since Unix epoch.\n * It can be used for additional replay protection or auditing.\n *\n * @param txCreationTime - Transaction creation time in milliseconds since Unix epoch\n */\n setTxCreationTime(txCreationTime: bigint): this {\n this.txCreationTime = txCreationTime;\n return this;\n }\n\n\t/**\n\t * Add an instruction to the transaction.\n\t *\n\t * @param instruction - Instruction to add\n\t */\n\taddInstruction(instruction: Instruction): this {\n\t\tthis.instructions.push(instruction);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add multiple instructions at once.\n\t *\n\t * @param instructions - Array of instructions to add\n\t */\n\taddInstructions(instructions: readonly Instruction[]): this {\n\t\tthis.instructions.push(...instructions);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Build the transaction (unsigned).\n\t *\n\t * Returns an unsigned Transaction that's ready to be signed.\n\t *\n\t * @returns Unsigned Transaction\n\t * @throws {TransactionError} If payer, blockhash, or instructions are missing\n\t *\n\t * @example\n\t * ```typescript\n\t * const tx = builder.build();\n\t * const signedTx = tx.sign(keypair);\n\t * ```\n\t */\n\tbuild(): Transaction {\n\t\t// Validate required fields\n\t\tif (!this.payer) {\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.INVALID_ACCOUNT_META,\n\t\t\t\t\"Transaction must have a fee payer. Use setPayer() to set the fee payer.\",\n\t\t\t);\n\t\t}\n\n\t\tif (!this.recentBlockhash) {\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.INVALID_MESSAGE_FORMAT,\n\t\t\t\t\"Transaction must have a recent blockhash. Use setRecentBlockhash() to set the blockhash.\",\n\t\t\t);\n\t\t}\n\n if (!this.txCreationTime) {\n throw new TransactionError(\n TransactionErrorCode.INVALID_MESSAGE_FORMAT,\n \"Transaction must have a creation timestamp. Use setTxCreationTime() to set the creation time.\",\n );\n }\n\n\t\tif (this.instructions.length === 0) {\n\t\t\tthrow TransactionError.noInstructions();\n\t\t}\n\n\t\t// Build account meta table\n\t\tconst accountTable = new AccountMetaTable();\n\n\t\t// Add payer as first account (signer + writable)\n\t\taccountTable.add({\n\t\t\tpubkey: this.payer,\n\t\t\tisSigner: true,\n\t\t\tisWritable: true,\n\t\t});\n\n\t\t// Add all accounts from instructions\n\t\tfor (const instruction of this.instructions) {\n\t\t\taccountTable.addAll(instruction.accounts);\n\n\t\t\t// Add program ID as readonly non-signer\n\t\t\taccountTable.add({\n\t\t\t\tpubkey: instruction.programId,\n\t\t\t\tisSigner: false,\n\t\t\t\tisWritable: false,\n\t\t\t});\n\t\t}\n\n\t\t// Get sorted accounts and header\n\t\tconst accountKeys = accountTable.getPublicKeys();\n\t\tconst header = accountTable.getHeader();\n\n\t\t// Compile instructions (convert pubkeys to indices)\n\t\tconst compiledInstructions = this.instructions.map((instruction) => {\n\t\t\tconst programIdIndex = accountTable.getIndex(instruction.programId);\n\t\t\tif (programIdIndex === -1) {\n\t\t\t\tthrow new TransactionError(\n\t\t\t\t\tTransactionErrorCode.INVALID_INSTRUCTION,\n\t\t\t\t\t`Program ID ${instruction.programId.toString()} not found in account table`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst accountKeyIndexes = instruction.accounts.map((meta) => {\n\t\t\t\tconst index = accountTable.getIndex(meta.pubkey);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\tthrow new TransactionError(\n\t\t\t\t\t\tTransactionErrorCode.INVALID_INSTRUCTION,\n\t\t\t\t\t\t`Account ${meta.pubkey.toString()} not found in account table`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn index;\n\t\t\t});\n\n\t\t\tconst compiled: CompiledInstruction = {\n\t\t\t\tprogramIdIndex,\n\t\t\t\taccountKeyIndexes: Object.freeze(accountKeyIndexes),\n\t\t\t\tdata: instruction.data,\n\t\t\t};\n\n\t\t\treturn compiled;\n\t\t});\n\n\t\t// Create message\n\t\tconst message = new Message(\n\t\t\theader,\n\t\t\taccountKeys,\n\t\t\tthis.recentBlockhash,\n this.txCreationTime,\n\t\t\tcompiledInstructions,\n\t\t);\n\n\t\t// Return unsigned transaction\n\t\treturn Transaction.fromMessage(message);\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Keypair, PublicKey, Signature } from \"../crypto\";\nimport type { Signer } from \"./signer\";\n\n/**\n * Signer implementation using a local Ed25519 keypair.\n *\n * Provides synchronous signing without external dependencies.\n * Suitable for server-side applications, CLIs, and testing.\n *\n * @example\n * ```typescript\n * import { Keypair, KeypairSigner } from '@rialo/ts-cdk';\n *\n * // Generate new keypair\n * const keypair = Keypair.generate();\n * const signer = new KeypairSigner(keypair);\n *\n * // Or from mnemonic\n * const mnemonic = Mnemonic.generate();\n * const keypair = await mnemonic.toKeypair(0);\n * const signer = new KeypairSigner(keypair);\n *\n * // Sign messages\n * const publicKey = await signer.getPublicKey();\n * const signature = await signer.signMessage(message);\n * ```\n */\nexport class KeypairSigner implements Signer {\n\tconstructor(private readonly keypair: Keypair) {}\n\n\t/**\n\t * Returns the keypair's public key.\n\t */\n\tasync getPublicKey(): Promise<PublicKey> {\n\t\treturn this.keypair.publicKey;\n\t}\n\n\t/**\n\t * Signs a message using the keypair's private key.\n\t */\n\tasync signMessage(message: Uint8Array): Promise<Signature> {\n\t\treturn this.keypair.sign(message);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../node_modules/@protobufjs/float/index.js","../node_modules/@protobufjs/utf8/index.js","../src/error.ts","../src/constants.ts","../src/transaction/account-meta-table.ts","../src/transaction/errors.ts","../src/serialization/compact-u16.ts","../node_modules/@dao-xyz/borsh/src/binary.ts","../node_modules/@dao-xyz/borsh/src/bigint.ts","../node_modules/@dao-xyz/borsh/src/error.ts","../node_modules/@dao-xyz/borsh/src/types.ts","../node_modules/@dao-xyz/borsh/src/index.ts","../src/serialization/borsh.ts","../src/transaction/instructions/borsh-instruction.ts","../src/crypto/errors.ts","../node_modules/@noble/ed25519/index.js","../node_modules/@noble/hashes/src/utils.ts","../node_modules/@noble/hashes/src/_md.ts","../node_modules/@noble/hashes/src/_u64.ts","../node_modules/@noble/hashes/src/sha2.ts","../node_modules/@scure/base/index.ts","../src/crypto/public-key.ts","../src/crypto/signature.ts","../src/crypto/keypair.ts","../node_modules/@noble/hashes/src/hmac.ts","../node_modules/@scure/bip39/node_modules/@noble/hashes/src/utils.ts","../node_modules/@scure/bip39/node_modules/@noble/hashes/src/hmac.ts","../node_modules/@scure/bip39/node_modules/@noble/hashes/src/pbkdf2.ts","../node_modules/@scure/bip39/node_modules/@noble/hashes/src/_md.ts","../node_modules/@scure/bip39/node_modules/@noble/hashes/src/_u64.ts","../node_modules/@scure/bip39/node_modules/@noble/hashes/src/sha2.ts","../node_modules/@scure/bip39/index.js","../node_modules/@scure/bip39/wordlists/english.js","../src/crypto/mnemonic.ts","../src/transaction/instructions/system.ts","../src/transaction/message.ts","../src/transaction/transaction.ts","../src/transaction/transaction-builder.ts","../src/rpc/errors.ts","../src/rpc/clients/base-client.ts","../src/utils.ts","../src/rpc/clients/query-client.ts","../src/rpc/clients/transaction-client.ts","../src/rpc/clients/client.ts","../src/rpc/http-transport.ts","../src/rpc/index.ts","../src/signer/keypair-signer.ts"],"names":["exports","sign","utf8","RialoErrorType","TransactionErrorCode","i","obj","field","CryptoErrorCode","C","G","P","isBytes","abytes","h","cr","anumber","padding","ahash","aexists","aoutput","clean","createView","rotr","createHasher","randomBytes","oidNist","_HMAC","hmac","Chi","Maj","HashMD","SHA256_IV","SHA512_IV","U32_MASK64","_32n","fromBig","split","shrSH","shrSL","rotrSH","rotrSL","rotrBH","rotrBL","add","add3L","add3H","add4L","add4H","add5L","add5H","K512","SHA512_Kh","SHA512_Kl","SHA512_W_H","SHA512_W_L","SHA2_64B","_SHA512","sha512","wordlist","SystemInstruction","deserializeCompactU16","RpcErrorCode","chain"],"mappings":"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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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","file":"index.mjs","sourcesContent":["\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Error handling for the Rialo CDK.\n *\n * This module defines the common error types used throughout the Rialo CDK.\n * It provides a centralized error handling mechanism for all operations.\n */\n\n/**\n * Structured RPC error information parsed from JSON-RPC error responses.\n */\nexport interface RpcErrorDetails {\n\t/** HTTP status code (e.g., 200, 422, 500) */\n\tstatus?: number;\n\t/** JSON-RPC error code (e.g., -32002) */\n\tcode: number;\n\t/** Human-readable error message */\n\tmessage: string;\n}\n\n/**\n * Error types for different subsystems in the Rialo CDK.\n */\nexport enum RialoErrorType {\n\t/** Errors related to file or system I/O operations */\n\tIO = \"IO\",\n\t/** Errors occurring during RPC communication with blockchain nodes */\n\tRPC = \"RPC\",\n\t/** Errors related to public key parsing or validation */\n\tPARSE_PUBKEY = \"PARSE_PUBKEY\",\n\t/** Errors related to blockhash parsing or validation */\n\tINVALID_BLOCKHASH_FORMAT = \"INVALID_BLOCKHASH_FORMAT\",\n\t/** Errors related to wallet operations such as creation, loading, or signing */\n\tWALLET = \"WALLET\",\n\t/** Errors related to configuration loading, parsing, or validation */\n\tCONFIG = \"CONFIG\",\n\t/** Errors occurring during transaction building, signing, or submission */\n\tTRANSACTION = \"TRANSACTION\",\n\t/** Network-related errors, including HTTP client errors */\n\tNETWORK = \"NETWORK\",\n\t/** Errors related to password handling, validation, or verification */\n\tPASSWORD = \"PASSWORD\",\n\t/** Errors related to encryption or decryption operations */\n\tENCRYPTION = \"ENCRYPTION\",\n\t/** Errors occurring during JSON parsing, serialization, or deserialization */\n\tJSON = \"JSON\",\n\t/** Errors related to BIP32 key derivation */\n\tBIP32 = \"BIP32\",\n\t/** Errors related to invalid input parameters or data */\n\tINVALID_INPUT = \"INVALID_INPUT\",\n\t/** Errors related to serialization/deserialization */\n\tSERIALIZATION = \"SERIALIZATION\",\n}\n\n/**\n * Base error class for all Rialo CDK errors.\n *\n * Provides structured error handling with type categorization and optional\n * cause tracking for error chains. Use the static factory methods for\n * consistent error creation across the SDK.\n *\n * @example\n * ```typescript\n * // Create typed errors using factory methods\n * throw RialoError.invalidInput(\"Amount must be positive\");\n * throw RialoError.network(\"Connection failed\", originalError);\n * throw RialoError.rpc({ code: -32002, message: \"Invalid params\" });\n *\n * // Handle errors with type information\n * try {\n * await client.sendTransaction(tx);\n * } catch (error) {\n * if (error instanceof RialoError && error.type === RialoErrorType.NETWORK) {\n * console.log(\"Network error, retrying...\");\n * }\n * }\n * ```\n */\nexport class RialoError extends Error {\n\tpublic readonly type: RialoErrorType;\n\tpublic readonly cause?: Error;\n\tpublic readonly details?: RpcErrorDetails;\n\n\tpublic constructor(\n\t\ttype: RialoErrorType,\n\t\tmessage: string,\n\t\tcause?: Error,\n\t\tdetails?: RpcErrorDetails,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"RialoError\";\n\t\tthis.type = type;\n\t\tthis.cause = cause;\n\t\tthis.details = details;\n\n\t\t// Maintains proper stack trace for where our error was thrown (only available on V8)\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, RialoError);\n\t\t}\n\t}\n\n\t/**\n\t * Creates an IO error.\n\t */\n\tpublic static io(message: string, cause?: Error): RialoError {\n\t\treturn new RialoError(RialoErrorType.IO, `I/O error: ${message}`, cause);\n\t}\n\n\t/**\n\t * Creates an RPC error.\n\t */\n\tpublic static rpc(details: RpcErrorDetails): RialoError {\n\t\tlet message: string = details.message;\n\t\tif (details.status !== undefined) {\n\t\t\tmessage = `${details.message} [HTTP ${details.status} code ${details.code}]`;\n\t\t} else if (details.code !== 0) {\n\t\t\tmessage = `${details.message} (code ${details.code})`;\n\t\t}\n\t\treturn new RialoError(\n\t\t\tRialoErrorType.RPC,\n\t\t\t`RPC error: ${message}`,\n\t\t\tundefined,\n\t\t\tdetails,\n\t\t);\n\t}\n\n\t/**\n\t * Creates a public key parsing error.\n\t */\n\tpublic static parsePubkey(message: string): RialoError {\n\t\treturn new RialoError(\n\t\t\tRialoErrorType.PARSE_PUBKEY,\n\t\t\t`Pubkey error: ${message}`,\n\t\t);\n\t}\n\n\t/**\n\t * Creates a blockhash format error.\n\t */\n\tpublic static invalidBlockhash(message: string): RialoError {\n\t\treturn new RialoError(\n\t\t\tRialoErrorType.INVALID_BLOCKHASH_FORMAT,\n\t\t\t`Invalid blockhash format: ${message}`,\n\t\t);\n\t}\n\n\t/**\n\t * Creates a wallet error.\n\t */\n\tpublic static wallet(message: string): RialoError {\n\t\treturn new RialoError(RialoErrorType.WALLET, `Wallet error: ${message}`);\n\t}\n\n\t/**\n\t * Creates a configuration error.\n\t */\n\tpublic static config(message: string): RialoError {\n\t\treturn new RialoError(RialoErrorType.CONFIG, `Config error: ${message}`);\n\t}\n\n\t/**\n\t * Creates a transaction error.\n\t */\n\tpublic static transaction(message: string): RialoError {\n\t\treturn new RialoError(\n\t\t\tRialoErrorType.TRANSACTION,\n\t\t\t`Transaction error: ${message}`,\n\t\t);\n\t}\n\n\t/**\n\t * Creates a network error.\n\t */\n\tpublic static network(message: string, cause?: Error): RialoError {\n\t\treturn new RialoError(\n\t\t\tRialoErrorType.NETWORK,\n\t\t\t`Network error: ${message}`,\n\t\t\tcause,\n\t\t);\n\t}\n\n\t/**\n\t * Creates a password error.\n\t */\n\tpublic static password(message: string): RialoError {\n\t\treturn new RialoError(\n\t\t\tRialoErrorType.PASSWORD,\n\t\t\t`Password error: ${message}`,\n\t\t);\n\t}\n\n\t/**\n\t * Creates an encryption error.\n\t */\n\tpublic static encryption(message: string): RialoError {\n\t\treturn new RialoError(\n\t\t\tRialoErrorType.ENCRYPTION,\n\t\t\t`Encryption error: ${message}`,\n\t\t);\n\t}\n\n\t/**\n\t * Creates a JSON error.\n\t */\n\tpublic static json(message: string, cause?: Error): RialoError {\n\t\treturn new RialoError(RialoErrorType.JSON, `JSON error: ${message}`, cause);\n\t}\n\n\t/**\n\t * Creates a BIP32 error.\n\t */\n\tpublic static bip32(message: string): RialoError {\n\t\treturn new RialoError(RialoErrorType.BIP32, `BIP32 error: ${message}`);\n\t}\n\n\t/**\n\t * Creates an invalid input error.\n\t */\n\tpublic static invalidInput(message: string): RialoError {\n\t\treturn new RialoError(\n\t\t\tRialoErrorType.INVALID_INPUT,\n\t\t\t`Invalid input: ${message}`,\n\t\t);\n\t}\n\n\t/**\n\t * Creates a serialization error.\n\t */\n\tpublic static serialization(message: string): RialoError {\n\t\treturn new RialoError(\n\t\t\tRialoErrorType.SERIALIZATION,\n\t\t\t`Serialization error: ${message}`,\n\t\t);\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ChainDefinition } from \"./rpc/clients/config\";\n\n/** Default number of accounts to derive in HD wallets */\nexport const DEFAULT_NUM_ACCOUNTS: number = 1;\n\n/** Rialo mainnet RPC URL */\nexport const URL_MAINNET: string = \"https://mainnet.rialo.io:4101\";\n\n/** Rialo testnet RPC URL */\nexport const URL_TESTNET: string = \"https://testnet.rialo.io:4101\";\n\n/** Rialo devnet RPC URL */\nexport const URL_DEVNET: string = \"https://devnet.rialo.io:4101\";\n\n/** Rialo localnet RPC URL */\nexport const URL_LOCALNET: string = \"http://localhost:4100\";\n\nexport const RIALO_MAINNET_CHAIN: ChainDefinition = {\n\tid: \"rialo:mainnet\",\n\tname: \"Mainnet\",\n\trpcUrl: URL_MAINNET,\n};\n\nexport const RIALO_TESTNET_CHAIN: ChainDefinition = {\n\tid: \"rialo:testnet\",\n\tname: \"Testnet\",\n\trpcUrl: URL_TESTNET,\n};\n\nexport const RIALO_DEVNET_CHAIN: ChainDefinition = {\n\tid: \"rialo:devnet\",\n\tname: \"Devnet\",\n\trpcUrl: URL_DEVNET,\n};\n\nexport const RIALO_LOCALNET_CHAIN: ChainDefinition = {\n\tid: \"rialo:localnet\",\n\tname: \"Localhost\",\n\trpcUrl: URL_LOCALNET,\n};\n\n/** System program ID */\nexport const SYSTEM_PROGRAM_ID: string = \"11111111111111111111111111111111\";\n\n/** Base derivation path for Rialo wallets (BIP44 coin type 756) */\n/** Coin type 756 follows the telephone keypad convention: R=7, L=5, O=6 */\nexport const BASE_DERIVATION_PATH: string = \"m/44'/756'/\";\n\nexport const KELVIN_PER_RLO: number = 1_000_000_000;\n\nexport const PUBLIC_KEY_LENGTH: number = 32;\n\nexport const SECRET_KEY_LENGTH: number = 32;\n\nexport const SIGNATURE_LENGTH: number = 64;\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Account metadata table for deduplication and sorting.\n * Avoids: Complex account sorting logic scattered throughout builder\n */\n\nimport type { PublicKey } from \"../crypto\";\nimport type { AccountMeta, MessageHeader } from \"./types\";\n\n/**\n * Internal account entry with aggregated metadata.\n */\ninterface AccountEntry {\n\tpubkey: PublicKey;\n\tisSigner: boolean;\n\tisWritable: boolean;\n}\n\n/**\n * Manages account deduplication and sorting for transaction messages.\n *\n * Accounts are sorted according to these rules:\n * 1. Signer + writable accounts first\n * 2. Then signer + readonly accounts\n * 3. Then non-signer + writable accounts\n * 4. Finally non-signer + readonly accounts\n * 5. Within each group, sort by public key bytes\n *\n * This matches Solana's account sorting rules for compatibility.\n */\nexport class AccountMetaTable {\n\tprivate readonly accounts: Map<string, AccountEntry> = new Map();\n\tprivate readonly accountOrder: string[] = [];\n\n\t/**\n\t * Add or update an account in the table.\n\t * If account already exists, merges signer/writable flags (OR operation).\n\t */\n\tadd(meta: AccountMeta): void {\n\t\tconst key = meta.pubkey.toString();\n\n\t\tif (this.accounts.has(key)) {\n\t\t\t// Merge with existing entry (OR flags)\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: we know the key is in the map\n\t\t\tconst existing = this.accounts.get(key)!;\n\t\t\texisting.isSigner ||= meta.isSigner;\n\t\t\texisting.isWritable ||= meta.isWritable;\n\t\t} else {\n\t\t\t// New entry\n\t\t\tthis.accounts.set(key, {\n\t\t\t\tpubkey: meta.pubkey,\n\t\t\t\tisSigner: meta.isSigner,\n\t\t\t\tisWritable: meta.isWritable,\n\t\t\t});\n\t\t\tthis.accountOrder.push(key);\n\t\t}\n\t}\n\n\t/**\n\t * Add multiple accounts at once.\n\t */\n\taddAll(metas: readonly AccountMeta[]): void {\n\t\tfor (const meta of metas) {\n\t\t\tthis.add(meta);\n\t\t}\n\t}\n\n\t/**\n\t * Get the index of an account in the sorted order.\n\t * Returns -1 if account not found.\n\t */\n\tgetIndex(pubkey: PublicKey): number {\n\t\tconst sorted = this.getSortedAccounts();\n\t\treturn sorted.findIndex((entry) => entry.pubkey.equals(pubkey));\n\t}\n\n\t/**\n\t * Get sorted accounts according to transaction rules.\n\t */\n\tgetSortedAccounts(): readonly AccountEntry[] {\n\t\t// biome-ignore lint/style/noNonNullAssertion: we know the key is in the map\n\t\tconst entries = this.accountOrder.map((key) => this.accounts.get(key)!);\n\n\t\treturn entries.sort((a, b): number => {\n\t\t\t// Priority 1: Signer + writable\n\t\t\tconst aPriority =\n\t\t\t\ta.isSigner && a.isWritable ? 0 : a.isSigner ? 1 : a.isWritable ? 2 : 3;\n\t\t\tconst bPriority =\n\t\t\t\tb.isSigner && b.isWritable ? 0 : b.isSigner ? 1 : b.isWritable ? 2 : 3;\n\n\t\t\tif (aPriority !== bPriority) {\n\t\t\t\treturn aPriority - bPriority;\n\t\t\t}\n\n\t\t\t// Priority 2: Sort by public key bytes\n\t\t\tconst aBytes = a.pubkey.toBytes();\n\t\t\tconst bBytes = b.pubkey.toBytes();\n\n\t\t\tfor (let i = 0; i < 32; i++) {\n\t\t\t\tif (aBytes[i] !== bBytes[i]) {\n\t\t\t\t\treturn aBytes[i] - bBytes[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t});\n\t}\n\n\t/**\n\t * Get the message header based on sorted accounts.\n\t */\n\tgetHeader(): MessageHeader {\n\t\tconst sorted = this.getSortedAccounts();\n\n\t\tlet numRequiredSignatures = 0;\n\t\tlet numReadonlySignedAccounts = 0;\n\t\tlet numReadonlyUnsignedAccounts = 0;\n\n\t\tfor (const entry of sorted) {\n\t\t\tif (entry.isSigner) {\n\t\t\t\tnumRequiredSignatures++;\n\t\t\t\tif (!entry.isWritable) {\n\t\t\t\t\tnumReadonlySignedAccounts++;\n\t\t\t\t}\n\t\t\t} else if (!entry.isWritable) {\n\t\t\t\tnumReadonlyUnsignedAccounts++;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tnumRequiredSignatures,\n\t\t\tnumReadonlySignedAccounts,\n\t\t\tnumReadonlyUnsignedAccounts,\n\t\t};\n\t}\n\n\t/**\n\t * Get sorted public keys.\n\t */\n\tgetPublicKeys(): readonly PublicKey[] {\n\t\treturn this.getSortedAccounts().map((entry) => entry.pubkey);\n\t}\n\n\t/**\n\t * Get number of accounts in table.\n\t */\n\tsize(): number {\n\t\treturn this.accounts.size;\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Error codes for transaction operations.\n */\nexport enum TransactionErrorCode {\n\t// Building errors\n\tINVALID_INSTRUCTION = \"INVALID_INSTRUCTION\",\n\tINVALID_ACCOUNT_META = \"INVALID_ACCOUNT_META\",\n\tNO_INSTRUCTIONS = \"NO_INSTRUCTIONS\",\n\tDUPLICATE_ACCOUNT = \"DUPLICATE_ACCOUNT\",\n\n\t// Signing errors\n\tMISSING_SIGNATURE = \"MISSING_SIGNATURE\",\n\tINVALID_SIGNATURE = \"INVALID_SIGNATURE\",\n\tSIGNATURE_OUT_OF_BOUNDS = \"SIGNATURE_OUT_OF_BOUNDS\",\n\tSIGNER_NOT_FOUND = \"SIGNER_NOT_FOUND\",\n\tALREADY_SIGNED = \"ALREADY_SIGNED\",\n\n\t// Serialization errors\n\tINVALID_MESSAGE_FORMAT = \"INVALID_MESSAGE_FORMAT\",\n\tINSUFFICIENT_DATA = \"INSUFFICIENT_DATA\",\n\tSERIALIZATION_FAILED = \"SERIALIZATION_FAILED\",\n\n\t// Simulation errors\n\tSIMULATION_FAILED = \"SIMULATION_FAILED\",\n\tINSUFFICIENT_FUNDS = \"INSUFFICIENT_FUNDS\",\n\tBLOCKHASH_EXPIRED = \"BLOCKHASH_EXPIRED\",\n}\n\n/**\n * Error class for transaction operations with structured error information.\n */\nexport class TransactionError extends Error {\n\tconstructor(\n\t\tpublic readonly code: TransactionErrorCode,\n\t\tmessage: string,\n\t\tpublic readonly details?: Record<string, unknown>,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"TransactionError\";\n\t}\n\n\tstatic noInstructions(): TransactionError {\n\t\treturn new TransactionError(\n\t\t\tTransactionErrorCode.NO_INSTRUCTIONS,\n\t\t\t\"Transaction must contain at least one instruction. Use addInstruction() to add instructions.\",\n\t\t);\n\t}\n\n\tstatic signerNotFound(pubkey: string): TransactionError {\n\t\treturn new TransactionError(\n\t\t\tTransactionErrorCode.SIGNER_NOT_FOUND,\n\t\t\t`Public key ${pubkey} is not a required signer for this transaction. Check that the account is marked as a signer in the instruction.`,\n\t\t\t{ pubkey },\n\t\t);\n\t}\n\n\tstatic missingSignature(index: number, pubkey: string): TransactionError {\n\t\treturn new TransactionError(\n\t\t\tTransactionErrorCode.MISSING_SIGNATURE,\n\t\t\t`Missing signature for signer ${index} (${pubkey}). Transaction requires ${index + 1} signatures.`,\n\t\t\t{ index, pubkey },\n\t\t);\n\t}\n\n\tstatic simulationFailed(logs: string[], error: string): TransactionError {\n\t\treturn new TransactionError(\n\t\t\tTransactionErrorCode.SIMULATION_FAILED,\n\t\t\t`Transaction simulation failed: ${error}`,\n\t\t\t{ logs, error },\n\t\t);\n\t}\n\n\tstatic insufficientFunds(\n\t\trequired: bigint,\n\t\tavailable: bigint,\n\t): TransactionError {\n\t\treturn new TransactionError(\n\t\t\tTransactionErrorCode.INSUFFICIENT_FUNDS,\n\t\t\t`Insufficient funds: need ${required}, have ${available}`,\n\t\t\t{ required: required.toString(), available: available.toString() },\n\t\t);\n\t}\n\n\ttoJSON(): {\n\t\tcode: TransactionErrorCode;\n\t\tmessage: string;\n\t\tdetails?: Record<string, unknown>;\n\t} {\n\t\treturn {\n\t\t\tcode: this.code,\n\t\t\tmessage: this.message,\n\t\t\tdetails: this.details,\n\t\t};\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Compact-u16 encoding for efficient variable-length integer serialization.\n *\n * Uses 1-3 bytes depending on value size:\n * - 0-127: 1 byte (7 bits)\n * - 128-16,383: 2 bytes (14 bits)\n * - 16,384-65,535: 3 bytes (16 bits)\n *\n * This encoding saves space for small numbers while supporting the full u16 range.\n */\nimport {\n\tTransactionError,\n\tTransactionErrorCode,\n} from \"../transaction/index.js\";\n\n/**\n * Serializes a u16 value into compact encoding.\n *\n * @param buffer - Output buffer to append bytes to\n * @param value - Value to encode (0-65535)\n * @throws {TransactionError} If value is out of range\n */\nexport function serializeCompactU16(buffer: number[], value: number): void {\n\tif (value < 0 || value > 0xffff) {\n\t\tthrow new TransactionError(\n\t\t\tTransactionErrorCode.SERIALIZATION_FAILED,\n\t\t\t`Value out of range for compact-u16: ${value}`,\n\t\t);\n\t}\n\n\t// Single byte (0-127)\n\tif (value <= 0x7f) {\n\t\tbuffer.push(value);\n\t\treturn;\n\t}\n\n\t// Two bytes (128-16383)\n\tif (value <= 0x3fff) {\n\t\tbuffer.push((value & 0x7f) | 0x80);\n\t\tbuffer.push((value >> 7) & 0x7f);\n\t\treturn;\n\t}\n\n\t// Three bytes (16384-65535)\n\tbuffer.push((value & 0x7f) | 0x80);\n\tbuffer.push(((value >> 7) & 0x7f) | 0x80);\n\tbuffer.push((value >> 14) & 0xff);\n}\n\n/**\n * Deserializes a compact-u16 value from bytes.\n *\n * @param data - Input byte array\n * @param currentCursor - Starting position in the array\n * @returns Tuple of [decoded value, new cursor position]\n * @throws {TransactionError} If data is insufficient or malformed\n */\nexport function deserializeCompactU16(\n\tdata: Uint8Array,\n\tcurrentCursor: number,\n): [number, number] {\n\tlet cursor = currentCursor;\n\tif (cursor >= data.length) {\n\t\tthrow new TransactionError(\n\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\"Insufficient data for compact-u16\",\n\t\t);\n\t}\n\n\tconst firstByte = data[cursor++];\n\n\t// Single byte encoding (0-127)\n\tif ((firstByte & 0x80) === 0) {\n\t\treturn [firstByte, cursor];\n\t}\n\n\t// Multi-byte encoding\n\tif (cursor >= data.length) {\n\t\tthrow new TransactionError(\n\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\"Incomplete compact-u16 encoding\",\n\t\t);\n\t}\n\n\tconst secondByte = data[cursor++];\n\n\t// Two-byte encoding (128-16383)\n\tif ((secondByte & 0x80) === 0) {\n\t\treturn [(firstByte & 0x7f) | (secondByte << 7), cursor];\n\t}\n\n\t// Three-byte encoding (16384-65535)\n\tif (cursor >= data.length) {\n\t\tthrow new TransactionError(\n\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\"Incomplete compact-u16 encoding\",\n\t\t);\n\t}\n\n\tconst thirdByte = data[cursor++];\n\tconst value =\n\t\t(firstByte & 0x7f) | ((secondByte & 0x7f) << 7) | (thirdByte << 14);\n\n\treturn [value, cursor];\n}\n\n/**\n * Writes a compact-u16 value directly to a buffer (zero-copy).\n *\n * Optimized version for in-place writing without intermediate allocations.\n *\n * @param buffer - Target buffer\n * @param offset - Starting position to write at\n * @param value - Value to encode (0-127 only, uses 1-2 bytes)\n * @returns New offset after writing\n */\nexport function writeCompactU16(\n\tbuffer: Uint8Array,\n\toffset: number,\n\tvalue: number,\n): number {\n\tif (value < 0x80) {\n\t\tbuffer[offset] = value;\n\t\treturn offset + 1;\n\t}\n\tbuffer[offset] = (value & 0x7f) | 0x80;\n\tbuffer[offset + 1] = value >> 7;\n\treturn offset + 2;\n}\n",null,null,null,null,null,"// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n\tdeserialize,\n\tfield,\n\tfixedArray,\n\toption,\n\tserialize,\n\tvec,\n} from \"@dao-xyz/borsh\";\n\n/**\n * Serializes data using Borsh (Binary Object Representation Serializer for Hashing) encoding.\n *\n * Borsh is efficient for complex types like enums, Options, vectors, and nested structs.\n * Use the exported decorators (@field, @option, @vec) to define your data structures.\n *\n * @param data - Data object to serialize\n * @returns Serialized bytes\n *\n * @example\n * ```typescript\n * import { serializeBorsh, field, option } from '@rialo/ts-cdk';\n *\n * class SwapInstruction {\n * @field({ type: 'u8' })\n * instruction: number;\n *\n * @field({ type: 'u64' })\n * amountIn: bigint;\n *\n * @field({ type: option('u64') })\n * minAmountOut?: bigint;\n * }\n *\n * const data = serializeBorsh(new SwapInstruction({\n * instruction: 1,\n * amountIn: 1000n,\n * minAmountOut: 900n,\n * }));\n * ```\n */\nexport function serializeBorsh<T>(data: T): Uint8Array {\n\treturn serialize(data);\n}\n\n/**\n * Deserializes Borsh-encoded data into a typed object.\n *\n * @param data - Borsh-encoded bytes\n * @param type - Class constructor for the target type\n * @returns Deserialized object instance\n */\nexport function deserializeBorsh<T>(data: Uint8Array, type: new () => T): T {\n\treturn deserialize(data, type);\n}\n\n// Re-export Borsh decorators for convenience\nexport { field, fixedArray, option, vec };\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { PublicKey } from \"../../crypto\";\nimport { serializeBorsh } from \"../../serialization\";\nimport type { AccountMeta, Instruction } from \"../types\";\n\n/**\n * Create an instruction with Borsh-encoded data.\n *\n * @example\n * ```typescript\n * // Define your instruction data class\n * class MyInstructionData {\n * @field({ type: 'u8' })\n * instruction: number;\n *\n * @field({ type: 'u64' })\n * amount: bigint;\n *\n * @field({ type: option('string') })\n * memo?: string;\n * }\n *\n * // Create instruction\n * const instruction = createBorshInstruction({\n * programId: myProgramId,\n * accounts: [\n * { pubkey: account1, isSigner: true, isWritable: true },\n * { pubkey: account2, isSigner: false, isWritable: false },\n * ],\n * data: new MyInstructionData({\n * instruction: 5,\n * amount: 1000n,\n * memo: \"Hello, Rialo!\",\n * }),\n * });\n * ```\n */\nexport function createBorshInstruction<T>(params: {\n\tprogramId: PublicKey;\n\taccounts: AccountMeta[];\n\tdata: T;\n}): Instruction {\n\treturn {\n\t\tprogramId: params.programId,\n\t\taccounts: params.accounts,\n\t\tdata: serializeBorsh(params.data),\n\t};\n}\n\n/**\n * Helper for creating Borsh-serialized instruction data from a plain object.\n *\n * This is useful when you don't want to define a class with decorators.\n *\n * @example\n * ```typescript\n * const data = encodeBorshData({\n * instruction: { type: 'u8', value: 1 },\n * amount: { type: 'u64', value: 1000n },\n * recipient: { type: fixedArray('u8', 32), value: recipientBytes },\n * });\n * ```\n */\nexport function encodeBorshData(\n\t_schema: Record<string, { type: unknown; value: unknown }>,\n): Uint8Array {\n\t// TODO: Implement this\n\tthrow new Error(\"Use class-based Borsh serialization with decorators\");\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Error codes for cryptographic operations.\n */\nexport enum CryptoErrorCode {\n\tINVALID_KEY_LENGTH = \"INVALID_KEY_LENGTH\",\n\tINVALID_SIGNATURE = \"INVALID_SIGNATURE\",\n\tINVALID_PUBLIC_KEY = \"INVALID_PUBLIC_KEY\",\n\tINVALID_BLOCKHASH = \"INVALID_BLOCKHASH\",\n\tINVALID_MNEMONIC = \"INVALID_MNEMONIC\",\n\tKEY_DERIVATION_FAILED = \"KEY_DERIVATION_FAILED\",\n\tKEYPAIR_DISPOSED = \"KEYPAIR_DISPOSED\",\n}\n\n/**\n * Error class for cryptographic operations.\n *\n * Provides structured error information with error codes and contextual details\n * for better debugging and error handling.\n */\nexport class CryptoError extends Error {\n\tpublic readonly code: CryptoErrorCode;\n\tpublic readonly details?: Record<string, unknown>;\n\n\tconstructor(\n\t\tcode: CryptoErrorCode,\n\t\tmessage: string,\n\t\tdetails?: Record<string, unknown>,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"CryptoError\";\n\t\tthis.code = code;\n\t\tthis.details = details;\n\t}\n\n\tstatic invalidKeyLength(expected: number, actual: number): CryptoError {\n\t\treturn new CryptoError(\n\t\t\tCryptoErrorCode.INVALID_KEY_LENGTH,\n\t\t\t`Invalid key length: expected ${expected} bytes, got ${actual} bytes`,\n\t\t\t{ expected, actual },\n\t\t);\n\t}\n\n\tstatic invalidMnemonic(reason?: string): CryptoError {\n\t\tconst message = reason\n\t\t\t? `Invalid mnemonic: ${reason}`\n\t\t\t: \"Invalid mnemonic phrase. Check that all words are valid and in the correct order.\";\n\t\treturn new CryptoError(CryptoErrorCode.INVALID_MNEMONIC, message);\n\t}\n\n\tstatic keyDerivationFailed(path: string, cause?: Error): CryptoError {\n\t\treturn new CryptoError(\n\t\t\tCryptoErrorCode.KEY_DERIVATION_FAILED,\n\t\t\t`Failed to derive key at path: ${path}`,\n\t\t\t{ path, cause: cause?.message },\n\t\t);\n\t}\n\n\tstatic keypairDisposed(): CryptoError {\n\t\treturn new CryptoError(\n\t\t\tCryptoErrorCode.KEYPAIR_DISPOSED,\n\t\t\t\"Cannot use disposed keypair. The private key has been securely erased from memory.\",\n\t\t);\n\t}\n}\n","/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\n/**\n * 5KB JS implementation of ed25519 EdDSA signatures.\n * Compliant with RFC8032, FIPS 186-5 & ZIP215.\n * @module\n * @example\n * ```js\nimport * as ed from '@noble/ed25519';\n(async () => {\n const secretKey = ed.utils.randomSecretKey();\n const message = Uint8Array.from([0xab, 0xbc, 0xcd, 0xde]);\n const pubKey = await ed.getPublicKeyAsync(secretKey); // Sync methods are also present\n const signature = await ed.signAsync(message, secretKey);\n const isValid = await ed.verifyAsync(signature, message, pubKey);\n})();\n```\n */\n/**\n * Curve params. ed25519 is twisted edwards curve. Equation is −x² + y² = -a + dx²y².\n * * P = `2n**255n - 19n` // field over which calculations are done\n * * N = `2n**252n + 27742317777372353535851937790883648493n` // group order, amount of curve points\n * * h = 8 // cofactor\n * * a = `Fp.create(BigInt(-1))` // equation param\n * * d = -121665/121666 a.k.a. `Fp.neg(121665 * Fp.inv(121666))` // equation param\n * * Gx, Gy are coordinates of Generator / base point\n */\nconst ed25519_CURVE = {\n p: 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,\n n: 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,\n h: 8n,\n a: 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,\n d: 0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,\n Gx: 0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,\n Gy: 0x6666666666666666666666666666666666666666666666666666666666666658n,\n};\nconst { p: P, n: N, Gx, Gy, a: _a, d: _d, h } = ed25519_CURVE;\nconst L = 32; // field / group byte length\nconst L2 = 64;\n// Helpers and Precomputes sections are reused between libraries\n// ## Helpers\n// ----------\nconst captureTrace = (...args) => {\n if ('captureStackTrace' in Error && typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(...args);\n }\n};\nconst err = (message = '') => {\n const e = new Error(message);\n captureTrace(e, err);\n throw e;\n};\nconst isBig = (n) => typeof n === 'bigint'; // is big integer\nconst isStr = (s) => typeof s === 'string'; // is string\nconst isBytes = (a) => a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n/** Asserts something is Uint8Array. */\nconst abytes = (value, length, title = '') => {\n const bytes = isBytes(value);\n const len = value?.length;\n const needsLen = length !== undefined;\n if (!bytes || (needsLen && len !== length)) {\n const prefix = title && `\"${title}\" `;\n const ofLen = needsLen ? ` of length ${length}` : '';\n const got = bytes ? `length=${len}` : `type=${typeof value}`;\n err(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);\n }\n return value;\n};\n/** create Uint8Array */\nconst u8n = (len) => new Uint8Array(len);\nconst u8fr = (buf) => Uint8Array.from(buf);\nconst padh = (n, pad) => n.toString(16).padStart(pad, '0');\nconst bytesToHex = (b) => Array.from(abytes(b))\n .map((e) => padh(e, 2))\n .join('');\nconst C = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 }; // ASCII characters\nconst _ch = (ch) => {\n if (ch >= C._0 && ch <= C._9)\n return ch - C._0; // '2' => 50-48\n if (ch >= C.A && ch <= C.F)\n return ch - (C.A - 10); // 'B' => 66-(65-10)\n if (ch >= C.a && ch <= C.f)\n return ch - (C.a - 10); // 'b' => 98-(97-10)\n return;\n};\nconst hexToBytes = (hex) => {\n const e = 'hex invalid';\n if (!isStr(hex))\n return err(e);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2)\n return err(e);\n const array = u8n(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n // treat each char as ASCII\n const n1 = _ch(hex.charCodeAt(hi)); // parse first char, multiply it by 16\n const n2 = _ch(hex.charCodeAt(hi + 1)); // parse second char\n if (n1 === undefined || n2 === undefined)\n return err(e);\n array[ai] = n1 * 16 + n2; // example: 'A9' => 10*16 + 9\n }\n return array;\n};\nconst cr = () => globalThis?.crypto; // WebCrypto is available in all modern environments\nconst subtle = () => cr()?.subtle ?? err('crypto.subtle must be defined, consider polyfill');\n// prettier-ignore\nconst concatBytes = (...arrs) => {\n const r = u8n(arrs.reduce((sum, a) => sum + abytes(a).length, 0)); // create u8a of summed length\n let pad = 0; // walk through each array,\n arrs.forEach(a => { r.set(a, pad); pad += a.length; }); // ensure they have proper type\n return r;\n};\n/** WebCrypto OS-level CSPRNG (random number generator). Will throw when not available. */\nconst randomBytes = (len = L) => {\n const c = cr();\n return c.getRandomValues(u8n(len));\n};\nconst big = BigInt;\nconst assertRange = (n, min, max, msg = 'bad number: out of range') => (isBig(n) && min <= n && n < max ? n : err(msg));\n/** modular division */\nconst M = (a, b = P) => {\n const r = a % b;\n return r >= 0n ? r : b + r;\n};\nconst modN = (a) => M(a, N);\n/** Modular inversion using euclidean GCD (non-CT). No negative exponent for now. */\n// prettier-ignore\nconst invert = (num, md) => {\n if (num === 0n || md <= 0n)\n err('no inverse n=' + num + ' mod=' + md);\n let a = M(num, md), b = md, x = 0n, y = 1n, u = 1n, v = 0n;\n while (a !== 0n) {\n const q = b / a, r = b % a;\n const m = x - u * q, n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n return b === 1n ? M(x, md) : err('no inverse'); // b is gcd at this point\n};\nconst callHash = (name) => {\n // @ts-ignore\n const fn = hashes[name];\n if (typeof fn !== 'function')\n err('hashes.' + name + ' not set');\n return fn;\n};\nconst hash = (msg) => callHash('sha512')(msg);\nconst apoint = (p) => (p instanceof Point ? p : err('Point expected'));\n// ## End of Helpers\n// -----------------\nconst B256 = 2n ** 256n;\n/** Point in XYZT extended coordinates. */\nclass Point {\n static BASE;\n static ZERO;\n X;\n Y;\n Z;\n T;\n constructor(X, Y, Z, T) {\n const max = B256;\n this.X = assertRange(X, 0n, max);\n this.Y = assertRange(Y, 0n, max);\n this.Z = assertRange(Z, 1n, max);\n this.T = assertRange(T, 0n, max);\n Object.freeze(this);\n }\n static CURVE() {\n return ed25519_CURVE;\n }\n static fromAffine(p) {\n return new Point(p.x, p.y, 1n, M(p.x * p.y));\n }\n /** RFC8032 5.1.3: Uint8Array to Point. */\n static fromBytes(hex, zip215 = false) {\n const d = _d;\n // Copy array to not mess it up.\n const normed = u8fr(abytes(hex, L));\n // adjust first LE byte = last BE byte\n const lastByte = hex[31];\n normed[31] = lastByte & ~0x80;\n const y = bytesToNumLE(normed);\n // zip215=true: 0 <= y < 2^256\n // zip215=false, RFC8032: 0 <= y < 2^255-19\n const max = zip215 ? B256 : P;\n assertRange(y, 0n, max);\n const y2 = M(y * y); // y²\n const u = M(y2 - 1n); // u=y²-1\n const v = M(d * y2 + 1n); // v=dy²+1\n let { isValid, value: x } = uvRatio(u, v); // (uv³)(uv⁷)^(p-5)/8; square root\n if (!isValid)\n err('bad point: y not sqrt'); // not square root: bad point\n const isXOdd = (x & 1n) === 1n; // adjust sign of x coordinate\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (!zip215 && x === 0n && isLastByteOdd)\n err('bad point: x==0, isLastByteOdd'); // x=0, x_0=1\n if (isLastByteOdd !== isXOdd)\n x = M(-x);\n return new Point(x, y, 1n, M(x * y)); // Z=1, T=xy\n }\n static fromHex(hex, zip215) {\n return Point.fromBytes(hexToBytes(hex), zip215);\n }\n get x() {\n return this.toAffine().x;\n }\n get y() {\n return this.toAffine().y;\n }\n /** Checks if the point is valid and on-curve. */\n assertValidity() {\n const a = _a;\n const d = _d;\n const p = this;\n if (p.is0())\n return err('bad point: ZERO'); // TODO: optimize, with vars below?\n // Equation in affine coordinates: ax² + y² = 1 + dx²y²\n // Equation in projective coordinates (X/Z, Y/Z, Z): (aX² + Y²)Z² = Z⁴ + dX²Y²\n const { X, Y, Z, T } = p;\n const X2 = M(X * X); // X²\n const Y2 = M(Y * Y); // Y²\n const Z2 = M(Z * Z); // Z²\n const Z4 = M(Z2 * Z2); // Z⁴\n const aX2 = M(X2 * a); // aX²\n const left = M(Z2 * M(aX2 + Y2)); // (aX² + Y²)Z²\n const right = M(Z4 + M(d * M(X2 * Y2))); // Z⁴ + dX²Y²\n if (left !== right)\n return err('bad point: equation left != right (1)');\n // In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T\n const XY = M(X * Y);\n const ZT = M(Z * T);\n if (XY !== ZT)\n return err('bad point: equation left != right (2)');\n return this;\n }\n /** Equality check: compare points P&Q. */\n equals(other) {\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const { X: X2, Y: Y2, Z: Z2 } = apoint(other); // checks class equality\n const X1Z2 = M(X1 * Z2);\n const X2Z1 = M(X2 * Z1);\n const Y1Z2 = M(Y1 * Z2);\n const Y2Z1 = M(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n is0() {\n return this.equals(I);\n }\n /** Flip point over y coordinate. */\n negate() {\n return new Point(M(-this.X), this.Y, this.Z, M(-this.T));\n }\n /** Point doubling. Complete formula. Cost: `4M + 4S + 1*a + 6add + 1*2`. */\n double() {\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const a = _a;\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n const A = M(X1 * X1);\n const B = M(Y1 * Y1);\n const C = M(2n * M(Z1 * Z1));\n const D = M(a * A);\n const x1y1 = X1 + Y1;\n const E = M(M(x1y1 * x1y1) - A - B);\n const G = D + B;\n const F = G - C;\n const H = D - B;\n const X3 = M(E * F);\n const Y3 = M(G * H);\n const T3 = M(E * H);\n const Z3 = M(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n /** Point addition. Complete formula. Cost: `8M + 1*k + 8add + 1*2`. */\n add(other) {\n const { X: X1, Y: Y1, Z: Z1, T: T1 } = this;\n const { X: X2, Y: Y2, Z: Z2, T: T2 } = apoint(other); // doesn't check if other on-curve\n const a = _a;\n const d = _d;\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-3\n const A = M(X1 * X2);\n const B = M(Y1 * Y2);\n const C = M(T1 * d * T2);\n const D = M(Z1 * Z2);\n const E = M((X1 + Y1) * (X2 + Y2) - A - B);\n const F = M(D - C);\n const G = M(D + C);\n const H = M(B - a * A);\n const X3 = M(E * F);\n const Y3 = M(G * H);\n const T3 = M(E * H);\n const Z3 = M(F * G);\n return new Point(X3, Y3, Z3, T3);\n }\n subtract(other) {\n return this.add(apoint(other).negate());\n }\n /**\n * Point-by-scalar multiplication. Scalar must be in range 1 <= n < CURVE.n.\n * Uses {@link wNAF} for base point.\n * Uses fake point to mitigate side-channel leakage.\n * @param n scalar by which point is multiplied\n * @param safe safe mode guards against timing attacks; unsafe mode is faster\n */\n multiply(n, safe = true) {\n if (!safe && (n === 0n || this.is0()))\n return I;\n assertRange(n, 1n, N);\n if (n === 1n)\n return this;\n if (this.equals(G))\n return wNAF(n).p;\n // init result point & fake point\n let p = I;\n let f = G;\n for (let d = this; n > 0n; d = d.double(), n >>= 1n) {\n // if bit is present, add to point\n // if not present, add to fake, for timing safety\n if (n & 1n)\n p = p.add(d);\n else if (safe)\n f = f.add(d);\n }\n return p;\n }\n multiplyUnsafe(scalar) {\n return this.multiply(scalar, false);\n }\n /** Convert point to 2d xy affine point. (X, Y, Z) ∋ (x=X/Z, y=Y/Z) */\n toAffine() {\n const { X, Y, Z } = this;\n // fast-paths for ZERO point OR Z=1\n if (this.equals(I))\n return { x: 0n, y: 1n };\n const iz = invert(Z, P);\n // (Z * Z^-1) must be 1, otherwise bad math\n if (M(Z * iz) !== 1n)\n err('invalid inverse');\n // x = X*Z^-1; y = Y*Z^-1\n const x = M(X * iz);\n const y = M(Y * iz);\n return { x, y };\n }\n toBytes() {\n const { x, y } = this.assertValidity().toAffine();\n const b = numTo32bLE(y);\n // store sign in first LE byte\n b[31] |= x & 1n ? 0x80 : 0;\n return b;\n }\n toHex() {\n return bytesToHex(this.toBytes());\n }\n clearCofactor() {\n return this.multiply(big(h), false);\n }\n isSmallOrder() {\n return this.clearCofactor().is0();\n }\n isTorsionFree() {\n // Multiply by big number N. We can't `mul(N)` because of checks. Instead, we `mul(N/2)*2+1`\n let p = this.multiply(N / 2n, false).double();\n if (N % 2n)\n p = p.add(this);\n return p.is0();\n }\n}\n/** Generator / base point */\nconst G = new Point(Gx, Gy, 1n, M(Gx * Gy));\n/** Identity / zero point */\nconst I = new Point(0n, 1n, 1n, 0n);\n// Static aliases\nPoint.BASE = G;\nPoint.ZERO = I;\nconst numTo32bLE = (num) => hexToBytes(padh(assertRange(num, 0n, B256), L2)).reverse();\nconst bytesToNumLE = (b) => big('0x' + bytesToHex(u8fr(abytes(b)).reverse()));\nconst pow2 = (x, power) => {\n // pow2(x, 4) == x^(2^4)\n let r = x;\n while (power-- > 0n) {\n r *= r;\n r %= P;\n }\n return r;\n};\n// prettier-ignore\nconst pow_2_252_3 = (x) => {\n const x2 = (x * x) % P; // x^2, bits 1\n const b2 = (x2 * x) % P; // x^3, bits 11\n const b4 = (pow2(b2, 2n) * b2) % P; // x^(2^4-1), bits 1111\n const b5 = (pow2(b4, 1n) * x) % P; // x^(2^5-1), bits 11111\n const b10 = (pow2(b5, 5n) * b5) % P; // x^(2^10)\n const b20 = (pow2(b10, 10n) * b10) % P; // x^(2^20)\n const b40 = (pow2(b20, 20n) * b20) % P; // x^(2^40)\n const b80 = (pow2(b40, 40n) * b40) % P; // x^(2^80)\n const b160 = (pow2(b80, 80n) * b80) % P; // x^(2^160)\n const b240 = (pow2(b160, 80n) * b80) % P; // x^(2^240)\n const b250 = (pow2(b240, 10n) * b10) % P; // x^(2^250)\n const pow_p_5_8 = (pow2(b250, 2n) * x) % P; // < To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n};\nconst RM1 = 0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n; // √-1\n// for sqrt comp\n// prettier-ignore\nconst uvRatio = (u, v) => {\n const v3 = M(v * v * v); // v³\n const v7 = M(v3 * v3 * v); // v⁷\n const pow = pow_2_252_3(u * v7).pow_p_5_8; // (uv⁷)^(p-5)/8\n let x = M(u * v3 * pow); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = M(v * x * x); // vx²\n const root1 = x; // First root candidate\n const root2 = M(x * RM1); // Second root candidate; RM1 is √-1\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === M(-u); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === M(-u * RM1); // There is no valid root, vx² = -u√-1\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2; // We return root2 anyway, for const-time\n if ((M(x) & 1n) === 1n)\n x = M(-x); // edIsNegative\n return { isValid: useRoot1 || useRoot2, value: x };\n};\n// N == L, just weird naming\nconst modL_LE = (hash) => modN(bytesToNumLE(hash)); // modulo L; but little-endian\n/** hashes.sha512 should conform to the interface. */\n// TODO: rename\nconst sha512a = (...m) => hashes.sha512Async(concatBytes(...m)); // Async SHA512\nconst sha512s = (...m) => callHash('sha512')(concatBytes(...m));\n// RFC8032 5.1.5\nconst hash2extK = (hashed) => {\n // slice creates a copy, unlike subarray\n const head = hashed.slice(0, L);\n head[0] &= 248; // Clamp bits: 0b1111_1000\n head[31] &= 127; // 0b0111_1111\n head[31] |= 64; // 0b0100_0000\n const prefix = hashed.slice(L, L2); // secret key \"prefix\"\n const scalar = modL_LE(head); // modular division over curve order\n const point = G.multiply(scalar); // public key point\n const pointBytes = point.toBytes(); // point serialized to Uint8Array\n return { head, prefix, scalar, point, pointBytes };\n};\n// RFC8032 5.1.5; getPublicKey async, sync. Hash priv key and extract point.\nconst getExtendedPublicKeyAsync = (secretKey) => sha512a(abytes(secretKey, L)).then(hash2extK);\nconst getExtendedPublicKey = (secretKey) => hash2extK(sha512s(abytes(secretKey, L)));\n/** Creates 32-byte ed25519 public key from 32-byte secret key. Async. */\nconst getPublicKeyAsync = (secretKey) => getExtendedPublicKeyAsync(secretKey).then((p) => p.pointBytes);\n/** Creates 32-byte ed25519 public key from 32-byte secret key. To use, set `hashes.sha512` first. */\nconst getPublicKey = (priv) => getExtendedPublicKey(priv).pointBytes;\nconst hashFinishA = (res) => sha512a(res.hashable).then(res.finish);\nconst hashFinishS = (res) => res.finish(sha512s(res.hashable));\n// Code, shared between sync & async sign\nconst _sign = (e, rBytes, msg) => {\n const { pointBytes: P, scalar: s } = e;\n const r = modL_LE(rBytes); // r was created outside, reduce it modulo L\n const R = G.multiply(r).toBytes(); // R = [r]B\n const hashable = concatBytes(R, P, msg); // dom2(F, C) || R || A || PH(M)\n const finish = (hashed) => {\n // k = SHA512(dom2(F, C) || R || A || PH(M))\n const S = modN(r + modL_LE(hashed) * s); // S = (r + k * s) mod L; 0 <= s < l\n return abytes(concatBytes(R, numTo32bLE(S)), L2); // 64-byte sig: 32b R.x + 32b LE(S)\n };\n return { hashable, finish };\n};\n/**\n * Signs message using secret key. Async.\n * Follows RFC8032 5.1.6.\n */\nconst signAsync = async (message, secretKey) => {\n const m = abytes(message);\n const e = await getExtendedPublicKeyAsync(secretKey);\n const rBytes = await sha512a(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinishA(_sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\n/**\n * Signs message using secret key. To use, set `hashes.sha512` first.\n * Follows RFC8032 5.1.6.\n */\nconst sign = (message, secretKey) => {\n const m = abytes(message);\n const e = getExtendedPublicKey(secretKey);\n const rBytes = sha512s(e.prefix, m); // r = SHA512(dom2(F, C) || prefix || PH(M))\n return hashFinishS(_sign(e, rBytes, m)); // gen R, k, S, then 64-byte signature\n};\nconst defaultVerifyOpts = { zip215: true };\nconst _verify = (sig, msg, pub, opts = defaultVerifyOpts) => {\n sig = abytes(sig, L2); // Signature hex str/Bytes, must be 64 bytes\n msg = abytes(msg); // Message hex str/Bytes\n pub = abytes(pub, L);\n const { zip215 } = opts; // switch between zip215 and rfc8032 verif\n let A;\n let R;\n let s;\n let SB;\n let hashable = Uint8Array.of();\n try {\n A = Point.fromBytes(pub, zip215); // public key A decoded\n R = Point.fromBytes(sig.slice(0, L), zip215); // 0 <= R < 2^256: ZIP215 R can be >= P\n s = bytesToNumLE(sig.slice(L, L2)); // Decode second half as an integer S\n SB = G.multiply(s, false); // in the range 0 <= s < L\n hashable = concatBytes(R.toBytes(), A.toBytes(), msg); // dom2(F, C) || R || A || PH(M)\n }\n catch (error) { }\n const finish = (hashed) => {\n // k = SHA512(dom2(F, C) || R || A || PH(M))\n if (SB == null)\n return false; // false if try-catch catched an error\n if (!zip215 && A.isSmallOrder())\n return false; // false for SBS: Strongly Binding Signature\n const k = modL_LE(hashed); // decode in little-endian, modulo L\n const RkA = R.add(A.multiply(k, false)); // [8]R + [8][k]A'\n return RkA.add(SB.negate()).clearCofactor().is0(); // [8][S]B = [8]R + [8][k]A'\n };\n return { hashable, finish };\n};\n/** Verifies signature on message and public key. Async. Follows RFC8032 5.1.7. */\nconst verifyAsync = async (signature, message, publicKey, opts = defaultVerifyOpts) => hashFinishA(_verify(signature, message, publicKey, opts));\n/** Verifies signature on message and public key. To use, set `hashes.sha512` first. Follows RFC8032 5.1.7. */\nconst verify = (signature, message, publicKey, opts = defaultVerifyOpts) => hashFinishS(_verify(signature, message, publicKey, opts));\n/** Math, hex, byte helpers. Not in `utils` because utils share API with noble-curves. */\nconst etc = {\n bytesToHex: bytesToHex,\n hexToBytes: hexToBytes,\n concatBytes: concatBytes,\n mod: M,\n invert: invert,\n randomBytes: randomBytes,\n};\nconst hashes = {\n sha512Async: async (message) => {\n const s = subtle();\n const m = concatBytes(message);\n return u8n(await s.digest('SHA-512', m.buffer));\n },\n sha512: undefined,\n};\n// FIPS 186 B.4.1 compliant key generation produces private keys\n// with modulo bias being neglible. takes >N+16 bytes, returns (hash mod n-1)+1\nconst randomSecretKey = (seed = randomBytes(L)) => seed;\nconst keygen = (seed) => {\n const secretKey = randomSecretKey(seed);\n const publicKey = getPublicKey(secretKey);\n return { secretKey, publicKey };\n};\nconst keygenAsync = async (seed) => {\n const secretKey = randomSecretKey(seed);\n const publicKey = await getPublicKeyAsync(secretKey);\n return { secretKey, publicKey };\n};\n/** ed25519-specific key utilities. */\nconst utils = {\n getExtendedPublicKeyAsync: getExtendedPublicKeyAsync,\n getExtendedPublicKey: getExtendedPublicKey,\n randomSecretKey: randomSecretKey,\n};\n// ## Precomputes\n// --------------\nconst W = 8; // W is window size\nconst scalarBits = 256;\nconst pwindows = Math.ceil(scalarBits / W) + 1; // 33 for W=8, NOT 32 - see wNAF loop\nconst pwindowSize = 2 ** (W - 1); // 128 for W=8\nconst precompute = () => {\n const points = [];\n let p = G;\n let b = p;\n for (let w = 0; w < pwindows; w++) {\n b = p;\n points.push(b);\n for (let i = 1; i < pwindowSize; i++) {\n b = b.add(p);\n points.push(b);\n } // i=1, bc we skip 0\n p = b.double();\n }\n return points;\n};\nlet Gpows = undefined; // precomputes for base point G\n// const-time negate\nconst ctneg = (cnd, p) => {\n const n = p.negate();\n return cnd ? n : p;\n};\n/**\n * Precomputes give 12x faster getPublicKey(), 10x sign(), 2x verify() by\n * caching multiples of G (base point). Cache is stored in 32MB of RAM.\n * Any time `G.multiply` is done, precomputes are used.\n * Not used for getSharedSecret, which instead multiplies random pubkey `P.multiply`.\n *\n * w-ary non-adjacent form (wNAF) precomputation method is 10% slower than windowed method,\n * but takes 2x less RAM. RAM reduction is possible by utilizing `.subtract`.\n *\n * !! Precomputes can be disabled by commenting-out call of the wNAF() inside Point#multiply().\n */\nconst wNAF = (n) => {\n const comp = Gpows || (Gpows = precompute());\n let p = I;\n let f = G; // f must be G, or could become I in the end\n const pow_2_w = 2 ** W; // 256 for W=8\n const maxNum = pow_2_w; // 256 for W=8\n const mask = big(pow_2_w - 1); // 255 for W=8 == mask 0b11111111\n const shiftBy = big(W); // 8 for W=8\n for (let w = 0; w < pwindows; w++) {\n let wbits = Number(n & mask); // extract W bits.\n n >>= shiftBy; // shift number by W bits.\n // We use negative indexes to reduce size of precomputed table by 2x.\n // Instead of needing precomputes 0..256, we only calculate them for 0..128.\n // If an index > 128 is found, we do (256-index) - where 256 is next window.\n // Naive: index +127 => 127, +224 => 224\n // Optimized: index +127 => 127, +224 => 256-32\n if (wbits > pwindowSize) {\n wbits -= maxNum;\n n += 1n;\n }\n const off = w * pwindowSize;\n const offF = off; // offsets, evaluate both\n const offP = off + Math.abs(wbits) - 1;\n const isEven = w % 2 !== 0; // conditions, evaluate both\n const isNeg = wbits < 0;\n if (wbits === 0) {\n // off == I: can't add it. Adding random offF instead.\n f = f.add(ctneg(isEven, comp[offF])); // bits are 0: add garbage to fake point\n }\n else {\n p = p.add(ctneg(isNeg, comp[offP])); // bits are 1: add to result point\n }\n }\n if (n !== 0n)\n err('invalid wnaf');\n return { p, f }; // return both real and fake points for JIT\n};\n// !! Remove the export to easily use in REPL / browser console\nexport { etc, getPublicKey, getPublicKeyAsync, hash, hashes, keygen, keygenAsync, Point, sign, signAsync, utils, verify, verifyAsync, };\n","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a: unknown): a is Uint8Array {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\n/** Asserts something is positive integer. */\nexport function anumber(n: number, title: string = ''): void {\n if (!Number.isSafeInteger(n) || n < 0) {\n const prefix = title && `\"${title}\" `;\n throw new Error(`${prefix}expected integer >0, got ${n}`);\n }\n}\n\n/** Asserts something is Uint8Array. */\nexport function abytes(value: Uint8Array, length?: number, title: string = ''): Uint8Array {\n const bytes = isBytes(value);\n const len = value?.length;\n const needsLen = length !== undefined;\n if (!bytes || (needsLen && len !== length)) {\n const prefix = title && `\"${title}\" `;\n const ofLen = needsLen ? ` of length ${length}` : '';\n const got = bytes ? `length=${len}` : `type=${typeof value}`;\n throw new Error(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);\n }\n return value;\n}\n\n/** Asserts something is hash */\nexport function ahash(h: CHash): void {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash must wrapped by utils.createHasher');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\n\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance: any, checkFinished = true): void {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\n\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out: any, instance: any): void {\n abytes(out, undefined, 'digestInto() output');\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('\"digestInto() output\" expected to be of length >=' + min);\n }\n}\n\n/** Generic type encompassing 8/16/32-byte arrays - but not 64-byte. */\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr: TypedArray): Uint8Array {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr: TypedArray): Uint32Array {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays: TypedArray[]): void {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr: TypedArray): DataView {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word: number, shift: number): number {\n return (word << (32 - shift)) | (word >>> shift);\n}\n\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word: number, shift: number): number {\n return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE: boolean = /* @__PURE__ */ (() =>\n new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n\n/** The byte swap operation for uint32 */\nexport function byteSwap(word: number): number {\n return (\n ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff)\n );\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE: (n: number) => number = isLE\n ? (n: number) => n\n : (n: number) => byteSwap(n);\n\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr: Uint32Array): Uint32Array {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n return arr;\n}\n\nexport const swap32IfBE: (u: Uint32Array) => Uint32Array = isLE\n ? (u: Uint32Array) => u\n : byteSwap32;\n\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin: boolean = /* @__PURE__ */ (() =>\n // @ts-ignore\n typeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin) return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 } as const;\nfunction asciiToBase16(ch: number): number | undefined {\n if (ch >= asciis._0 && ch <= asciis._9) return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F) return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f) return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n // @ts-ignore\n if (hasHexBuiltin) return Uint8Array.fromHex(hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async (): Promise<void> => {};\n\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(\n iters: number,\n tick: number,\n cb: (i: number) => void\n): Promise<void> {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols, but ts doesn't see them: https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * Converts string to bytes using UTF8 encoding.\n * Built-in doesn't validate input to be string: we do the check.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n/** KDFs can accept string or Uint8Array for user convenience. */\nexport type KDFInput = string | Uint8Array;\n\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data: KDFInput, errorTitle = ''): Uint8Array {\n if (typeof data === 'string') return utf8ToBytes(data);\n return abytes(data, undefined, errorTitle);\n}\n\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\ntype EmptyObj = {};\n/** Merges default options and passed options. */\nexport function checkOpts<T1 extends EmptyObj, T2 extends EmptyObj>(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('options must be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\n/** Common interface for all hashes. */\nexport interface Hash<T> {\n blockLen: number; // Bytes per block\n outputLen: number; // Bytes in output\n update(buf: Uint8Array): this;\n digestInto(buf: Uint8Array): void;\n digest(): Uint8Array;\n destroy(): void;\n _cloneInto(to?: T): T;\n clone(): T;\n}\n\n/** PseudoRandom (number) Generator */\nexport interface PRG {\n addEntropy(seed: Uint8Array): void;\n randomBytes(length: number): Uint8Array;\n clean(): void;\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF<T extends Hash<T>> = Hash<T> & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\n/** Hash constructor */\nexport type HasherCons<T, Opts = undefined> = Opts extends undefined ? () => T : (opts?: Opts) => T;\n/** Optional hash params. */\nexport type HashInfo = {\n oid?: Uint8Array; // DER encoded OID in bytes\n};\n/** Hash function */\nexport type CHash<T extends Hash<T> = Hash<any>, Opts = undefined> = {\n outputLen: number;\n blockLen: number;\n} & HashInfo &\n (Opts extends undefined\n ? {\n (msg: Uint8Array): Uint8Array;\n create(): T;\n }\n : {\n (msg: Uint8Array, opts?: Opts): Uint8Array;\n create(opts?: Opts): T;\n });\n/** XOF with output */\nexport type CHashXOF<T extends HashXOF<T> = HashXOF<any>, Opts = undefined> = CHash<T, Opts>;\n\n/** Creates function with outputLen, blockLen, create properties from a class constructor. */\nexport function createHasher<T extends Hash<T>, Opts = undefined>(\n hashCons: HasherCons<T, Opts>,\n info: HashInfo = {}\n): CHash<T, Opts> {\n const hashC: any = (msg: Uint8Array, opts?: Opts) => hashCons(opts).update(msg).digest();\n const tmp = hashCons(undefined);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts?: Opts) => hashCons(opts);\n Object.assign(hashC, info);\n return Object.freeze(hashC);\n}\n\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n const cr = typeof globalThis === 'object' ? (globalThis as any).crypto : null;\n if (typeof cr?.getRandomValues !== 'function')\n throw new Error('crypto.getRandomValues must be defined');\n return cr.getRandomValues(new Uint8Array(bytesLength));\n}\n\n/** Creates OID opts for NIST hashes, with prefix 06 09 60 86 48 01 65 03 04 02. */\nexport const oidNist = (suffix: number): Required<HashInfo> => ({\n oid: Uint8Array.from([0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, suffix]),\n});\n","/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nimport { abytes, aexists, aoutput, clean, createView, type Hash } from './utils.ts';\n\n/** Choice: a ? b : c */\nexport function Chi(a: number, b: number, c: number): number {\n return (a & b) ^ (~a & c);\n}\n\n/** Majority function, true if any two inputs is true. */\nexport function Maj(a: number, b: number, c: number): number {\n return (a & b) ^ (a & c) ^ (b & c);\n}\n\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport abstract class HashMD<T extends HashMD<T>> implements Hash<T> {\n protected abstract process(buf: DataView, offset: number): void;\n protected abstract get(): number[];\n protected abstract set(...args: number[]): void;\n abstract destroy(): void;\n protected abstract roundClean(): void;\n\n readonly blockLen: number;\n readonly outputLen: number;\n readonly padOffset: number;\n readonly isLE: boolean;\n\n // For partial updates less than block size\n protected buffer: Uint8Array;\n protected view: DataView;\n protected finished = false;\n protected length = 0;\n protected pos = 0;\n protected destroyed = false;\n\n constructor(blockLen: number, outputLen: number, padOffset: number, isLE: boolean) {\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data: Uint8Array): this {\n aexists(this);\n abytes(data);\n const { view, buffer, blockLen } = this;\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen) this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out: Uint8Array): void {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n clean(this.buffer.subarray(pos));\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++) buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n view.setBigUint64(blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which must be fused in single op with modulo by JIT\n if (len % 4) throw new Error('_sha2: outputLen must be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length) throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++) oview.setUint32(4 * i, state[i], isLE);\n }\n digest(): Uint8Array {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to?: T): T {\n to ||= new (this.constructor as any)() as T;\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.destroyed = destroyed;\n to.finished = finished;\n to.length = length;\n to.pos = pos;\n if (length % blockLen) to.buffer.set(buffer);\n return to as unknown as any;\n }\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53.\n * Check out `test/misc/sha2-gen-iv.js` for recomputation guide.\n */\n\n/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */\nexport const SHA256_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n]);\n\n/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */\nexport const SHA224_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4,\n]);\n\n/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */\nexport const SHA384_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4,\n]);\n\n/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */\nexport const SHA512_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,\n]);\n","/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\nfunction fromBig(\n n: bigint,\n le = false\n): {\n h: number;\n l: number;\n} {\n if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nfunction split(lst: bigint[], le = false): Uint32Array[] {\n const len = lst.length;\n let Ah = new Uint32Array(len);\n let Al = new Uint32Array(len);\n for (let i = 0; i < len; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number): bigint => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number): number => h >>> s;\nconst shrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number): number => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number): number => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number): number => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number): number => l;\nconst rotr32L = (h: number, _l: number): number => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number): number => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number): number => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number): number => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number): number => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(\n Ah: number,\n Al: number,\n Bh: number,\n Bl: number\n): {\n h: number;\n l: number;\n} {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number): number => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number): number =>\n (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number): number =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number): number =>\n (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number): number =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number): number =>\n (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig\n};\n// prettier-ignore\nconst u64: { fromBig: typeof fromBig; split: typeof split; toBig: (h: number, l: number) => bigint; shrSH: (h: number, _l: number, s: number) => number; shrSL: (h: number, l: number, s: number) => number; rotrSH: (h: number, l: number, s: number) => number; rotrSL: (h: number, l: number, s: number) => number; rotrBH: (h: number, l: number, s: number) => number; rotrBL: (h: number, l: number, s: number) => number; rotr32H: (_h: number, l: number) => number; rotr32L: (h: number, _l: number) => number; rotlSH: (h: number, l: number, s: number) => number; rotlSL: (h: number, l: number, s: number) => number; rotlBH: (h: number, l: number, s: number) => number; rotlBL: (h: number, l: number, s: number) => number; add: typeof add; add3L: (Al: number, Bl: number, Cl: number) => number; add3H: (low: number, Ah: number, Bh: number, Ch: number) => number; add4L: (Al: number, Bl: number, Cl: number, Dl: number) => number; add4H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number) => number; add5H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) => number; add5L: (Al: number, Bl: number, Cl: number, Dl: number, El: number) => number; } = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n","/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out [RFC 4634](https://www.rfc-editor.org/rfc/rfc4634) and\n * [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nimport { Chi, HashMD, Maj, SHA224_IV, SHA256_IV, SHA384_IV, SHA512_IV } from './_md.ts';\nimport * as u64 from './_u64.ts';\nimport { type CHash, clean, createHasher, oidNist, rotr } from './utils.ts';\n\n/**\n * Round constants:\n * First 32 bits of fractional parts of the cube roots of the first 64 primes 2..311)\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n\n/** Reusable temporary buffer. \"W\" comes straight from spec. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\n\n/** Internal 32-byte base SHA2 hash class. */\nabstract class SHA2_32B<T extends SHA2_32B<T>> extends HashMD<T> {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n protected abstract A: number;\n protected abstract B: number;\n protected abstract C: number;\n protected abstract D: number;\n protected abstract E: number;\n protected abstract F: number;\n protected abstract G: number;\n protected abstract H: number;\n\n constructor(outputLen: number) {\n super(64, outputLen, 8, false);\n }\n protected get(): [number, number, number, number, number, number, number, number] {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n protected set(\n A: number, B: number, C: number, D: number, E: number, F: number, G: number, H: number\n ): void {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n protected process(view: DataView, offset: number): void {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n protected roundClean(): void {\n clean(SHA256_W);\n }\n destroy(): void {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n clean(this.buffer);\n }\n}\n\n/** Internal SHA2-256 hash class. */\nexport class _SHA256 extends SHA2_32B<_SHA256> {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n protected A: number = SHA256_IV[0] | 0;\n protected B: number = SHA256_IV[1] | 0;\n protected C: number = SHA256_IV[2] | 0;\n protected D: number = SHA256_IV[3] | 0;\n protected E: number = SHA256_IV[4] | 0;\n protected F: number = SHA256_IV[5] | 0;\n protected G: number = SHA256_IV[6] | 0;\n protected H: number = SHA256_IV[7] | 0;\n constructor() {\n super(32);\n }\n}\n\n/** Internal SHA2-224 hash class. */\nexport class _SHA224 extends SHA2_32B<_SHA224> {\n protected A: number = SHA224_IV[0] | 0;\n protected B: number = SHA224_IV[1] | 0;\n protected C: number = SHA224_IV[2] | 0;\n protected D: number = SHA224_IV[3] | 0;\n protected E: number = SHA224_IV[4] | 0;\n protected F: number = SHA224_IV[5] | 0;\n protected G: number = SHA224_IV[6] | 0;\n protected H: number = SHA224_IV[7] | 0;\n constructor() {\n super(28);\n }\n}\n\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n\n// Round contants\n// First 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409\n// prettier-ignore\nconst K512 = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n\n// Reusable temporary buffers\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\n\n/** Internal 64-byte base SHA2 hash class. */\nabstract class SHA2_64B<T extends SHA2_64B<T>> extends HashMD<T> {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n // h -- high 32 bits, l -- low 32 bits\n protected abstract Ah: number;\n protected abstract Al: number;\n protected abstract Bh: number;\n protected abstract Bl: number;\n protected abstract Ch: number;\n protected abstract Cl: number;\n protected abstract Dh: number;\n protected abstract Dl: number;\n protected abstract Eh: number;\n protected abstract El: number;\n protected abstract Fh: number;\n protected abstract Fl: number;\n protected abstract Gh: number;\n protected abstract Gl: number;\n protected abstract Hh: number;\n protected abstract Hl: number;\n\n constructor(outputLen: number) {\n super(128, outputLen, 16, false);\n }\n // prettier-ignore\n protected get(): [\n number, number, number, number, number, number, number, number,\n number, number, number, number, number, number, number, number\n ] {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n protected set(\n Ah: number, Al: number, Bh: number, Bl: number, Ch: number, Cl: number, Dh: number, Dl: number,\n Eh: number, El: number, Fh: number, Fl: number, Gh: number, Gl: number, Hh: number, Hl: number\n ): void {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n protected process(view: DataView, offset: number): void {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n protected roundClean(): void {\n clean(SHA512_W_H, SHA512_W_L);\n }\n destroy(): void {\n clean(this.buffer);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\n\n/** Internal SHA2-512 hash class. */\nexport class _SHA512 extends SHA2_64B<_SHA512> {\n protected Ah: number = SHA512_IV[0] | 0;\n protected Al: number = SHA512_IV[1] | 0;\n protected Bh: number = SHA512_IV[2] | 0;\n protected Bl: number = SHA512_IV[3] | 0;\n protected Ch: number = SHA512_IV[4] | 0;\n protected Cl: number = SHA512_IV[5] | 0;\n protected Dh: number = SHA512_IV[6] | 0;\n protected Dl: number = SHA512_IV[7] | 0;\n protected Eh: number = SHA512_IV[8] | 0;\n protected El: number = SHA512_IV[9] | 0;\n protected Fh: number = SHA512_IV[10] | 0;\n protected Fl: number = SHA512_IV[11] | 0;\n protected Gh: number = SHA512_IV[12] | 0;\n protected Gl: number = SHA512_IV[13] | 0;\n protected Hh: number = SHA512_IV[14] | 0;\n protected Hl: number = SHA512_IV[15] | 0;\n\n constructor() {\n super(64);\n }\n}\n\n/** Internal SHA2-384 hash class. */\nexport class _SHA384 extends SHA2_64B<_SHA384> {\n protected Ah: number = SHA384_IV[0] | 0;\n protected Al: number = SHA384_IV[1] | 0;\n protected Bh: number = SHA384_IV[2] | 0;\n protected Bl: number = SHA384_IV[3] | 0;\n protected Ch: number = SHA384_IV[4] | 0;\n protected Cl: number = SHA384_IV[5] | 0;\n protected Dh: number = SHA384_IV[6] | 0;\n protected Dl: number = SHA384_IV[7] | 0;\n protected Eh: number = SHA384_IV[8] | 0;\n protected El: number = SHA384_IV[9] | 0;\n protected Fh: number = SHA384_IV[10] | 0;\n protected Fl: number = SHA384_IV[11] | 0;\n protected Gh: number = SHA384_IV[12] | 0;\n protected Gl: number = SHA384_IV[13] | 0;\n protected Hh: number = SHA384_IV[14] | 0;\n protected Hl: number = SHA384_IV[15] | 0;\n\n constructor() {\n super(48);\n }\n}\n\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See `test/misc/sha2-gen-iv.js`.\n */\n\n/** SHA512/224 IV */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n 0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n 0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n\n/** SHA512/256 IV */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n 0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n 0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\n\n/** Internal SHA2-512/224 hash class. */\nexport class _SHA512_224 extends SHA2_64B<_SHA512_224> {\n protected Ah: number = T224_IV[0] | 0;\n protected Al: number = T224_IV[1] | 0;\n protected Bh: number = T224_IV[2] | 0;\n protected Bl: number = T224_IV[3] | 0;\n protected Ch: number = T224_IV[4] | 0;\n protected Cl: number = T224_IV[5] | 0;\n protected Dh: number = T224_IV[6] | 0;\n protected Dl: number = T224_IV[7] | 0;\n protected Eh: number = T224_IV[8] | 0;\n protected El: number = T224_IV[9] | 0;\n protected Fh: number = T224_IV[10] | 0;\n protected Fl: number = T224_IV[11] | 0;\n protected Gh: number = T224_IV[12] | 0;\n protected Gl: number = T224_IV[13] | 0;\n protected Hh: number = T224_IV[14] | 0;\n protected Hl: number = T224_IV[15] | 0;\n\n constructor() {\n super(28);\n }\n}\n\n/** Internal SHA2-512/256 hash class. */\nexport class _SHA512_256 extends SHA2_64B<_SHA512_256> {\n protected Ah: number = T256_IV[0] | 0;\n protected Al: number = T256_IV[1] | 0;\n protected Bh: number = T256_IV[2] | 0;\n protected Bl: number = T256_IV[3] | 0;\n protected Ch: number = T256_IV[4] | 0;\n protected Cl: number = T256_IV[5] | 0;\n protected Dh: number = T256_IV[6] | 0;\n protected Dl: number = T256_IV[7] | 0;\n protected Eh: number = T256_IV[8] | 0;\n protected El: number = T256_IV[9] | 0;\n protected Fh: number = T256_IV[10] | 0;\n protected Fl: number = T256_IV[11] | 0;\n protected Gh: number = T256_IV[12] | 0;\n protected Gl: number = T256_IV[13] | 0;\n protected Hh: number = T256_IV[14] | 0;\n protected Hl: number = T256_IV[15] | 0;\n\n constructor() {\n super(32);\n }\n}\n\n/**\n * SHA2-256 hash function from RFC 4634. In JS it's the fastest: even faster than Blake3. Some info:\n *\n * - Trying 2^128 hashes would get 50% chance of collision, using birthday attack.\n * - BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n * - Each sha256 hash is executing 2^18 bit operations.\n * - Good 2024 ASICs can do 200Th/sec with 3500 watts of power, corresponding to 2^36 hashes/joule.\n */\nexport const sha256: CHash<_SHA256> = /* @__PURE__ */ createHasher(\n () => new _SHA256(),\n /* @__PURE__ */ oidNist(0x01)\n);\n/** SHA2-224 hash function from RFC 4634 */\nexport const sha224: CHash<_SHA224> = /* @__PURE__ */ createHasher(\n () => new _SHA224(),\n /* @__PURE__ */ oidNist(0x04)\n);\n\n/** SHA2-512 hash function from RFC 4634. */\nexport const sha512: CHash<_SHA512> = /* @__PURE__ */ createHasher(\n () => new _SHA512(),\n /* @__PURE__ */ oidNist(0x03)\n);\n/** SHA2-384 hash function from RFC 4634. */\nexport const sha384: CHash<_SHA384> = /* @__PURE__ */ createHasher(\n () => new _SHA384(),\n /* @__PURE__ */ oidNist(0x02)\n);\n\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_256: CHash<_SHA512_256> = /* @__PURE__ */ createHasher(\n () => new _SHA512_256(),\n /* @__PURE__ */ oidNist(0x06)\n);\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_224: CHash<_SHA512_224> = /* @__PURE__ */ createHasher(\n () => new _SHA512_224(),\n /* @__PURE__ */ oidNist(0x05)\n);\n","/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\nexport interface Coder<F, T> {\n encode(from: F): T;\n decode(to: T): F;\n}\n\nexport interface BytesCoder extends Coder<Uint8Array, string> {\n encode: (data: Uint8Array) => string;\n decode: (str: string) => Uint8Array;\n}\n\nfunction isBytes(a: unknown): a is Uint8Array {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is Uint8Array. */\nfunction abytes(b: Uint8Array | undefined): void {\n if (!isBytes(b)) throw new Error('Uint8Array expected');\n}\n\nfunction isArrayOf(isString: boolean, arr: any[]) {\n if (!Array.isArray(arr)) return false;\n if (arr.length === 0) return true;\n if (isString) {\n return arr.every((item) => typeof item === 'string');\n } else {\n return arr.every((item) => Number.isSafeInteger(item));\n }\n}\n\nfunction afn(input: Function): input is Function {\n if (typeof input !== 'function') throw new Error('function expected');\n return true;\n}\n\nfunction astr(label: string, input: unknown): input is string {\n if (typeof input !== 'string') throw new Error(`${label}: string expected`);\n return true;\n}\n\nfunction anumber(n: number): void {\n if (!Number.isSafeInteger(n)) throw new Error(`invalid integer: ${n}`);\n}\n\nfunction aArr(input: any[]) {\n if (!Array.isArray(input)) throw new Error('array expected');\n}\nfunction astrArr(label: string, input: string[]) {\n if (!isArrayOf(true, input)) throw new Error(`${label}: array of strings expected`);\n}\nfunction anumArr(label: string, input: number[]) {\n if (!isArrayOf(false, input)) throw new Error(`${label}: array of numbers expected`);\n}\n\n// TODO: some recusive type inference so it would check correct order of input/output inside rest?\n// like <string, number>, <number, bytes>, <bytes, float>\ntype Chain = [Coder<any, any>, ...Coder<any, any>[]];\n// Extract info from Coder type\ntype Input<F> = F extends Coder<infer T, any> ? T : never;\ntype Output<F> = F extends Coder<any, infer T> ? T : never;\n// Generic function for arrays\ntype First<T> = T extends [infer U, ...any[]] ? U : never;\ntype Last<T> = T extends [...any[], infer U] ? U : never;\ntype Tail<T> = T extends [any, ...infer U] ? U : never;\n\ntype AsChain<C extends Chain, Rest = Tail<C>> = {\n // C[K] = Coder<Input<C[K]>, Input<Rest[k]>>\n [K in keyof C]: Coder<Input<C[K]>, Input<K extends keyof Rest ? Rest[K] : any>>;\n};\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction chain<T extends Chain & AsChain<T>>(...args: T): Coder<Input<First<T>>, Output<Last<T>>> {\n const id = (a: any) => a;\n // Wrap call in closure so JIT can inline calls\n const wrap = (a: any, b: any) => (c: any) => a(b(c));\n // Construct chain of args[-1].encode(args[-2].encode([...]))\n const encode = args.map((x) => x.encode).reduceRight(wrap, id);\n // Construct chain of args[0].decode(args[1].decode(...))\n const decode = args.map((x) => x.decode).reduce(wrap, id);\n return { encode, decode };\n}\n\n/**\n * Encodes integer radix representation to array of strings using alphabet and back.\n * Could also be array of strings.\n * @__NO_SIDE_EFFECTS__\n */\nfunction alphabet(letters: string | string[]): Coder<number[], string[]> {\n // mapping 1 to \"b\"\n const lettersA = typeof letters === 'string' ? letters.split('') : letters;\n const len = lettersA.length;\n astrArr('alphabet', lettersA);\n\n // mapping \"b\" to 1\n const indexes = new Map(lettersA.map((l, i) => [l, i]));\n return {\n encode: (digits: number[]) => {\n aArr(digits);\n return digits.map((i) => {\n if (!Number.isSafeInteger(i) || i < 0 || i >= len)\n throw new Error(\n `alphabet.encode: digit index outside alphabet \"${i}\". Allowed: ${letters}`\n );\n return lettersA[i]!;\n });\n },\n decode: (input: string[]): number[] => {\n aArr(input);\n return input.map((letter) => {\n astr('alphabet.decode', letter);\n const i = indexes.get(letter);\n if (i === undefined) throw new Error(`Unknown letter: \"${letter}\". Allowed: ${letters}`);\n return i;\n });\n },\n };\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction join(separator = ''): Coder<string[], string> {\n astr('join', separator);\n return {\n encode: (from) => {\n astrArr('join.decode', from);\n return from.join(separator);\n },\n decode: (to) => {\n astr('join.decode', to);\n return to.split(separator);\n },\n };\n}\n\n/**\n * Pad strings array so it has integer number of bits\n * @__NO_SIDE_EFFECTS__\n */\nfunction padding(bits: number, chr = '='): Coder<string[], string[]> {\n anumber(bits);\n astr('padding', chr);\n return {\n encode(data: string[]): string[] {\n astrArr('padding.encode', data);\n while ((data.length * bits) % 8) data.push(chr);\n return data;\n },\n decode(input: string[]): string[] {\n astrArr('padding.decode', input);\n let end = input.length;\n if ((end * bits) % 8)\n throw new Error('padding: invalid, string should have whole number of bytes');\n for (; end > 0 && input[end - 1] === chr; end--) {\n const last = end - 1;\n const byte = last * bits;\n if (byte % 8 === 0) throw new Error('padding: invalid, string has too much padding');\n }\n return input.slice(0, end);\n },\n };\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction normalize<T>(fn: (val: T) => T): Coder<T, T> {\n afn(fn);\n return { encode: (from: T) => from, decode: (to: T) => fn(to) };\n}\n\n/**\n * Slow: O(n^2) time complexity\n */\nfunction convertRadix(data: number[], from: number, to: number): number[] {\n // base 1 is impossible\n if (from < 2) throw new Error(`convertRadix: invalid from=${from}, base cannot be less than 2`);\n if (to < 2) throw new Error(`convertRadix: invalid to=${to}, base cannot be less than 2`);\n aArr(data);\n if (!data.length) return [];\n let pos = 0;\n const res = [];\n const digits = Array.from(data, (d) => {\n anumber(d);\n if (d < 0 || d >= from) throw new Error(`invalid integer: ${d}`);\n return d;\n });\n const dlen = digits.length;\n while (true) {\n let carry = 0;\n let done = true;\n for (let i = pos; i < dlen; i++) {\n const digit = digits[i]!;\n const fromCarry = from * carry;\n const digitBase = fromCarry + digit;\n if (\n !Number.isSafeInteger(digitBase) ||\n fromCarry / from !== carry ||\n digitBase - digit !== fromCarry\n ) {\n throw new Error('convertRadix: carry overflow');\n }\n const div = digitBase / to;\n carry = digitBase % to;\n const rounded = Math.floor(div);\n digits[i] = rounded;\n if (!Number.isSafeInteger(rounded) || rounded * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow');\n if (!done) continue;\n else if (!rounded) pos = i;\n else done = false;\n }\n res.push(carry);\n if (done) break;\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++) res.push(0);\n return res.reverse();\n}\n\nconst gcd = (a: number, b: number): number => (b === 0 ? a : gcd(b, a % b));\nconst radix2carry = /* @__NO_SIDE_EFFECTS__ */ (from: number, to: number) =>\n from + (to - gcd(from, to));\nconst powers: number[] = /* @__PURE__ */ (() => {\n let res = [];\n for (let i = 0; i < 40; i++) res.push(2 ** i);\n return res;\n})();\n/**\n * Implemented with numbers, because BigInt is 5x slower\n */\nfunction convertRadix2(data: number[], from: number, to: number, padding: boolean): number[] {\n aArr(data);\n if (from <= 0 || from > 32) throw new Error(`convertRadix2: wrong from=${from}`);\n if (to <= 0 || to > 32) throw new Error(`convertRadix2: wrong to=${to}`);\n if (radix2carry(from, to) > 32) {\n throw new Error(\n `convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`\n );\n }\n let carry = 0;\n let pos = 0; // bitwise position in current element\n const max = powers[from]!;\n const mask = powers[to]! - 1;\n const res: number[] = [];\n for (const n of data) {\n anumber(n);\n if (n >= max) throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32) throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to) res.push(((carry >> (pos - to)) & mask) >>> 0);\n const pow = powers[pos];\n if (pow === undefined) throw new Error('invalid carry');\n carry &= pow - 1; // clean carry, otherwise it will cause overflow\n }\n carry = (carry << (to - pos)) & mask;\n if (!padding && pos >= from) throw new Error('Excess padding');\n if (!padding && carry > 0) throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0) res.push(carry >>> 0);\n return res;\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix(num: number): Coder<Uint8Array, number[]> {\n anumber(num);\n const _256 = 2 ** 8;\n return {\n encode: (bytes: Uint8Array) => {\n if (!isBytes(bytes)) throw new Error('radix.encode input should be Uint8Array');\n return convertRadix(Array.from(bytes), _256, num);\n },\n decode: (digits: number[]) => {\n anumArr('radix.decode', digits);\n return Uint8Array.from(convertRadix(digits, num, _256));\n },\n };\n}\n\n/**\n * If both bases are power of same number (like `2**8 <-> 2**64`),\n * there is a linear algorithm. For now we have implementation for power-of-two bases only.\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix2(bits: number, revPadding = false): Coder<Uint8Array, number[]> {\n anumber(bits);\n if (bits <= 0 || bits > 32) throw new Error('radix2: bits should be in (0..32]');\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow');\n return {\n encode: (bytes: Uint8Array) => {\n if (!isBytes(bytes)) throw new Error('radix2.encode input should be Uint8Array');\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n },\n decode: (digits: number[]) => {\n anumArr('radix2.decode', digits);\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n },\n };\n}\n\ntype ArgumentTypes<F extends Function> = F extends (...args: infer A) => any ? A : never;\nfunction unsafeWrapper<T extends (...args: any) => any>(fn: T) {\n afn(fn);\n return function (...args: ArgumentTypes<T>): ReturnType<T> | void {\n try {\n return fn.apply(null, args);\n } catch (e) {}\n };\n}\n\nfunction checksum(\n len: number,\n fn: (data: Uint8Array) => Uint8Array\n): Coder<Uint8Array, Uint8Array> {\n anumber(len);\n afn(fn);\n return {\n encode(data: Uint8Array) {\n if (!isBytes(data)) throw new Error('checksum.encode: input should be Uint8Array');\n const sum = fn(data).slice(0, len);\n const res = new Uint8Array(data.length + len);\n res.set(data);\n res.set(sum, data.length);\n return res;\n },\n decode(data: Uint8Array) {\n if (!isBytes(data)) throw new Error('checksum.decode: input should be Uint8Array');\n const payload = data.slice(0, -len);\n const oldChecksum = data.slice(-len);\n const newChecksum = fn(payload).slice(0, len);\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i]) throw new Error('Invalid checksum');\n return payload;\n },\n };\n}\n\n// prettier-ignore\nexport const utils: { alphabet: typeof alphabet; chain: typeof chain; checksum: typeof checksum; convertRadix: typeof convertRadix; convertRadix2: typeof convertRadix2; radix: typeof radix; radix2: typeof radix2; join: typeof join; padding: typeof padding; } = {\n alphabet, chain, checksum, convertRadix, convertRadix2, radix, radix2, join, padding,\n};\n\n// RFC 4648 aka RFC 3548\n// ---------------------\n\n/**\n * base16 encoding from RFC 4648.\n * @example\n * ```js\n * base16.encode(Uint8Array.from([0x12, 0xab]));\n * // => '12AB'\n * ```\n */\nexport const base16: BytesCoder = chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\n\n/**\n * base32 encoding from RFC 4648. Has padding.\n * Use `base32nopad` for unpadded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ===='\n * base32.decode('CKVQ====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32: BytesCoder = chain(\n radix2(5),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'),\n padding(5),\n join('')\n);\n\n/**\n * base32 encoding from RFC 4648. No padding.\n * Use `base32` for padded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ'\n * base32nopad.decode('CKVQ');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32nopad: BytesCoder = chain(\n radix2(5),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'),\n join('')\n);\n/**\n * base32 encoding from RFC 4648. Padded. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hexnopad` for unpadded version.\n * @example\n * ```js\n * base32hex.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG===='\n * base32hex.decode('2ALG====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hex: BytesCoder = chain(\n radix2(5),\n alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'),\n padding(5),\n join('')\n);\n\n/**\n * base32 encoding from RFC 4648. No padding. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hex` for padded version.\n * @example\n * ```js\n * base32hexnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG'\n * base32hexnopad.decode('2ALG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hexnopad: BytesCoder = chain(\n radix2(5),\n alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'),\n join('')\n);\n/**\n * base32 encoding from RFC 4648. Doug Crockford's version.\n * https://www.crockford.com/base32.html\n * @example\n * ```js\n * base32crockford.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ANG'\n * base32crockford.decode('2ANG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32crockford: BytesCoder = chain(\n radix2(5),\n alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'),\n join(''),\n normalize((s: string) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1'))\n);\n\n// Built-in base64 conversion https://caniuse.com/mdn-javascript_builtins_uint8array_frombase64\n// prettier-ignore\nconst hasBase64Builtin: boolean = /* @__PURE__ */ (() =>\n typeof (Uint8Array as any).from([]).toBase64 === 'function' &&\n typeof (Uint8Array as any).fromBase64 === 'function')();\n\nconst decodeBase64Builtin = (s: string, isUrl: boolean) => {\n astr('base64', s);\n const re = isUrl ? /^[A-Za-z0-9=_-]+$/ : /^[A-Za-z0-9=+/]+$/;\n const alphabet = isUrl ? 'base64url' : 'base64';\n if (s.length > 0 && !re.test(s)) throw new Error('invalid base64');\n return (Uint8Array as any).fromBase64(s, { alphabet, lastChunkHandling: 'strict' });\n};\n\n/**\n * base64 from RFC 4648. Padded.\n * Use `base64nopad` for unpadded version.\n * Also check out `base64url`, `base64urlnopad`.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64: BytesCoder = hasBase64Builtin ? {\n encode(b) { abytes(b); return (b as any).toBase64(); },\n decode(s) { return decodeBase64Builtin(s, false); },\n} : chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'),\n padding(6),\n join('')\n);\n/**\n * base64 from RFC 4648. No padding.\n * Use `base64` for padded version.\n * @example\n * ```js\n * base64nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64nopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64nopad: BytesCoder = chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'),\n join('')\n);\n\n/**\n * base64 from RFC 4648, using URL-safe alphabet. Padded.\n * Use `base64urlnopad` for unpadded version.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64url.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64url.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64url: BytesCoder = hasBase64Builtin ? {\n encode(b) { abytes(b); return (b as any).toBase64({ alphabet: 'base64url' }); },\n decode(s) { return decodeBase64Builtin(s, true); },\n} : chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'),\n padding(6),\n join('')\n);\n\n/**\n * base64 from RFC 4648, using URL-safe alphabet. No padding.\n * Use `base64url` for padded version.\n * @example\n * ```js\n * base64urlnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64urlnopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64urlnopad: BytesCoder = chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'),\n join('')\n);\n\n// base58 code\n// -----------\nconst genBase58 = /* @__NO_SIDE_EFFECTS__ */ (abc: string) =>\n chain(radix(58), alphabet(abc), join(''));\n\n/**\n * base58: base64 without ambigous characters +, /, 0, O, I, l.\n * Quadratic (O(n^2)) - so, can't be used on large inputs.\n * @example\n * ```js\n * base58.decode('01abcdef');\n * // => '3UhJW'\n * ```\n */\nexport const base58: BytesCoder = genBase58(\n '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n);\n/**\n * base58: flickr version. Check out `base58`.\n */\nexport const base58flickr: BytesCoder = genBase58(\n '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n);\n/**\n * base58: XRP version. Check out `base58`.\n */\nexport const base58xrp: BytesCoder = genBase58(\n 'rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz'\n);\n\n// Data len (index) -> encoded block len\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\n\n/**\n * base58: XMR version. Check out `base58`.\n * Done in 8-byte blocks (which equals 11 chars in decoding). Last (non-full) block padded with '1' to size in XMR_BLOCK_LEN.\n * Block encoding significantly reduces quadratic complexity of base58.\n */\nexport const base58xmr: BytesCoder = {\n encode(data: Uint8Array) {\n let res = '';\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8);\n res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length]!, '1');\n }\n return res;\n },\n decode(str: string) {\n let res: number[] = [];\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11);\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n const block = base58.decode(slice);\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0) throw new Error('base58xmr: wrong padding');\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)));\n }\n return Uint8Array.from(res);\n },\n};\n\n/**\n * Method, which creates base58check encoder.\n * Requires function, calculating sha256.\n */\nexport const createBase58check = (sha256: (data: Uint8Array) => Uint8Array): BytesCoder =>\n chain(\n checksum(4, (data) => sha256(sha256(data))),\n base58\n );\n\n/**\n * Use `createBase58check` instead.\n * @deprecated\n */\nexport const base58check: (sha256: (data: Uint8Array) => Uint8Array) => BytesCoder =\n createBase58check;\n\n// Bech32 code\n// -----------\nexport interface Bech32Decoded<Prefix extends string = string> {\n prefix: Prefix;\n words: number[];\n}\nexport interface Bech32DecodedWithArray<Prefix extends string = string> {\n prefix: Prefix;\n words: number[];\n bytes: Uint8Array;\n}\n\nconst BECH_ALPHABET: Coder<number[], string> = chain(\n alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'),\n join('')\n);\n\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\nfunction bech32Polymod(pre: number): number {\n const b = pre >> 25;\n let chk = (pre & 0x1ffffff) << 5;\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1) chk ^= POLYMOD_GENERATORS[i]!;\n }\n return chk;\n}\n\nfunction bechChecksum(prefix: string, words: number[], encodingConst = 1): string {\n const len = prefix.length;\n let chk = 1;\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126) throw new Error(`Invalid prefix (${prefix})`);\n chk = bech32Polymod(chk) ^ (c >> 5);\n }\n chk = bech32Polymod(chk);\n for (let i = 0; i < len; i++) chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n for (let v of words) chk = bech32Polymod(chk) ^ v;\n for (let i = 0; i < 6; i++) chk = bech32Polymod(chk);\n chk ^= encodingConst;\n return BECH_ALPHABET.encode(convertRadix2([chk % powers[30]!], 30, 5, false));\n}\n\nexport interface Bech32 {\n encode<Prefix extends string>(\n prefix: Prefix,\n words: number[] | Uint8Array,\n limit?: number | false\n ): `${Lowercase<Prefix>}1${string}`;\n decode<Prefix extends string>(\n str: `${Prefix}1${string}`,\n limit?: number | false\n ): Bech32Decoded<Prefix>;\n encodeFromBytes(prefix: string, bytes: Uint8Array): string;\n decodeToBytes(str: string): Bech32DecodedWithArray;\n decodeUnsafe(str: string, limit?: number | false): void | Bech32Decoded<string>;\n fromWords(to: number[]): Uint8Array;\n fromWordsUnsafe(to: number[]): void | Uint8Array;\n toWords(from: Uint8Array): number[];\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction genBech32(encoding: 'bech32' | 'bech32m'): Bech32 {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n const _words = radix2(5);\n const fromWords = _words.decode;\n const toWords = _words.encode;\n const fromWordsUnsafe = unsafeWrapper(fromWords);\n\n function encode<Prefix extends string>(\n prefix: Prefix,\n words: number[] | Uint8Array,\n limit: number | false = 90\n ): `${Lowercase<Prefix>}1${string}` {\n astr('bech32.encode prefix', prefix);\n if (isBytes(words)) words = Array.from(words);\n anumArr('bech32.encode', words);\n const plen = prefix.length;\n if (plen === 0) throw new TypeError(`Invalid prefix length ${plen}`);\n const actualLength = plen + 7 + words.length;\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n const lowered = prefix.toLowerCase();\n const sum = bechChecksum(lowered, words, ENCODING_CONST);\n return `${lowered}1${BECH_ALPHABET.encode(words)}${sum}` as `${Lowercase<Prefix>}1${string}`;\n }\n\n function decode<Prefix extends string>(\n str: `${Prefix}1${string}`,\n limit?: number | false\n ): Bech32Decoded<Prefix>;\n function decode(str: string, limit?: number | false): Bech32Decoded;\n function decode(str: string, limit: number | false = 90): Bech32Decoded {\n astr('bech32.decode input', str);\n const slen = str.length;\n if (slen < 8 || (limit !== false && slen > limit))\n throw new TypeError(`invalid string length: ${slen} (${str}). Expected (8..${limit})`);\n // don't allow mixed case\n const lowered = str.toLowerCase();\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`);\n const sepIndex = lowered.lastIndexOf('1');\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`);\n const prefix = lowered.slice(0, sepIndex);\n const data = lowered.slice(sepIndex + 1);\n if (data.length < 6) throw new Error('Data must be at least 6 characters long');\n const words = BECH_ALPHABET.decode(data).slice(0, -6);\n const sum = bechChecksum(prefix, words, ENCODING_CONST);\n if (!data.endsWith(sum)) throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n return { prefix, words };\n }\n\n const decodeUnsafe = unsafeWrapper(decode);\n\n function decodeToBytes(str: string): Bech32DecodedWithArray {\n const { prefix, words } = decode(str, false);\n return { prefix, words, bytes: fromWords(words) };\n }\n\n function encodeFromBytes(prefix: string, bytes: Uint8Array) {\n return encode(prefix, toWords(bytes));\n }\n\n return {\n encode,\n decode,\n encodeFromBytes,\n decodeToBytes,\n decodeUnsafe,\n fromWords,\n fromWordsUnsafe,\n toWords,\n };\n}\n\n/**\n * bech32 from BIP 173. Operates on words.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32: Bech32 = genBech32('bech32');\n\n/**\n * bech32m from BIP 350. Operates on words.\n * It was to mitigate `bech32` weaknesses.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32m: Bech32 = genBech32('bech32m');\n\ndeclare const TextEncoder: any;\ndeclare const TextDecoder: any;\n\n/**\n * UTF-8-to-byte decoder. Uses built-in TextDecoder / TextEncoder.\n * @example\n * ```js\n * const b = utf8.decode(\"hey\"); // => new Uint8Array([ 104, 101, 121 ])\n * const str = utf8.encode(b); // \"hey\"\n * ```\n */\nexport const utf8: BytesCoder = {\n encode: (data) => new TextDecoder().decode(data),\n decode: (str) => new TextEncoder().encode(str),\n};\n\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\n// prettier-ignore\nconst hasHexBuiltin: boolean = /* @__PURE__ */ (() =>\n typeof (Uint8Array as any).from([]).toHex === 'function' &&\n typeof (Uint8Array as any).fromHex === 'function')();\n// prettier-ignore\nconst hexBuiltin: BytesCoder = {\n encode(data) { abytes(data); return (data as any).toHex(); },\n decode(s) { astr('hex', s); return (Uint8Array as any).fromHex(s); },\n};\n/**\n * hex string decoder. Uses built-in function, when available.\n * @example\n * ```js\n * const b = hex.decode(\"0102ff\"); // => new Uint8Array([ 1, 2, 255 ])\n * const str = hex.encode(b); // \"0102ff\"\n * ```\n */\nexport const hex: BytesCoder = hasHexBuiltin\n ? hexBuiltin\n : chain(\n radix2(4),\n alphabet('0123456789abcdef'),\n join(''),\n normalize((s: string) => {\n if (typeof s !== 'string' || s.length % 2 !== 0)\n throw new TypeError(\n `hex.decode: expected string, got ${typeof s} with length ${s.length}`\n );\n return s.toLowerCase();\n })\n );\n\nexport type SomeCoders = {\n utf8: BytesCoder;\n hex: BytesCoder;\n base16: BytesCoder;\n base32: BytesCoder;\n base64: BytesCoder;\n base64url: BytesCoder;\n base58: BytesCoder;\n base58xmr: BytesCoder;\n};\n// prettier-ignore\nconst CODERS: SomeCoders = {\n utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n};\ntype CoderType = keyof SomeCoders;\nconst coderTypeError =\n 'Invalid encoding type. Available types: utf8, hex, base16, base32, base64, base64url, base58, base58xmr';\n\n/** @deprecated */\nexport const bytesToString = (type: CoderType, bytes: Uint8Array): string => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type)) throw new TypeError(coderTypeError);\n if (!isBytes(bytes)) throw new TypeError('bytesToString() expects Uint8Array');\n return CODERS[type].encode(bytes);\n};\n\n/** @deprecated */\nexport const str: (type: CoderType, bytes: Uint8Array) => string = bytesToString; // as in python, but for bytes only\n\n/** @deprecated */\nexport const stringToBytes = (type: CoderType, str: string): Uint8Array => {\n if (!CODERS.hasOwnProperty(type)) throw new TypeError(coderTypeError);\n if (typeof str !== 'string') throw new TypeError('stringToBytes() expects string');\n return CODERS[type].decode(str);\n};\n/** @deprecated */\nexport const bytes: (type: CoderType, str: string) => Uint8Array = stringToBytes;\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { base58 } from \"@scure/base\";\nimport * as ed25519 from \"@noble/ed25519\";\nimport { PUBLIC_KEY_LENGTH } from \"../constants\";\nimport { CryptoError, CryptoErrorCode } from \"./errors\";\nimport type { Signature } from \"./signature\";\n\n/**\n * Represents a 32-byte Ed25519 public key.\n *\n * @example\n * ```typescript\n * // From base58 string\n * const pubkey = PublicKey.fromString(\"5ZqB9U...\");\n *\n * // From bytes\n * const pubkey = PublicKey.fromBytes(new Uint8Array(32));\n *\n * // Comparison\n * if (pubkey1.equals(pubkey2)) {\n * console.log(\"Keys match\");\n * }\n * ```\n */\nexport class PublicKey {\n\tprivate readonly bytes: Uint8Array;\n\n\tprivate constructor(bytes: Uint8Array) {\n\t\tif (bytes.length !== PUBLIC_KEY_LENGTH) {\n\t\t\tthrow CryptoError.invalidKeyLength(PUBLIC_KEY_LENGTH, bytes.length);\n\t\t}\n\t\tthis.bytes = new Uint8Array(bytes);\n\t}\n\n\t/**\n\t * Creates a PublicKey from raw bytes.\n\t *\n\t * @param bytes - 32-byte Ed25519 public key\n\t * @throws {CryptoError} If bytes length is not 32\n\t */\n\tstatic fromBytes(bytes: Uint8Array): PublicKey {\n\t\treturn new PublicKey(bytes);\n\t}\n\n\t/**\n\t * Creates a PublicKey from a base58-encoded string.\n\t *\n\t * @param str - Base58-encoded public key\n\t * @throws {CryptoError} If string is invalid or decodes to wrong length\n\t */\n\tstatic fromString(str: string): PublicKey {\n\t\ttry {\n\t\t\tconst bytes = base58.decode(str);\n\t\t\treturn new PublicKey(bytes);\n\t\t} catch (error) {\n\t\t\tthrow new CryptoError(\n\t\t\t\tCryptoErrorCode.INVALID_PUBLIC_KEY,\n\t\t\t\t`Invalid base58 public key: ${error instanceof Error ? error.message : \"unknown error\"}`,\n\t\t\t\t{ input: str },\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Returns a copy of the raw bytes.\n\t */\n\ttoBytes(): Uint8Array {\n\t\treturn new Uint8Array(this.bytes);\n\t}\n\n\t/**\n\t * Returns the base58-encoded string representation.\n\t */\n\ttoString(): string {\n\t\treturn base58.encode(this.bytes);\n\t}\n\n\t/**\n\t * Checks equality with another public key using constant-time comparison.\n\t */\n\tequals(other: PublicKey): boolean {\n\t\tif (!other) return false;\n\t\tif (this.bytes.length !== other.bytes.length) return false;\n\t\tfor (let i = 0; i < this.bytes.length; i++) {\n\t\t\tif (this.bytes[i] !== other.bytes[i]) return false;\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Verifies an Ed25519 signature over a message.\n\t *\n\t * @param message - Message bytes that were signed\n\t * @param signature - Signature to verify\n\t * @returns True if signature is valid, false otherwise\n\t *\n\t * @example\n\t * ```typescript\n\t * const message = new Uint8Array([1, 2, 3]);\n\t * const signature = keypair.sign(message);\n\t * const isValid = keypair.publicKey.verify(message, signature);\n\t * ```\n\t */\n\tverify(message: Uint8Array, signature: Signature): boolean {\n\t\treturn ed25519.verify(\n\t\t\tsignature.toBytes(),\n\t\t\tmessage,\n\t\t\tthis.bytes,\n\t\t);\n\t}\n\n\t/**\n\t * JSON serialization (returns base58 string).\n\t */\n\ttoJSON(): string {\n\t\treturn this.toString();\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { base58 } from \"@scure/base\";\nimport { SIGNATURE_LENGTH } from \"../constants\";\nimport { CryptoError, CryptoErrorCode } from \"./errors\";\n\n/**\n * Represents a 64-byte Ed25519 signature.\n *\n * @example\n * ```typescript\n * // From bytes\n * const sig = Signature.fromBytes(signatureBytes);\n *\n * // From base58 string\n * const sig = Signature.fromString(\"3Bxs4h...\");\n *\n * // Serialize\n * const base58 = sig.toString();\n * ```\n */\nexport class Signature {\n\tprivate readonly bytes: Uint8Array;\n\n\tprivate constructor(bytes: Uint8Array) {\n\t\tif (bytes.length !== SIGNATURE_LENGTH) {\n\t\t\tthrow CryptoError.invalidKeyLength(SIGNATURE_LENGTH, bytes.length);\n\t\t}\n\t\tthis.bytes = new Uint8Array(bytes);\n\t}\n\n\t/**\n\t * Creates a Signature from raw bytes.\n\t *\n\t * @param bytes - 64-byte Ed25519 signature\n\t * @throws {CryptoError} If bytes length is not 64\n\t */\n\tstatic fromBytes(bytes: Uint8Array): Signature {\n\t\treturn new Signature(bytes);\n\t}\n\n\t/**\n\t * Creates a Signature from a base58-encoded string.\n\t *\n\t * @param str - Base58-encoded signature\n\t * @throws {CryptoError} If string is invalid or decodes to wrong length\n\t */\n\tstatic fromString(str: string): Signature {\n\t\ttry {\n\t\t\tconst bytes = base58.decode(str);\n\t\t\treturn new Signature(bytes);\n\t\t} catch (error) {\n\t\t\tthrow new CryptoError(\n\t\t\t\tCryptoErrorCode.INVALID_SIGNATURE,\n\t\t\t\t`Invalid base58 signature: ${error instanceof Error ? error.message : \"unknown error\"}`,\n\t\t\t\t{ input: str },\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Returns a copy of the raw bytes.\n\t */\n\ttoBytes(): Uint8Array {\n\t\treturn new Uint8Array(this.bytes);\n\t}\n\n\t/**\n\t * Returns the base58-encoded string representation.\n\t */\n\ttoString(): string {\n\t\treturn base58.encode(this.bytes);\n\t}\n\n\t/**\n\t * JSON serialization (returns base58 string).\n\t */\n\ttoJSON(): string {\n\t\treturn this.toString();\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport * as ed25519 from \"@noble/ed25519\";\nimport { sha512 } from \"@noble/hashes/sha2\";\nimport { randomBytes } from \"@noble/hashes/utils\";\nimport { SECRET_KEY_LENGTH } from \"../constants\";\nimport { CryptoError } from \"./errors\";\nimport { PublicKey } from \"./public-key\";\nimport { Signature } from \"./signature\";\n\n// Configure ed25519 to use SHA-512\ned25519.hashes.sha512 = sha512;\n\n/**\n * Represents an Ed25519 keypair for signing transactions.\n *\n * Provides secure key generation, signing, and disposal capabilities.\n * Call {@link dispose} when finished to securely erase the private key from memory.\n *\n * @example\n * ```typescript\n * // Generate random keypair\n * const keypair = Keypair.generate();\n *\n * // Sign a message\n * const message = new TextEncoder().encode(\"Hello\");\n * const signature = keypair.sign(message);\n *\n * // Verify signature\n * const isValid = keypair.verify(message, signature);\n *\n * // Secure cleanup\n * keypair.dispose();\n * ```\n */\nexport class Keypair {\n\tpublic readonly publicKey: PublicKey;\n\tprivate secretKey: Uint8Array | null;\n\tprivate disposed = false;\n\n\tprivate constructor(secretKey: Uint8Array, publicKey?: Uint8Array) {\n\t\tif (secretKey.length !== SECRET_KEY_LENGTH) {\n\t\t\tthrow CryptoError.invalidKeyLength(SECRET_KEY_LENGTH, secretKey.length);\n\t\t}\n\n\t\tthis.secretKey = new Uint8Array(secretKey);\n\n\t\tif (publicKey) {\n\t\t\tthis.publicKey = PublicKey.fromBytes(publicKey);\n\t\t} else {\n\t\t\tconst publicKeyBytes = ed25519.getPublicKey(secretKey);\n\t\t\tthis.publicKey = PublicKey.fromBytes(publicKeyBytes);\n\t\t}\n\t}\n\n\t/**\n\t * Generates a random keypair using cryptographically secure randomness.\n\t */\n\tstatic generate(): Keypair {\n\t\tconst secretKey = randomBytes(SECRET_KEY_LENGTH);\n\t\treturn new Keypair(secretKey);\n\t}\n\n\t/**\n\t * Creates a keypair from a 32-byte secret key.\n\t * The public key will be derived from the secret key.\n\t *\n\t * @param secretKey - 32-byte Ed25519 secret key\n\t */\n\tstatic fromSecretKey(secretKey: Uint8Array): Keypair {\n\t\treturn new Keypair(secretKey);\n\t}\n\n\t/**\n\t * Creates a keypair from a secret key and pre-computed public key.\n\t *\n\t * Use this for SLIP-0010/BIP32 derived keys where the public key\n\t * should NOT be re-derived (compatibility with hierarchical derivation).\n\t *\n\t * @param secretKey - 32-byte Ed25519 secret key\n\t * @param publicKey - 32-byte Ed25519 public key (pre-computed)\n\t */\n\tstatic fromKeyPair(secretKey: Uint8Array, publicKey: Uint8Array): Keypair {\n\t\treturn new Keypair(secretKey, publicKey);\n\t}\n\n\t/**\n\t * Signs a message with this keypair.\n\t *\n\t * @param message - Message bytes to sign\n\t * @returns Ed25519 signature\n\t * @throws {CryptoError} If keypair has been disposed\n\t */\n\tsign(message: Uint8Array): Signature {\n\t\tthis.ensureNotDisposed();\n\n\t\tif (!this.secretKey) {\n\t\t\tthrow CryptoError.keypairDisposed();\n\t\t}\n\n\t\tconst signatureBytes = ed25519.sign(message, this.secretKey);\n\t\treturn Signature.fromBytes(signatureBytes);\n\t}\n\n\t/**\n\t * Verifies a signature against a message using this keypair's public key.\n\t *\n\t * @param message - Original message that was signed\n\t * @param signature - Signature to verify\n\t * @returns true if signature is valid\n\t */\n\tverify(message: Uint8Array, signature: Signature): boolean {\n\t\treturn ed25519.verify(\n\t\t\tsignature.toBytes(),\n\t\t\tmessage,\n\t\t\tthis.publicKey.toBytes(),\n\t\t);\n\t}\n\n\t/**\n\t * Exports the secret key for storage.\n\t *\n\t * **WARNING**: Keep this secret! Never expose it in logs, APIs, or client-side code.\n\t *\n\t * @returns Copy of the 32-byte secret key\n\t * @throws {CryptoError} If keypair has been disposed\n\t */\n\tsecretKeyBytes(): Uint8Array {\n\t\tthis.ensureNotDisposed();\n\n\t\tif (!this.secretKey) {\n\t\t\tthrow CryptoError.keypairDisposed();\n\t\t}\n\n\t\treturn new Uint8Array(this.secretKey);\n\t}\n\n\t/**\n\t * Checks if this keypair has been disposed.\n\t */\n\tisDisposed(): boolean {\n\t\treturn this.disposed;\n\t}\n\n\t/**\n\t * Securely erases the secret key from memory.\n\t *\n\t * After calling this method, the keypair can no longer be used for signing.\n\t * This is important for security when the keypair is no longer needed.\n\t */\n\tdispose(): void {\n\t\tif (this.disposed) return;\n\n\t\tif (this.secretKey) {\n\t\t\tthis.secretKey.fill(0);\n\t\t\tthis.secretKey = null;\n\t\t}\n\t\tthis.disposed = true;\n\t}\n\n\tprivate ensureNotDisposed(): void {\n\t\tif (this.disposed) {\n\t\t\tthrow CryptoError.keypairDisposed();\n\t\t}\n\t}\n}\n","/**\n * HMAC: RFC2104 message authentication code.\n * @module\n */\nimport { abytes, aexists, ahash, clean, type CHash, type Hash } from './utils.ts';\n\n/** Internal class for HMAC. */\nexport class _HMAC<T extends Hash<T>> implements Hash<_HMAC<T>> {\n oHash: T;\n iHash: T;\n blockLen: number;\n outputLen: number;\n private finished = false;\n private destroyed = false;\n\n constructor(hash: CHash, key: Uint8Array) {\n ahash(hash);\n abytes(key, undefined, 'key');\n this.iHash = hash.create() as T;\n if (typeof this.iHash.update !== 'function')\n throw new Error('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create() as T;\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n clean(pad);\n }\n update(buf: Uint8Array): this {\n aexists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out: Uint8Array): void {\n aexists(this);\n abytes(out, this.outputLen, 'output');\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest(): Uint8Array {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to?: _HMAC<T>): _HMAC<T> {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to ||= Object.create(Object.getPrototypeOf(this), {});\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to as this;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n clone(): _HMAC<T> {\n return this._cloneInto();\n }\n destroy(): void {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n * @example\n * import { hmac } from '@noble/hashes/hmac';\n * import { sha256 } from '@noble/hashes/sha2';\n * const mac1 = hmac(sha256, 'key', 'message');\n */\nexport const hmac: {\n (hash: CHash, key: Uint8Array, message: Uint8Array): Uint8Array;\n create(hash: CHash, key: Uint8Array): _HMAC<any>;\n} = (hash: CHash, key: Uint8Array, message: Uint8Array): Uint8Array =>\n new _HMAC<any>(hash, key).update(message).digest();\nhmac.create = (hash: CHash, key: Uint8Array) => new _HMAC<any>(hash, key);\n","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a: unknown): a is Uint8Array {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\n/** Asserts something is positive integer. */\nexport function anumber(n: number, title: string = ''): void {\n if (!Number.isSafeInteger(n) || n < 0) {\n const prefix = title && `\"${title}\" `;\n throw new Error(`${prefix}expected integer >= 0, got ${n}`);\n }\n}\n\n/** Asserts something is Uint8Array. */\nexport function abytes(value: Uint8Array, length?: number, title: string = ''): Uint8Array {\n const bytes = isBytes(value);\n const len = value?.length;\n const needsLen = length !== undefined;\n if (!bytes || (needsLen && len !== length)) {\n const prefix = title && `\"${title}\" `;\n const ofLen = needsLen ? ` of length ${length}` : '';\n const got = bytes ? `length=${len}` : `type=${typeof value}`;\n throw new Error(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);\n }\n return value;\n}\n\n/** Asserts something is hash */\nexport function ahash(h: CHash): void {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash must wrapped by utils.createHasher');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\n\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance: any, checkFinished = true): void {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\n\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out: any, instance: any): void {\n abytes(out, undefined, 'digestInto() output');\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('\"digestInto() output\" expected to be of length >=' + min);\n }\n}\n\n/** Generic type encompassing 8/16/32-byte arrays - but not 64-byte. */\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr: TypedArray): Uint8Array {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr: TypedArray): Uint32Array {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays: TypedArray[]): void {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr: TypedArray): DataView {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word: number, shift: number): number {\n return (word << (32 - shift)) | (word >>> shift);\n}\n\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word: number, shift: number): number {\n return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE: boolean = /* @__PURE__ */ (() =>\n new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n\n/** The byte swap operation for uint32 */\nexport function byteSwap(word: number): number {\n return (\n ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff)\n );\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE: (n: number) => number = isLE\n ? (n: number) => n\n : (n: number) => byteSwap(n);\n\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr: Uint32Array): Uint32Array {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n return arr;\n}\n\nexport const swap32IfBE: (u: Uint32Array) => Uint32Array = isLE\n ? (u: Uint32Array) => u\n : byteSwap32;\n\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin: boolean = /* @__PURE__ */ (() =>\n // @ts-ignore\n typeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin) return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 } as const;\nfunction asciiToBase16(ch: number): number | undefined {\n if (ch >= asciis._0 && ch <= asciis._9) return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F) return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f) return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n // @ts-ignore\n if (hasHexBuiltin) return Uint8Array.fromHex(hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) throw new Error('hex string expected, got unpadded hex of length ' + hl);\n const array = new Uint8Array(al);\n for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n const n1 = asciiToBase16(hex.charCodeAt(hi));\n const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n if (n1 === undefined || n2 === undefined) {\n const char = hex[hi] + hex[hi + 1];\n throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n }\n array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n }\n return array;\n}\n\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async (): Promise<void> => {};\n\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(\n iters: number,\n tick: number,\n cb: (i: number) => void\n): Promise<void> {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols, but ts doesn't see them: https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * Converts string to bytes using UTF8 encoding.\n * Built-in doesn't validate input to be string: we do the check.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n/** KDFs can accept string or Uint8Array for user convenience. */\nexport type KDFInput = string | Uint8Array;\n\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data: KDFInput, errorTitle = ''): Uint8Array {\n if (typeof data === 'string') return utf8ToBytes(data);\n return abytes(data, undefined, errorTitle);\n}\n\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n let sum = 0;\n for (let i = 0; i < arrays.length; i++) {\n const a = arrays[i];\n abytes(a);\n sum += a.length;\n }\n const res = new Uint8Array(sum);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const a = arrays[i];\n res.set(a, pad);\n pad += a.length;\n }\n return res;\n}\n\ntype EmptyObj = {};\n/** Merges default options and passed options. */\nexport function checkOpts<T1 extends EmptyObj, T2 extends EmptyObj>(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('options must be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\n/** Common interface for all hashes. */\nexport interface Hash<T> {\n blockLen: number; // Bytes per block\n outputLen: number; // Bytes in output\n update(buf: Uint8Array): this;\n digestInto(buf: Uint8Array): void;\n digest(): Uint8Array;\n destroy(): void;\n _cloneInto(to?: T): T;\n clone(): T;\n}\n\n/** PseudoRandom (number) Generator */\nexport interface PRG {\n addEntropy(seed: Uint8Array): void;\n randomBytes(length: number): Uint8Array;\n clean(): void;\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF<T extends Hash<T>> = Hash<T> & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\n/** Hash constructor */\nexport type HasherCons<T, Opts = undefined> = Opts extends undefined ? () => T : (opts?: Opts) => T;\n/** Optional hash params. */\nexport type HashInfo = {\n oid?: Uint8Array; // DER encoded OID in bytes\n};\n/** Hash function */\nexport type CHash<T extends Hash<T> = Hash<any>, Opts = undefined> = {\n outputLen: number;\n blockLen: number;\n} & HashInfo &\n (Opts extends undefined\n ? {\n (msg: Uint8Array): Uint8Array;\n create(): T;\n }\n : {\n (msg: Uint8Array, opts?: Opts): Uint8Array;\n create(opts?: Opts): T;\n });\n/** XOF with output */\nexport type CHashXOF<T extends HashXOF<T> = HashXOF<any>, Opts = undefined> = CHash<T, Opts>;\n\n/** Creates function with outputLen, blockLen, create properties from a class constructor. */\nexport function createHasher<T extends Hash<T>, Opts = undefined>(\n hashCons: HasherCons<T, Opts>,\n info: HashInfo = {}\n): CHash<T, Opts> {\n const hashC: any = (msg: Uint8Array, opts?: Opts) => hashCons(opts).update(msg).digest();\n const tmp = hashCons(undefined);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts?: Opts) => hashCons(opts);\n Object.assign(hashC, info);\n return Object.freeze(hashC);\n}\n\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n const cr = typeof globalThis === 'object' ? (globalThis as any).crypto : null;\n if (typeof cr?.getRandomValues !== 'function')\n throw new Error('crypto.getRandomValues must be defined');\n return cr.getRandomValues(new Uint8Array(bytesLength));\n}\n\n/** Creates OID opts for NIST hashes, with prefix 06 09 60 86 48 01 65 03 04 02. */\nexport const oidNist = (suffix: number): Required<HashInfo> => ({\n oid: Uint8Array.from([0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, suffix]),\n});\n","/**\n * HMAC: RFC2104 message authentication code.\n * @module\n */\nimport { abytes, aexists, ahash, clean, type CHash, type Hash } from './utils.ts';\n\n/** Internal class for HMAC. */\nexport class _HMAC<T extends Hash<T>> implements Hash<_HMAC<T>> {\n oHash: T;\n iHash: T;\n blockLen: number;\n outputLen: number;\n private finished = false;\n private destroyed = false;\n\n constructor(hash: CHash, key: Uint8Array) {\n ahash(hash);\n abytes(key, undefined, 'key');\n this.iHash = hash.create() as T;\n if (typeof this.iHash.update !== 'function')\n throw new Error('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create() as T;\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n clean(pad);\n }\n update(buf: Uint8Array): this {\n aexists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out: Uint8Array): void {\n aexists(this);\n abytes(out, this.outputLen, 'output');\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest(): Uint8Array {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to?: _HMAC<T>): _HMAC<T> {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to ||= Object.create(Object.getPrototypeOf(this), {});\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to as this;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n clone(): _HMAC<T> {\n return this._cloneInto();\n }\n destroy(): void {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n * @example\n * import { hmac } from '@noble/hashes/hmac';\n * import { sha256 } from '@noble/hashes/sha2';\n * const mac1 = hmac(sha256, 'key', 'message');\n */\nexport const hmac: {\n (hash: CHash, key: Uint8Array, message: Uint8Array): Uint8Array;\n create(hash: CHash, key: Uint8Array): _HMAC<any>;\n} = (hash: CHash, key: Uint8Array, message: Uint8Array): Uint8Array =>\n new _HMAC<any>(hash, key).update(message).digest();\nhmac.create = (hash: CHash, key: Uint8Array) => new _HMAC<any>(hash, key);\n","/**\n * PBKDF (RFC 2898). Can be used to create a key from password and salt.\n * @module\n */\nimport { hmac } from './hmac.ts';\n// prettier-ignore\nimport {\n ahash, anumber,\n asyncLoop, checkOpts, clean, createView, kdfInputToBytes,\n type CHash,\n type Hash,\n type KDFInput\n} from './utils.ts';\n\n/**\n * PBKDF2 options:\n * * c: iterations, should probably be higher than 100_000\n * * dkLen: desired length of derived key in bytes\n * * asyncTick: max time in ms for which async function can block execution\n */\nexport type Pbkdf2Opt = {\n c: number;\n dkLen?: number;\n asyncTick?: number;\n};\n// Common start and end for sync/async functions\nfunction pbkdf2Init(hash: CHash, _password: KDFInput, _salt: KDFInput, _opts: Pbkdf2Opt) {\n ahash(hash);\n const opts = checkOpts({ dkLen: 32, asyncTick: 10 }, _opts);\n const { c, dkLen, asyncTick } = opts;\n anumber(c, 'c');\n anumber(dkLen, 'dkLen');\n anumber(asyncTick, 'asyncTick');\n if (c < 1) throw new Error('iterations (c) must be >= 1');\n const password = kdfInputToBytes(_password, 'password');\n const salt = kdfInputToBytes(_salt, 'salt');\n // DK = PBKDF2(PRF, Password, Salt, c, dkLen);\n const DK = new Uint8Array(dkLen);\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n const PRF = hmac.create(hash, password);\n const PRFSalt = PRF._cloneInto().update(salt);\n return { c, dkLen, asyncTick, DK, PRF, PRFSalt };\n}\n\nfunction pbkdf2Output<T extends Hash<T>>(\n PRF: Hash<T>,\n PRFSalt: Hash<T>,\n DK: Uint8Array,\n prfW: Hash<T>,\n u: Uint8Array\n) {\n PRF.destroy();\n PRFSalt.destroy();\n if (prfW) prfW.destroy();\n clean(u);\n return DK;\n}\n\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function\n * @param hash - hash function that would be used e.g. sha256\n * @param password - password from which a derived key is generated\n * @param salt - cryptographic salt\n * @param opts - {c, dkLen} where c is work factor and dkLen is output message size\n * @example\n * const key = pbkdf2(sha256, 'password', 'salt', { dkLen: 32, c: Math.pow(2, 18) });\n */\nexport function pbkdf2(\n hash: CHash,\n password: KDFInput,\n salt: KDFInput,\n opts: Pbkdf2Opt\n): Uint8Array {\n const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW: any; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n for (let ui = 1; ui < c; ui++) {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++) Ti[i] ^= u[i];\n }\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\n\n/**\n * PBKDF2-HMAC: RFC 2898 key derivation function. Async version.\n * @example\n * await pbkdf2Async(sha256, 'password', 'salt', { dkLen: 32, c: 500_000 });\n */\nexport async function pbkdf2Async(\n hash: CHash,\n password: KDFInput,\n salt: KDFInput,\n opts: Pbkdf2Opt\n): Promise<Uint8Array> {\n const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW: any; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + ⋯ + Tdklen/hlen\n for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) {\n // Ti = F(Password, Salt, c, i)\n const Ti = DK.subarray(pos, pos + PRF.outputLen);\n view.setInt32(0, ti, false);\n // F(Password, Salt, c, i) = U1 ^ U2 ^ ⋯ ^ Uc\n // U1 = PRF(Password, Salt + INT_32_BE(i))\n (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u);\n Ti.set(u.subarray(0, Ti.length));\n await asyncLoop(c - 1, asyncTick, () => {\n // Uc = PRF(Password, Uc−1)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++) Ti[i] ^= u[i];\n });\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\n","/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nimport { abytes, aexists, aoutput, clean, createView, type Hash } from './utils.ts';\n\n/** Choice: a ? b : c */\nexport function Chi(a: number, b: number, c: number): number {\n return (a & b) ^ (~a & c);\n}\n\n/** Majority function, true if any two inputs is true. */\nexport function Maj(a: number, b: number, c: number): number {\n return (a & b) ^ (a & c) ^ (b & c);\n}\n\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport abstract class HashMD<T extends HashMD<T>> implements Hash<T> {\n protected abstract process(buf: DataView, offset: number): void;\n protected abstract get(): number[];\n protected abstract set(...args: number[]): void;\n abstract destroy(): void;\n protected abstract roundClean(): void;\n\n readonly blockLen: number;\n readonly outputLen: number;\n readonly padOffset: number;\n readonly isLE: boolean;\n\n // For partial updates less than block size\n protected buffer: Uint8Array;\n protected view: DataView;\n protected finished = false;\n protected length = 0;\n protected pos = 0;\n protected destroyed = false;\n\n constructor(blockLen: number, outputLen: number, padOffset: number, isLE: boolean) {\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data: Uint8Array): this {\n aexists(this);\n abytes(data);\n const { view, buffer, blockLen } = this;\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen) this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out: Uint8Array): void {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n clean(this.buffer.subarray(pos));\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++) buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n view.setBigUint64(blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n const len = this.outputLen;\n // NOTE: we do division by 4 later, which must be fused in single op with modulo by JIT\n if (len % 4) throw new Error('_sha2: outputLen must be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length) throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++) oview.setUint32(4 * i, state[i], isLE);\n }\n digest(): Uint8Array {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to?: T): T {\n to ||= new (this.constructor as any)() as T;\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.destroyed = destroyed;\n to.finished = finished;\n to.length = length;\n to.pos = pos;\n if (length % blockLen) to.buffer.set(buffer);\n return to as unknown as any;\n }\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53.\n * Check out `test/misc/sha2-gen-iv.js` for recomputation guide.\n */\n\n/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */\nexport const SHA256_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n]);\n\n/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */\nexport const SHA224_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4,\n]);\n\n/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */\nexport const SHA384_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4,\n]);\n\n/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */\nexport const SHA512_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,\n]);\n","/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\nfunction fromBig(\n n: bigint,\n le = false\n): {\n h: number;\n l: number;\n} {\n if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nfunction split(lst: bigint[], le = false): Uint32Array[] {\n const len = lst.length;\n let Ah = new Uint32Array(len);\n let Al = new Uint32Array(len);\n for (let i = 0; i < len; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number): bigint => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number): number => h >>> s;\nconst shrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number): number => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number): number => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number): number => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number): number => l;\nconst rotr32L = (h: number, _l: number): number => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number): number => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number): number => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number): number => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number): number => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(\n Ah: number,\n Al: number,\n Bh: number,\n Bl: number\n): {\n h: number;\n l: number;\n} {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number): number => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number): number =>\n (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number): number =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number): number =>\n (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number): number =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number): number =>\n (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig\n};\n// prettier-ignore\nconst u64: { fromBig: typeof fromBig; split: typeof split; toBig: (h: number, l: number) => bigint; shrSH: (h: number, _l: number, s: number) => number; shrSL: (h: number, l: number, s: number) => number; rotrSH: (h: number, l: number, s: number) => number; rotrSL: (h: number, l: number, s: number) => number; rotrBH: (h: number, l: number, s: number) => number; rotrBL: (h: number, l: number, s: number) => number; rotr32H: (_h: number, l: number) => number; rotr32L: (h: number, _l: number) => number; rotlSH: (h: number, l: number, s: number) => number; rotlSL: (h: number, l: number, s: number) => number; rotlBH: (h: number, l: number, s: number) => number; rotlBL: (h: number, l: number, s: number) => number; add: typeof add; add3L: (Al: number, Bl: number, Cl: number) => number; add3H: (low: number, Ah: number, Bh: number, Ch: number) => number; add4L: (Al: number, Bl: number, Cl: number, Dl: number) => number; add4H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number) => number; add5H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) => number; add5L: (Al: number, Bl: number, Cl: number, Dl: number, El: number) => number; } = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n","/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out [RFC 4634](https://www.rfc-editor.org/rfc/rfc4634) and\n * [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nimport { Chi, HashMD, Maj, SHA224_IV, SHA256_IV, SHA384_IV, SHA512_IV } from './_md.ts';\nimport * as u64 from './_u64.ts';\nimport { type CHash, clean, createHasher, oidNist, rotr } from './utils.ts';\n\n/**\n * Round constants:\n * First 32 bits of fractional parts of the cube roots of the first 64 primes 2..311)\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n\n/** Reusable temporary buffer. \"W\" comes straight from spec. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\n\n/** Internal 32-byte base SHA2 hash class. */\nabstract class SHA2_32B<T extends SHA2_32B<T>> extends HashMD<T> {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n protected abstract A: number;\n protected abstract B: number;\n protected abstract C: number;\n protected abstract D: number;\n protected abstract E: number;\n protected abstract F: number;\n protected abstract G: number;\n protected abstract H: number;\n\n constructor(outputLen: number) {\n super(64, outputLen, 8, false);\n }\n protected get(): [number, number, number, number, number, number, number, number] {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n protected set(\n A: number, B: number, C: number, D: number, E: number, F: number, G: number, H: number\n ): void {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n protected process(view: DataView, offset: number): void {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n protected roundClean(): void {\n clean(SHA256_W);\n }\n destroy(): void {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n clean(this.buffer);\n }\n}\n\n/** Internal SHA2-256 hash class. */\nexport class _SHA256 extends SHA2_32B<_SHA256> {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n protected A: number = SHA256_IV[0] | 0;\n protected B: number = SHA256_IV[1] | 0;\n protected C: number = SHA256_IV[2] | 0;\n protected D: number = SHA256_IV[3] | 0;\n protected E: number = SHA256_IV[4] | 0;\n protected F: number = SHA256_IV[5] | 0;\n protected G: number = SHA256_IV[6] | 0;\n protected H: number = SHA256_IV[7] | 0;\n constructor() {\n super(32);\n }\n}\n\n/** Internal SHA2-224 hash class. */\nexport class _SHA224 extends SHA2_32B<_SHA224> {\n protected A: number = SHA224_IV[0] | 0;\n protected B: number = SHA224_IV[1] | 0;\n protected C: number = SHA224_IV[2] | 0;\n protected D: number = SHA224_IV[3] | 0;\n protected E: number = SHA224_IV[4] | 0;\n protected F: number = SHA224_IV[5] | 0;\n protected G: number = SHA224_IV[6] | 0;\n protected H: number = SHA224_IV[7] | 0;\n constructor() {\n super(28);\n }\n}\n\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n\n// Round contants\n// First 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409\n// prettier-ignore\nconst K512 = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n\n// Reusable temporary buffers\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\n\n/** Internal 64-byte base SHA2 hash class. */\nabstract class SHA2_64B<T extends SHA2_64B<T>> extends HashMD<T> {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n // h -- high 32 bits, l -- low 32 bits\n protected abstract Ah: number;\n protected abstract Al: number;\n protected abstract Bh: number;\n protected abstract Bl: number;\n protected abstract Ch: number;\n protected abstract Cl: number;\n protected abstract Dh: number;\n protected abstract Dl: number;\n protected abstract Eh: number;\n protected abstract El: number;\n protected abstract Fh: number;\n protected abstract Fl: number;\n protected abstract Gh: number;\n protected abstract Gl: number;\n protected abstract Hh: number;\n protected abstract Hl: number;\n\n constructor(outputLen: number) {\n super(128, outputLen, 16, false);\n }\n // prettier-ignore\n protected get(): [\n number, number, number, number, number, number, number, number,\n number, number, number, number, number, number, number, number\n ] {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n protected set(\n Ah: number, Al: number, Bh: number, Bl: number, Ch: number, Cl: number, Dh: number, Dl: number,\n Eh: number, El: number, Fh: number, Fl: number, Gh: number, Gl: number, Hh: number, Hl: number\n ): void {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n protected process(view: DataView, offset: number): void {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n protected roundClean(): void {\n clean(SHA512_W_H, SHA512_W_L);\n }\n destroy(): void {\n clean(this.buffer);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\n\n/** Internal SHA2-512 hash class. */\nexport class _SHA512 extends SHA2_64B<_SHA512> {\n protected Ah: number = SHA512_IV[0] | 0;\n protected Al: number = SHA512_IV[1] | 0;\n protected Bh: number = SHA512_IV[2] | 0;\n protected Bl: number = SHA512_IV[3] | 0;\n protected Ch: number = SHA512_IV[4] | 0;\n protected Cl: number = SHA512_IV[5] | 0;\n protected Dh: number = SHA512_IV[6] | 0;\n protected Dl: number = SHA512_IV[7] | 0;\n protected Eh: number = SHA512_IV[8] | 0;\n protected El: number = SHA512_IV[9] | 0;\n protected Fh: number = SHA512_IV[10] | 0;\n protected Fl: number = SHA512_IV[11] | 0;\n protected Gh: number = SHA512_IV[12] | 0;\n protected Gl: number = SHA512_IV[13] | 0;\n protected Hh: number = SHA512_IV[14] | 0;\n protected Hl: number = SHA512_IV[15] | 0;\n\n constructor() {\n super(64);\n }\n}\n\n/** Internal SHA2-384 hash class. */\nexport class _SHA384 extends SHA2_64B<_SHA384> {\n protected Ah: number = SHA384_IV[0] | 0;\n protected Al: number = SHA384_IV[1] | 0;\n protected Bh: number = SHA384_IV[2] | 0;\n protected Bl: number = SHA384_IV[3] | 0;\n protected Ch: number = SHA384_IV[4] | 0;\n protected Cl: number = SHA384_IV[5] | 0;\n protected Dh: number = SHA384_IV[6] | 0;\n protected Dl: number = SHA384_IV[7] | 0;\n protected Eh: number = SHA384_IV[8] | 0;\n protected El: number = SHA384_IV[9] | 0;\n protected Fh: number = SHA384_IV[10] | 0;\n protected Fl: number = SHA384_IV[11] | 0;\n protected Gh: number = SHA384_IV[12] | 0;\n protected Gl: number = SHA384_IV[13] | 0;\n protected Hh: number = SHA384_IV[14] | 0;\n protected Hl: number = SHA384_IV[15] | 0;\n\n constructor() {\n super(48);\n }\n}\n\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See `test/misc/sha2-gen-iv.js`.\n */\n\n/** SHA512/224 IV */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n 0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n 0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n\n/** SHA512/256 IV */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n 0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n 0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\n\n/** Internal SHA2-512/224 hash class. */\nexport class _SHA512_224 extends SHA2_64B<_SHA512_224> {\n protected Ah: number = T224_IV[0] | 0;\n protected Al: number = T224_IV[1] | 0;\n protected Bh: number = T224_IV[2] | 0;\n protected Bl: number = T224_IV[3] | 0;\n protected Ch: number = T224_IV[4] | 0;\n protected Cl: number = T224_IV[5] | 0;\n protected Dh: number = T224_IV[6] | 0;\n protected Dl: number = T224_IV[7] | 0;\n protected Eh: number = T224_IV[8] | 0;\n protected El: number = T224_IV[9] | 0;\n protected Fh: number = T224_IV[10] | 0;\n protected Fl: number = T224_IV[11] | 0;\n protected Gh: number = T224_IV[12] | 0;\n protected Gl: number = T224_IV[13] | 0;\n protected Hh: number = T224_IV[14] | 0;\n protected Hl: number = T224_IV[15] | 0;\n\n constructor() {\n super(28);\n }\n}\n\n/** Internal SHA2-512/256 hash class. */\nexport class _SHA512_256 extends SHA2_64B<_SHA512_256> {\n protected Ah: number = T256_IV[0] | 0;\n protected Al: number = T256_IV[1] | 0;\n protected Bh: number = T256_IV[2] | 0;\n protected Bl: number = T256_IV[3] | 0;\n protected Ch: number = T256_IV[4] | 0;\n protected Cl: number = T256_IV[5] | 0;\n protected Dh: number = T256_IV[6] | 0;\n protected Dl: number = T256_IV[7] | 0;\n protected Eh: number = T256_IV[8] | 0;\n protected El: number = T256_IV[9] | 0;\n protected Fh: number = T256_IV[10] | 0;\n protected Fl: number = T256_IV[11] | 0;\n protected Gh: number = T256_IV[12] | 0;\n protected Gl: number = T256_IV[13] | 0;\n protected Hh: number = T256_IV[14] | 0;\n protected Hl: number = T256_IV[15] | 0;\n\n constructor() {\n super(32);\n }\n}\n\n/**\n * SHA2-256 hash function from RFC 4634. In JS it's the fastest: even faster than Blake3. Some info:\n *\n * - Trying 2^128 hashes would get 50% chance of collision, using birthday attack.\n * - BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n * - Each sha256 hash is executing 2^18 bit operations.\n * - Good 2024 ASICs can do 200Th/sec with 3500 watts of power, corresponding to 2^36 hashes/joule.\n */\nexport const sha256: CHash<_SHA256> = /* @__PURE__ */ createHasher(\n () => new _SHA256(),\n /* @__PURE__ */ oidNist(0x01)\n);\n/** SHA2-224 hash function from RFC 4634 */\nexport const sha224: CHash<_SHA224> = /* @__PURE__ */ createHasher(\n () => new _SHA224(),\n /* @__PURE__ */ oidNist(0x04)\n);\n\n/** SHA2-512 hash function from RFC 4634. */\nexport const sha512: CHash<_SHA512> = /* @__PURE__ */ createHasher(\n () => new _SHA512(),\n /* @__PURE__ */ oidNist(0x03)\n);\n/** SHA2-384 hash function from RFC 4634. */\nexport const sha384: CHash<_SHA384> = /* @__PURE__ */ createHasher(\n () => new _SHA384(),\n /* @__PURE__ */ oidNist(0x02)\n);\n\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_256: CHash<_SHA512_256> = /* @__PURE__ */ createHasher(\n () => new _SHA512_256(),\n /* @__PURE__ */ oidNist(0x06)\n);\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_224: CHash<_SHA512_224> = /* @__PURE__ */ createHasher(\n () => new _SHA512_224(),\n /* @__PURE__ */ oidNist(0x05)\n);\n","/*! scure-bip39 - MIT License (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) */\nimport { pbkdf2, pbkdf2Async } from '@noble/hashes/pbkdf2.js';\nimport { sha256, sha512 } from '@noble/hashes/sha2.js';\nimport { abytes, anumber, randomBytes } from '@noble/hashes/utils.js';\nimport { pbkdf2 as pbkdf2web, sha512 as sha512web } from '@noble/hashes/webcrypto.js';\nimport { utils as baseUtils } from '@scure/base';\n// Japanese wordlist\nconst isJapanese = (wordlist) => wordlist[0] === '\\u3042\\u3044\\u3053\\u304f\\u3057\\u3093';\n// Normalization replaces equivalent sequences of characters\n// so that any two texts that are equivalent will be reduced\n// to the same sequence of code points, called the normal form of the original text.\n// https://tonsky.me/blog/unicode/#why-is-a----\nfunction nfkd(str) {\n if (typeof str !== 'string')\n throw new TypeError('invalid mnemonic type: ' + typeof str);\n return str.normalize('NFKD');\n}\nfunction normalize(str) {\n const norm = nfkd(str);\n const words = norm.split(' ');\n if (![12, 15, 18, 21, 24].includes(words.length))\n throw new Error('Invalid mnemonic');\n return { nfkd: norm, words };\n}\nfunction aentropy(ent) {\n abytes(ent);\n if (![16, 20, 24, 28, 32].includes(ent.length))\n throw new Error('invalid entropy length');\n}\n/**\n * Generate x random words. Uses Cryptographically-Secure Random Number Generator.\n * @param wordlist imported wordlist for specific language\n * @param strength mnemonic strength 128-256 bits\n * @example\n * generateMnemonic(wordlist, 128)\n * // 'legal winner thank year wave sausage worth useful legal winner thank yellow'\n */\nexport function generateMnemonic(wordlist, strength = 128) {\n anumber(strength);\n if (strength % 32 !== 0 || strength > 256)\n throw new TypeError('Invalid entropy');\n return entropyToMnemonic(randomBytes(strength / 8), wordlist);\n}\nconst calcChecksum = (entropy) => {\n // Checksum is ent.length/4 bits long\n const bitsLeft = 8 - entropy.length / 4;\n // Zero rightmost \"bitsLeft\" bits in byte\n // For example: bitsLeft=4 val=10111101 -> 10110000\n return new Uint8Array([(sha256(entropy)[0] >> bitsLeft) << bitsLeft]);\n};\nfunction getCoder(wordlist) {\n if (!Array.isArray(wordlist) || wordlist.length !== 2048 || typeof wordlist[0] !== 'string')\n throw new Error('Wordlist: expected array of 2048 strings');\n wordlist.forEach((i) => {\n if (typeof i !== 'string')\n throw new Error('wordlist: non-string element: ' + i);\n });\n return baseUtils.chain(baseUtils.checksum(1, calcChecksum), baseUtils.radix2(11, true), baseUtils.alphabet(wordlist));\n}\n/**\n * Reversible: Converts mnemonic string to raw entropy in form of byte array.\n * @param mnemonic 12-24 words\n * @param wordlist imported wordlist for specific language\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * mnemonicToEntropy(mnem, wordlist)\n * // Produces\n * new Uint8Array([\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f\n * ])\n */\nexport function mnemonicToEntropy(mnemonic, wordlist) {\n const { words } = normalize(mnemonic);\n const entropy = getCoder(wordlist).decode(words);\n aentropy(entropy);\n return entropy;\n}\n/**\n * Reversible: Converts raw entropy in form of byte array to mnemonic string.\n * @param entropy byte array\n * @param wordlist imported wordlist for specific language\n * @returns 12-24 words\n * @example\n * const ent = new Uint8Array([\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f\n * ]);\n * entropyToMnemonic(ent, wordlist);\n * // 'legal winner thank year wave sausage worth useful legal winner thank yellow'\n */\nexport function entropyToMnemonic(entropy, wordlist) {\n aentropy(entropy);\n const words = getCoder(wordlist).encode(entropy);\n return words.join(isJapanese(wordlist) ? '\\u3000' : ' ');\n}\n/**\n * Validates mnemonic for being 12-24 words contained in `wordlist`.\n */\nexport function validateMnemonic(mnemonic, wordlist) {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n }\n catch (e) {\n return false;\n }\n return true;\n}\nconst psalt = (passphrase) => nfkd('mnemonic' + passphrase);\n/**\n * Irreversible: Uses KDF to derive 64 bytes of key data from mnemonic + optional password.\n * @param mnemonic 12-24 words\n * @param passphrase string that will additionally protect the key\n * @returns 64 bytes of key data\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * await mnemonicToSeed(mnem, 'password');\n * // new Uint8Array([...64 bytes])\n */\nexport function mnemonicToSeed(mnemonic, passphrase = '') {\n return pbkdf2Async(sha512, normalize(mnemonic).nfkd, psalt(passphrase), { c: 2048, dkLen: 64 });\n}\n/**\n * Irreversible: Uses KDF to derive 64 bytes of key data from mnemonic + optional password.\n * @param mnemonic 12-24 words\n * @param passphrase string that will additionally protect the key\n * @returns 64 bytes of key data\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * mnemonicToSeedSync(mnem, 'password');\n * // new Uint8Array([...64 bytes])\n */\nexport function mnemonicToSeedSync(mnemonic, passphrase = '') {\n return pbkdf2(sha512, normalize(mnemonic).nfkd, psalt(passphrase), { c: 2048, dkLen: 64 });\n}\n/**\n * Uses native, built-in functionality, provided by globalThis.crypto.\n * Irreversible: Uses KDF to derive 64 bytes of key data from mnemonic + optional password.\n * @param mnemonic 12-24 words\n * @param passphrase string that will additionally protect the key\n * @returns 64 bytes of key data\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * mnemonicToSeedWebcrypto(mnem, 'password');\n * // new Uint8Array([...64 bytes])\n */\nexport function mnemonicToSeedWebcrypto(mnemonic, passphrase = '') {\n return pbkdf2web(sha512web, normalize(mnemonic).nfkd, psalt(passphrase), { c: 2048, dkLen: 64 });\n}\n","export const wordlist = `abandon\nability\nable\nabout\nabove\nabsent\nabsorb\nabstract\nabsurd\nabuse\naccess\naccident\naccount\naccuse\nachieve\nacid\nacoustic\nacquire\nacross\nact\naction\nactor\nactress\nactual\nadapt\nadd\naddict\naddress\nadjust\nadmit\nadult\nadvance\nadvice\naerobic\naffair\nafford\nafraid\nagain\nage\nagent\nagree\nahead\naim\nair\nairport\naisle\nalarm\nalbum\nalcohol\nalert\nalien\nall\nalley\nallow\nalmost\nalone\nalpha\nalready\nalso\nalter\nalways\namateur\namazing\namong\namount\namused\nanalyst\nanchor\nancient\nanger\nangle\nangry\nanimal\nankle\nannounce\nannual\nanother\nanswer\nantenna\nantique\nanxiety\nany\napart\napology\nappear\napple\napprove\napril\narch\narctic\narea\narena\nargue\narm\narmed\narmor\narmy\naround\narrange\narrest\narrive\narrow\nart\nartefact\nartist\nartwork\nask\naspect\nassault\nasset\nassist\nassume\nasthma\nathlete\natom\nattack\nattend\nattitude\nattract\nauction\naudit\naugust\naunt\nauthor\nauto\nautumn\naverage\navocado\navoid\nawake\naware\naway\nawesome\nawful\nawkward\naxis\nbaby\nbachelor\nbacon\nbadge\nbag\nbalance\nbalcony\nball\nbamboo\nbanana\nbanner\nbar\nbarely\nbargain\nbarrel\nbase\nbasic\nbasket\nbattle\nbeach\nbean\nbeauty\nbecause\nbecome\nbeef\nbefore\nbegin\nbehave\nbehind\nbelieve\nbelow\nbelt\nbench\nbenefit\nbest\nbetray\nbetter\nbetween\nbeyond\nbicycle\nbid\nbike\nbind\nbiology\nbird\nbirth\nbitter\nblack\nblade\nblame\nblanket\nblast\nbleak\nbless\nblind\nblood\nblossom\nblouse\nblue\nblur\nblush\nboard\nboat\nbody\nboil\nbomb\nbone\nbonus\nbook\nboost\nborder\nboring\nborrow\nboss\nbottom\nbounce\nbox\nboy\nbracket\nbrain\nbrand\nbrass\nbrave\nbread\nbreeze\nbrick\nbridge\nbrief\nbright\nbring\nbrisk\nbroccoli\nbroken\nbronze\nbroom\nbrother\nbrown\nbrush\nbubble\nbuddy\nbudget\nbuffalo\nbuild\nbulb\nbulk\nbullet\nbundle\nbunker\nburden\nburger\nburst\nbus\nbusiness\nbusy\nbutter\nbuyer\nbuzz\ncabbage\ncabin\ncable\ncactus\ncage\ncake\ncall\ncalm\ncamera\ncamp\ncan\ncanal\ncancel\ncandy\ncannon\ncanoe\ncanvas\ncanyon\ncapable\ncapital\ncaptain\ncar\ncarbon\ncard\ncargo\ncarpet\ncarry\ncart\ncase\ncash\ncasino\ncastle\ncasual\ncat\ncatalog\ncatch\ncategory\ncattle\ncaught\ncause\ncaution\ncave\nceiling\ncelery\ncement\ncensus\ncentury\ncereal\ncertain\nchair\nchalk\nchampion\nchange\nchaos\nchapter\ncharge\nchase\nchat\ncheap\ncheck\ncheese\nchef\ncherry\nchest\nchicken\nchief\nchild\nchimney\nchoice\nchoose\nchronic\nchuckle\nchunk\nchurn\ncigar\ncinnamon\ncircle\ncitizen\ncity\ncivil\nclaim\nclap\nclarify\nclaw\nclay\nclean\nclerk\nclever\nclick\nclient\ncliff\nclimb\nclinic\nclip\nclock\nclog\nclose\ncloth\ncloud\nclown\nclub\nclump\ncluster\nclutch\ncoach\ncoast\ncoconut\ncode\ncoffee\ncoil\ncoin\ncollect\ncolor\ncolumn\ncombine\ncome\ncomfort\ncomic\ncommon\ncompany\nconcert\nconduct\nconfirm\ncongress\nconnect\nconsider\ncontrol\nconvince\ncook\ncool\ncopper\ncopy\ncoral\ncore\ncorn\ncorrect\ncost\ncotton\ncouch\ncountry\ncouple\ncourse\ncousin\ncover\ncoyote\ncrack\ncradle\ncraft\ncram\ncrane\ncrash\ncrater\ncrawl\ncrazy\ncream\ncredit\ncreek\ncrew\ncricket\ncrime\ncrisp\ncritic\ncrop\ncross\ncrouch\ncrowd\ncrucial\ncruel\ncruise\ncrumble\ncrunch\ncrush\ncry\ncrystal\ncube\nculture\ncup\ncupboard\ncurious\ncurrent\ncurtain\ncurve\ncushion\ncustom\ncute\ncycle\ndad\ndamage\ndamp\ndance\ndanger\ndaring\ndash\ndaughter\ndawn\nday\ndeal\ndebate\ndebris\ndecade\ndecember\ndecide\ndecline\ndecorate\ndecrease\ndeer\ndefense\ndefine\ndefy\ndegree\ndelay\ndeliver\ndemand\ndemise\ndenial\ndentist\ndeny\ndepart\ndepend\ndeposit\ndepth\ndeputy\nderive\ndescribe\ndesert\ndesign\ndesk\ndespair\ndestroy\ndetail\ndetect\ndevelop\ndevice\ndevote\ndiagram\ndial\ndiamond\ndiary\ndice\ndiesel\ndiet\ndiffer\ndigital\ndignity\ndilemma\ndinner\ndinosaur\ndirect\ndirt\ndisagree\ndiscover\ndisease\ndish\ndismiss\ndisorder\ndisplay\ndistance\ndivert\ndivide\ndivorce\ndizzy\ndoctor\ndocument\ndog\ndoll\ndolphin\ndomain\ndonate\ndonkey\ndonor\ndoor\ndose\ndouble\ndove\ndraft\ndragon\ndrama\ndrastic\ndraw\ndream\ndress\ndrift\ndrill\ndrink\ndrip\ndrive\ndrop\ndrum\ndry\nduck\ndumb\ndune\nduring\ndust\ndutch\nduty\ndwarf\ndynamic\neager\neagle\nearly\nearn\nearth\neasily\neast\neasy\necho\necology\neconomy\nedge\nedit\neducate\neffort\negg\neight\neither\nelbow\nelder\nelectric\nelegant\nelement\nelephant\nelevator\nelite\nelse\nembark\nembody\nembrace\nemerge\nemotion\nemploy\nempower\nempty\nenable\nenact\nend\nendless\nendorse\nenemy\nenergy\nenforce\nengage\nengine\nenhance\nenjoy\nenlist\nenough\nenrich\nenroll\nensure\nenter\nentire\nentry\nenvelope\nepisode\nequal\nequip\nera\nerase\nerode\nerosion\nerror\nerupt\nescape\nessay\nessence\nestate\neternal\nethics\nevidence\nevil\nevoke\nevolve\nexact\nexample\nexcess\nexchange\nexcite\nexclude\nexcuse\nexecute\nexercise\nexhaust\nexhibit\nexile\nexist\nexit\nexotic\nexpand\nexpect\nexpire\nexplain\nexpose\nexpress\nextend\nextra\neye\neyebrow\nfabric\nface\nfaculty\nfade\nfaint\nfaith\nfall\nfalse\nfame\nfamily\nfamous\nfan\nfancy\nfantasy\nfarm\nfashion\nfat\nfatal\nfather\nfatigue\nfault\nfavorite\nfeature\nfebruary\nfederal\nfee\nfeed\nfeel\nfemale\nfence\nfestival\nfetch\nfever\nfew\nfiber\nfiction\nfield\nfigure\nfile\nfilm\nfilter\nfinal\nfind\nfine\nfinger\nfinish\nfire\nfirm\nfirst\nfiscal\nfish\nfit\nfitness\nfix\nflag\nflame\nflash\nflat\nflavor\nflee\nflight\nflip\nfloat\nflock\nfloor\nflower\nfluid\nflush\nfly\nfoam\nfocus\nfog\nfoil\nfold\nfollow\nfood\nfoot\nforce\nforest\nforget\nfork\nfortune\nforum\nforward\nfossil\nfoster\nfound\nfox\nfragile\nframe\nfrequent\nfresh\nfriend\nfringe\nfrog\nfront\nfrost\nfrown\nfrozen\nfruit\nfuel\nfun\nfunny\nfurnace\nfury\nfuture\ngadget\ngain\ngalaxy\ngallery\ngame\ngap\ngarage\ngarbage\ngarden\ngarlic\ngarment\ngas\ngasp\ngate\ngather\ngauge\ngaze\ngeneral\ngenius\ngenre\ngentle\ngenuine\ngesture\nghost\ngiant\ngift\ngiggle\nginger\ngiraffe\ngirl\ngive\nglad\nglance\nglare\nglass\nglide\nglimpse\nglobe\ngloom\nglory\nglove\nglow\nglue\ngoat\ngoddess\ngold\ngood\ngoose\ngorilla\ngospel\ngossip\ngovern\ngown\ngrab\ngrace\ngrain\ngrant\ngrape\ngrass\ngravity\ngreat\ngreen\ngrid\ngrief\ngrit\ngrocery\ngroup\ngrow\ngrunt\nguard\nguess\nguide\nguilt\nguitar\ngun\ngym\nhabit\nhair\nhalf\nhammer\nhamster\nhand\nhappy\nharbor\nhard\nharsh\nharvest\nhat\nhave\nhawk\nhazard\nhead\nhealth\nheart\nheavy\nhedgehog\nheight\nhello\nhelmet\nhelp\nhen\nhero\nhidden\nhigh\nhill\nhint\nhip\nhire\nhistory\nhobby\nhockey\nhold\nhole\nholiday\nhollow\nhome\nhoney\nhood\nhope\nhorn\nhorror\nhorse\nhospital\nhost\nhotel\nhour\nhover\nhub\nhuge\nhuman\nhumble\nhumor\nhundred\nhungry\nhunt\nhurdle\nhurry\nhurt\nhusband\nhybrid\nice\nicon\nidea\nidentify\nidle\nignore\nill\nillegal\nillness\nimage\nimitate\nimmense\nimmune\nimpact\nimpose\nimprove\nimpulse\ninch\ninclude\nincome\nincrease\nindex\nindicate\nindoor\nindustry\ninfant\ninflict\ninform\ninhale\ninherit\ninitial\ninject\ninjury\ninmate\ninner\ninnocent\ninput\ninquiry\ninsane\ninsect\ninside\ninspire\ninstall\nintact\ninterest\ninto\ninvest\ninvite\ninvolve\niron\nisland\nisolate\nissue\nitem\nivory\njacket\njaguar\njar\njazz\njealous\njeans\njelly\njewel\njob\njoin\njoke\njourney\njoy\njudge\njuice\njump\njungle\njunior\njunk\njust\nkangaroo\nkeen\nkeep\nketchup\nkey\nkick\nkid\nkidney\nkind\nkingdom\nkiss\nkit\nkitchen\nkite\nkitten\nkiwi\nknee\nknife\nknock\nknow\nlab\nlabel\nlabor\nladder\nlady\nlake\nlamp\nlanguage\nlaptop\nlarge\nlater\nlatin\nlaugh\nlaundry\nlava\nlaw\nlawn\nlawsuit\nlayer\nlazy\nleader\nleaf\nlearn\nleave\nlecture\nleft\nleg\nlegal\nlegend\nleisure\nlemon\nlend\nlength\nlens\nleopard\nlesson\nletter\nlevel\nliar\nliberty\nlibrary\nlicense\nlife\nlift\nlight\nlike\nlimb\nlimit\nlink\nlion\nliquid\nlist\nlittle\nlive\nlizard\nload\nloan\nlobster\nlocal\nlock\nlogic\nlonely\nlong\nloop\nlottery\nloud\nlounge\nlove\nloyal\nlucky\nluggage\nlumber\nlunar\nlunch\nluxury\nlyrics\nmachine\nmad\nmagic\nmagnet\nmaid\nmail\nmain\nmajor\nmake\nmammal\nman\nmanage\nmandate\nmango\nmansion\nmanual\nmaple\nmarble\nmarch\nmargin\nmarine\nmarket\nmarriage\nmask\nmass\nmaster\nmatch\nmaterial\nmath\nmatrix\nmatter\nmaximum\nmaze\nmeadow\nmean\nmeasure\nmeat\nmechanic\nmedal\nmedia\nmelody\nmelt\nmember\nmemory\nmention\nmenu\nmercy\nmerge\nmerit\nmerry\nmesh\nmessage\nmetal\nmethod\nmiddle\nmidnight\nmilk\nmillion\nmimic\nmind\nminimum\nminor\nminute\nmiracle\nmirror\nmisery\nmiss\nmistake\nmix\nmixed\nmixture\nmobile\nmodel\nmodify\nmom\nmoment\nmonitor\nmonkey\nmonster\nmonth\nmoon\nmoral\nmore\nmorning\nmosquito\nmother\nmotion\nmotor\nmountain\nmouse\nmove\nmovie\nmuch\nmuffin\nmule\nmultiply\nmuscle\nmuseum\nmushroom\nmusic\nmust\nmutual\nmyself\nmystery\nmyth\nnaive\nname\nnapkin\nnarrow\nnasty\nnation\nnature\nnear\nneck\nneed\nnegative\nneglect\nneither\nnephew\nnerve\nnest\nnet\nnetwork\nneutral\nnever\nnews\nnext\nnice\nnight\nnoble\nnoise\nnominee\nnoodle\nnormal\nnorth\nnose\nnotable\nnote\nnothing\nnotice\nnovel\nnow\nnuclear\nnumber\nnurse\nnut\noak\nobey\nobject\noblige\nobscure\nobserve\nobtain\nobvious\noccur\nocean\noctober\nodor\noff\noffer\noffice\noften\noil\nokay\nold\nolive\nolympic\nomit\nonce\none\nonion\nonline\nonly\nopen\nopera\nopinion\noppose\noption\norange\norbit\norchard\norder\nordinary\norgan\norient\noriginal\norphan\nostrich\nother\noutdoor\nouter\noutput\noutside\noval\noven\nover\nown\nowner\noxygen\noyster\nozone\npact\npaddle\npage\npair\npalace\npalm\npanda\npanel\npanic\npanther\npaper\nparade\nparent\npark\nparrot\nparty\npass\npatch\npath\npatient\npatrol\npattern\npause\npave\npayment\npeace\npeanut\npear\npeasant\npelican\npen\npenalty\npencil\npeople\npepper\nperfect\npermit\nperson\npet\nphone\nphoto\nphrase\nphysical\npiano\npicnic\npicture\npiece\npig\npigeon\npill\npilot\npink\npioneer\npipe\npistol\npitch\npizza\nplace\nplanet\nplastic\nplate\nplay\nplease\npledge\npluck\nplug\nplunge\npoem\npoet\npoint\npolar\npole\npolice\npond\npony\npool\npopular\nportion\nposition\npossible\npost\npotato\npottery\npoverty\npowder\npower\npractice\npraise\npredict\nprefer\nprepare\npresent\npretty\nprevent\nprice\npride\nprimary\nprint\npriority\nprison\nprivate\nprize\nproblem\nprocess\nproduce\nprofit\nprogram\nproject\npromote\nproof\nproperty\nprosper\nprotect\nproud\nprovide\npublic\npudding\npull\npulp\npulse\npumpkin\npunch\npupil\npuppy\npurchase\npurity\npurpose\npurse\npush\nput\npuzzle\npyramid\nquality\nquantum\nquarter\nquestion\nquick\nquit\nquiz\nquote\nrabbit\nraccoon\nrace\nrack\nradar\nradio\nrail\nrain\nraise\nrally\nramp\nranch\nrandom\nrange\nrapid\nrare\nrate\nrather\nraven\nraw\nrazor\nready\nreal\nreason\nrebel\nrebuild\nrecall\nreceive\nrecipe\nrecord\nrecycle\nreduce\nreflect\nreform\nrefuse\nregion\nregret\nregular\nreject\nrelax\nrelease\nrelief\nrely\nremain\nremember\nremind\nremove\nrender\nrenew\nrent\nreopen\nrepair\nrepeat\nreplace\nreport\nrequire\nrescue\nresemble\nresist\nresource\nresponse\nresult\nretire\nretreat\nreturn\nreunion\nreveal\nreview\nreward\nrhythm\nrib\nribbon\nrice\nrich\nride\nridge\nrifle\nright\nrigid\nring\nriot\nripple\nrisk\nritual\nrival\nriver\nroad\nroast\nrobot\nrobust\nrocket\nromance\nroof\nrookie\nroom\nrose\nrotate\nrough\nround\nroute\nroyal\nrubber\nrude\nrug\nrule\nrun\nrunway\nrural\nsad\nsaddle\nsadness\nsafe\nsail\nsalad\nsalmon\nsalon\nsalt\nsalute\nsame\nsample\nsand\nsatisfy\nsatoshi\nsauce\nsausage\nsave\nsay\nscale\nscan\nscare\nscatter\nscene\nscheme\nschool\nscience\nscissors\nscorpion\nscout\nscrap\nscreen\nscript\nscrub\nsea\nsearch\nseason\nseat\nsecond\nsecret\nsection\nsecurity\nseed\nseek\nsegment\nselect\nsell\nseminar\nsenior\nsense\nsentence\nseries\nservice\nsession\nsettle\nsetup\nseven\nshadow\nshaft\nshallow\nshare\nshed\nshell\nsheriff\nshield\nshift\nshine\nship\nshiver\nshock\nshoe\nshoot\nshop\nshort\nshoulder\nshove\nshrimp\nshrug\nshuffle\nshy\nsibling\nsick\nside\nsiege\nsight\nsign\nsilent\nsilk\nsilly\nsilver\nsimilar\nsimple\nsince\nsing\nsiren\nsister\nsituate\nsix\nsize\nskate\nsketch\nski\nskill\nskin\nskirt\nskull\nslab\nslam\nsleep\nslender\nslice\nslide\nslight\nslim\nslogan\nslot\nslow\nslush\nsmall\nsmart\nsmile\nsmoke\nsmooth\nsnack\nsnake\nsnap\nsniff\nsnow\nsoap\nsoccer\nsocial\nsock\nsoda\nsoft\nsolar\nsoldier\nsolid\nsolution\nsolve\nsomeone\nsong\nsoon\nsorry\nsort\nsoul\nsound\nsoup\nsource\nsouth\nspace\nspare\nspatial\nspawn\nspeak\nspecial\nspeed\nspell\nspend\nsphere\nspice\nspider\nspike\nspin\nspirit\nsplit\nspoil\nsponsor\nspoon\nsport\nspot\nspray\nspread\nspring\nspy\nsquare\nsqueeze\nsquirrel\nstable\nstadium\nstaff\nstage\nstairs\nstamp\nstand\nstart\nstate\nstay\nsteak\nsteel\nstem\nstep\nstereo\nstick\nstill\nsting\nstock\nstomach\nstone\nstool\nstory\nstove\nstrategy\nstreet\nstrike\nstrong\nstruggle\nstudent\nstuff\nstumble\nstyle\nsubject\nsubmit\nsubway\nsuccess\nsuch\nsudden\nsuffer\nsugar\nsuggest\nsuit\nsummer\nsun\nsunny\nsunset\nsuper\nsupply\nsupreme\nsure\nsurface\nsurge\nsurprise\nsurround\nsurvey\nsuspect\nsustain\nswallow\nswamp\nswap\nswarm\nswear\nsweet\nswift\nswim\nswing\nswitch\nsword\nsymbol\nsymptom\nsyrup\nsystem\ntable\ntackle\ntag\ntail\ntalent\ntalk\ntank\ntape\ntarget\ntask\ntaste\ntattoo\ntaxi\nteach\nteam\ntell\nten\ntenant\ntennis\ntent\nterm\ntest\ntext\nthank\nthat\ntheme\nthen\ntheory\nthere\nthey\nthing\nthis\nthought\nthree\nthrive\nthrow\nthumb\nthunder\nticket\ntide\ntiger\ntilt\ntimber\ntime\ntiny\ntip\ntired\ntissue\ntitle\ntoast\ntobacco\ntoday\ntoddler\ntoe\ntogether\ntoilet\ntoken\ntomato\ntomorrow\ntone\ntongue\ntonight\ntool\ntooth\ntop\ntopic\ntopple\ntorch\ntornado\ntortoise\ntoss\ntotal\ntourist\ntoward\ntower\ntown\ntoy\ntrack\ntrade\ntraffic\ntragic\ntrain\ntransfer\ntrap\ntrash\ntravel\ntray\ntreat\ntree\ntrend\ntrial\ntribe\ntrick\ntrigger\ntrim\ntrip\ntrophy\ntrouble\ntruck\ntrue\ntruly\ntrumpet\ntrust\ntruth\ntry\ntube\ntuition\ntumble\ntuna\ntunnel\nturkey\nturn\nturtle\ntwelve\ntwenty\ntwice\ntwin\ntwist\ntwo\ntype\ntypical\nugly\numbrella\nunable\nunaware\nuncle\nuncover\nunder\nundo\nunfair\nunfold\nunhappy\nuniform\nunique\nunit\nuniverse\nunknown\nunlock\nuntil\nunusual\nunveil\nupdate\nupgrade\nuphold\nupon\nupper\nupset\nurban\nurge\nusage\nuse\nused\nuseful\nuseless\nusual\nutility\nvacant\nvacuum\nvague\nvalid\nvalley\nvalve\nvan\nvanish\nvapor\nvarious\nvast\nvault\nvehicle\nvelvet\nvendor\nventure\nvenue\nverb\nverify\nversion\nvery\nvessel\nveteran\nviable\nvibrant\nvicious\nvictory\nvideo\nview\nvillage\nvintage\nviolin\nvirtual\nvirus\nvisa\nvisit\nvisual\nvital\nvivid\nvocal\nvoice\nvoid\nvolcano\nvolume\nvote\nvoyage\nwage\nwagon\nwait\nwalk\nwall\nwalnut\nwant\nwarfare\nwarm\nwarrior\nwash\nwasp\nwaste\nwater\nwave\nway\nwealth\nweapon\nwear\nweasel\nweather\nweb\nwedding\nweekend\nweird\nwelcome\nwest\nwet\nwhale\nwhat\nwheat\nwheel\nwhen\nwhere\nwhip\nwhisper\nwide\nwidth\nwife\nwild\nwill\nwin\nwindow\nwine\nwing\nwink\nwinner\nwinter\nwire\nwisdom\nwise\nwish\nwitness\nwolf\nwoman\nwonder\nwood\nwool\nword\nwork\nworld\nworry\nworth\nwrap\nwreck\nwrestle\nwrist\nwrite\nwrong\nyard\nyear\nyellow\nyou\nyoung\nyouth\nzebra\nzero\nzone\nzoo`.split('\\n');\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { hmac } from \"@noble/hashes/hmac\";\nimport { sha512 } from \"@noble/hashes/sha2\";\nimport * as bip39 from \"@scure/bip39\";\nimport { wordlist } from \"@scure/bip39/wordlists/english.js\";\nimport { BASE_DERIVATION_PATH } from \"../constants\";\nimport { CryptoError, CryptoErrorCode } from \"./errors\";\nimport { Keypair } from \"./keypair\";\n\nexport type MnemonicStrength = 128 | 256;\n\ninterface HDKeyNode {\n\tprivateKey: Uint8Array;\n\tchainCode: Uint8Array;\n}\n\n/**\n * Represents a validated BIP39 mnemonic phrase with SLIP-0010 Ed25519 hierarchical key derivation.\n *\n * Implements the SLIP-0010 standard for Ed25519 key derivation, ensuring compatibility\n * with other implementations (e.g., Rust CDK). The default derivation path uses coin type\n * 756 (R=7, L=5, O=6 on telephone keypad).\n *\n * @example\n * ```typescript\n * // Generate new mnemonic (12 or 24 words)\n * const mnemonic = Mnemonic.generate(128); // 12 words\n *\n * // Restore from existing phrase\n * const restored = Mnemonic.fromPhrase(\"word1 word2 ...\");\n *\n * // Derive keypairs at specific account indices\n * const keypair0 = await mnemonic.toKeypair(0); // m/44'/756'/0'/0'\n * const keypair1 = await mnemonic.toKeypair(1); // m/44'/756'/1'/0'\n *\n * // With custom passphrase (BIP39 extension)\n * const secure = await mnemonic.toKeypair(0, {\n * passphrase: \"my-secret\"\n * });\n * ```\n *\n * @see {@link https://github.com/satoshilabs/slips/blob/master/slip-0010.md SLIP-0010 Specification}\n */\nexport class Mnemonic {\n\tprivate readonly phrase: string;\n\n\tprivate constructor(phrase: string) {\n\t\tif (!bip39.validateMnemonic(phrase, wordlist)) {\n\t\t\tthrow CryptoError.invalidMnemonic(\"Invalid BIP39 mnemonic phrase\");\n\t\t}\n\t\tthis.phrase = phrase;\n\t}\n\n\t/**\n\t * Generates a new random BIP39 mnemonic phrase.\n\t *\n\t * @param strength - Entropy strength (128 = 12 words, 256 = 24 words). Default: 128\n\t * @returns Validated Mnemonic instance\n\t */\n\tstatic generate(strength: MnemonicStrength = 128): Mnemonic {\n\t\tconst phrase = bip39.generateMnemonic(wordlist, strength);\n\t\treturn new Mnemonic(phrase);\n\t}\n\n\t/**\n\t * Creates a Mnemonic from an existing phrase.\n\t *\n\t * @param phrase - BIP39 mnemonic phrase (12 or 24 space-separated words)\n\t * @returns Validated Mnemonic instance\n\t * @throws {CryptoError} If phrase is invalid (wrong words or checksum)\n\t */\n\tstatic fromPhrase(phrase: string): Mnemonic {\n\t\treturn new Mnemonic(phrase);\n\t}\n\n\t/**\n\t * Validates a phrase without creating an instance.\n\t *\n\t * Checks both word validity and BIP39 checksum.\n\t *\n\t * @param phrase - Mnemonic phrase to validate\n\t * @returns true if phrase is valid\n\t */\n\tstatic isValid(phrase: string): boolean {\n\t\treturn bip39.validateMnemonic(phrase, wordlist);\n\t}\n\n\tprivate getMasterKeyFromSeed(seed: Uint8Array): HDKeyNode {\n\t\tconst seedKey = new TextEncoder().encode(\"ed25519 seed\");\n\t\tconst digest = hmac(sha512, seedKey, seed);\n\n\t\treturn {\n\t\t\tprivateKey: digest.slice(0, 32),\n\t\t\tchainCode: digest.slice(32, 64),\n\t\t};\n\t}\n\n\tprivate deriveChildKey(parentKey: HDKeyNode, index: number): HDKeyNode {\n\t\tconst hardenedIndex = index | 0x80000000;\n\t\tconst data = new Uint8Array(1 + 32 + 4);\n\t\tdata[0] = 0x00;\n\t\tdata.set(parentKey.privateKey, 1);\n\n\t\tconst view = new DataView(data.buffer);\n\t\tview.setUint32(33, hardenedIndex, false);\n\n\t\tconst digest = hmac(sha512, parentKey.chainCode, data);\n\n\t\treturn {\n\t\t\tprivateKey: digest.slice(0, 32),\n\t\t\tchainCode: digest.slice(32, 64),\n\t\t};\n\t}\n\n\tprivate derivePath(path: string, seed: Uint8Array): HDKeyNode {\n\t\tif (!path.startsWith(\"m/\")) {\n\t\t\tthrow new CryptoError(\n\t\t\t\tCryptoErrorCode.KEY_DERIVATION_FAILED,\n\t\t\t\t\"Derivation path must start with 'm/'\",\n\t\t\t);\n\t\t}\n\n\t\tlet node = this.getMasterKeyFromSeed(seed);\n\t\tconst segments = path.slice(2).split(\"/\");\n\n\t\tfor (const segment of segments) {\n\t\t\tif (!segment) continue;\n\n\t\t\tconst index = segment.endsWith(\"'\")\n\t\t\t\t? Number.parseInt(segment.slice(0, -1), 10)\n\t\t\t\t: Number.parseInt(segment, 10);\n\n\t\t\tif (Number.isNaN(index) || index < 0) {\n\t\t\t\tthrow new CryptoError(\n\t\t\t\t\tCryptoErrorCode.KEY_DERIVATION_FAILED,\n\t\t\t\t\t`Invalid path segment: ${segment}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tnode = this.deriveChildKey(node, index);\n\t\t}\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Derives a keypair at a specific account index.\n\t *\n\t * Uses SLIP-0010 Ed25519 derivation with the default path:\n\t * `m/44'/756'/{accountIndex}'/0'`\n\t *\n\t * Coin type 756 follows the telephone keypad convention (R=7, L=5, O=6).\n\t *\n\t * @param accountIndex - Account index to derive (default: 0)\n\t * @param options - Derivation options\n\t * @param options.passphrase - Optional BIP39 passphrase for additional security\n\t * @param options.baseDerivationPath - Base path (default: \"m/44'/756'\")\n\t * @returns Keypair for the derived account\n\t */\n\tasync toKeypair(\n\t\taccountIndex = 0,\n\t\toptions?: {\n\t\t\tpassphrase?: string;\n\t\t\tbaseDerivationPath?: string;\n\t\t},\n\t): Promise<Keypair> {\n\t\tif (accountIndex < 0 || !Number.isInteger(accountIndex)) {\n\t\t\tthrow new CryptoError(\n\t\t\t\tCryptoErrorCode.KEY_DERIVATION_FAILED,\n\t\t\t\t\"Account index must be a non-negative integer\",\n\t\t\t\t{ accountIndex },\n\t\t\t);\n\t\t}\n\n\t\tconst { passphrase = \"\", baseDerivationPath = BASE_DERIVATION_PATH } =\n\t\t\toptions ?? {};\n\n\t\ttry {\n\t\t\tconst fullPath = this.buildFullPath(baseDerivationPath, accountIndex);\n\t\t\tconst seed = await bip39.mnemonicToSeed(this.phrase, passphrase);\n\t\t\tconst derivedNode = this.derivePath(fullPath, seed);\n\n\t\t\treturn Keypair.fromSecretKey(derivedNode.privateKey);\n\t\t} catch (error) {\n\t\t\tif (error instanceof CryptoError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tthrow CryptoError.keyDerivationFailed(\n\t\t\t\tbaseDerivationPath,\n\t\t\t\terror instanceof Error ? error : undefined,\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Derives a keypair using an explicit full derivation path.\n\t *\n\t * @param fullPath - Complete derivation path (e.g., \"m/44'/756'/0'/0'\")\n\t * @param passphrase - Optional BIP39 passphrase\n\t */\n\tasync toKeypairWithPath(fullPath: string, passphrase = \"\"): Promise<Keypair> {\n\t\ttry {\n\t\t\tconst seed = await bip39.mnemonicToSeed(this.phrase, passphrase);\n\t\t\tconst derivedNode = this.derivePath(fullPath, seed);\n\t\t\treturn Keypair.fromSecretKey(derivedNode.privateKey);\n\t\t} catch (error) {\n\t\t\tif (error instanceof CryptoError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tthrow CryptoError.keyDerivationFailed(\n\t\t\t\tfullPath,\n\t\t\t\terror instanceof Error ? error : undefined,\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Derives multiple keypairs sequentially from this mnemonic.\n\t *\n\t * @param count - Number of keypairs to derive\n\t * @param startIndex - Starting account index (default: 0)\n\t * @param options - Derivation options (passphrase and path)\n\t */\n\tasync deriveKeypairs(\n\t\tcount: number,\n\t\tstartIndex = 0,\n\t\toptions?: {\n\t\t\tpassphrase?: string;\n\t\t\tbaseDerivationPath?: string;\n\t\t},\n\t): Promise<Keypair[]> {\n\t\tif (count <= 0 || !Number.isInteger(count)) {\n\t\t\tthrow new CryptoError(\n\t\t\t\tCryptoErrorCode.KEY_DERIVATION_FAILED,\n\t\t\t\t\"Count must be a positive integer\",\n\t\t\t\t{ count },\n\t\t\t);\n\t\t}\n\n\t\tconst keypairs: Keypair[] = [];\n\t\tfor (let i = 0; i < count; i++) {\n\t\t\tconst keypair = await this.toKeypair(startIndex + i, options);\n\t\t\tkeypairs.push(keypair);\n\t\t}\n\n\t\treturn keypairs;\n\t}\n\n\t/**\n\t * Converts the mnemonic to a BIP39 seed.\n\t *\n\t * @param passphrase - Optional BIP39 passphrase for additional security\n\t * @returns 64-byte seed\n\t */\n\tasync toSeed(passphrase = \"\"): Promise<Uint8Array> {\n\t\treturn bip39.mnemonicToSeed(this.phrase, passphrase);\n\t}\n\n\t/**\n\t * Returns the mnemonic phrase as a string.\n\t */\n\ttoString(): string {\n\t\treturn this.phrase;\n\t}\n\n\t/**\n\t * Returns the individual words of the mnemonic.\n\t */\n\tgetWords(): string[] {\n\t\treturn this.phrase.split(\" \");\n\t}\n\n\t/**\n\t * Returns the word count (12 or 24).\n\t */\n\tgetWordCount(): 12 | 24 {\n\t\tconst count = this.getWords().length;\n\t\treturn count === 24 ? 24 : 12;\n\t}\n\n\t/**\n\t * Returns the entropy strength (128 or 256 bits).\n\t */\n\tgetStrength(): MnemonicStrength {\n\t\treturn this.getWordCount() === 12 ? 128 : 256;\n\t}\n\n\t/**\n\t * Checks equality with another mnemonic using constant-time comparison.\n\t */\n\tequals(other: Mnemonic): boolean {\n\t\tif (this.phrase.length !== other.phrase.length) return false;\n\t\tlet result = 0;\n\t\tfor (let i = 0; i < this.phrase.length; i++) {\n\t\t\tresult |= this.phrase.charCodeAt(i) ^ other.phrase.charCodeAt(i);\n\t\t}\n\t\treturn result === 0;\n\t}\n\n\t/**\n\t * JSON serialization (returns the mnemonic phrase).\n\t */\n\ttoJSON(): string {\n\t\treturn this.phrase;\n\t}\n\n\tprivate buildFullPath(\n\t\tbaseDerivationPath: string,\n\t\taccountIndex: number,\n\t): string {\n\t\tconst cleanBasePath = baseDerivationPath.replace(/\\/$/, \"\");\n\n\t\tif (!cleanBasePath.startsWith(\"m/\")) {\n\t\t\tthrow new CryptoError(\n\t\t\t\tCryptoErrorCode.KEY_DERIVATION_FAILED,\n\t\t\t\t\"Derivation path must start with 'm/'\",\n\t\t\t);\n\t\t}\n\n\t\treturn `${cleanBasePath}/${accountIndex}'/0'`;\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SYSTEM_PROGRAM_ID } from \"../../constants\";\nimport { PublicKey } from \"../../crypto\";\nimport type { Instruction } from \"../types\";\n\n/**\n * System program instruction types.\n */\nexport enum SystemInstruction {\n\tCreateAccount = 0,\n\tAssign = 1,\n\tTransfer = 2,\n\tCreateAccountWithSeed = 3,\n\tAdvanceNonceAccount = 4,\n\tWithdrawNonceAccount = 5,\n\tInitializeNonceAccount = 6,\n\tAuthorizeNonceAccount = 7,\n\tAllocate = 8,\n\tAllocateWithSeed = 9,\n\tAssignWithSeed = 10,\n\tTransferWithSeed = 11,\n}\n\n/**\n * Create a transfer instruction.\n *\n * Transfers native tokens from one account to another.\n *\n * @param from - Source account (must be signer)\n * @param to - Destination account\n * @param amount - Amount to transfer in smallest denomination (lamports)\n *\n * @example\n * ```typescript\n * const instruction = transferInstruction(fromPubkey, toPubkey, 1_000_000n);\n *\n * const tx = TransactionBuilder.create()\n * .setPayer(fromPubkey)\n * .addInstruction(instruction)\n * .build();\n * ```\n */\nexport function transferInstruction(\n\tfrom: PublicKey,\n\tto: PublicKey,\n\tamount: bigint,\n): Instruction {\n\t// Instruction data: bincode serialization format\n\t// - 4 bytes: variant index as u32 little-endian (2 for Transfer)\n\t// - 8 bytes: amount as u64 little-endian\n\tconst data = new Uint8Array(12);\n\n\t// Write variant index (u32) - Transfer is variant 2\n\tconst variant = 2;\n\tdata[0] = variant & 0xff;\n\tdata[1] = (variant >> 8) & 0xff;\n\tdata[2] = (variant >> 16) & 0xff;\n\tdata[3] = (variant >> 24) & 0xff;\n\n\t// Write amount as little-endian u64\n\tfor (let i = 0; i < 8; i++) {\n\t\tdata[4 + i] = Number((amount >> BigInt(i * 8)) & 0xffn);\n\t}\n\n\treturn {\n\t\tprogramId: PublicKey.fromString(SYSTEM_PROGRAM_ID),\n\t\taccounts: [\n\t\t\t{ pubkey: from, isSigner: true, isWritable: true },\n\t\t\t{ pubkey: to, isSigner: false, isWritable: true },\n\t\t],\n\t\tdata,\n\t};\n}\n\n/**\n * Create an account creation instruction.\n *\n * @param from - Funding account (must be signer)\n * @param newAccount - New account to create (must be signer)\n * @param lamports - Initial balance for new account\n * @param space - Number of bytes to allocate for account data\n * @param owner - Program that will own the new account\n */\nexport function createAccount(\n\tfrom: PublicKey,\n\tnewAccount: PublicKey,\n\tlamports: bigint,\n\tspace: bigint,\n\towner: PublicKey,\n): Instruction {\n\t// Instruction data: [type (1 byte), lamports (8), space (8), owner (32)]\n\tconst data = new Uint8Array(49);\n\tdata[0] = SystemInstruction.CreateAccount;\n\n\t// Write lamports\n\tfor (let i = 0; i < 8; i++) {\n\t\tdata[1 + i] = Number((lamports >> BigInt(i * 8)) & 0xffn);\n\t}\n\n\t// Write space\n\tfor (let i = 0; i < 8; i++) {\n\t\tdata[9 + i] = Number((space >> BigInt(i * 8)) & 0xffn);\n\t}\n\n\t// Write owner\n\tdata.set(owner.toBytes(), 17);\n\n\treturn {\n\t\tprogramId: PublicKey.fromString(SYSTEM_PROGRAM_ID),\n\t\taccounts: [\n\t\t\t{ pubkey: from, isSigner: true, isWritable: true },\n\t\t\t{ pubkey: newAccount, isSigner: true, isWritable: true },\n\t\t],\n\t\tdata,\n\t};\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { PublicKey } from \"../crypto\";\nimport { TransactionError, TransactionErrorCode } from \"./errors\";\nimport type { CompiledInstruction, MessageHeader } from \"./types\";\n\n/**\n * An unsigned transaction message ready to be signed.\n *\n * This is the data that gets signed by transaction signers.\n * It's immutable to prevent accidental modification after creation.\n *\n * @example\n * ```typescript\n * const message = MessageBuilder.create()\n * .setPayer(payer)\n * .setValidFrom(validFrom)\n * .addInstruction(transferInstruction)\n * .build();\n *\n * // Serialize for signing\n * const messageBytes = message.serialize();\n * ```\n */\nexport class Message {\n\t/** Message header with signature requirements */\n\tpublic readonly header: MessageHeader;\n\n\t/** All account public keys referenced in the transaction */\n\tpublic readonly accountKeys: readonly PublicKey[];\n\n /** Transaction valid from (milliseconds since Unix epoch) */\n validFrom?: bigint;\n\n\t/** Compiled instructions with account indices */\n\tpublic readonly instructions: readonly CompiledInstruction[];\n\n\t/** Cached serialized bytes */\n\tprivate serializedCache?: Uint8Array;\n\n\tconstructor(\n\t\theader: MessageHeader,\n\t\taccountKeys: readonly PublicKey[],\n validFrom: bigint,\n\t\tinstructions: readonly CompiledInstruction[],\n\t) {\n\t\tthis.header = Object.freeze({ ...header });\n\t\tthis.accountKeys = Object.freeze([...accountKeys]);\n this.validFrom = validFrom;\n\t\tthis.instructions = Object.freeze(\n\t\t\tinstructions.map((ix) => Object.freeze({ ...ix })),\n\t\t);\n\t}\n\n\t/**\n\t * Serialize message to bytes for signing.\n\t * Result is cached for performance.\n\t */\n\tserialize(): Uint8Array {\n\t\tif (!this.serializedCache) {\n\t\t\tthis.serializedCache = this.serializeInternal();\n\t\t}\n\t\treturn new Uint8Array(this.serializedCache); // Return copy\n\t}\n\n\t/**\n\t * Deserialize a message from wire format.\n\t *\n\t * @param data - Serialized message bytes\n\t * @returns Deserialized Message\n\t */\n\tstatic deserialize(data: Uint8Array): Message {\n\t\tif (data.length < 3) {\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\t\"Insufficient data for message header\",\n\t\t\t);\n\t\t}\n\n\t\tlet cursor = 0;\n\n\t\t// Deserialize header (3 bytes)\n\t\tconst header: MessageHeader = {\n\t\t\tnumRequiredSignatures: data[cursor++],\n\t\t\tnumReadonlySignedAccounts: data[cursor++],\n\t\t\tnumReadonlyUnsignedAccounts: data[cursor++],\n\t\t};\n\n\t\t// Deserialize account keys with compact-u16 length prefix\n\t\tconst [accountKeysLength, newCursor1] = deserializeCompactU16(data, cursor);\n\t\tcursor = newCursor1;\n\n\t\tconst accountKeys: PublicKey[] = [];\n\t\tfor (let i = 0; i < accountKeysLength; i++) {\n\t\t\tif (data.length < cursor + 32) {\n\t\t\t\tthrow new TransactionError(\n\t\t\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\t\t`Insufficient data for account key ${i}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst keyBytes = data.slice(cursor, cursor + 32);\n\t\t\taccountKeys.push(PublicKey.fromBytes(keyBytes));\n\t\t\tcursor += 32;\n\t\t}\n\n\t\t// Deserialize recent valid from (8 bytes)\n\t\tif (data.length < cursor + 8) {\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\t\"Insufficient data for validFrom\",\n\t\t\t);\n\t\t}\n const validFromBytes = data.slice(cursor, cursor + 8);\n const validFrom = BigInt.asUintN(64, new DataView(validFromBytes.buffer).getBigUint64(0));\n cursor += 8;\n\n\t\t// Deserialize instructions with compact-u16 length prefix\n\t\tconst [instructionsLength, newCursor2] = deserializeCompactU16(\n\t\t\tdata,\n\t\t\tcursor,\n\t\t);\n\t\tcursor = newCursor2;\n\n\t\tconst instructions: CompiledInstruction[] = [];\n\t\tfor (let i = 0; i < instructionsLength; i++) {\n\t\t\t// Read program ID index\n\t\t\tif (data.length < cursor + 1) {\n\t\t\t\tthrow new TransactionError(\n\t\t\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\t\t`Insufficient data for instruction ${i} program index`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst programIdIndex = data[cursor++];\n\n\t\t\t// Read account key indexes array\n\t\t\tconst [accountIndexesLength, newCursor3] = deserializeCompactU16(\n\t\t\t\tdata,\n\t\t\t\tcursor,\n\t\t\t);\n\t\t\tcursor = newCursor3;\n\n\t\t\tconst accountKeyIndexes: number[] = [];\n\t\t\tfor (let j = 0; j < accountIndexesLength; j++) {\n\t\t\t\tif (data.length < cursor + 1) {\n\t\t\t\t\tthrow new TransactionError(\n\t\t\t\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\t\t\t`Insufficient data for instruction ${i} account index ${j}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\taccountKeyIndexes.push(data[cursor++]);\n\t\t\t}\n\n\t\t\t// Read instruction data array\n\t\t\tconst [dataLength, newCursor4] = deserializeCompactU16(data, cursor);\n\t\t\tcursor = newCursor4;\n\n\t\t\tif (data.length < cursor + dataLength) {\n\t\t\t\tthrow new TransactionError(\n\t\t\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\t\t`Insufficient data for instruction ${i} data`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst instructionData = data.slice(cursor, cursor + dataLength);\n\t\t\tcursor += dataLength;\n\n\t\t\tinstructions.push({\n\t\t\t\tprogramIdIndex,\n\t\t\t\taccountKeyIndexes: Object.freeze(accountKeyIndexes),\n\t\t\t\tdata: instructionData,\n\t\t\t});\n\t\t}\n\n\t\treturn new Message(header, accountKeys, validFrom, instructions);\n\t}\n\n\tprivate serializeInternal(): Uint8Array {\n\t\tconst buffer: number[] = [];\n\n\t\t// Serialize header (3 bytes)\n\t\tbuffer.push(this.header.numRequiredSignatures);\n\t\tbuffer.push(this.header.numReadonlySignedAccounts);\n\t\tbuffer.push(this.header.numReadonlyUnsignedAccounts);\n\n\t\t// Serialize account keys with compact-u16 length prefix\n\t\tthis.serializeCompactArray(buffer, this.accountKeys, (buf, key) => {\n\t\t\tbuf.push(...key.toBytes());\n\t\t});\n\n // Serialize recent valid from (8 bytes)\n const validFromBuffer = new ArrayBuffer(8);\n new DataView(validFromBuffer).setBigUint64(0, this.validFrom ?? BigInt(0));\n buffer.push(...new Uint8Array(validFromBuffer));\n\n\t\t// Serialize instructions with compact-u16 length prefix\n\t\tthis.serializeCompactArray(buffer, this.instructions, (buf, ix) => {\n\t\t\t// Program ID index (1 byte)\n\t\t\tbuf.push(ix.programIdIndex);\n\n\t\t\t// Account indexes array\n\t\t\tthis.serializeCompactArray(buf, ix.accountKeyIndexes, (b, idx) => {\n\t\t\t\tb.push(idx);\n\t\t\t});\n\n\t\t\t// Instruction data array\n\t\t\tthis.serializeCompactArray(buf, Array.from(ix.data), (b, byte) => {\n\t\t\t\tb.push(byte);\n\t\t\t});\n\t\t});\n\n\t\treturn new Uint8Array(buffer);\n\t}\n\n\tprivate serializeCompactArray<T>(\n\t\tbuffer: number[],\n\t\titems: readonly T[],\n\t\tserializeItem: (buf: number[], item: T) => void,\n\t): void {\n\t\t// Serialize length as compact-u16\n\t\tthis.serializeCompactU16(buffer, items.length);\n\n\t\t// Serialize each item\n\t\tfor (const item of items) {\n\t\t\tserializeItem(buffer, item);\n\t\t}\n\t}\n\n\tprivate serializeCompactU16(buffer: number[], value: number): void {\n\t\tif (value < 0 || value > 0xffff) {\n\t\t\tthrow new Error(`Value out of range for compact-u16: ${value}`);\n\t\t}\n\n\t\t// Single byte (0-127)\n\t\tif (value <= 0x7f) {\n\t\t\tbuffer.push(value);\n\t\t\treturn;\n\t\t}\n\n\t\t// Two bytes (128-16383)\n\t\tif (value <= 0x3fff) {\n\t\t\tbuffer.push((value & 0x7f) | 0x80);\n\t\t\tbuffer.push((value >> 7) & 0x7f);\n\t\t\treturn;\n\t\t}\n\n\t\t// Three bytes (16384-65535)\n\t\tbuffer.push((value & 0x7f) | 0x80);\n\t\tbuffer.push(((value >> 7) & 0x7f) | 0x80);\n\t\tbuffer.push((value >> 14) & 0xff);\n\t}\n\n\t/**\n\t * Get all signers required for this message.\n\t */\n\tgetSigners(): readonly PublicKey[] {\n\t\treturn this.accountKeys.slice(0, this.header.numRequiredSignatures);\n\t}\n\n\t/**\n\t * Check if a public key is a required signer.\n\t */\n\tisSignerRequired(pubkey: PublicKey): boolean {\n\t\treturn this.getSigners().some((signer) => signer.equals(pubkey));\n\t}\n\n\t/**\n\t * Get the index of a signer in the signers array.\n\t * Returns -1 if not a signer.\n\t */\n\tgetSignerIndex(pubkey: PublicKey): number {\n\t\treturn this.getSigners().findIndex((signer) => signer.equals(pubkey));\n\t}\n}\n\nfunction deserializeCompactU16(\n\tdata: Uint8Array,\n\tcurrentCursor: number,\n): [number, number] {\n\tlet cursor = currentCursor;\n\tif (cursor >= data.length) {\n\t\tthrow new TransactionError(\n\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\"Insufficient data for compact-u16\",\n\t\t);\n\t}\n\n\tconst firstByte = data[cursor++];\n\n\t// Single byte encoding (0-127)\n\tif ((firstByte & 0x80) === 0) {\n\t\treturn [firstByte, cursor];\n\t}\n\n\t// Multi-byte encoding\n\tif (cursor >= data.length) {\n\t\tthrow new TransactionError(\n\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\"Incomplete compact-u16 encoding\",\n\t\t);\n\t}\n\n\tconst secondByte = data[cursor++];\n\n\t// Two-byte encoding (128-16383)\n\tif ((secondByte & 0x80) === 0) {\n\t\treturn [(firstByte & 0x7f) | (secondByte << 7), cursor];\n\t}\n\n\t// Three-byte encoding (16384-65535)\n\tif (cursor >= data.length) {\n\t\tthrow new TransactionError(\n\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\"Incomplete compact-u16 encoding\",\n\t\t);\n\t}\n\n\tconst thirdByte = data[cursor++];\n\tconst value =\n\t\t(firstByte & 0x7f) | ((secondByte & 0x7f) << 7) | (thirdByte << 14);\n\n\treturn [value, cursor];\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n// transaction/transaction.ts\n// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SIGNATURE_LENGTH } from \"../constants\";\nimport type { Keypair, PublicKey, Signature } from \"../crypto\";\nimport { deserializeCompactU16, writeCompactU16 } from \"../serialization\";\nimport type { Signer } from \"../signer\";\nimport { TransactionError, TransactionErrorCode } from \"./errors\";\nimport { Message } from \"./message\";\n\n/**\n * A transaction with zero or more signatures.\n *\n * Transactions are immutable - signing methods return new instances.\n * This prevents accidental modification and signature tampering.\n *\n * @example\n * ```typescript\n * // Simple signing\n * const tx = builder.build();\n * const signed = tx.sign(keypair);\n *\n * // Method chaining\n * const signed = tx\n * .sign(keypair1)\n * .sign(keypair2)\n * .sign(keypair3);\n *\n * // Multi-sig convenience\n * const signed = tx.signAll([keypair1, keypair2, keypair3]);\n * ```\n */\nexport class Transaction {\n\t/** The unsigned message */\n\tprivate readonly message: Message;\n\n\t/** Signatures (64 bytes each), aligned with message.header.numRequiredSignatures */\n\tprivate readonly signatures: readonly Uint8Array[];\n\n\t// Private constructor - use static factories\n\tprivate constructor(message: Message, signatures: readonly Uint8Array[]) {\n\t\tthis.message = message;\n\n\t\t// Deep copy signatures to prevent external mutation\n\t\tthis.signatures = signatures.map((sig) => new Uint8Array(sig));\n\n\t\t// Validate signature count matches required signers\n\t\tif (signatures.length !== message.header.numRequiredSignatures) {\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.INVALID_SIGNATURE,\n\t\t\t\t`Signature count (${signatures.length}) doesn't match required signers (${message.header.numRequiredSignatures})`,\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Create an unsigned transaction from a message.\n\t * All signature slots are initialized to zero.\n\t *\n\t * @internal - Users should use TransactionBuilder instead\n\t */\n\tstatic fromMessage(message: Message): Transaction {\n\t\tconst numSignatures = message.header.numRequiredSignatures;\n\t\tconst signatures = Array.from(\n\t\t\t{ length: numSignatures },\n\t\t\t() => new Uint8Array(SIGNATURE_LENGTH),\n\t\t);\n\n\t\treturn new Transaction(message, signatures);\n\t}\n\n\t/**\n\t * Create transaction from message and existing signatures.\n\t * @internal\n\t */\n\tstatic fromMessageAndSignatures(\n\t\tmessage: Message,\n\t\tsignatures: readonly Uint8Array[],\n\t): Transaction {\n\t\treturn new Transaction(message, signatures);\n\t}\n\n\t/**\n\t * Deserialize a transaction from wire format.\n\t */\n\tstatic deserialize(data: Uint8Array): Transaction {\n\t\tif (data.length === 0) {\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.SERIALIZATION_FAILED,\n\t\t\t\t\"Cannot deserialize empty transaction data\",\n\t\t\t);\n\t\t}\n\n\t\tlet cursor = 0;\n\n\t\t// Deserialize signatures with compact-u16 length prefix\n\t\tconst [signaturesLength, newCursor] = deserializeCompactU16(data, cursor);\n\t\tcursor = newCursor;\n\n\t\tconst signatures: Uint8Array[] = [];\n\t\tfor (let i = 0; i < signaturesLength; i++) {\n\t\t\tif (data.length < cursor + SIGNATURE_LENGTH) {\n\t\t\t\tthrow new TransactionError(\n\t\t\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\t\t`Insufficient data for signature ${i}: need ${SIGNATURE_LENGTH} bytes at offset ${cursor}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst signature = data.slice(cursor, cursor + SIGNATURE_LENGTH);\n\t\t\tsignatures.push(signature);\n\t\t\tcursor += SIGNATURE_LENGTH;\n\t\t}\n\n\t\t// Remaining data is the message\n\t\tif (cursor >= data.length) {\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.INSUFFICIENT_DATA,\n\t\t\t\t\"No message data found after signatures\",\n\t\t\t);\n\t\t}\n\n\t\tconst messageBytes = data.slice(cursor);\n\t\tconst message = Message.deserialize(messageBytes);\n\n\t\treturn new Transaction(message, signatures);\n\t}\n\n\tgetMessage(): Message {\n\t\treturn this.message;\n\t}\n\n\t/**\n\t * Sign the transaction with a keypair.\n\t * Returns a NEW Transaction instance.\n\t *\n\t * @param keypair - Keypair to sign with\n\t * @returns New Transaction instance with signature added\n\t *\n\t * @example\n\t * ```typescript\n\t * const signedTx = tx.sign(keypair);\n\t * await client.sendTransaction(signedTx.serialize());\n\t * ```\n\t */\n\tsign(keypair: Keypair): Transaction {\n\t\tconst messageBytes = this.message.serialize();\n\t\tconst signature = keypair.sign(messageBytes);\n\t\treturn this.addSignatureForPubkey(keypair.publicKey, signature);\n\t}\n\n\t/**\n\t * Sign with multiple keypairs at once.\n\t * Returns a NEW Transaction instance.\n\t *\n\t * @example\n\t * ```typescript\n\t * const signed = tx.signAll([keypair1, keypair2, keypair3]);\n\t * ```\n\t */\n\tsignAll(keypairs: Keypair[]): Transaction {\n\t\tlet result: Transaction = this;\n\t\tfor (const keypair of keypairs) {\n\t\t\tresult = result.sign(keypair);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * Sign the transaction with a Signer interface (async).\n\t * Returns a NEW Transaction instance.\n\t *\n\t * @example\n\t * ```typescript\n\t * const signedTx = await tx.signWith(browserWallet);\n\t * ```\n\t */\n\tasync signWith(signer: Signer): Promise<Transaction> {\n\t\tconst pubkey = await signer.getPublicKey();\n\t\tconst messageBytes = this.message.serialize();\n\t\tconst signature = await signer.signMessage(messageBytes);\n\t\treturn this.addSignatureForPubkey(pubkey, signature);\n\t}\n\n\t/**\n\t * Sign with multiple signers.\n\t * Returns a NEW Transaction instance.\n\t */\n\tasync signAllWith(signers: Signer[]): Promise<Transaction> {\n\t\tlet result: Transaction = this;\n\t\tfor (const signer of signers) {\n\t\t\tresult = await result.signWith(signer);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * Partially sign the transaction (for multi-sig transactions).\n\t * Returns a NEW Transaction instance.\n\t *\n\t * @example\n\t * ```typescript\n\t * const signedTx = tx\n\t * .partialSign(signer1)\n\t * .partialSign(signer2);\n\t * ```\n\t */\n\tpartialSign(keypair: Keypair): Transaction {\n\t\treturn this.sign(keypair);\n\t}\n\n\t/**\n\t * Partially sign with a Signer interface (async).\n\t * Returns a NEW Transaction instance.\n\t */\n\tasync partialSignWith(signer: Signer): Promise<Transaction> {\n\t\treturn this.signWith(signer);\n\t}\n\n\t/**\n\t * Add a signature at a specific index.\n\t * Returns a NEW Transaction instance.\n\t *\n\t * Most users should use sign() or signAll() instead.\n\t */\n\taddSignature(index: number, signature: Signature | Uint8Array): Transaction {\n\t\tif (index < 0 || index >= this.signatures.length) {\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.SIGNATURE_OUT_OF_BOUNDS,\n\t\t\t\t`Signature index ${index} out of bounds (must be 0-${this.signatures.length - 1})`,\n\t\t\t);\n\t\t}\n\n\t\tconst sigBytes =\n\t\t\tsignature instanceof Uint8Array ? signature : signature.toBytes();\n\n\t\tif (sigBytes.length !== SIGNATURE_LENGTH) {\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.INVALID_SIGNATURE,\n\t\t\t\t`Signature must be ${SIGNATURE_LENGTH} bytes, got ${sigBytes.length}`,\n\t\t\t);\n\t\t}\n\n\t\t// Create NEW signatures array (immutable update)\n\t\tconst newSignatures = this.signatures.map((sig, i) =>\n\t\t\ti === index ? new Uint8Array(sigBytes) : new Uint8Array(sig),\n\t\t);\n\n\t\t// Return NEW Transaction instance\n\t\treturn new Transaction(this.message, newSignatures);\n\t}\n\n\t/**\n\t * Add a signature for a specific public key.\n\t * Returns a NEW Transaction instance.\n\t *\n\t * Most users should use sign() or signAll() instead.\n\t */\n\taddSignatureForPubkey(\n\t\tpubkey: PublicKey,\n\t\tsignature: Signature | Uint8Array,\n\t): Transaction {\n\t\tconst signerIndex = this.message.getSignerIndex(pubkey);\n\n\t\tif (signerIndex === -1) {\n\t\t\tthrow TransactionError.signerNotFound(pubkey.toString());\n\t\t}\n\n\t\treturn this.addSignature(signerIndex, signature);\n\t}\n\n\t/**\n\t * Check if transaction is fully signed (all signatures present).\n\t */\n\tisSigned(): boolean {\n\t\treturn this.signatures.every((sig) => sig.some((byte) => byte !== 0));\n\t}\n\n\t/**\n\t * Check if a specific signature slot is filled.\n\t */\n\tisSignaturePresent(index: number): boolean {\n\t\tif (index < 0 || index >= this.signatures.length) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.signatures[index].some((byte) => byte !== 0);\n\t}\n\n\t/**\n\t * Get all signatures (returns copies to prevent mutation).\n\t */\n\tgetSignatures(): readonly Uint8Array[] {\n\t\treturn this.signatures.map((sig) => new Uint8Array(sig));\n\t}\n\n\t/**\n\t * Get a specific signature (returns copy).\n\t */\n\tgetSignature(index: number): Uint8Array {\n\t\tif (index < 0 || index >= this.signatures.length) {\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.SIGNATURE_OUT_OF_BOUNDS,\n\t\t\t\t`Signature index ${index} out of bounds`,\n\t\t\t);\n\t\t}\n\t\treturn new Uint8Array(this.signatures[index]);\n\t}\n\n\t/**\n\t * Get a specific signature for a public key.\n\t */\n\tgetSignatureForPubkey(pubkey: PublicKey): Uint8Array {\n\t\tconst signerIndex = this.message.getSignerIndex(pubkey);\n\t\tif (signerIndex === -1) {\n\t\t\tthrow TransactionError.signerNotFound(pubkey.toString());\n\t\t}\n\t\treturn this.getSignature(signerIndex);\n\t}\n\n\t\n\n\t/**\n\t * Get required signers for this transaction.\n\t */\n\tgetSigners(): readonly PublicKey[] {\n\t\treturn this.message.getSigners();\n\t}\n\n\t/**\n\t * Get the number of required signatures.\n\t */\n\tgetRequiredSignatureCount(): number {\n\t\treturn this.message.header.numRequiredSignatures;\n\t}\n\n\t/**\n\t * Throw an error if the transaction is not fully signed.\n\t *\n\t * @throws {TransactionError} If transaction is not fully signed\n\t *\n\t * @example\n\t * ```typescript\n\t * signedTx.ensureSigned(); // Throws if not signed\n\t * await client.sendTransaction(signedTx.serialize());\n\t * ```\n\t */\n\tensureSigned(): void {\n\t\tif (!this.isSigned()) {\n\t\t\tconst missingIndices = this.signatures\n\t\t\t\t.map((sig, i) => ({ sig, i }))\n\t\t\t\t.filter(({ sig }) => !sig.some((byte) => byte !== 0))\n\t\t\t\t.map(({ i }) => i);\n\n\t\t\tconst signers = this.getSigners();\n\t\t\tconst missingSigners = missingIndices.map((i) => signers[i].toString());\n\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.MISSING_SIGNATURE,\n\t\t\t\t`Transaction is not fully signed. Missing signatures for: ${missingSigners.join(\", \")}`,\n\t\t\t\t{ missingIndices, missingSigners },\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Serialize transaction to wire format.\n\t */\n\tserialize(): Uint8Array {\n\t\t// Calculate exact size\n\t\tconst compactU16Size = this.signatures.length < 128 ? 1 : 2;\n\t\tconst sigsSize = compactU16Size + this.signatures.length * SIGNATURE_LENGTH;\n\t\tconst messageBytes = this.message.serialize();\n\t\tconst totalSize = sigsSize + messageBytes.length;\n\n\t\t// Pre-allocate buffer\n\t\tconst buffer = new Uint8Array(totalSize);\n\t\tlet offset = 0;\n\n\t\t// Write signature count\n\t\toffset = writeCompactU16(buffer, offset, this.signatures.length);\n\n\t\t// Write signatures\n\t\tfor (const sig of this.signatures) {\n\t\t\tbuffer.set(sig, offset);\n\t\t\toffset += SIGNATURE_LENGTH;\n\t\t}\n\n\t\t// Write message\n\t\tbuffer.set(messageBytes, offset);\n\n\t\treturn buffer;\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Fluent API for building transactions.\n * Returns Transaction directly (not Message).\n */\n\nimport type { PublicKey } from \"../crypto\";\nimport { AccountMetaTable } from \"./account-meta-table\";\nimport { TransactionError, TransactionErrorCode } from \"./errors\";\nimport { Message } from \"./message\";\nimport { Transaction } from \"./transaction\";\nimport type { CompiledInstruction, Instruction } from \"./types\";\n\n/**\n * Builder for creating transactions with a fluent API.\n *\n * Provides an intuitive interface for constructing transactions.\n * Call build() to get an unsigned Transaction ready for signing.\n *\n * @example\n * ```typescript\n * // Simple transfer\n * const tx = TransactionBuilder.create()\n * .setPayer(payer)\n * .setValidFrom(validFrom)\n * .addInstruction(transfer(from, to, 1_000_000n))\n * .build();\n *\n * const signedTx = tx.sign(keypair);\n * await client.transaction.sendTransaction(signedTx.serialize());\n * ```\n *\n * @example\n * ```typescript\n * // Multi-instruction transaction\n * const tx = TransactionBuilder.create()\n * .setPayer(payer)\n * .setValidFrom(validFrom)\n * .addInstruction(transfer(from, to, 1_000_000n))\n * .addInstruction(memoInstruction(\"Payment for invoice #123\"))\n * .build();\n * ```\n */\nexport class TransactionBuilder {\n\tprivate payer?: PublicKey;\n private validFrom?: bigint;\n\tprivate readonly instructions: Instruction[] = [];\n\n\tprivate constructor() {}\n\n\t/**\n\t * Create a new transaction builder.\n\t */\n\tstatic create(): TransactionBuilder {\n\t\treturn new TransactionBuilder();\n\t}\n\n\t/**\n\t * Set the fee payer for this transaction.\n\t *\n\t * The payer will be the first account and must sign the transaction.\n\t * The payer pays for transaction fees.\n\t *\n\t * @param payer - Public key of the fee payer\n\t */\n\tsetPayer(payer: PublicKey): this {\n\t\tthis.payer = payer;\n\t\treturn this;\n\t}\n\n /**\n * Set the Transaction valid from.\n *\n * This is the time the transaction is valid from, in milliseconds since Unix epoch.\n * It can be used for additional replay protection or auditing.\n *\n * @param validFrom - Transaction valid from in milliseconds since Unix epoch\n */\n setValidFrom(validFrom: bigint): this {\n this.validFrom = validFrom;\n return this;\n }\n\n\t/**\n\t * Add an instruction to the transaction.\n\t *\n\t * @param instruction - Instruction to add\n\t */\n\taddInstruction(instruction: Instruction): this {\n\t\tthis.instructions.push(instruction);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add multiple instructions at once.\n\t *\n\t * @param instructions - Array of instructions to add\n\t */\n\taddInstructions(instructions: readonly Instruction[]): this {\n\t\tthis.instructions.push(...instructions);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Build the transaction (unsigned).\n\t *\n\t * Returns an unsigned Transaction that's ready to be signed.\n\t *\n\t * @returns Unsigned Transaction\n\t * @throws {TransactionError} If payer, valid_from, or instructions are missing\n\t *\n\t * @example\n\t * ```typescript\n\t * const tx = builder.build();\n\t * const signedTx = tx.sign(keypair);\n\t * ```\n\t */\n\tbuild(): Transaction {\n\t\t// Validate required fields\n\t\tif (!this.payer) {\n\t\t\tthrow new TransactionError(\n\t\t\t\tTransactionErrorCode.INVALID_ACCOUNT_META,\n\t\t\t\t\"Transaction must have a fee payer. Use setPayer() to set the fee payer.\",\n\t\t\t);\n\t\t}\n\n if (!this.validFrom) {\n throw new TransactionError(\n TransactionErrorCode.INVALID_MESSAGE_FORMAT,\n \"Transaction must have a valid from. Use setValidFrom() to set the valid from.\",\n );\n }\n\n\t\tif (this.instructions.length === 0) {\n\t\t\tthrow TransactionError.noInstructions();\n\t\t}\n\n\t\t// Build account meta table\n\t\tconst accountTable = new AccountMetaTable();\n\n\t\t// Add payer as first account (signer + writable)\n\t\taccountTable.add({\n\t\t\tpubkey: this.payer,\n\t\t\tisSigner: true,\n\t\t\tisWritable: true,\n\t\t});\n\n\t\t// Add all accounts from instructions\n\t\tfor (const instruction of this.instructions) {\n\t\t\taccountTable.addAll(instruction.accounts);\n\n\t\t\t// Add program ID as readonly non-signer\n\t\t\taccountTable.add({\n\t\t\t\tpubkey: instruction.programId,\n\t\t\t\tisSigner: false,\n\t\t\t\tisWritable: false,\n\t\t\t});\n\t\t}\n\n\t\t// Get sorted accounts and header\n\t\tconst accountKeys = accountTable.getPublicKeys();\n\t\tconst header = accountTable.getHeader();\n\n\t\t// Compile instructions (convert pubkeys to indices)\n\t\tconst compiledInstructions = this.instructions.map((instruction) => {\n\t\t\tconst programIdIndex = accountTable.getIndex(instruction.programId);\n\t\t\tif (programIdIndex === -1) {\n\t\t\t\tthrow new TransactionError(\n\t\t\t\t\tTransactionErrorCode.INVALID_INSTRUCTION,\n\t\t\t\t\t`Program ID ${instruction.programId.toString()} not found in account table`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst accountKeyIndexes = instruction.accounts.map((meta) => {\n\t\t\t\tconst index = accountTable.getIndex(meta.pubkey);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\tthrow new TransactionError(\n\t\t\t\t\t\tTransactionErrorCode.INVALID_INSTRUCTION,\n\t\t\t\t\t\t`Account ${meta.pubkey.toString()} not found in account table`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn index;\n\t\t\t});\n\n\t\t\tconst compiled: CompiledInstruction = {\n\t\t\t\tprogramIdIndex,\n\t\t\t\taccountKeyIndexes: Object.freeze(accountKeyIndexes),\n\t\t\t\tdata: instruction.data,\n\t\t\t};\n\n\t\t\treturn compiled;\n\t\t});\n\n\t\t// Create message\n\t\tconst message = new Message(\n\t\t\theader,\n\t\t\taccountKeys,\n this.validFrom,\n\t\t\tcompiledInstructions,\n\t\t);\n\n\t\t// Return unsigned transaction\n\t\treturn Transaction.fromMessage(message);\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Error codes for RPC operations, categorized by type.\n */\nexport enum RpcErrorCode {\n\t// Network errors (retryable)\n\tREQUEST_TIMEOUT = \"REQUEST_TIMEOUT\",\n\tNETWORK_ERROR = \"NETWORK_ERROR\",\n\tCONNECTION_REFUSED = \"CONNECTION_REFUSED\",\n\tINVALID_NETWORK = \"INVALID_NETWORK\",\n\n\t// RPC protocol errors\n\tINVALID_RESPONSE = \"INVALID_RESPONSE\",\n\tPARSE_ERROR = \"PARSE_ERROR\",\n\tINVALID_REQUEST = \"INVALID_REQUEST\",\n\tMETHOD_NOT_FOUND = \"METHOD_NOT_FOUND\",\n\tINVALID_PARAMS = \"INVALID_PARAMS\",\n\tINTERNAL_ERROR = \"INTERNAL_ERROR\",\n\n\t// Transaction errors\n\tTRANSACTION_REJECTED = \"TRANSACTION_REJECTED\",\n\tINSUFFICIENT_FUNDS = \"INSUFFICIENT_FUNDS\",\n\tTRANSACTION_CONFIRMATION_TIMEOUT = \"TRANSACTION_CONFIRMATION_TIMEOUT\",\n\n\t// Resource errors\n\tACCOUNT_NOT_FOUND = \"ACCOUNT_NOT_FOUND\",\n\n\t// Rate limiting (retryable after delay)\n\tRATE_LIMIT_EXCEEDED = \"RATE_LIMIT_EXCEEDED\",\n\n\t// Node health\n\tNODE_UNHEALTHY = \"NODE_UNHEALTHY\",\n}\n\n/**\n * Detailed error context for debugging and error handling.\n */\ninterface RpcErrorDetails {\n\tmethod?: string;\n\tparams?: unknown;\n\trequestId?: number;\n\turl?: string;\n\thttpStatus?: number;\n\trpcCode?: number;\n\ttimeout?: number;\n\tattempts?: number;\n\t[key: string]: unknown;\n}\n\n/**\n * Error class for RPC operations with structured error information.\n *\n * Provides actionable error messages and indicates whether errors are retryable.\n */\nexport class RpcError extends Error {\n\tpublic readonly code: RpcErrorCode;\n\tpublic readonly details: RpcErrorDetails;\n\tpublic readonly retryable: boolean;\n\n\tconstructor(\n\t\tcode: RpcErrorCode,\n\t\tmessage: string,\n\t\tdetails: RpcErrorDetails = {},\n\t\tretryable = false,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"RpcError\";\n\t\tthis.code = code;\n\t\tthis.details = details;\n\t\tthis.retryable = retryable;\n\t}\n\n\tstatic requestTimeout(timeoutMs: number, details: RpcErrorDetails): RpcError {\n\t\treturn new RpcError(\n\t\t\tRpcErrorCode.REQUEST_TIMEOUT,\n\t\t\t`RPC request timed out after ${timeoutMs}ms. The node may be slow or unreachable.`,\n\t\t\t{ ...details, timeout: timeoutMs },\n\t\t\ttrue, // Retryable\n\t\t);\n\t}\n\n\tstatic networkError(message: string, details: RpcErrorDetails): RpcError {\n\t\treturn new RpcError(\n\t\t\tRpcErrorCode.NETWORK_ERROR,\n\t\t\t`Network error: ${message}. Check your internet connection and node URL.`,\n\t\t\tdetails,\n\t\t\ttrue, // Retryable\n\t\t);\n\t}\n\n\tstatic invalidResponse(details: RpcErrorDetails): RpcError {\n\t\treturn new RpcError(\n\t\t\tRpcErrorCode.INVALID_RESPONSE,\n\t\t\t\"Received invalid response from RPC node. The response format is unexpected.\",\n\t\t\tdetails,\n\t\t\tfalse,\n\t\t);\n\t}\n\n\tstatic accountNotFound(pubkey: string): RpcError {\n\t\treturn new RpcError(\n\t\t\tRpcErrorCode.ACCOUNT_NOT_FOUND,\n\t\t\t`Account ${pubkey} not found on chain. It may not exist or has zero balance.`,\n\t\t\t{ pubkey },\n\t\t\tfalse,\n\t\t);\n\t}\n\n\tstatic rateLimitExceeded(details: RpcErrorDetails): RpcError {\n\t\treturn new RpcError(\n\t\t\tRpcErrorCode.RATE_LIMIT_EXCEEDED,\n\t\t\t\"Rate limit exceeded. Too many requests to the RPC endpoint. Try again later or use a different endpoint.\",\n\t\t\tdetails,\n\t\t\ttrue, // Can retry after delay\n\t\t);\n\t}\n\n\tstatic fromRpcCode(\n\t\trpcCode: number,\n\t\tmessage: string,\n\t\tdetails: RpcErrorDetails,\n\t): RpcError {\n\t\t// Map JSON-RPC error codes to our error codes\n\t\tconst codeMap: Record<number, RpcErrorCode> = {\n\t\t\t[-32700]: RpcErrorCode.PARSE_ERROR,\n\t\t\t[-32600]: RpcErrorCode.INVALID_REQUEST,\n\t\t\t[-32601]: RpcErrorCode.METHOD_NOT_FOUND,\n\t\t\t[-32602]: RpcErrorCode.INVALID_PARAMS,\n\t\t\t[-32603]: RpcErrorCode.INTERNAL_ERROR,\n\t\t\t[429]: RpcErrorCode.RATE_LIMIT_EXCEEDED,\n\t\t};\n\n\t\tconst code = codeMap[rpcCode] || RpcErrorCode.INTERNAL_ERROR;\n\t\tconst retryable = rpcCode === 429 || rpcCode === -32603;\n\n\t\treturn new RpcError(code, message, { ...details, rpcCode }, retryable);\n\t}\n\n\ttoJSON(): {\n\t\tcode: RpcErrorCode;\n\t\tmessage: string;\n\t\tdetails?: Record<string, unknown>;\n\t\tretryable: boolean;\n\t} {\n\t\treturn {\n\t\t\tcode: this.code,\n\t\t\tmessage: this.message,\n\t\t\tdetails: this.details,\n\t\t\tretryable: this.retryable,\n\t\t};\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Base RPC client with JSON-RPC 2.0 protocol handling.\n *\n * Provides common functionality for all RPC clients including\n * request/response validation and error handling.\n */\nimport { RpcError } from \"../errors\";\nimport type { HttpTransport } from \"../http-transport\";\n\ninterface JsonRpcRequest {\n\tjsonrpc: \"2.0\";\n\tid: number;\n\tmethod: string;\n\tparams: unknown[];\n}\n\ninterface JsonRpcResponse<T> {\n\tjsonrpc: \"2.0\";\n\tid: number;\n\tresult?: T;\n\terror?: {\n\t\tcode: number;\n\t\tmessage: string;\n\t\tdata?: unknown;\n\t};\n}\n\n/**\n * Base client with JSON-RPC protocol handling.\n *\n * All specific clients (QueryClient, TransactionClient) extend this.\n */\nexport class BaseRpcClient {\n\tprotected readonly transport: HttpTransport;\n\tprivate requestId = 0;\n\n\tconstructor(transport: HttpTransport) {\n\t\tthis.transport = transport;\n\t}\n\n\t/**\n\t * Makes a JSON-RPC 2.0 method call with type safety.\n\t *\n\t * Handles request serialization, response validation, and error mapping.\n\t */\n\tprotected async call<T>(method: string, params: unknown[] = []): Promise<T> {\n\t\tconst requestId = this.nextRequestId();\n\n\t\tconst request: JsonRpcRequest = {\n\t\t\tjsonrpc: \"2.0\",\n\t\t\tid: requestId,\n\t\t\tmethod,\n\t\t\tparams,\n\t\t};\n\n\t\tconst requestBody = JSON.stringify(request);\n\t\tconst requestDetails = { method, params, requestId };\n\n\t\t// Make HTTP request with retry logic\n\t\tconst data = await this.transport.request(requestBody, requestDetails);\n\n\t\t// Validate response structure\n\t\tif (!this.isValidJsonRpcResponse(data)) {\n\t\t\tthrow RpcError.invalidResponse({\n\t\t\t\t...requestDetails,\n\t\t\t\tresponse: data,\n\t\t\t});\n\t\t}\n\n\t\tconst response = data as JsonRpcResponse<T>;\n\n\t\t// Check for RPC error\n\t\tif (response.error) {\n\t\t\tthrow RpcError.fromRpcCode(response.error.code, response.error.message, {\n\t\t\t\t...requestDetails,\n\t\t\t\trpcData: response.error.data,\n\t\t\t});\n\t\t}\n\n\t\t// Check for result\n\t\tif (!(\"result\" in response)) {\n\t\t\tthrow RpcError.invalidResponse({\n\t\t\t\t...requestDetails,\n\t\t\t\tresponse,\n\t\t\t});\n\t\t}\n\n\t\treturn response.result as T;\n\t}\n\n\t/**\n\t * Validate JSON-RPC response structure\n\t */\n\tprivate isValidJsonRpcResponse(data: unknown): boolean {\n\t\tif (typeof data !== \"object\" || data === null) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst response = data as Record<string, unknown>;\n\n\t\treturn (\n\t\t\tresponse.jsonrpc === \"2.0\" &&\n\t\t\ttypeof response.id === \"number\" &&\n\t\t\t(\"result\" in response || \"error\" in response)\n\t\t);\n\t}\n\n\t/**\n\t * Generates the next request ID with Overflow Protection.\n\t * @returns The next request ID.\n\t */\n\tprivate nextRequestId(): number {\n\t\tthis.requestId = (this.requestId + 1) % Number.MAX_SAFE_INTEGER;\n\t\treturn this.requestId;\n\t}\n\n\t/**\n\t * Returns the configured RPC endpoint URL.\n\t */\n\tgetUrl(): string {\n\t\treturn this.transport.getUrl();\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n\tURL_DEVNET,\n\tURL_LOCALNET,\n\tURL_MAINNET,\n\tURL_TESTNET,\n} from \"./constants\";\n\n/**\n * Converts bytes to base64 string.\n *\n * Works in both browser and Node.js environments.\n */\nexport function toBase64(bytes: Uint8Array): string {\n\t// Browser environment\n\tif (typeof btoa !== \"undefined\") {\n\t\t// For large arrays, chunk to avoid call stack size exceeded\n\t\tconst chunkSize = 8192;\n\t\tlet result = \"\";\n\n\t\tfor (let i = 0; i < bytes.length; i += chunkSize) {\n\t\t\tconst chunk = bytes.slice(i, i + chunkSize);\n\t\t\tresult += String.fromCharCode(...chunk);\n\t\t}\n\n\t\treturn btoa(result);\n\t}\n\n\t// Node.js environment\n\tif (typeof Buffer !== \"undefined\") {\n\t\treturn Buffer.from(bytes).toString(\"base64\");\n\t}\n\n\tthrow new Error(\"No base64 encoding available in this environment\");\n}\n\n/**\n * Converts base64 string to bytes.\n *\n * Works in both browser and Node.js environments.\n */\nexport function fromBase64(base64: string): Uint8Array {\n\t// Browser environment\n\tif (typeof atob !== \"undefined\") {\n\t\tconst binary = atob(base64);\n\t\tconst bytes = new Uint8Array(binary.length);\n\t\tfor (let i = 0; i < binary.length; i++) {\n\t\t\tbytes[i] = binary.charCodeAt(i);\n\t\t}\n\t\treturn bytes;\n\t}\n\n\t// Node.js environment\n\tif (typeof Buffer !== \"undefined\") {\n\t\treturn new Uint8Array(Buffer.from(base64, \"base64\"));\n\t}\n\n\tthrow new Error(\"No base64 decoding available in this environment\");\n}\n\n/**\n * Sleeps for the specified duration.\n *\n * @param ms - Milliseconds to sleep\n */\nexport function sleep(ms: number): Promise<void> {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Calculates exponential backoff delay with jitter.\n *\n * @param attempt - Current retry attempt (0-indexed)\n * @param baseMs - Base delay in milliseconds\n * @param maxMs - Maximum delay in milliseconds\n * @returns Calculated delay with 30% random jitter\n */\nexport function calculateBackoff(\n\tattempt: number,\n\tbaseMs = 1000,\n\tmaxMs = 30000,\n): number {\n\tconst exponentialDelay = baseMs * 2 ** attempt;\n\tconst jitter = Math.random() * 0.3 * exponentialDelay; // 30% jitter\n\treturn Math.min(exponentialDelay + jitter, maxMs);\n}\n\n/**\n * Returns the devnet RPC URL.\n */\nexport function getDevnetUrl(): string {\n\treturn URL_DEVNET;\n}\n\n/**\n * Returns the testnet RPC URL.\n */\nexport function getTestnetUrl(): string {\n\treturn URL_TESTNET;\n}\n\n/**\n * Returns the mainnet RPC URL.\n */\nexport function getMainnetUrl(): string {\n\treturn URL_MAINNET;\n}\n\n/**\n * Returns the localnet RPC URL.\n */\nexport function getLocalnetUrl(): string {\n\treturn URL_LOCALNET;\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Query client for read-only RPC operations.\n */\n\nimport { PublicKey } from \"../../crypto\";\nimport { fromBase64 } from \"../../utils\";\nimport type {\n\tAccountInfo,\n\tEpochInfoResponse,\n\tSignatureStatus,\n\tTransactionResponse,\n} from \"../types\";\nimport { BaseRpcClient } from \"./base-client\";\n\n/**\n * Client for querying blockchain state.\n *\n * Handles all read-only operations like getting balances, account info, etc.\n */\nexport class QueryRpcClient extends BaseRpcClient {\n\t/**\n\t * Retrieve the balance of an account in kelvins (smallest unit).\n\t *\n\t * @param pubkey - The public key of the account to query\n\t * @returns The account balance in kelvins\n\t *\n\t * @example\n\t * ```typescript\n\t * const balance = await client.getBalance(publicKey);\n\t * console.log(`Balance: ${balance} kelvins`);\n\t * ```\n\t */\n\tasync getBalance(pubkey: PublicKey): Promise<bigint> {\n\t\tconst result = await this.call<{ value: number }>(\"getBalance\", [\n\t\t\t{ address: pubkey.toString() },\n\t\t]);\n\t\treturn BigInt(result.value);\n\t}\n\n\t/**\n\t * Retrieve detailed information about an account.\n\t *\n\t * Returns account data including balance, owner program, stored data,\n\t * executable status, and rent epoch.\n\t *\n\t * @param pubkey - The public key of the account to query\n\t * @returns Account information, or null if the account does not exist\n\t *\n\t * @example\n\t * ```typescript\n\t * const info = await client.getAccountInfo(publicKey);\n\t * if (info) {\n\t * console.log(`Owner: ${info.owner}`);\n\t * console.log(`Balance: ${info.balance} kelvins`);\n\t * console.log(`Data length: ${info.data.length} bytes`);\n\t * }\n\t * ```\n\t */\n\tasync getAccountInfo(pubkey: PublicKey): Promise<AccountInfo | null> {\n\t\tconst result = await this.call<{\n\t\t\tvalue: {\n\t\t\t\tbalance: number;\n\t\t\t\towner: string;\n\t\t\t\tdata: string;\n\t\t\t\texecutable: boolean;\n\t\t\t\trentEpoch: number;\n\t\t\t} | null;\n\t\t}>(\"getAccountInfo\", [{ address: pubkey.toString(), encoding: \"base64\" }]);\n\n\t\tif (!result.value) {\n\t\t\treturn null; // Account doesn't exist\n\t\t}\n\n\t\treturn {\n\t\t\tbalance: BigInt(result.value.balance),\n\t\t\towner: PublicKey.fromString(result.value.owner),\n\t\t\tdata: fromBase64(result.value.data),\n\t\t\texecutable: result.value.executable,\n\t\t\trentEpoch: BigInt(result.value.rentEpoch),\n\t\t};\n\t}\n\n\t/**\n\t * Retrieve the current block height of the blockchain.\n\t *\n\t * The block height represents the number of blocks that have been\n\t * confirmed on the chain since genesis.\n\t *\n\t * @returns The current block height\n\t *\n\t * @example\n\t * ```typescript\n\t * const height = await client.getBlockHeight();\n\t * console.log(`Current block height: ${height}`);\n\t * ```\n\t */\n\tasync getBlockHeight(): Promise<bigint> {\n\t\tconst result = await this.call<number>(\"getBlockHeight\", []);\n\t\treturn BigInt(result);\n\t}\n\n\t/**\n\t * Retrieve detailed information about a confirmed transaction.\n\t *\n\t * Returns transaction metadata including the block height it was\n\t * confirmed in and any execution errors.\n\t *\n\t * @param signature - The transaction signature to query\n\t * @returns Transaction information, or null if the transaction is not found\n\t *\n\t * @example\n\t * ```typescript\n\t * const tx = await client.getTransaction(signature);\n\t * if (tx) {\n\t * console.log(`Confirmed in block: ${tx.blockHeight}`);\n\t * if (tx.err) {\n\t * console.log(`Transaction failed: ${tx.err}`);\n\t * }\n\t * }\n\t * ```\n\t */\n\tasync getTransaction(signature: string): Promise<TransactionResponse | null> {\n\t\tconst result = await this.call<{\n\t\t\tslot: number;\n\t\t\tblock_height?: number;\n\t\t\terr?: string;\n\t\t\tmeta: {\n\t\t\t\terr?: string;\n\t\t\t};\n\t\t} | null>(\"getTransaction\", [signature]);\n\n\t\tif (!result) {\n\t\t\treturn null; // Transaction not found\n\t\t}\n\n\t\treturn {\n\t\t\tsignature,\n\t\t\tblockHeight: BigInt(result.block_height ?? 0),\n\t\t\terr: result.err ?? result.meta?.err ?? undefined,\n\t\t};\n\t}\n\n\t/**\n\t * Retrieve the total number of transactions processed since genesis.\n\t *\n\t * @returns The total transaction count\n\t *\n\t * @example\n\t * ```typescript\n\t * const count = await client.getTransactionCount();\n\t * console.log(`Total transactions: ${count}`);\n\t * ```\n\t */\n\tasync getTransactionCount(): Promise<bigint> {\n\t\tconst result = await this.call<number>(\"getTransactionCount\", []);\n\t\treturn BigInt(result);\n\t}\n\n\t/**\n\t * Retrieve the status of multiple transaction signatures in a single request.\n\t *\n\t * Useful for batch-checking transaction confirmations. Returns null for\n\t * signatures that are not found or have expired from the status cache.\n\t *\n\t * @param signatures - Array of transaction signatures to query\n\t * @returns Array of signature statuses (null if signature not found)\n\t *\n\t * @example\n\t * ```typescript\n\t * const statuses = await client.getSignatureStatuses([sig1, sig2, sig3]);\n\t * statuses.forEach((status, i) => {\n\t * if (status) {\n\t * console.log(`${signatures[i]}: slot ${status.slot}, executed: ${status.executed}`);\n\t * } else {\n\t * console.log(`${signatures[i]}: not found`);\n\t * }\n\t * });\n\t * ```\n\t */\n\tasync getSignatureStatuses(\n\t\tsignatures: string[],\n\t): Promise<(SignatureStatus | null)[]> {\n\t\tconst result = await this.call<{\n\t\t\tvalue: Array<{\n\t\t\t\tslot: number;\n\t\t\t\texecuted: boolean;\n\t\t\t\terr?: string;\n\t\t\t} | null>;\n\t\t}>(\"getSignatureStatuses\", [signatures]);\n\n\t\treturn result.value.map((status) => {\n\t\t\tif (!status) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tslot: BigInt(status.slot),\n\t\t\t\texecuted: status.executed,\n\t\t\t\terr: status.err,\n\t\t\t};\n\t\t});\n\t}\n\n\t/**\n\t * Retrieve information about the current epoch.\n\t *\n\t * Returns epoch metadata including the current epoch number, slot position\n\t * within the epoch, total slots per epoch, and current block height.\n\t *\n\t * @returns Current epoch information\n\t *\n\t * @example\n\t * ```typescript\n\t * const info = await client.getEpochInfo();\n\t * console.log(`Epoch: ${info.epoch}`);\n\t * console.log(`Slot ${info.slotIndex} of ${info.slotsInEpoch}`);\n\t * console.log(`Block height: ${info.blockHeight}`);\n\t * ```\n\t */\n\tasync getEpochInfo(): Promise<EpochInfoResponse> {\n\t\tconst result = await this.call<{\n\t\t\tepoch: number;\n\t\t\tslotIndex: number;\n\t\t\tslotsInEpoch: number;\n\t\t\tabsoluteSlot: number;\n\t\t\tblockHeight: number;\n\t\t\ttransactionCount?: number;\n\t\t}>(\"getEpochInfo\", []);\n\n\t\treturn {\n\t\t\tepoch: BigInt(result.epoch),\n\t\t\tslotIndex: BigInt(result.slotIndex),\n\t\t\tslotsInEpoch: BigInt(result.slotsInEpoch),\n\t\t\tabsoluteSlot: BigInt(result.absoluteSlot),\n\t\t\tblockHeight: BigInt(result.blockHeight),\n\t\t\ttransactionCount: result.transactionCount\n\t\t\t\t? BigInt(result.transactionCount)\n\t\t\t\t: undefined,\n\t\t};\n\t}\n\n\t/**\n\t * Check the health status of the RPC node.\n\t *\n\t * Returns \"ok\" if the node is healthy. If the node is unhealthy,\n\t * returns an error message describing the issue.\n\t *\n\t * @returns \"ok\" if healthy, otherwise an error message\n\t *\n\t * @example\n\t * ```typescript\n\t * const health = await client.getHealth();\n\t * if (health === \"ok\") {\n\t * console.log(\"Node is healthy\");\n\t * } else {\n\t * console.log(`Node unhealthy: ${health}`);\n\t * }\n\t * ```\n\t */\n\tasync getHealth(): Promise<\"ok\" | string> {\n\t\tconst result = await this.call<string>(\"getHealth\", []);\n\t\treturn result;\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Query client for read-only RPC operations.\n */\n\nimport type { PublicKey } from \"../../crypto\";\nimport { toBase64 } from \"../../utils\";\nimport { RpcError, RpcErrorCode } from \"../errors\";\nimport type {\n\tConfirmTransactionOptions,\n\tConfirmedTransaction,\n\tSendAndConfirmOptions,\n\tSendTransactionOptions,\n\tTransactionResponse,\n} from \"../types\";\nimport { BaseRpcClient } from \"./base-client\";\n\nconst DEFAULT_MAX_RETRIES = 10;\nconst DEFAULT_RETRY_DELAY_MS = 200;\n\n/**\n * Client for sending/simulating transactions and requesting airdrops.\n *\n * Handles all transaction operations like sending transactions, requesting airdrops, etc.\n */\nexport class TransactionRpcClient extends BaseRpcClient {\n\t/**\n\t * Submit a signed transaction to the blockchain.\n\t *\n\t * Sends the transaction to the network for processing. The transaction\n\t * must be fully signed before submission. Returns immediately with the\n\t * transaction signature - use {@link confirmTransaction} or\n\t * {@link sendAndConfirmTransaction} to wait for confirmation.\n\t *\n\t * @param transaction - Serialized signed transaction bytes\n\t * @param options - Transaction submission options\n\t * @returns Transaction signature (base58 encoded)\n\t *\n\t * @example\n\t * ```typescript\n\t * const signature = await client.sendTransaction(signedTx);\n\t * console.log(`Submitted: ${signature}`);\n\t *\n\t * // With options\n\t * const signature = await client.sendTransaction(signedTx, {\n\t * skipPreflight: true,\n\t * maxRetries: 3,\n\t * });\n\t * ```\n\t */\n\tasync sendTransaction(\n\t\ttransaction: Uint8Array,\n\t\toptions?: SendTransactionOptions,\n\t): Promise<string> {\n\t\tconst base64Tx = toBase64(transaction);\n\n\t\tconst config = {\n\t\t\tencoding: \"base64\",\n\t\t\tskipPreflight: options?.skipPreflight ?? false,\n\t\t\tmaxRetries: options?.maxRetries ?? 5,\n\t\t};\n\n\t\tconst signature = await this.call<string>(\"sendTransaction\", [\n\t\t\tbase64Tx,\n\t\t\tconfig,\n\t\t]);\n\t\treturn signature;\n\t}\n\n\t/**\n\t * Wait for a transaction to be confirmed.\n\t *\n\t * A transaction is considered confirmed when:\n\t * - It has been processed in a block (`blockHeight > 0`)\n\t *\n\t * @param signature - Transaction signature to monitor\n\t * @param options - Confirmation options\n\t * @returns Confirmed transaction details\n\t * @throws {TransactionFailedError} If the transaction fails on-chain\n\t * @throws {TransactionConfirmationTimeoutError} If confirmation times out\n\t */\n\tasync confirmTransaction(\n\t\tsignature: string,\n\t\toptions?: ConfirmTransactionOptions,\n\t): Promise<ConfirmedTransaction> {\n\t\tconst maxRetries = options?.maxRetries ?? DEFAULT_MAX_RETRIES;\n\t\tconst retryDelay = options?.retryDelay ?? DEFAULT_RETRY_DELAY_MS;\n\n\t\t// Poll using getSignatureStatuses which is fast\n\t\tfor (let attempt = 0; attempt < maxRetries; attempt++) {\n\t\t\t// Wait before checking\n\t\t\tif (attempt > 0) {\n\t\t\t\tawait this.sleep(retryDelay);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst txInfo = await this.getTransaction(signature);\n\t\t\t\tif (!txInfo) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (txInfo.err) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsignature,\n\t\t\t\t\t\texecuted: false,\n\t\t\t\t\t\terr: txInfo.err,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Transaction executed - fully confirmed\n\t\t\t\tif (txInfo.blockHeight && txInfo.blockHeight > 0n) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsignature,\n\t\t\t\t\t\texecuted: true,\n\t\t\t\t\t\terr: undefined,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\t// Re-throw transaction failures immediately\n\t\t\t\tif (\n\t\t\t\t\terror instanceof RpcError &&\n\t\t\t\t\terror.code === RpcErrorCode.TRANSACTION_REJECTED\n\t\t\t\t) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow new RpcError(\n\t\t\tRpcErrorCode.TRANSACTION_CONFIRMATION_TIMEOUT,\n\t\t\t\"Transaction confirmation timed out\",\n\t\t\t{\n\t\t\t\tsignature,\n\t\t\t\tmaxRetries,\n\t\t\t},\n\t\t);\n\t}\n\n\t/**\n\t * Submit a signed transaction and wait for confirmation.\n\t *\n\t * Polls the transaction status until it is confirmed (blockHeight > 0),\n\t * or until the maximum number of retries is reached.\n\t *\n\t * @param transaction - Serialized signed transaction bytes\n\t * @param options - Transaction submission and confirmation options\n\t * @returns Confirmed transaction details\n\t * @throws {TransactionFailedError} If the transaction fails on-chain\n\t * @throws {TransactionConfirmationTimeoutError} If confirmation times out\n\t *\n\t * @example\n\t * ```typescript\n\t * const result = await client.sendAndConfirmTransaction(signedTx);\n\t * console.log(`Confirmed in block ${result.blockHeight}, executed: ${result.executed}`);\n\t *\n\t * // With custom retry settings\n\t * const result = await client.sendAndConfirmTransaction(signedTx, {\n\t * maxRetries: 3,\n\t * retryDelay: 500,\n\t * });\n\t * ```\n\t */\n\tasync sendAndConfirmTransaction(\n\t\ttransaction: Uint8Array,\n\t\toptions?: SendAndConfirmOptions,\n\t): Promise<ConfirmedTransaction> {\n\t\tconst signature = await this.sendTransaction(transaction, options);\n\t\treturn await this.confirmTransaction(signature, options);\n\t}\n\n\t/**\n\t * Request an airdrop of tokens to an account.\n\t *\n\t * **Note**: Only available on devnet and testnet networks.\n\t *\n\t * Returns immediately with the airdrop transaction signature.\n\t * Use {@link requestAirdropAndConfirm} to wait for the airdrop to complete.\n\t *\n\t * @param pubkey - The public key of the account to receive tokens\n\t * @param amount - Amount to airdrop in kelvins (smallest unit)\n\t * @returns Airdrop transaction signature\n\t *\n\t * @example\n\t * ```typescript\n\t * const signature = await client.requestAirdrop(publicKey, 1_000_000_000n);\n\t * console.log(`Airdrop requested: ${signature}`);\n\t * ```\n\t */\n\tasync requestAirdrop(pubkey: PublicKey, amount: bigint): Promise<string> {\n\t\tif (amount > BigInt(Number.MAX_SAFE_INTEGER)) {\n\t\t\tthrow new RpcError(\n\t\t\t\tRpcErrorCode.INVALID_PARAMS,\n\t\t\t\t`Airdrop amount ${amount} exceeds maximum safe value`,\n\t\t\t);\n\t\t}\n\t\tconst signature = await this.call<string>(\"requestAirdrop\", [\n\t\t\tpubkey.toString(),\n\t\t\tNumber(amount),\n\t\t]);\n\t\treturn signature;\n\t}\n\n\t/**\n\t * Request an airdrop of tokens and wait for confirmation.\n\t *\n\t * **Note**: Only available on devnet and testnet networks.\n\t *\n\t * Combines {@link requestAirdrop} and {@link confirmTransaction} into\n\t * a single call for convenience.\n\t *\n\t * @param pubkey - The public key of the account to receive tokens\n\t * @param amount - Amount to airdrop in kelvins (smallest unit)\n\t * @param options - Confirmation options (max retries, retry delay)\n\t * @returns Confirmed transaction details\n\t * @throws {RpcError} If the airdrop transaction fails or confirmation times out\n\t *\n\t * @example\n\t * ```typescript\n\t * const result = await client.requestAirdropAndConfirm(publicKey, 1_000_000_000n);\n\t * if (result.executed) {\n\t * console.log(\"Airdrop confirmed!\");\n\t * }\n\t * ```\n\t */\n\tasync requestAirdropAndConfirm(\n\t\tpubkey: PublicKey,\n\t\tamount: bigint,\n\t\toptions?: ConfirmTransactionOptions,\n\t): Promise<ConfirmedTransaction> {\n\t\tconst signature = await this.requestAirdrop(pubkey, amount);\n\t\treturn await this.confirmTransaction(signature, options);\n\t}\n\n\tprivate async getTransaction(\n\t\tsignature: string,\n\t): Promise<TransactionResponse | null> {\n\t\tconst result = await this.call<{\n\t\t\tslot: number;\n\t\t\tblock_height?: number;\n\t\t\terr?: string;\n\t\t\tmeta: {\n\t\t\t\terr?: string;\n\t\t\t};\n\t\t} | null>(\"getTransaction\", [signature]);\n\n\t\tif (!result) {\n\t\t\treturn null; // Transaction not found\n\t\t}\n\n\t\treturn {\n\t\t\tsignature,\n\t\t\tblockHeight: BigInt(result.block_height ?? 0),\n\t\t\terr: result.err ?? result.meta?.err ?? undefined,\n\t\t};\n\t}\n\n\t/**\n\t * Sleeps for a given number of milliseconds.\n\t * @param ms - The number of milliseconds to sleep.\n\t * @returns A promise that resolves when the sleep is complete.\n\t */\n\tprivate sleep(ms: number): Promise<void> {\n\t\treturn new Promise((resolve) => setTimeout(resolve, ms));\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Main Rialo RPC client for blockchain interactions.\n */\nimport type { PublicKey } from \"../../crypto\";\nimport type { HttpTransport } from \"../http-transport\";\nimport type {\n\tAccountInfo,\n\tConfirmedTransaction,\n\tConfirmTransactionOptions,\n\tEpochInfoResponse,\n\tSendAndConfirmOptions,\n\tSendTransactionOptions,\n\tSignatureStatus,\n\tTransactionResponse,\n} from \"../types\";\nimport type { ChainDefinition, IdentifierString } from \"./config\";\nimport { QueryRpcClient } from \"./query-client\";\nimport { TransactionRpcClient } from \"./transaction-client\";\n\n/**\n * High-level Rialo RPC client for blockchain interactions.\n *\n * Provides a unified interface for querying blockchain state and\n * sending transactions. Internally delegates to specialized clients\n * (QueryRpcClient, TransactionRpcClient) for modular organization.\n *\n * @example\n * ```typescript\n * import { createRialoClient, RIALO_DEVNET_CHAIN } from '@rialo/ts-cdk';\n *\n * const client = createRialoClient({ chain: RIALO_DEVNET_CHAIN });\n *\n * // Query operations\n * const balance = await client.getBalance(publicKey);\n * const chainId = client.getChainIdentifier();\n *\n * // Transaction operations\n * const signature = await client.sendTransaction(signedTx);\n * ```\n */\nexport class RialoClient {\n\tprivate readonly queryClient: QueryRpcClient;\n\tprivate readonly transactionClient: TransactionRpcClient;\n\tprivate readonly transport: HttpTransport;\n\tprivate readonly chain: ChainDefinition;\n\n\tconstructor(transport: HttpTransport, chain: ChainDefinition) {\n\t\tthis.chain = chain;\n\t\tthis.transport = transport;\n\t\tthis.queryClient = new QueryRpcClient(transport);\n\t\tthis.transactionClient = new TransactionRpcClient(transport);\n\t}\n\n\t/**\n\t * Returns the configured RPC endpoint URL.\n\t */\n\tgetUrl(): string {\n\t\treturn this.transport.getUrl();\n\t}\n\n\t/**\n\t * Returns the chain identifier.\n\t */\n\tgetChainIdentifier(): IdentifierString {\n\t\treturn this.chain.id;\n\t}\n\n\t/**\n\t * Returns the chain configuration.\n\t */\n\tgetChainConfig(): ChainDefinition {\n\t\treturn this.chain;\n\t}\n\n\t/**\n\t * Retrieves the balance of an account in kelvins (smallest unit).\n\t */\n\tasync getBalance(pubkey: PublicKey): Promise<bigint> {\n\t\treturn await this.queryClient.getBalance(pubkey);\n\t}\n\n\t/**\n\t * Retrieves detailed information about an account.\n\t *\n\t * @returns Account info or null if account doesn't exist\n\t */\n\tasync getAccountInfo(pubkey: PublicKey): Promise<AccountInfo | null> {\n\t\treturn await this.queryClient.getAccountInfo(pubkey);\n\t}\n\n\t/**\n\t * Retrieves the current block height.\n\t */\n\tasync getBlockHeight(): Promise<bigint> {\n\t\treturn await this.queryClient.getBlockHeight();\n\t}\n\n\t/**\n\t * Retrieves detailed information about a transaction.\n\t *\n\t * @returns Transaction info or null if transaction not found\n\t */\n\tasync getTransaction(signature: string): Promise<TransactionResponse | null> {\n\t\treturn await this.queryClient.getTransaction(signature);\n\t}\n\n\t/**\n\t * Retrieves the total number of transactions processed since genesis.\n\t */\n\tasync getTransactionCount(): Promise<bigint> {\n\t\treturn await this.queryClient.getTransactionCount();\n\t}\n\n\t/**\n\t * Retrieves the status of multiple transaction signatures.\n\t */\n\tasync getSignatureStatuses(\n\t\tsignatures: string[],\n\t): Promise<(SignatureStatus | null)[]> {\n\t\treturn await this.queryClient.getSignatureStatuses(signatures);\n\t}\n\n\t/**\n\t * Retrieves current epoch information.\n\t */\n\tasync getEpochInfo(): Promise<EpochInfoResponse> {\n\t\treturn await this.queryClient.getEpochInfo();\n\t}\n\n\t/**\n\t * Checks the health status of the RPC node.\n\t *\n\t * @returns \"ok\" if healthy, error message otherwise\n\t */\n\tasync getHealth(): Promise<\"ok\" | string> {\n\t\treturn await this.queryClient.getHealth();\n\t}\n\n\t/**\n\t * Submits a signed transaction to the blockchain.\n\t *\n\t * @param transaction - Serialized signed transaction bytes\n\t * @param options - Transaction submission options\n\t * @returns Transaction signature\n\t */\n\tasync sendTransaction(\n\t\ttransaction: Uint8Array,\n\t\toptions?: SendTransactionOptions,\n\t): Promise<string> {\n\t\treturn await this.transactionClient.sendTransaction(transaction, options);\n\t}\n\n\t/**\n\t * Requests an airdrop of tokens to an account.\n\t *\n\t * **Note**: Only available on devnet and testnet.\n\t *\n\t * @param pubkey - Account to receive the airdrop\n\t * @param amount - Amount in kelvins (smallest unit)\n\t * @returns Transaction signature\n\t */\n\tasync requestAirdrop(pubkey: PublicKey, amount: bigint): Promise<string> {\n\t\treturn await this.transactionClient.requestAirdrop(pubkey, amount);\n\t}\n\n\t/**\n\t * Submits a signed transaction and waits for confirmation.\n\t *\n\t * @param transaction - Serialized signed transaction bytes\n\t * @param options - Transaction submission and confirmation options\n\t * @returns Confirmed transaction details\n\t * @throws {TransactionFailedError} If the transaction fails on-chain\n\t * @throws {TransactionConfirmationTimeoutError} If confirmation times out\n\t *\n\t * @example\n\t * ```typescript\n\t * const result = await client.sendAndConfirmTransaction(signedTx);\n\t * console.log(`Confirmed in slot ${result.slot}`);\n\t * ```\n\t */\n\tasync sendAndConfirmTransaction(\n\t\ttransaction: Uint8Array,\n\t\toptions?: SendAndConfirmOptions,\n\t): Promise<ConfirmedTransaction> {\n\t\treturn await this.transactionClient.sendAndConfirmTransaction(\n\t\t\ttransaction,\n\t\t\toptions,\n\t\t);\n\t}\n\n\t/**\n\t * Waits for a transaction to be confirmed.\n\t *\n\t * @param signature - Transaction signature to monitor\n\t * @param options - Confirmation options\n\t * @returns Confirmed transaction details\n\t */\n\tasync confirmTransaction(\n\t\tsignature: string,\n\t\toptions?: ConfirmTransactionOptions,\n\t): Promise<ConfirmedTransaction> {\n\t\treturn await this.transactionClient.confirmTransaction(signature, options);\n\t}\n\n\t/**\n\t * Requests an airdrop and waits for confirmation.\n\t *\n\t * **Note**: Only available on devnet and testnet.\n\t */\n\tasync requestAirdropAndConfirm(\n\t\tpubkey: PublicKey,\n\t\tamount: bigint,\n\t\toptions?: ConfirmTransactionOptions,\n\t): Promise<ConfirmedTransaction> {\n\t\treturn await this.transactionClient.requestAirdropAndConfirm(\n\t\t\tpubkey,\n\t\t\tamount,\n\t\t\toptions,\n\t\t);\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Low-level HTTP transport with retry logic and timeout handling.\n *\n * Provides robust network communication with automatic retry,\n * exponential backoff, and proper error handling.\n */\nimport { calculateBackoff, sleep } from \"../utils\";\nimport { RpcError, RpcErrorCode } from \"./errors\";\n\nexport interface HttpTransportConfig {\n\t/** Request timeout in milliseconds */\n\ttimeout?: number;\n\t/** Maximum number of retry attempts */\n\tmaxRetries?: number;\n\t/** Base delay for exponential backoff (ms) */\n\tretryBaseDelay?: number;\n\t/** Maximum retry delay (ms) */\n\tretryMaxDelay?: number;\n\t/** Custom headers to include in requests */\n\theaders?: Record<string, string>;\n}\n\ninterface RequestOptions {\n\tmethod: string;\n\theaders: Record<string, string>;\n\tbody: string;\n\tsignal?: AbortSignal;\n}\n\nconst DEFAULT_CONFIG: Required<HttpTransportConfig> = {\n\ttimeout: 30000, // 30 seconds\n\tmaxRetries: 3,\n\tretryBaseDelay: 1000, // 1 second\n\tretryMaxDelay: 30000, // 30 seconds\n\theaders: {},\n};\n\n/**\n * HTTP transport with built-in retry logic and timeout handling.\n *\n * Features:\n * - Automatic retries with exponential backoff\n * - Request timeouts using AbortController\n * - Network error recovery\n * - Rate limit handling\n * - Proper HTTP status code handling\n */\nexport class HttpTransport {\n\tprivate readonly url: string;\n\tprivate readonly config: Required<HttpTransportConfig>;\n\n\tconstructor(url: string, config: HttpTransportConfig = {}) {\n\t\tthis.url = url;\n\t\tthis.config = { ...DEFAULT_CONFIG, ...config };\n\t}\n\n\t/**\n\t * Makes an HTTP request with automatic retry logic.\n\t *\n\t * Retries are attempted for network errors and server errors (5xx).\n\t * Uses exponential backoff between retry attempts.\n\t */\n\tasync request(\n\t\tbody: string,\n\t\trequestDetails: Record<string, unknown> = {},\n\t): Promise<unknown> {\n\t\tlet lastError: Error | undefined;\n\n\t\tfor (let attempt = 0; attempt <= this.config.maxRetries; attempt++) {\n\t\t\ttry {\n\t\t\t\treturn await this.makeRequest(body, requestDetails, attempt);\n\t\t\t} catch (error) {\n\t\t\t\tlastError = error as Error;\n\n\t\t\t\t// Don't retry if it's not a retryable error\n\t\t\t\tif (error instanceof RpcError && !error.retryable) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\n\t\t\t\t// Don't retry on the last attempt\n\t\t\t\tif (attempt === this.config.maxRetries) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\n\t\t\t\t// Calculate backoff delay\n\t\t\t\tconst delay = calculateBackoff(\n\t\t\t\t\tattempt,\n\t\t\t\t\tthis.config.retryBaseDelay,\n\t\t\t\t\tthis.config.retryMaxDelay,\n\t\t\t\t);\n\n\t\t\t\t// Wait before retrying\n\t\t\t\tawait sleep(delay);\n\t\t\t}\n\t\t}\n\n\t\t// Should never reach here, but TypeScript doesn't know that\n\t\tthrow lastError;\n\t}\n\n\t/**\n\t * Make a single HTTP request with timeout\n\t */\n\tprivate async makeRequest(\n\t\tbody: string,\n\t\trequestDetails: Record<string, unknown>,\n\t\tattempt: number,\n\t): Promise<unknown> {\n\t\tconst controller = new AbortController();\n\t\tconst timeoutId = setTimeout(() => controller.abort(), this.config.timeout);\n\n\t\ttry {\n\t\t\tconst options: RequestOptions = {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\t...this.config.headers,\n\t\t\t\t},\n\t\t\t\tbody,\n\t\t\t\tsignal: controller.signal,\n\t\t\t};\n\n\t\t\tconst response = await fetch(this.url, options);\n\n\t\t\t// Handle HTTP errors\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow await this.handleHttpError(response, requestDetails, attempt);\n\t\t\t}\n\n\t\t\t// Parse JSON response\n\t\t\tconst data = await response.json();\n\t\t\treturn data;\n\t\t} catch (error) {\n\t\t\t// Handle timeout\n\t\t\tif (error instanceof Error && error.name === \"AbortError\") {\n\t\t\t\tthrow RpcError.requestTimeout(this.config.timeout, {\n\t\t\t\t\t...requestDetails,\n\t\t\t\t\turl: this.url,\n\t\t\t\t\tattempts: attempt + 1,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Handle network errors\n\t\t\tif (error instanceof TypeError) {\n\t\t\t\tthrow RpcError.networkError(error.message, {\n\t\t\t\t\t...requestDetails,\n\t\t\t\t\turl: this.url,\n\t\t\t\t\tattempts: attempt + 1,\n\t\t\t\t\tcause: error.message,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Re-throw RpcError\n\t\t\tif (error instanceof RpcError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\t// Unknown error\n\t\t\tthrow RpcError.networkError(\"Unknown network error\", {\n\t\t\t\t...requestDetails,\n\t\t\t\turl: this.url,\n\t\t\t\tattempts: attempt + 1,\n\t\t\t\tcause: error instanceof Error ? error.message : String(error),\n\t\t\t});\n\t\t} finally {\n\t\t\tclearTimeout(timeoutId);\n\t\t}\n\t}\n\n\t/**\n\t * Handle HTTP error responses.\n\t *\n\t * Parses the response body to extract JSON-RPC error details when available,\n\t * regardless of HTTP status code. Falls back to HTTP status-based error handling.\n\t */\n\tprivate async handleHttpError(\n\t\tresponse: Response,\n\t\trequestDetails: Record<string, unknown>,\n\t\tattempt: number,\n\t): Promise<RpcError> {\n\t\tconst status = response.status;\n\t\tconst isRetryable = status >= 500 || status === 429;\n\t\tconst baseDetails = {\n\t\t\t...requestDetails,\n\t\t\thttpStatus: status,\n\t\t\turl: this.url,\n\t\t\tattempts: attempt + 1,\n\t\t};\n\n\t\t// Try to parse response body for error details\n\t\tconst { message, rpcCode, errorData } = await this.parseErrorResponse(\n\t\t\tresponse,\n\t\t\tstatus,\n\t\t);\n\n\t\t// Rate limiting gets special handling\n\t\tif (status === 429) {\n\t\t\treturn RpcError.rateLimitExceeded({\n\t\t\t\t...baseDetails,\n\t\t\t\tserverError: errorData,\n\t\t\t});\n\t\t}\n\n\t\t// If we have a JSON-RPC error code, use proper error mapping\n\t\tif (rpcCode !== undefined) {\n\t\t\treturn RpcError.fromRpcCode(rpcCode, message, {\n\t\t\t\t...baseDetails,\n\t\t\t\tserverError: errorData,\n\t\t\t});\n\t\t}\n\n\t\t// Server errors (5xx) are retryable network errors\n\t\tif (status >= 500) {\n\t\t\treturn RpcError.networkError(message, {\n\t\t\t\t...baseDetails,\n\t\t\t\tserverError: errorData,\n\t\t\t});\n\t\t}\n\n\t\t// Client errors (4xx) are not retryable\n\t\treturn new RpcError(RpcErrorCode.NETWORK_ERROR, message, baseDetails, isRetryable);\n\t}\n\n\t/**\n\t * Parse error response body to extract message and RPC error code.\n\t *\n\t * Handles multiple formats:\n\t * - JSON-RPC error: { error: { code, message, data? } }\n\t * - Simple JSON: { message: \"...\" }\n\t * - Non-JSON responses\n\t */\n\tprivate async parseErrorResponse(\n\t\tresponse: Response,\n\t\tstatus: number,\n\t): Promise<{ message: string; rpcCode?: number; errorData?: unknown }> {\n\t\tlet message = `HTTP ${status}: ${response.statusText}`;\n\t\tlet rpcCode: number | undefined;\n\t\tlet errorData: unknown;\n\n\t\ttry {\n\t\t\terrorData = await response.json();\n\n\t\t\tif (errorData && typeof errorData === \"object\") {\n\t\t\t\tconst data = errorData as Record<string, unknown>;\n\n\t\t\t\t// Check for JSON-RPC error format: { error: { code, message } }\n\t\t\t\tif (\n\t\t\t\t\tdata.error &&\n\t\t\t\t\ttypeof data.error === \"object\" &&\n\t\t\t\t\t\"message\" in data.error\n\t\t\t\t) {\n\t\t\t\t\tconst rpcError = data.error as Record<string, unknown>;\n\t\t\t\t\tmessage = String(rpcError.message);\n\t\t\t\t\trpcCode =\n\t\t\t\t\t\ttypeof rpcError.code === \"number\" ? rpcError.code : undefined;\n\t\t\t\t} else if (\"message\" in data) {\n\t\t\t\t\t// Fallback to top-level message\n\t\t\t\t\tmessage = String(data.message);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {\n\t\t\t// Response might not be JSON, keep default message\n\t\t}\n\n\t\treturn { message, rpcCode, errorData };\n\t}\n\n\t/**\n\t * Returns the configured RPC endpoint URL.\n\t */\n\tgetUrl(): string {\n\t\treturn this.url;\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nexport * from \"./clients\";\nexport * from \"./errors\";\nexport * from \"./http-transport\";\nexport * from \"./types\";\n\nimport {\n\tRIALO_DEVNET_CHAIN,\n\tRIALO_LOCALNET_CHAIN,\n\tRIALO_MAINNET_CHAIN,\n\tRIALO_TESTNET_CHAIN,\n} from \"../constants\";\nimport {\n\tRialoClient,\n\ttype RialoClientConfig,\n\ttype RialoNetwork,\n} from \"./clients\";\nimport { RpcError, RpcErrorCode } from \"./errors\";\nimport { HttpTransport } from \"./http-transport\";\n\n/**\n * Creates an RPC client with automatic retry and timeout handling.\n *\n * @param config - Client configuration with chain definition and optional transport settings\n * @param config.chain - Chain definition (e.g., RIALO_DEVNET_CHAIN, RIALO_MAINNET_CHAIN) or a custom chain with your own rpcUrl\n * @param config.transport - Optional transport configuration (timeout, retries, headers)\n * @returns Configured RialoClient instance\n *\n * @example\n * ```typescript\n * // Basic usage with preset chain\n * const client = createRialoClient({ chain: RIALO_DEVNET_CHAIN });\n *\n * // With custom transport config\n * const client = createRialoClient({\n * chain: RIALO_MAINNET_CHAIN,\n * transport: { timeout: 30000, maxRetries: 5 }\n * });\n *\n * // With custom RPC URL\n * const client = createRialoClient({\n * chain: {\n * id: 'rialo:mainnet',\n * name: 'Mainnet',\n * rpcUrl: 'https://mainnet.custom-rpc.com:4101'\n * },\n * });\n * ```\n */\nexport function createRialoClient(config: RialoClientConfig): RialoClient {\n\tconst { chain, transport } = config;\n\tconst httpTransport = new HttpTransport(chain.rpcUrl, transport);\n\n\treturn new RialoClient(httpTransport, chain);\n}\n\n/**\n * Returns a default RialoClientConfig for a given network.\n *\n * Provides preset chain configurations for standard Rialo networks, making it easy\n * to connect to mainnet, devnet, testnet, or localnet without manual configuration.\n *\n * @param network - Network identifier: \"mainnet\", \"devnet\", \"testnet\", or \"localnet\"\n * @returns Default RialoClientConfig for the specified network\n * @throws {RpcError} With code INVALID_NETWORK if an unknown network is provided\n *\n * @example\n * ```typescript\n * // Get devnet config and create client\n * const config = getDefaultRialoClientConfig('devnet');\n * const client = createRialoClient(config);\n *\n * // Customize the config with transport options\n * const config = getDefaultRialoClientConfig('mainnet');\n * const client = createRialoClient({\n * ...config,\n * transport: { timeout: 60000, maxRetries: 5 }\n * });\n *\n * // Use custom RPC URL while preserving network identity\n * const config = getDefaultRialoClientConfig('mainnet');\n * const client = createRialoClient({\n * ...config,\n * chain: {\n * ...config.chain,\n * rpcUrl: 'https://mainnet.custom-rpc.com:4101'\n * },\n * });\n * ```\n */\nexport function getDefaultRialoClientConfig(\n\tnetwork: RialoNetwork,\n): RialoClientConfig {\n\tswitch (network) {\n\t\tcase \"mainnet\":\n\t\t\treturn { chain: RIALO_MAINNET_CHAIN };\n\t\tcase \"devnet\":\n\t\t\treturn { chain: RIALO_DEVNET_CHAIN };\n\t\tcase \"testnet\":\n\t\t\treturn { chain: RIALO_TESTNET_CHAIN };\n\t\tcase \"localnet\":\n\t\t\treturn { chain: RIALO_LOCALNET_CHAIN };\n\t\tdefault:\n\t\t\tthrow new RpcError(\n\t\t\t\tRpcErrorCode.INVALID_NETWORK,\n\t\t\t\t`Unknown network: ${network}`,\n\t\t\t);\n\t}\n}\n","// Copyright (c) Subzero Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Keypair, PublicKey, Signature } from \"../crypto\";\nimport type { Signer } from \"./signer\";\n\n/**\n * Signer implementation using a local Ed25519 keypair.\n *\n * Provides synchronous signing without external dependencies.\n * Suitable for server-side applications, CLIs, and testing.\n *\n * @example\n * ```typescript\n * import { Keypair, KeypairSigner } from '@rialo/ts-cdk';\n *\n * // Generate new keypair\n * const keypair = Keypair.generate();\n * const signer = new KeypairSigner(keypair);\n *\n * // Or from mnemonic\n * const mnemonic = Mnemonic.generate();\n * const keypair = await mnemonic.toKeypair(0);\n * const signer = new KeypairSigner(keypair);\n *\n * // Sign messages\n * const publicKey = await signer.getPublicKey();\n * const signature = await signer.signMessage(message);\n * ```\n */\nexport class KeypairSigner implements Signer {\n\tconstructor(private readonly keypair: Keypair) {}\n\n\t/**\n\t * Returns the keypair's public key.\n\t */\n\tasync getPublicKey(): Promise<PublicKey> {\n\t\treturn this.keypair.publicKey;\n\t}\n\n\t/**\n\t * Signs a message using the keypair's private key.\n\t */\n\tasync signMessage(message: Uint8Array): Promise<Signature> {\n\t\treturn this.keypair.sign(message);\n\t}\n}\n"]}
|