FRE-600: Fix code review blockers

- Consolidated duplicate UndoManagers to single instance
- Fixed connection promise to only resolve on 'connected' status
- Fixed WebSocketProvider import (WebsocketProvider)
- Added proper doc.destroy() cleanup
- Renamed isPresenceInitialized property to avoid conflict

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
2026-04-25 00:08:01 -04:00
parent 65b552bb08
commit 7c684a42cc
48450 changed files with 5679671 additions and 383 deletions

6
node_modules/viem/node_modules/ox/Abi/package.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Abi.d.ts",
"main": "../_cjs/core/Abi.js",
"module": "../_esm/core/Abi.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/AbiConstructor.d.ts",
"main": "../_cjs/core/AbiConstructor.js",
"module": "../_esm/core/AbiConstructor.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/AbiError.d.ts",
"main": "../_cjs/core/AbiError.js",
"module": "../_esm/core/AbiError.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/AbiEvent.d.ts",
"main": "../_cjs/core/AbiEvent.js",
"module": "../_esm/core/AbiEvent.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/AbiFunction.d.ts",
"main": "../_cjs/core/AbiFunction.js",
"module": "../_esm/core/AbiFunction.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/AbiItem.d.ts",
"main": "../_cjs/core/AbiItem.js",
"module": "../_esm/core/AbiItem.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/AbiParameters.d.ts",
"main": "../_cjs/core/AbiParameters.js",
"module": "../_esm/core/AbiParameters.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/AccessList.d.ts",
"main": "../_cjs/core/AccessList.js",
"module": "../_esm/core/AccessList.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/AccountProof.d.ts",
"main": "../_cjs/core/AccountProof.js",
"module": "../_esm/core/AccountProof.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Address.d.ts",
"main": "../_cjs/core/Address.js",
"module": "../_esm/core/Address.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/AesGcm.d.ts",
"main": "../_cjs/core/AesGcm.js",
"module": "../_esm/core/AesGcm.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Authorization.d.ts",
"main": "../_cjs/core/Authorization.js",
"module": "../_esm/core/Authorization.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Base32.d.ts",
"main": "../_cjs/core/Base32.js",
"module": "../_esm/core/Base32.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Base58.d.ts",
"main": "../_cjs/core/Base58.js",
"module": "../_esm/core/Base58.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Base64.d.ts",
"main": "../_cjs/core/Base64.js",
"module": "../_esm/core/Base64.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Bech32m.d.ts",
"main": "../_cjs/core/Bech32m.js",
"module": "../_esm/core/Bech32m.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/BinaryStateTree.d.ts",
"main": "../_cjs/core/BinaryStateTree.js",
"module": "../_esm/core/BinaryStateTree.js"
}

6
node_modules/viem/node_modules/ox/Blobs/package.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Blobs.d.ts",
"main": "../_cjs/core/Blobs.js",
"module": "../_esm/core/Blobs.js"
}

6
node_modules/viem/node_modules/ox/Block/package.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Block.d.ts",
"main": "../_cjs/core/Block.js",
"module": "../_esm/core/Block.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/BlockOverrides.d.ts",
"main": "../_cjs/core/BlockOverrides.js",
"module": "../_esm/core/BlockOverrides.js"
}

6
node_modules/viem/node_modules/ox/Bloom/package.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Bloom.d.ts",
"main": "../_cjs/core/Bloom.js",
"module": "../_esm/core/Bloom.js"
}

6
node_modules/viem/node_modules/ox/Bls/package.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Bls.d.ts",
"main": "../_cjs/core/Bls.js",
"module": "../_esm/core/Bls.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/BlsPoint.d.ts",
"main": "../_cjs/core/BlsPoint.js",
"module": "../_esm/core/BlsPoint.js"
}

6
node_modules/viem/node_modules/ox/Bytes/package.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Bytes.d.ts",
"main": "../_cjs/core/Bytes.js",
"module": "../_esm/core/Bytes.js"
}

766
node_modules/viem/node_modules/ox/CHANGELOG.md generated vendored Normal file
View File

@@ -0,0 +1,766 @@
# ox
## 0.14.20
### Patch Changes
- [#225](https://github.com/wevm/ox/pull/225) [`7203ffc`](https://github.com/wevm/ox/commit/7203ffcc55cbcd1e31e7d89cd43bd86a948c135a) Thanks [@jxom](https://github.com/jxom)! - Fixed webpack compatibility for `VirtualMaster` by making the `node:worker_threads` import specifier non-literal, preventing bundlers from statically analyzing and failing on the `node:` scheme.
## 0.14.19
### Patch Changes
- [`3f6682d`](https://github.com/wevm/ox/commit/3f6682d88ba3ac53f4f84764acf62111ac229c9c) Thanks [@jxom](https://github.com/jxom)! - Embedded WASM keccak256 salt miner for `VirtualMaster.mineSaltAsync`. Added platform-agnostic worker pool supporting Node.js, Bun, Deno (`worker_threads`), and browsers (Web Workers via Blob URLs).
## 0.14.18
### Patch Changes
- [#221](https://github.com/wevm/ox/pull/221) [`3b84126`](https://github.com/wevm/ox/commit/3b841266704b2e2bc24359462bafd8acd7a16ec9) Thanks [@tmm](https://github.com/tmm)! - Added [TIP-1022](https://docs.tempo.xyz/protocol/tips/tip-1022) virtual address utilities to `ox/tempo`, including `VirtualAddress` helpers for formatting and parsing virtual addresses and `VirtualMaster` helpers for deriving registration hashes, validating salts, and mining bounded salt ranges.
## 0.14.17
### Patch Changes
- [#220](https://github.com/wevm/ox/pull/220) [`da7a62c`](https://github.com/wevm/ox/commit/da7a62cfbecb99b3cc24f275703e33b1320abb1b) Thanks [@Zygimantass](https://github.com/Zygimantass)! - Added Tempo zones support
- [#219](https://github.com/wevm/ox/pull/219) [`a934992`](https://github.com/wevm/ox/commit/a934992257add3724f16538c7a14d72e647a2b66) Thanks [@jxom](https://github.com/jxom)! - Added `feePayer` to `TransactionRequest` in `ox/tempo`.
- [#217](https://github.com/wevm/ox/pull/217) [`5e2ae4d`](https://github.com/wevm/ox/commit/5e2ae4d9a007bb4071896c5e4c0f258e9a637a54) Thanks [@jxom](https://github.com/jxom)! - Fixed `TransactionRequest.fromRpc` in `ox/tempo`. `TransactionRequest.toRpc` now folds top-level `to`/`data`/`value` into `calls` when `calls` is not provided.
## 0.14.16
### Patch Changes
- [`3ca1d56`](https://github.com/wevm/ox/commit/3ca1d56ac70a883fad5100e3d4da8208b84f5a20) Thanks [@jxom](https://github.com/jxom)! - Added `TransactionRequest.fromRpc` to `ox/tempo`.
## 0.14.15
### Patch Changes
- [`d073091`](https://github.com/wevm/ox/commit/d0730912904d951d3609d7191c5d83fc2d00030d) Thanks [@jxom](https://github.com/jxom)! - Fixed `TransactionRequest.blobVersionedHashes` to include `| undefined` for `exactOptionalPropertyTypes` compatibility.
## 0.14.14
### Patch Changes
- [`14137f7`](https://github.com/wevm/ox/commit/14137f77136a1184f5fecbb6083e7a93495ab7f8) Thanks [@jxom](https://github.com/jxom)! - Added `RpcSchema.ToViem` and `RpcSchema.FromViem` type utilities for converting between Ox and Viem RPC schema formats. Added `tempo_simulateV1` RPC schema to `ox/tempo`.
## 0.14.13
### Patch Changes
- [`68f8fa0`](https://github.com/wevm/ox/commit/68f8fa0514032e5495b6c527c61c957e1545850d) Thanks [@jxom](https://github.com/jxom)! - viem/tempo: Renamed `contractAddress` to `address` on `KeyAuthorization.Scope`. Added support for human-readable ABI signatures in `selector` (e.g. `'transfer(address,uint256)'`), which are automatically encoded into 4-byte selectors.
## 0.14.12
### Patch Changes
- [#208](https://github.com/wevm/ox/pull/208) [`30537f8`](https://github.com/wevm/ox/commit/30537f82b2721d5d8dbccdbc4fc422b4d41b0993) Thanks [@dgca](https://github.com/dgca)! - Added `serviceCodes` field to ERC-8021 `Attribution` schema.
- [#211](https://github.com/wevm/ox/pull/211) [`9d0d676`](https://github.com/wevm/ox/commit/9d0d6766385686ee380f5793d0ccb54f5928c153) Thanks [@jxom](https://github.com/jxom)! - `viem/tempo`: Added support for period and call scopes on `KeyAuthorization`.
## 0.14.11
### Patch Changes
- [#209](https://github.com/wevm/ox/pull/209) [`52d985e`](https://github.com/wevm/ox/commit/52d985e54ab063e4d835ad467da2bcf07fcbfb33) Thanks [@jxom](https://github.com/jxom)! - Fixed `Credential.serialize` to extract `authenticatorData` from the CBOR-encoded `attestationObject` when the browser/passkey provider doesn't expose it on the response object (e.g. Firefox + 1Password).
## 0.14.10
### Patch Changes
- [#204](https://github.com/wevm/ox/pull/204) [`9aec6a9`](https://github.com/wevm/ox/commit/9aec6a94ba294c38ec937dc8522582e2f0a40ddc) Thanks [@jxom](https://github.com/jxom)! - Added `Ed25519.toX25519PublicKey` and `Ed25519.toX25519PrivateKey` for converting Ed25519 keys to X25519 keys. Useful for performing X25519 Diffie-Hellman key exchange using an Ed25519 signing key pair.
## 0.14.9
### Patch Changes
- [#201](https://github.com/wevm/ox/pull/201) [`ea94ea6`](https://github.com/wevm/ox/commit/ea94ea627eec365de22ade3126dc39b824cc53f9) Thanks [@decofe](https://github.com/decofe)! - Fixed `KeyAuthorization.fromRpc` to preserve `undefined` expiry instead of defaulting to `0`.
## 0.14.8
### Patch Changes
- [`0d0575e`](https://github.com/wevm/ox/commit/0d0575e36503403ce245eaaaf29aac106bad508a) Thanks [@jxom](https://github.com/jxom)! - Added ERC-8021 Schema 2 (CBOR-encoded) attribution support to the `Attribution` module.
## 0.14.7
### Patch Changes
- [`8d51883`](https://github.com/wevm/ox/commit/8d5188398a2d63bbee566e1f59a00da345c3cc99) Thanks [@jxom](https://github.com/jxom)! - ox/tempo: Fixed output types.
## 0.14.6
### Patch Changes
- [#197](https://github.com/wevm/ox/pull/197) [`28ac186`](https://github.com/wevm/ox/commit/28ac1866867eda53bb2e2114f043d674cfcb093a) Thanks [@jxom](https://github.com/jxom)! - Fixed WebAuthn response serialization to fall back to getter methods (e.g. `getAuthenticatorData()`) when properties are not directly accessible on the response object. Some browsers and passkey providers (e.g. 1Password, Firefox) proxy the credential object, making property access return `undefined` even though the data is available via getter methods.
## 0.14.5
### Patch Changes
- [`6dcde2c`](https://github.com/wevm/ox/commit/6dcde2c34ae05928c9e7fd021af3731390b39619) Thanks [@jxom](https://github.com/jxom)! - Fixed type incompatibility between ox's `CredentialCreationOptions`/`CredentialRequestOptions` and the DOM's built-in types.
## 0.14.4
### Patch Changes
- [`0189572`](https://github.com/wevm/ox/commit/0189572f95c96bb9fed70966f7e0fa0eb951dee2) Thanks [@jxom](https://github.com/jxom)! - `ox/tempo`: Fixed sender recovery for fee payer transactions.
## 0.14.3
### Patch Changes
- [`3f7b80c`](https://github.com/wevm/ox/commit/3f7b80cb6537b407318abb6c6824b9daf91f02ef) Thanks [@jxom](https://github.com/jxom)! - Updated `TempoAddress` to new format.
## 0.14.2
### Patch Changes
- [`3dbb585`](https://github.com/wevm/ox/commit/3dbb5851fb486bdb2af5083f989018e6b2489847) Thanks [@jxom](https://github.com/jxom)! - Fixed `Registration.create` and `Authentication.sign` throwing "Permission denied to access object" in Firefox with the 1Password extension. Replaced `.bind()` defaults on `navigator.credentials.create`/`.get` with arrow functions, eagerly read credential response properties (`attestationObject`, `clientDataJSON`, `authenticatorData`, `signature`, `id`) before subsequent access is blocked by the cross-compartment proxy, and passed the already-read `attestationObject` to `parseCredentialPublicKey` so the 1Password fallback path no longer re-accesses the proxy.
## 0.14.1
### Patch Changes
- [`e0d36d4`](https://github.com/wevm/ox/commit/e0d36d4c82ee5234078df083fe5ebc845fe8676f) Thanks [@jxom](https://github.com/jxom)! - Added `keyId` to `SignatureEnvelope` and made keychain signatures default to v2.
## 0.14.0
### Minor Changes
- [#178](https://github.com/wevm/ox/pull/178) [`4a79ac5`](https://github.com/wevm/ox/commit/4a79ac540c05796ebc92a0d54ce0049a6ff5e195) Thanks [@jxom](https://github.com/jxom)! - **Breaking (`ox/tempo`):** `KeyAuthorization.chainId` is now required.
```diff
const authorization = KeyAuthorization.from({
address,
+ chainId: 1n,
expiry: 1234567890,
type: 'secp256k1',
})
```
### Patch Changes
- [#178](https://github.com/wevm/ox/pull/178) [`4a79ac5`](https://github.com/wevm/ox/commit/4a79ac540c05796ebc92a0d54ce0049a6ff5e195) Thanks [@jxom](https://github.com/jxom)! - **`ox/tempo`:** Added support for V2 keychain signature type (`0x04`) which binds the inner signature to the user account via `keccak256(0x04 || sigHash || userAddress)`.
## 0.13.2
### Patch Changes
- [#179](https://github.com/wevm/ox/pull/179) [`4b91335`](https://github.com/wevm/ox/commit/4b91335b5a68cfee39248ab91c78a0b98b1d1859) Thanks [@jxom](https://github.com/jxom)! - Added `Base32`, `CompactSize`, and `TempoAddress` modules. `Base32` implements BIP-173 bech32 base32 encoding/decoding. `CompactSize` implements Bitcoin's variable-length integer encoding. `TempoAddress` provides human-readable Tempo address formatting and parsing with `tempo1`/`tempoz1` prefixes, CompactSize zone ID encoding, and double-SHA256 checksumming.
## 0.13.1
### Patch Changes
- [`50c4d08`](https://github.com/wevm/ox/commit/50c4d08556e3c049979b24200efcb5534c156411) Thanks [@jxom](https://github.com/jxom)! - `ox/tempo`: Added `KeyAuthorization.serialize` and `KeyAuthorization.deserialize` for RLP encoding/decoding key authorizations.
`ox/tempo`: Fixed `KeyAuthorization.toTuple` to always include expiry in the tuple when limits are present, preventing malformed RLP encoding.
- [`50c4d08`](https://github.com/wevm/ox/commit/50c4d08556e3c049979b24200efcb5534c156411) Thanks [@jxom](https://github.com/jxom)! - `ox/tempo`: Added `SignatureEnvelope.extractAddress` and `SignatureEnvelope.extractPublicKey` to extract signer address/public key from a signature envelope. Handles all signature types: secp256k1 (via ecrecover), p256/webAuthn (from embedded public key), and keychain (from inner signature or root `userAddress`).
## 0.13.0
### Minor Changes
- [`c8c6229`](https://github.com/wevm/ox/commit/c8c62297ac43161095482176e1846ce61bb62eb5) Thanks [@jxom](https://github.com/jxom)! - Overhauled WebAuthn support with a dedicated `ox/webauthn` entrypoint for server-side registration & authentication ceremonies, credential management, and authenticator data parsing.
- `Registration` Full registration ceremony: `create`, `getOptions`, `verify`, with `serializeOptions`/`deserializeOptions` for server↔client transport
- `Authentication` Full authentication ceremony: `sign`, `getOptions`, `verify`, with `serializeOptions`/`deserializeOptions` for server↔client transport
- `Credential` `serialize`/`deserialize` for persisting and transporting WebAuthn credentials as JSON
- `Authenticator` Low-level utilities for constructing/parsing authenticator data, attestation objects, and client data JSON
## 0.12.4
### Patch Changes
- [`772f3eb`](https://github.com/wevm/ox/commit/772f3eb7139d1ef1f8f7271d3d10729948195b42) Thanks [@jxom](https://github.com/jxom)! - Added support for recovering the sender address (`from`) from the transaction signature in `TxEnvelopeTempo.deserialize`.
## 0.12.3
### Patch Changes
- [#171](https://github.com/wevm/ox/pull/171) [`d206a6e`](https://github.com/wevm/ox/commit/d206a6e3c371b9ed5d89ec89adcf86eba35bd6ed) Thanks [@jxom](https://github.com/jxom)! - Fixed COSE key encoding in `WebAuthnP256.getAuthenticatorData` to use CBOR integer keys.
- [#171](https://github.com/wevm/ox/pull/171) [`d206a6e`](https://github.com/wevm/ox/commit/d206a6e3c371b9ed5d89ec89adcf86eba35bd6ed) Thanks [@jxom](https://github.com/jxom)! - Added `CoseKey` module with `fromPublicKey` and `toPublicKey` for converting between P256 public keys and CBOR-encoded COSE_Key format.
- [#171](https://github.com/wevm/ox/pull/171) [`d206a6e`](https://github.com/wevm/ox/commit/d206a6e3c371b9ed5d89ec89adcf86eba35bd6ed) Thanks [@jxom](https://github.com/jxom)! - Added `Map` support to `Cbor.encode` for encoding maps with non-string keys (e.g. CBOR integer keys).
- [#171](https://github.com/wevm/ox/pull/171) [`d206a6e`](https://github.com/wevm/ox/commit/d206a6e3c371b9ed5d89ec89adcf86eba35bd6ed) Thanks [@jxom](https://github.com/jxom)! - Fixed `WebAuthnP256.verify` type-check slice bug.
## 0.12.2
### Patch Changes
- [`ddf03bc`](https://github.com/wevm/ox/commit/ddf03bcb9fef345e3ee45999855d15554b006ec1) Thanks [@jxom](https://github.com/jxom)! - Added `Json.canonicalize` (RFC 8785)
## 0.12.1
### Patch Changes
- [#166](https://github.com/wevm/ox/pull/166) [`480d01a`](https://github.com/wevm/ox/commit/480d01ae5f165b2d06474df1a417abca814b57c2) Thanks [@jxom](https://github.com/jxom)! - Derived sender address from signature in `TxEnvelopeTempo.serialize` when using `format: 'feePayer'`.
## 0.12.0
### Minor Changes
- [`f605321`](https://github.com/wevm/ox/commit/f60532162ff75c3dd19ebfa9ad1c56905fb35fb6) Thanks [@jxom](https://github.com/jxom)! - Added `Hash.hmac256` for computing HMAC-SHA256 hashes.
## 0.11.3
### Patch Changes
- [`4a79129`](https://github.com/wevm/ox/commit/4a79129da654098ee28ac63b4771a47a4bb57179) Thanks [@jxom](https://github.com/jxom)! - Fixed `TokenId.compute` return value.
## 0.11.2
### Patch Changes
- [#153](https://github.com/wevm/ox/pull/153) [`95ebfcf`](https://github.com/wevm/ox/commit/95ebfcf1caf857b3658c26c26bb2d6ebbd88b904) Thanks [@jxom](https://github.com/jxom)! - Added `TokenId.compute` to compute deterministic TIP-20 token addresses from sender and salt.
## 0.11.1
### Patch Changes
- [`11cde15`](https://github.com/wevm/ox/commit/11cde150fa9ad07c4e2f398c20ab95278a8ab0d5) Thanks [@jxom](https://github.com/jxom)! - Fixed `KeyAuthorization.toRpc`
## 0.11.0
### Minor Changes
- [`4c55afa`](https://github.com/wevm/ox/commit/4c55afa2c942eb86789b1315e5b4ccc4611aafca) Thanks [@jxom](https://github.com/jxom)! - **Breaking:** Renamed `prehash` to `preHash` on `KeyAuthorization#P256Rpc`
## 0.10.6
### Patch Changes
- [`a24f08a`](https://github.com/wevm/ox/commit/a24f08a11b9d980709512fda6cbd350c44500b30) Thanks [@jxom](https://github.com/jxom)! - Updated `TransactionRequest.toRpc` for Tempo.
## 0.10.5
### Patch Changes
- [`e750936`](https://github.com/wevm/ox/commit/e7509364b3e9c0db3ec34e82e4e3b5baf43164e9) Thanks [@jxom](https://github.com/jxom)! - Throw error if signature envelope type not supported.
## 0.10.4
### Patch Changes
- [`a449324`](https://github.com/wevm/ox/commit/a44932462769ac9e9a42e342310eae3d821e130c) Thanks [@jxom](https://github.com/jxom)! - Added `SignatureEnvelope.verify`.
- [`fa6cc3c`](https://github.com/wevm/ox/commit/fa6cc3c64bc358d3c31c6a4e0ac76960ec36b9c1) Thanks [@jxom](https://github.com/jxom)! - Added `magic` to `SignatureEnvelope.serialize`.
## 0.10.3
### Patch Changes
- [#144](https://github.com/wevm/ox/pull/144) [`253b471`](https://github.com/wevm/ox/commit/253b47185cad37083fc9f50f150b831c23274bc5) Thanks [@tmm](https://github.com/tmm)! - Bumped ABIType
## 0.10.2
### Patch Changes
- [`a98c346`](https://github.com/wevm/ox/commit/a98c346aead489f5c4697f5a2cbf6f5803921655) Thanks [@jxom](https://github.com/jxom)! - `ox/tempo`: Removed `0x` fallback on `to` for `TransactionRequest.toRpc`
## 0.10.1
### Patch Changes
- [`a5a63d4`](https://github.com/wevm/ox/commit/a5a63d4940734fb8df042df1f67aa0c6c8d9b698) Thanks [@jxom](https://github.com/jxom)! - Explicitly widened `WebAuthn` `getFn`/`createFn` to avoid downstream type conflicts.
## 0.10.0
### Minor Changes
- [#138](https://github.com/wevm/ox/pull/138) [`29a2f43`](https://github.com/wevm/ox/commit/29a2f4357c90fad0c4ba69e3ebf3665bdd5c30d1) Thanks [@wbj-cb](https://github.com/wbj-cb)! - **Breaking:** Aligned to latest ERC-8021 specification. Modified `Attribution.toDataSuffix` parameters to include `codeRegistry` instead of `registryAddress`.
```diff ts twoslash
Attribution.toDataSuffix({
codes: ['baseapp', 'morpho'],
- registryAddress: '0xcccccccccccccccccccccccccccccccccccccccc',
+ codeRegistry: {
+ address: '0xcccccccccccccccccccccccccccccccccccccccc`
+ chainId: 8453,
+ }
})
```
- [`f8bf590`](https://github.com/wevm/ox/commit/f8bf5908bfaf3b1a5d39c38cea98ed58fc9f7935) Thanks [@jxom](https://github.com/jxom)! - **Breaking:** Renamed `TransactionEnvelope*` to `TxEnvelope*`.
- [#140](https://github.com/wevm/ox/pull/140) [`7997629`](https://github.com/wevm/ox/commit/79976295604ef5281c33a89af9d59a6fafc9ddd0) Thanks [@jxom](https://github.com/jxom)! - Added `ox/tempo` entrypoint.
## 0.9.17
### Patch Changes
- [`e63c3b2`](https://github.com/wevm/ox/commit/e63c3b254371473becc918b7efc8ce89d0eeb5bb) Thanks [@jxom](https://github.com/jxom)! - Tweaked `WebAuthnP256.createCredential` to accept `challenge` of type `Hex`.
## 0.9.16
### Patch Changes
- [`d11e1fb`](https://github.com/wevm/ox/commit/d11e1fbd2554194a67d37c4da34dcf9f749e3698) Thanks [@jxom](https://github.com/jxom)! - Modified `WebAuthnP256.verify` to work with only `clientDataJSON` and `authenticatorData`
## 0.9.15
### Patch Changes
- [#133](https://github.com/wevm/ox/pull/133) [`07a7bb0`](https://github.com/wevm/ox/commit/07a7bb0110e38062c000d9e403e61621547eda7f) Thanks [@jxom](https://github.com/jxom)! - Added `Cbor` module.
## 0.9.14
### Patch Changes
- [`896096d`](https://github.com/wevm/ox/commit/896096d17516f686321b9353807bdaa63e7544cc) Thanks [@jxom](https://github.com/jxom)! - Exported types required for inference.
## 0.9.13
### Patch Changes
- [`95458ee`](https://github.com/wevm/ox/commit/95458ee13dc1b9333deb948791225e3883fb8b82) Thanks [@jxom](https://github.com/jxom)! - Added `TransactionRequest.fromRpc`
- [`c165694`](https://github.com/wevm/ox/commit/c1656940e959b9e904c3ec497b720e1315f390e2) Thanks [@jxom](https://github.com/jxom)! - Added ability to pass custom event map to `Provider.createEmitter`.
- [`c165694`](https://github.com/wevm/ox/commit/c1656940e959b9e904c3ec497b720e1315f390e2) Thanks [@jxom](https://github.com/jxom)! - Added ability to pass `schema` to `RpcRequest.createStore`
## 0.9.12
### Patch Changes
- [`242558a`](https://github.com/wevm/ox/commit/242558a745169931b08030f7e4b41f21b2d65e24) Thanks [@jxom](https://github.com/jxom)! - Fixed formatting between metadata and version on `BaseError`.
## 0.9.11
### Patch Changes
- [#126](https://github.com/wevm/ox/pull/126) [`b4572ed`](https://github.com/wevm/ox/commit/b4572ed6feaed7ee1063f8b710d98e928d848016) Thanks [@jxom](https://github.com/jxom)! - Added `ox/erc8021` entrypoint.
## 0.9.10
### Patch Changes
- [`f61d713`](https://github.com/wevm/ox/commit/f61d713d6dd5387b5f4d1c71643b28e77e1aaff8) Thanks [@jxom](https://github.com/jxom)! - Added `version` and `docsOrigin` to `Errors.BaseError`.
## 0.9.9
### Patch Changes
- [`a1c8a43`](https://github.com/wevm/ox/commit/a1c8a43d0d6549c1be8aa86d32a10e8ee327ffcf) Thanks [@jxom](https://github.com/jxom)! - Added `eth_sendRawTransactionSync` to types.
## 0.9.8
### Patch Changes
- [#119](https://github.com/wevm/ox/pull/119) [`447e386`](https://github.com/wevm/ox/commit/447e386a50fe514cf2abd472bace0a934d068358) Thanks [@jxom](https://github.com/jxom)! - Added [ERC-7821](https://eips.ethereum.org/EIPS/eip-7821) modules.
## 0.9.7
### Patch Changes
- [`8a08b24`](https://github.com/wevm/ox/commit/8a08b243bd255a2e35cd24a3d5d1bb3342b1f672) Thanks [@jxom](https://github.com/jxom)! - Serialize `type` on `TransactionRequest.toRpc`.
- [`5e1c0df`](https://github.com/wevm/ox/commit/5e1c0df66d429aa43a1e90b56a3daba788cedd6d) Thanks [@jxom](https://github.com/jxom)! - Added micro-optimizations.
## 0.9.6
### Patch Changes
- [`c154290`](https://github.com/wevm/ox/commit/c154290c6958702f854bece58309a15694589f22) Thanks [@jxom](https://github.com/jxom)! - Added ABI-shorthand for `AbiItem.{getSelector,getSignature,getSignatureHash}`
## 0.9.5
### Patch Changes
- [#113](https://github.com/wevm/ox/pull/113) [`e21cb3c`](https://github.com/wevm/ox/commit/e21cb3cf0b7412f9ca72824247d22ba25e8be4c9) Thanks [@jxom](https://github.com/jxom)! - Added support for specifying the ABI and signature name to:
- `AbiFunction.{encodeData,encodeResult,decodeData,decodeResult}`
- `AbiError.{encode,decode}`
- `AbiEvent.{encode,decode}`
Example:
```ts twoslash
import { AbiFunction } from "ox";
import { abi } from "./abi";
const data = AbiFunction.encodeData(abi, "approve", [
"0x0000000000000000000000000000000000000000",
1n,
]);
```
## 0.9.4
### Patch Changes
- [`8aaf1a4`](https://github.com/wevm/ox/commit/8aaf1a4c4aedf654abf9319932eb57b560186d43) Thanks [@jxom](https://github.com/jxom)! - Removed proxy packages. Metro (the problematic bundler) now respects `package.json#exports`.
## 0.9.3
### Patch Changes
- [`1cd8943`](https://github.com/wevm/ox/commit/1cd894336fb0a4cef8b0879cc214a7997fea1042) Thanks [@jxom](https://github.com/jxom)! - Updated dependencies.
## 0.9.2
### Patch Changes
- [`9be7919`](https://github.com/wevm/ox/commit/9be791906d9496111a1607344ddb02077f02f6a6) Thanks [@jxom](https://github.com/jxom)! - Updated `ox/erc8010` to latest spec changes.
## 0.9.1
### Patch Changes
- [`dec161a`](https://github.com/wevm/ox/commit/dec161ac7b3089bd6a0647d91e02f174ac421d65) Thanks [@jxom](https://github.com/jxom)! - Fixed `signature` type on ERC-6492 and ERC-8010.
## 0.9.0
### Minor Changes
- [#104](https://github.com/wevm/ox/pull/104) [`4f4b635`](https://github.com/wevm/ox/commit/4f4b635dfb399ca9df07bab843857743f389639e) Thanks [@jxom](https://github.com/jxom)! - **Breaking(`ox/erc6492`:**
- Renamed `WrappedSignature` to `SignatureErc6492`
- Renamed `WrappedSignature.WrappedSignature` to `SignatureErc6492.Unwrapped`
- Renamed `WrappedSignature.toHex` to `SignatureErc6492.wrap`
- Renamed `WrappedSignature.fromHex` to `SignatureErc6492.unwrap`
- [#104](https://github.com/wevm/ox/pull/104) [`4f4b635`](https://github.com/wevm/ox/commit/4f4b635dfb399ca9df07bab843857743f389639e) Thanks [@jxom](https://github.com/jxom)! - Added `ox/erc8010` entrypoint with `SignatureErc8010` module.
## 0.8.9
### Patch Changes
- [#102](https://github.com/wevm/ox/pull/102) [`5796d6d`](https://github.com/wevm/ox/commit/5796d6dbebff719c84b4658de37e3240adbc87e1) Thanks [@dan1kov](https://github.com/dan1kov)! - Fixed signature destructuring on `Authorization.fromTuple`.
## 0.8.8
### Patch Changes
- [#98](https://github.com/wevm/ox/pull/98) [`96c2046`](https://github.com/wevm/ox/commit/96c20462420a3e6be1301cccb4b66afe1bccc3f8) Thanks [@mmv08](https://github.com/mmv08)! - Added handling for `bigint` chain IDs in `TypedData.extractEip712DomainTypes`.
## 0.8.7
### Patch Changes
- [`9a9ef21`](https://github.com/wevm/ox/commit/9a9ef21e17f982fa6f7b76d5ad615b68d200d9eb) Thanks [@jxom](https://github.com/jxom)! - Fixed zeroish conversion of `chainId` and `nonce` in `Authorization.fromTuple`.
## 0.8.6
### Patch Changes
- [#94](https://github.com/wevm/ox/pull/94) [`301c319`](https://github.com/wevm/ox/commit/301c319fafab25b1a3a85bcf6bc81c3c9dee72d9) Thanks [@jxom](https://github.com/jxom)! - **ERC-4337**: Added `UserOperation.fromPacked`.
## 0.8.5
### Patch Changes
- [#92](https://github.com/wevm/ox/pull/92) [`b6eaa05`](https://github.com/wevm/ox/commit/b6eaa055ce415cd24f802b8bfa5bdbbd53480ab8) Thanks [@jxom](https://github.com/jxom)! - Added support for EntryPoint 0.8.
## 0.8.4
### Patch Changes
- [`ce19a08`](https://github.com/wevm/ox/commit/ce19a087bffaa205067fca530532fb05cc02c792) Thanks [@jxom](https://github.com/jxom)! - Added `stack` to `Provider.InternalError`.
## 0.8.3
### Patch Changes
- [#74](https://github.com/wevm/ox/pull/74) [`72209ef`](https://github.com/wevm/ox/commit/72209efaf2bf6dd5d71274db8df7416532ebe9cb) Thanks [@danpopenko](https://github.com/danpopenko)! - Added extensions support for `WebAuthnP256.sign`.
## 0.8.2
### Patch Changes
- [`9fd0bf0`](https://github.com/wevm/ox/commit/9fd0bf0460694709566805bc29f50cad25816620) Thanks [@jxom](https://github.com/jxom)! - Added [ECDH (Elliptic Curve Diffie-Hellman)](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/deriveKey#ecdh) shared secrets to `P256`, `Secp256k1`, and `WebCryptoP256` modules. This enables secure key agreement between parties using elliptic curve cryptography for both secp256k1 and secp256r1 (P256) curves, with support for both `@noble/curves` (for `P256` and `Secp256k1`) implementation and Web Crypto APIs (`WebCryptoP256`).
- `P256.getSharedSecret`
- `Secp256k1.getSharedSecret`
- `WebCryptoP256.getSharedSecret`
- [`9fd0bf0`](https://github.com/wevm/ox/commit/9fd0bf0460694709566805bc29f50cad25816620) Thanks [@jxom](https://github.com/jxom)! - Added `createKeyPair` helper functions for `Bls`, `P256`, and `Secp256k1` modules. These functions provide a convenient way to generate complete key pairs (private key + public key) in a single operation, simplifying key generation workflows and reducing the need for separate `randomPrivateKey` and `getPublicKey` calls.
- [`9fd0bf0`](https://github.com/wevm/ox/commit/9fd0bf0460694709566805bc29f50cad25816620) Thanks [@jxom](https://github.com/jxom)! - Added `Ed25519` and `X25519` modules. The `Ed25519` module provides functionality for creating key pairs, signing messages, and verifying signatures using the Ed25519 signature scheme. The `X25519` module enables Elliptic Curve Diffie-Hellman (ECDH) key agreement operations for secure shared secret derivation.
## 0.8.1
### Patch Changes
- [`74e47c5`](https://github.com/wevm/ox/commit/74e47c5df471a48f4fb389f0684ca52f841fbc11) Thanks [@jxom](https://github.com/jxom)! - Added `Keystore.toKey` and `Keystore.toKeyAsync` to derive a key from a JSON Keystore using a password.
## 0.8.0
### Minor Changes
- [`7fc1da0`](https://github.com/wevm/ox/commit/7fc1da0717a17dbac0e4effed2ea3911c7ca3236) Thanks [@jxom](https://github.com/jxom)! - **Breaking(`Keystore`):** Keystore derivation functions (e.g. `Keystore.pbkdf2`) now return a tuple of the key and derivation options,
instead of an object with the key and options.
```diff
import { Keystore } from 'ox'
- const key = Keystore.pbkdf2({ password: 'testpassword' })
+ const [key, opts] = Keystore.pbkdf2({ password: 'testpassword' })
```
- [`7fc1da0`](https://github.com/wevm/ox/commit/7fc1da0717a17dbac0e4effed2ea3911c7ca3236) Thanks [@jxom](https://github.com/jxom)! - **Breaking(`Keystore`):** `Keystore.decrypt` function interface no longer requires an object as the second parameter, now it only requires the key itself.
```diff
import { Keystore } from 'ox'
const [key, opts] = Keystore.pbkdf2({ password: 'testpassword' })
const encrypted = await Keystore.encrypt(secret, key, opts)
+ const decrypted = await Keystore.decrypt(encrypted, key)
```
- [`7fc1da0`](https://github.com/wevm/ox/commit/7fc1da0717a17dbac0e4effed2ea3911c7ca3236) Thanks [@jxom](https://github.com/jxom)! - **Breaking(`Keystore`):** `Keystore.encrypt` function interface has changed to require derivation options (`opts`).
```diff
import { Keystore } from 'ox'
const [key, opts] = Keystore.pbkdf2({ password: 'testpassword' })
- const encrypted = await Keystore.encrypt(secret, key)
+ const encrypted = await Keystore.encrypt(secret, key, opts)
```
## 0.7.2
### Patch Changes
- [`6090531`](https://github.com/wevm/ox/commit/6090531e29be96d2bd1eda1f85f3e7322b48ff18) Thanks [@jxom](https://github.com/jxom)! - Updated dependencies.
- [`c4c7070`](https://github.com/wevm/ox/commit/c4c7070c7d50fd8d745e5f881305bdf4aa5362d0) Thanks [@jxom](https://github.com/jxom)! - Fixed parsing of zeroish nonces.
## 0.7.1
### Patch Changes
- [#75](https://github.com/wevm/ox/pull/75) [`27a1e28`](https://github.com/wevm/ox/commit/27a1e28e1f403ca18d428611fc3b88dcb5a4503e) Thanks [@jxom](https://github.com/jxom)! - Added `Keystore` module.
## 0.7.0
### Minor Changes
- [`09f72cb`](https://github.com/wevm/ox/commit/09f72cb33f076151e3437cf42b1cad775148a2bb) Thanks [@jxom](https://github.com/jxom)! - Updated EIP-5792 APIs to the latest spec on `RpcSchema`.
### Patch Changes
- [`61a9c57`](https://github.com/wevm/ox/commit/61a9c5798b8072b9c16691463742835b15c17468) Thanks [@jxom](https://github.com/jxom)! - Added EIP-5792 provider errors.
## 0.6.12
### Patch Changes
- [`5247546`](https://github.com/wevm/ox/commit/5247546f0400a3edb3c99f90be7696ab7d3fd7d9) Thanks [@jxom](https://github.com/jxom)! - Fixed `Provider.parseError` case.
## 0.6.11
### Patch Changes
- [`ba67f11`](https://github.com/wevm/ox/commit/ba67f11bb377f132583a3eb04ae761bd36a08387) Thanks [@jxom](https://github.com/jxom)! - Enhanced handling of arbitrary Provider errors.
## 0.6.10
### Patch Changes
- [#65](https://github.com/wevm/ox/pull/65) [`33712a5`](https://github.com/wevm/ox/commit/33712a5680e4b2ad6be0513e70049160628287a0) Thanks [@thomas779](https://github.com/thomas779)! - Added support for multiple `credentialId`s in `WebAuthnP256`.
- [`10e6449`](https://github.com/wevm/ox/commit/10e6449e0e5f060c5ea3db026f4fb98978f78cca) Thanks [@jxom](https://github.com/jxom)! - Added case to fall back to `cause.details` for `BaseError` details.
## 0.6.9
### Patch Changes
- [`6480607`](https://github.com/wevm/ox/commit/6480607767387a64f720e0fa3abbc26ea9409990) Thanks [@jxom](https://github.com/jxom)! - Fixed `AbiEvent.encode` for zeroish arguments.
## 0.6.8
### Patch Changes
- [#60](https://github.com/wevm/ox/pull/60) [`7ff54a2`](https://github.com/wevm/ox/commit/7ff54a2d0a77e2af5a2cc0e1095f0f8d952510c8) Thanks [@jxom](https://github.com/jxom)! - Added `BinaryStateTree` (EIP-7864) module.
## 0.6.7
### Patch Changes
- [`076c6a2`](https://github.com/wevm/ox/commit/076c6a260bfd42d6e66a7490bfb36425f91099d7) Thanks [@jxom](https://github.com/jxom)! - Removed redundant pure annotation.
## 0.6.6
### Patch Changes
- [`980f0e2`](https://github.com/wevm/ox/commit/980f0e269cca1ef3c564aba75055fef867ca3e6f) Thanks [@jxom](https://github.com/jxom)! - Fixed TSDoc.
## 0.6.5
### Patch Changes
- [`0b5182f`](https://github.com/wevm/ox/commit/0b5182f94821715c227dc8b0c891d4548b30fa0e) Thanks [@jxom](https://github.com/jxom)! - Fixed build process for typedef generation.
## 0.6.4
### Patch Changes
- [`74ceae4`](https://github.com/wevm/ox/commit/74ceae4089663ebae18690a44fd98accc28b9b5c) Thanks [@jxom](https://github.com/jxom)! - Fixed `Provider.parseError` behavior.
## 0.6.3
### Patch Changes
- [`ddaed51`](https://github.com/wevm/ox/commit/ddaed51550308eceda3c9a080503cf1fdfac6ac0) Thanks [@jxom](https://github.com/jxom)! - Fixed parsing of Provider RPC errors.
## 0.6.2
### Patch Changes
- [`e541cec`](https://github.com/wevm/ox/commit/e541ceca3c00f0d0b2fbd239696476934dc13ea3) Thanks [@jxom](https://github.com/jxom)! - Modified fallback RPC Errors to `RpcResponse.InternalError`.
## 0.6.1
### Patch Changes
- [`5d007ae`](https://github.com/wevm/ox/commit/5d007aebab4a7fe6acc8eb3cfecbce59fe79a00b) Thanks [@jxom](https://github.com/jxom)! - Added `RpcResponse.parseErrorObject` and `Provider.parseErrorObject`.
## 0.6.0
### Minor Changes
- [`94ec558`](https://github.com/wevm/ox/commit/94ec558c3f56d3254080be520a0d257e8b5d42c2) Thanks [@jxom](https://github.com/jxom)! - Added `BlockOverrides` & `StateOverrides` modules.
- [`94ec558`](https://github.com/wevm/ox/commit/94ec558c3f56d3254080be520a0d257e8b5d42c2) Thanks [@jxom](https://github.com/jxom)! - Added `eth_simulateV1` to `eth_` RPC schema.
## 0.5.0
### Minor Changes
- [`1406e22`](https://github.com/wevm/ox/commit/1406e224d0527732885fdb7737ed2f0dc41929ef) Thanks [@jxom](https://github.com/jxom)! - Added ERC-4337 utilities.
## 0.4.4
### Patch Changes
- [#45](https://github.com/wevm/ox/pull/45) [`48b896f`](https://github.com/wevm/ox/commit/48b896f3c491bcf9e0d8460857b278ede74eaf9e) Thanks [@deodad](https://github.com/deodad)! - Ensured addresses are checksummed when creating SIWE messages
## 0.4.3
### Patch Changes
- [`c09d165`](https://github.com/wevm/ox/commit/c09d1655a1fa65be33d0dfb86d14cfe0dad7bdc3) Thanks [@jxom](https://github.com/jxom)! - Added `checksumAddress` as an option to `AbiParameters.{encode|decode}`.
## 0.4.2
### Patch Changes
- [#40](https://github.com/wevm/ox/pull/40) [`47e306d`](https://github.com/wevm/ox/commit/47e306d8ab95140eb7e2589c05351d1663a507ae) Thanks [@jxom](https://github.com/jxom)! - **ox/erc6492:** Added universal signature verification exports.
## 0.4.1
### Patch Changes
- [#37](https://github.com/wevm/ox/pull/37) [`39604df`](https://github.com/wevm/ox/commit/39604df9f84b810322e12f767ef450c0c2ced308) Thanks [@jxom](https://github.com/jxom)! - Added `ox/erc6492` entrypoint.
## 0.4.0
### Minor Changes
- [#35](https://github.com/wevm/ox/pull/35) [`4680b06`](https://github.com/wevm/ox/commit/4680b06d4715b1b62d903f45490d325506a1e959) Thanks [@gregfromstl](https://github.com/gregfromstl)! - Updated `Signature.toHex` to serialize the last byte as `v` instead of `yParity` for widened compatibility.
### Patch Changes
- [`15f9863`](https://github.com/wevm/ox/commit/15f98630c46ec0c09998162a92a5e8bac709e32d) Thanks [@jxom](https://github.com/jxom)! - Added assertion for ABI-encoding integer ranges.
- [`2e0d4af`](https://github.com/wevm/ox/commit/2e0d4af5c6e26c09a9b83971be0fc06415ee4976) Thanks [@jxom](https://github.com/jxom)! - Added support for block identifiers.
## 0.3.1
### Patch Changes
- [`e4104cd`](https://github.com/wevm/ox/commit/e4104cdb217de1fa30480b40060eb0fb0f7ad8d5) Thanks [@jxom](https://github.com/jxom)! - Added `extraEntropy` option to `Secp256k1.sign` & `P256.sign`.
## 0.3.0
### Minor Changes
- [`9ad0d2c`](https://github.com/wevm/ox/commit/9ad0d2c9777b5c6a8c1cd64ad8742f9c05706606) Thanks [@jxom](https://github.com/jxom)! - Added extra entropy to signature generation.
## 0.2.2
### Patch Changes
- [`4f40358`](https://github.com/wevm/ox/commit/4f4035826313dce974b7c7fa64ba4ea20d1f7f61) Thanks [@jxom](https://github.com/jxom)! - Tweaked `RpcResponse` and `Provider` errors to have optional parameters.
## 0.2.1
### Patch Changes
- [`6e4b635`](https://github.com/wevm/ox/commit/6e4b635ee720312be6631dee4f24fdd3c066f2eb) Thanks [@jxom](https://github.com/jxom)! - Derive EIP-712 Domain type if not provided in `TypedData.serialize`.
## 0.2.0
### Minor Changes
- [`2f0fc9b`](https://github.com/wevm/ox/commit/2f0fc9b66ff70bf03a3ecf146ed1a62433f53eb8) Thanks [@jxom](https://github.com/jxom)! - **Breaking:** Removed `.parseError` property on functions. Use the `.ErrorType` property instead. [Example](https://oxlib.sh/error-handling#usage-with-neverthrow)
### Patch Changes
- [`af01579`](https://github.com/wevm/ox/commit/af01579951b898ebd659cd6b64aaa56f7733c191) Thanks [@jxom](https://github.com/jxom)! - Assert that EIP-712 domains are valid.
## 0.1.8
### Patch Changes
- [#25](https://github.com/wevm/ox/pull/25) [`5da9efb`](https://github.com/wevm/ox/commit/5da9efbfebfa738ee0f78927e90b3fab61cbb2e8) Thanks [@tmm](https://github.com/tmm)! - Shimmed `WebAuthnP256.createCredential` for 1Password Firefox Add-on.
## 0.1.7
### Patch Changes
- [`33b5123`](https://github.com/wevm/ox/commit/33b51236908f17cb8644a47e222995e1800853db) Thanks [@tmm](https://github.com/tmm)! - Updated Provider errors.
## 0.1.6
### Patch Changes
- [`4405c4b`](https://github.com/wevm/ox/commit/4405c4bd2bff3f9f222a90de7323cce77c94b5f3) Thanks [@jxom](https://github.com/jxom)! - Amended `accountsChanged` parameter to be `readonly`.
- [#22](https://github.com/wevm/ox/pull/22) [`23f2d61`](https://github.com/wevm/ox/commit/23f2d61f817c5d33f0053cb154447f0b26244cc1) Thanks [@tmm](https://github.com/tmm)! - Added EIP 1193 errors.
## 0.1.5
### Patch Changes
- [`644b96a`](https://github.com/wevm/ox/commit/644b96a169a118c6f0606eda5354785523ed099b) Thanks [@jxom](https://github.com/jxom)! - Added additional guard for `result` in `Provider.from`.
## 0.1.4
### Patch Changes
- [`777fe42`](https://github.com/wevm/ox/commit/777fe4249c5225c676ff690fda58c5fcfb35d1f0) Thanks [@jxom](https://github.com/jxom)! - Tweaked `trimLeft` to remove all leading zeros.
## 0.1.3
### Patch Changes
- [`868d431`](https://github.com/wevm/ox/commit/868d4319a8cda77345f85f9f2e88ca786f0c8cfe) Thanks [@jxom](https://github.com/jxom)! - Added handling for odd-length hex values.
## 0.1.2
### Patch Changes
- [#17](https://github.com/wevm/ox/pull/17) [`f438faf`](https://github.com/wevm/ox/commit/f438fafbd396248283876eba220f4c661c47bfd2) Thanks [@jxom](https://github.com/jxom)! - Moved modules to `core/`.
## 0.1.1
### Patch Changes
- [`b7de4f2`](https://github.com/wevm/ox/commit/b7de4f2180520fd7f2bf08955df6e676d75db93e) Thanks [@jxom](https://github.com/jxom)! - Fixed `RpcSchema` inference on `params`.
## 0.1.0
### Minor Changes
- [`4297bcf`](https://github.com/wevm/ox/commit/4297bcf0acef7f1f208ba3770d679fefa0c2cb8d) Thanks [@jxom](https://github.com/jxom)! - Initial release.

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Caches.d.ts",
"main": "../_cjs/core/Caches.js",
"module": "../_esm/core/Caches.js"
}

6
node_modules/viem/node_modules/ox/Cbor/package.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Cbor.d.ts",
"main": "../_cjs/core/Cbor.js",
"module": "../_esm/core/Cbor.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/CompactSize.d.ts",
"main": "../_cjs/core/CompactSize.js",
"module": "../_esm/core/CompactSize.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/ContractAddress.d.ts",
"main": "../_cjs/core/ContractAddress.js",
"module": "../_esm/core/ContractAddress.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/CoseKey.d.ts",
"main": "../_cjs/core/CoseKey.js",
"module": "../_esm/core/CoseKey.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Ed25519.d.ts",
"main": "../_cjs/core/Ed25519.js",
"module": "../_esm/core/Ed25519.js"
}

6
node_modules/viem/node_modules/ox/Ens/package.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Ens.d.ts",
"main": "../_cjs/core/Ens.js",
"module": "../_esm/core/Ens.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Errors.d.ts",
"main": "../_cjs/core/Errors.js",
"module": "../_esm/core/Errors.js"
}

6
node_modules/viem/node_modules/ox/Fee/package.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Fee.d.ts",
"main": "../_cjs/core/Fee.js",
"module": "../_esm/core/Fee.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Filter.d.ts",
"main": "../_cjs/core/Filter.js",
"module": "../_esm/core/Filter.js"
}

6
node_modules/viem/node_modules/ox/Hash/package.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Hash.d.ts",
"main": "../_cjs/core/Hash.js",
"module": "../_esm/core/Hash.js"
}

6
node_modules/viem/node_modules/ox/HdKey/package.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/HdKey.d.ts",
"main": "../_cjs/core/HdKey.js",
"module": "../_esm/core/HdKey.js"
}

6
node_modules/viem/node_modules/ox/Hex/package.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Hex.d.ts",
"main": "../_cjs/core/Hex.js",
"module": "../_esm/core/Hex.js"
}

6
node_modules/viem/node_modules/ox/Json/package.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Json.d.ts",
"main": "../_cjs/core/Json.js",
"module": "../_esm/core/Json.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Keystore.d.ts",
"main": "../_cjs/core/Keystore.js",
"module": "../_esm/core/Keystore.js"
}

6
node_modules/viem/node_modules/ox/Kzg/package.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Kzg.d.ts",
"main": "../_cjs/core/Kzg.js",
"module": "../_esm/core/Kzg.js"
}

21
node_modules/viem/node_modules/ox/LICENSE generated vendored Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2023-present wevm
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

6
node_modules/viem/node_modules/ox/Log/package.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Log.d.ts",
"main": "../_cjs/core/Log.js",
"module": "../_esm/core/Log.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Mnemonic.d.ts",
"main": "../_cjs/core/Mnemonic.js",
"module": "../_esm/core/Mnemonic.js"
}

6
node_modules/viem/node_modules/ox/P256/package.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/P256.d.ts",
"main": "../_cjs/core/P256.js",
"module": "../_esm/core/P256.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/PersonalMessage.d.ts",
"main": "../_cjs/core/PersonalMessage.js",
"module": "../_esm/core/PersonalMessage.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Provider.d.ts",
"main": "../_cjs/core/Provider.js",
"module": "../_esm/core/Provider.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/PublicKey.d.ts",
"main": "../_cjs/core/PublicKey.js",
"module": "../_esm/core/PublicKey.js"
}

93
node_modules/viem/node_modules/ox/README.md generated vendored Normal file
View File

@@ -0,0 +1,93 @@
<br/>
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/wevm/ox/blob/main/.github/ox-dark.svg">
<img alt="ox logo" src="https://github.com/wevm/ox/blob/main/.github/ox-light.svg" width="auto" height="200">
</picture>
</p>
<p align="center">
<a href="https://www.npmjs.com/package/ox">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/npm/v/ox?colorA=21262d&colorB=21262d&style=flat">
<img src="https://img.shields.io/npm/v/ox?colorA=f6f8fa&colorB=f6f8fa&style=flat" alt="Version">
</picture>
</a>
<a href="https://github.com/wevm/ox/blob/main/LICENSE">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/npm/l/ox?colorA=21262d&colorB=21262d&style=flat">
<img src="https://img.shields.io/npm/l/ox?colorA=f6f8fa&colorB=f6f8fa&style=flat" alt="MIT License">
</picture>
</a>
<a href="https://app.codecov.io/gh/wevm/ox">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/codecov/c/github/wevm/ox?colorA=21262d&colorB=21262d&style=flat">
<img src="https://img.shields.io/codecov/c/github/wevm/ox?colorA=f6f8fa&colorB=f6f8fa&style=flat" alt="Code coverage">
</picture>
</a>
</p>
## Overview
Ox (⦻) is the foundation of robust Ethereum software written in TypeScript. It is an Ethereum Standard Library that provides a set of lightweight, performant, and type-safe TypeScript modules for Ethereum.
It offers core utilities & types for primitives such as: ABIs, Addresses, Blocks, Bytes, ECDSA, Hex, JSON-RPC, RLP, Signing & Signatures, Transaction Envelopes, and more.
As an unopinionated Standard Library, it is designed to be used by higher-level consumers (such as [Viem](https://viem.sh), [Tevm](https://tevm.sh), or their alternatives) to provide their own opinionated interfaces, and/or when reaching for low-level primitives may be needed without buying into a Client Abstraction stack (Viem, Ethers, Web3.js, etc).
## Documentation
[Head to the documentation](https://oxlib.sh) to read and learn more about Ox.
## Example Usage
The example below demonstrates how to construct, sign, and broadcast a transaction envelope using Ox:
```ts
import { Provider, Secp256k1, TxEnvelopeEip1559, Value } from 'ox'
// 1. Construct a transaction envelope.
const envelope = TxEnvelopeEip1559.from({
chainId: 1,
gas: 21000n,
nonce: 0n,
maxFeePerGas: Value.fromGwei('10'),
maxPriorityFeePerGas: Value.fromGwei('1'),
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
value: Value.fromEther('1'),
})
// 2. Get the signing payload for the envelope.
const payload = TxEnvelopeEip1559.getSignPayload(envelope)
// 3. Sign the payload with your private key using secp256k1.
const signature = Secp256k1.sign({ payload, privateKey: '0x...' })
// 4. Serialize the envelope with the signature.
const serialized = TxEnvelopeEip1559.serialize(envelope, { signature })
// 5. Broadcast the envelope to the network.
const provider = Provider.from(window.ethereum)
const hash = await provider.request({
method: 'eth_sendRawTransaction',
params: [serialized],
})
```
> [!NOTE]
> Ox's APIs are purposely stateless, unopinionated, and verbose. The example above can definitely be achieved in a few lines of code in a more concise manner, however, the goal is for higher-level abstractions (Viem, etc) built on top of Ox to handle this for you.
## Community
Check out the following places for more Ox-related content:
- Follow [@wevm_dev](https://x.com/wevm_dev), [@jxom](https://x.com/_jxom), and [@awkweb](https://x.com/awkweb) on Twitter for project updates
- Join the [discussions on GitHub](https://github.com/wevm/ox/discussions)
## Support
- [GitHub Sponsors](https://github.com/sponsors/wevm?metadata_campaign=docs_support)
- [Gitcoin Grant](https://wagmi.sh/gitcoin)
- [wevm.eth](https://etherscan.io/enslookup-search?search=wevm.eth)

6
node_modules/viem/node_modules/ox/Rlp/package.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Rlp.d.ts",
"main": "../_cjs/core/Rlp.js",
"module": "../_esm/core/Rlp.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/RpcRequest.d.ts",
"main": "../_cjs/core/RpcRequest.js",
"module": "../_esm/core/RpcRequest.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/RpcResponse.d.ts",
"main": "../_cjs/core/RpcResponse.js",
"module": "../_esm/core/RpcResponse.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/RpcSchema.d.ts",
"main": "../_cjs/core/RpcSchema.js",
"module": "../_esm/core/RpcSchema.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/RpcTransport.d.ts",
"main": "../_cjs/core/RpcTransport.js",
"module": "../_esm/core/RpcTransport.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Secp256k1.d.ts",
"main": "../_cjs/core/Secp256k1.js",
"module": "../_esm/core/Secp256k1.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Signature.d.ts",
"main": "../_cjs/core/Signature.js",
"module": "../_esm/core/Signature.js"
}

6
node_modules/viem/node_modules/ox/Siwe/package.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Siwe.d.ts",
"main": "../_cjs/core/Siwe.js",
"module": "../_esm/core/Siwe.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Solidity.d.ts",
"main": "../_cjs/core/Solidity.js",
"module": "../_esm/core/Solidity.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/StateOverrides.d.ts",
"main": "../_cjs/core/StateOverrides.js",
"module": "../_esm/core/StateOverrides.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Transaction.d.ts",
"main": "../_cjs/core/Transaction.js",
"module": "../_esm/core/Transaction.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/TransactionReceipt.d.ts",
"main": "../_cjs/core/TransactionReceipt.js",
"module": "../_esm/core/TransactionReceipt.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/TransactionRequest.d.ts",
"main": "../_cjs/core/TransactionRequest.js",
"module": "../_esm/core/TransactionRequest.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/TxEnvelope.d.ts",
"main": "../_cjs/core/TxEnvelope.js",
"module": "../_esm/core/TxEnvelope.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/TxEnvelopeEip1559.d.ts",
"main": "../_cjs/core/TxEnvelopeEip1559.js",
"module": "../_esm/core/TxEnvelopeEip1559.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/TxEnvelopeEip2930.d.ts",
"main": "../_cjs/core/TxEnvelopeEip2930.js",
"module": "../_esm/core/TxEnvelopeEip2930.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/TxEnvelopeEip4844.d.ts",
"main": "../_cjs/core/TxEnvelopeEip4844.js",
"module": "../_esm/core/TxEnvelopeEip4844.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/TxEnvelopeEip7702.d.ts",
"main": "../_cjs/core/TxEnvelopeEip7702.js",
"module": "../_esm/core/TxEnvelopeEip7702.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/TxEnvelopeLegacy.d.ts",
"main": "../_cjs/core/TxEnvelopeLegacy.js",
"module": "../_esm/core/TxEnvelopeLegacy.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/TypedData.d.ts",
"main": "../_cjs/core/TypedData.js",
"module": "../_esm/core/TypedData.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/ValidatorData.d.ts",
"main": "../_cjs/core/ValidatorData.js",
"module": "../_esm/core/ValidatorData.js"
}

6
node_modules/viem/node_modules/ox/Value/package.json generated vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Value.d.ts",
"main": "../_cjs/core/Value.js",
"module": "../_esm/core/Value.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/WebAuthnP256.d.ts",
"main": "../_cjs/core/WebAuthnP256.js",
"module": "../_esm/core/WebAuthnP256.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/WebCryptoP256.d.ts",
"main": "../_cjs/core/WebCryptoP256.js",
"module": "../_esm/core/WebCryptoP256.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/Withdrawal.d.ts",
"main": "../_cjs/core/Withdrawal.js",
"module": "../_esm/core/Withdrawal.js"
}

View File

@@ -0,0 +1,6 @@
{
"type": "module",
"types": "../_types/core/X25519.d.ts",
"main": "../_cjs/core/X25519.js",
"module": "../_esm/core/X25519.js"
}

15
node_modules/viem/node_modules/ox/_cjs/core/Abi.js generated vendored Normal file
View File

@@ -0,0 +1,15 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.format = format;
exports.from = from;
const abitype = require("abitype");
const internal = require("./internal/abi.js");
function format(abi) {
return abitype.formatAbi(abi);
}
function from(abi) {
if (internal.isSignatures(abi))
return abitype.parseAbi(abi);
return abi;
}
//# sourceMappingURL=Abi.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Abi.js","sourceRoot":"","sources":["../../core/Abi.ts"],"names":[],"mappings":";;AA8CA,wBAEC;AA+FD,oBAGC;AAlJD,mCAAkC;AAElC,8CAA6C;AA4C7C,SAAgB,MAAM,CAAC,GAA6B;IAClD,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,CAAU,CAAA;AACxC,CAAC;AA+FD,SAAgB,IAAI,CAAC,GAA4B;IAC/C,IAAI,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC5D,OAAO,GAAG,CAAA;AACZ,CAAC"}

View File

@@ -0,0 +1,51 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.decode = decode;
exports.encode = encode;
exports.format = format;
exports.from = from;
exports.fromAbi = fromAbi;
const abitype = require("abitype");
const AbiItem = require("./AbiItem.js");
const AbiParameters = require("./AbiParameters.js");
const Hex = require("./Hex.js");
function decode(...parameters) {
const [abiConstructor, options] = (() => {
if (Array.isArray(parameters[0])) {
const [abi, options] = parameters;
return [fromAbi(abi), options];
}
return parameters;
})();
const { bytecode } = options;
if (abiConstructor.inputs?.length === 0)
return undefined;
const data = options.data.replace(bytecode, '0x');
return AbiParameters.decode(abiConstructor.inputs, data);
}
function encode(...parameters) {
const [abiConstructor, options] = (() => {
if (Array.isArray(parameters[0])) {
const [abi, options] = parameters;
return [fromAbi(abi), options];
}
return parameters;
})();
const { bytecode, args } = options;
return Hex.concat(bytecode, abiConstructor.inputs?.length && args?.length
? AbiParameters.encode(abiConstructor.inputs, args)
: '0x');
}
function format(abiConstructor) {
return abitype.formatAbiItem(abiConstructor);
}
function from(abiConstructor) {
return AbiItem.from(abiConstructor);
}
function fromAbi(abi) {
const item = abi.find((item) => item.type === 'constructor');
if (!item)
throw new AbiItem.NotFoundError({ name: 'constructor' });
return item;
}
//# sourceMappingURL=AbiConstructor.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"AbiConstructor.js","sourceRoot":"","sources":["../../core/AbiConstructor.ts"],"names":[],"mappings":";;AA2EA,wBAoBC;AA0GD,wBAwBC;AA4DD,wBAEC;AA2HD,oBAIC;AAiDD,0BAIC;AAndD,mCAAkC;AAElC,wCAAuC;AACvC,oDAAmD;AAEnD,gCAA+B;AAsE/B,SAAgB,MAAM,CACpB,GAAG,UAE0D;IAE7D,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;QACtC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,UAGtB,CAAA;YACD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAqC,CAAA;QACpE,CAAC;QACD,OAAO,UAA8C,CAAA;IACvD,CAAC,CAAC,EAAE,CAAA;IAEJ,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;IAC5B,IAAI,cAAc,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAY,CAAA;IAC5D,OAAO,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAC1D,CAAC;AA0GD,SAAgB,MAAM,CACpB,GAAG,UAE0D;IAE7D,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;QACtC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,UAGtB,CAAA;YACD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAqC,CAAA;QACpE,CAAC;QAED,OAAO,UAA8C,CAAA;IACvD,CAAC,CAAC,EAAE,CAAA;IAEJ,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;IAClC,OAAO,GAAG,CAAC,MAAM,CACf,QAAQ,EACR,cAAc,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,MAAM;QAC3C,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAA0B,CAAC;QACzE,CAAC,CAAC,IAAI,CACT,CAAA;AACH,CAAC;AA4DD,SAAgB,MAAM,CAAC,cAA8B;IACnD,OAAO,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;AAC9C,CAAC;AA2HD,SAAgB,IAAI,CAClB,cAA2D;IAE3D,OAAO,OAAO,CAAC,IAAI,CAAC,cAAgC,CAAC,CAAA;AACvD,CAAC;AAiDD,SAAgB,OAAO,CAAC,GAAiC;IACvD,MAAM,IAAI,GAAI,GAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,CAAA;IACzE,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAA;IACnE,OAAO,IAAI,CAAA;AACb,CAAC"}

108
node_modules/viem/node_modules/ox/_cjs/core/AbiError.js generated vendored Normal file
View File

@@ -0,0 +1,108 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.solidityPanicSelector = exports.solidityPanic = exports.solidityErrorSelector = exports.solidityError = exports.panicReasons = void 0;
exports.decode = decode;
exports.encode = encode;
exports.format = format;
exports.from = from;
exports.fromAbi = fromAbi;
exports.getSelector = getSelector;
const abitype = require("abitype");
const AbiItem = require("./AbiItem.js");
const AbiParameters = require("./AbiParameters.js");
const Hex = require("./Hex.js");
function decode(...parameters) {
const [abiError, data, options = {}] = (() => {
if (Array.isArray(parameters[0])) {
const [abi, name, data, options] = parameters;
return [fromAbi(abi, name), data, options];
}
return parameters;
})();
if (Hex.size(data) < 4)
throw new AbiItem.InvalidSelectorSizeError({ data });
if (abiError.inputs?.length === 0)
return undefined;
const values = AbiParameters.decode(abiError.inputs, Hex.slice(data, 4), options);
if (values && Object.keys(values).length === 1) {
if (Array.isArray(values))
return values[0];
return Object.values(values)[0];
}
return values;
}
function encode(...parameters) {
const [abiError, args] = (() => {
if (Array.isArray(parameters[0])) {
const [abi, name, ...args] = parameters;
return [fromAbi(abi, name), args];
}
const [abiError, ...args] = parameters;
return [abiError, args];
})();
const selector = getSelector(abiError);
const data = args.length > 0
? AbiParameters.encode(abiError.inputs, args[0])
: undefined;
return data ? Hex.concat(selector, data) : selector;
}
function format(abiError) {
return abitype.formatAbiItem(abiError);
}
function from(abiError, options = {}) {
return AbiItem.from(abiError, options);
}
function fromAbi(abi, name, options) {
if (name === 'Error')
return exports.solidityError;
if (name === 'Panic')
return exports.solidityPanic;
if (Hex.validate(name, { strict: false })) {
const selector = Hex.slice(name, 0, 4);
if (selector === exports.solidityErrorSelector)
return exports.solidityError;
if (selector === exports.solidityPanicSelector)
return exports.solidityPanic;
}
const item = AbiItem.fromAbi(abi, name, options);
if (item.type !== 'error')
throw new AbiItem.NotFoundError({ name, type: 'error' });
return item;
}
function getSelector(abiItem) {
return AbiItem.getSelector(abiItem);
}
exports.panicReasons = {
1: 'An `assert` condition failed.',
17: 'Arithmetic operation resulted in underflow or overflow.',
18: 'Division or modulo by zero (e.g. `5 / 0` or `23 % 0`).',
33: 'Attempted to convert to an invalid type.',
34: 'Attempted to access a storage byte array that is incorrectly encoded.',
49: 'Performed `.pop()` on an empty array',
50: 'Array index is out of bounds.',
65: 'Allocated too much memory or created an array which is too large.',
81: 'Attempted to call a zero-initialized variable of internal function type.',
};
exports.solidityError = from({
inputs: [
{
name: 'message',
type: 'string',
},
],
name: 'Error',
type: 'error',
});
exports.solidityErrorSelector = '0x08c379a0';
exports.solidityPanic = from({
inputs: [
{
name: 'reason',
type: 'uint8',
},
],
name: 'Panic',
type: 'error',
});
exports.solidityPanicSelector = '0x4e487b71';
//# sourceMappingURL=AbiError.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"AbiError.js","sourceRoot":"","sources":["../../core/AbiError.ts"],"names":[],"mappings":"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"}

348
node_modules/viem/node_modules/ox/_cjs/core/AbiEvent.js generated vendored Normal file
View File

@@ -0,0 +1,348 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.FilterTypeNotSupportedError = exports.SelectorTopicMismatchError = exports.TopicsMismatchError = exports.DataMismatchError = exports.InputNotFoundError = exports.ArgsMismatchError = void 0;
exports.assertArgs = assertArgs;
exports.decode = decode;
exports.encode = encode;
exports.format = format;
exports.from = from;
exports.fromAbi = fromAbi;
exports.getSelector = getSelector;
const abitype = require("abitype");
const AbiItem = require("./AbiItem.js");
const AbiParameters = require("./AbiParameters.js");
const Address = require("./Address.js");
const Bytes = require("./Bytes.js");
const Errors = require("./Errors.js");
const Hash = require("./Hash.js");
const Hex = require("./Hex.js");
const Cursor = require("./internal/cursor.js");
const errors_js_1 = require("./internal/errors.js");
function assertArgs(abiEvent, args, matchArgs) {
if (!args || !matchArgs)
throw new ArgsMismatchError({
abiEvent,
expected: args,
given: matchArgs,
});
function isEqual(input, value, arg) {
if (input.type === 'address')
return Address.isEqual(value, arg);
if (input.type === 'string')
return Hash.keccak256(Bytes.fromString(value)) === arg;
if (input.type === 'bytes')
return Hash.keccak256(value) === arg;
return value === arg;
}
if (Array.isArray(args) && Array.isArray(matchArgs)) {
for (const [index, value] of matchArgs.entries()) {
if (value === null || value === undefined)
continue;
const input = abiEvent.inputs[index];
if (!input)
throw new InputNotFoundError({
abiEvent,
name: `${index}`,
});
const value_ = Array.isArray(value) ? value : [value];
let equal = false;
for (const value of value_) {
if (isEqual(input, value, args[index]))
equal = true;
}
if (!equal)
throw new ArgsMismatchError({
abiEvent,
expected: args,
given: matchArgs,
});
}
}
if (typeof args === 'object' &&
!Array.isArray(args) &&
typeof matchArgs === 'object' &&
!Array.isArray(matchArgs))
for (const [key, value] of Object.entries(matchArgs)) {
if (value === null || value === undefined)
continue;
const input = abiEvent.inputs.find((input) => input.name === key);
if (!input)
throw new InputNotFoundError({ abiEvent, name: key });
const value_ = Array.isArray(value) ? value : [value];
let equal = false;
for (const value of value_) {
if (isEqual(input, value, args[key]))
equal = true;
}
if (!equal)
throw new ArgsMismatchError({
abiEvent,
expected: args,
given: matchArgs,
});
}
}
function decode(...parameters) {
const [abiEvent, log] = (() => {
if (Array.isArray(parameters[0])) {
const [abi, name, log] = parameters;
return [fromAbi(abi, name), log];
}
return parameters;
})();
const { data, topics } = log;
const [selector_, ...argTopics] = topics;
const selector = getSelector(abiEvent);
if (selector_ !== selector)
throw new SelectorTopicMismatchError({
abiEvent,
actual: selector_,
expected: selector,
});
const { inputs } = abiEvent;
const isUnnamed = inputs?.every((x) => !('name' in x && x.name));
let args = isUnnamed ? [] : {};
const indexedInputs = inputs.filter((x) => 'indexed' in x && x.indexed);
for (let i = 0; i < indexedInputs.length; i++) {
const param = indexedInputs[i];
const topic = argTopics[i];
if (!topic)
throw new TopicsMismatchError({
abiEvent,
param: param,
});
args[isUnnamed ? i : param.name || i] = (() => {
if (param.type === 'string' ||
param.type === 'bytes' ||
param.type === 'tuple' ||
param.type.match(/^(.*)\[(\d+)?\]$/))
return topic;
const decoded = AbiParameters.decode([param], topic) || [];
return decoded[0];
})();
}
const nonIndexedInputs = inputs.filter((x) => !('indexed' in x && x.indexed));
if (nonIndexedInputs.length > 0) {
if (data && data !== '0x') {
try {
const decodedData = AbiParameters.decode(nonIndexedInputs, data);
if (decodedData) {
if (isUnnamed)
args = [...args, ...decodedData];
else {
for (let i = 0; i < nonIndexedInputs.length; i++) {
const index = inputs.indexOf(nonIndexedInputs[i]);
args[nonIndexedInputs[i].name || index] = decodedData[i];
}
}
}
}
catch (err) {
if (err instanceof AbiParameters.DataSizeTooSmallError ||
err instanceof Cursor.PositionOutOfBoundsError)
throw new DataMismatchError({
abiEvent,
data: data,
parameters: nonIndexedInputs,
size: Hex.size(data),
});
throw err;
}
}
else {
throw new DataMismatchError({
abiEvent,
data: '0x',
parameters: nonIndexedInputs,
size: 0,
});
}
}
return Object.values(args).length > 0 ? args : undefined;
}
function encode(...parameters) {
const [abiEvent, args] = (() => {
if (Array.isArray(parameters[0])) {
const [abi, name, args] = parameters;
return [fromAbi(abi, name), args];
}
const [abiEvent, args] = parameters;
return [abiEvent, args];
})();
let topics = [];
if (args && abiEvent.inputs) {
const indexedInputs = abiEvent.inputs.filter((param) => 'indexed' in param && param.indexed);
const args_ = Array.isArray(args)
? args
: Object.values(args).length > 0
? (indexedInputs?.map((x, i) => args[x.name ?? i]) ?? [])
: [];
if (args_.length > 0) {
const encode = (param, value) => {
if (param.type === 'string')
return Hash.keccak256(Hex.fromString(value));
if (param.type === 'bytes')
return Hash.keccak256(value);
if (param.type === 'tuple' || param.type.match(/^(.*)\[(\d+)?\]$/))
throw new FilterTypeNotSupportedError(param.type);
return AbiParameters.encode([param], [value]);
};
topics =
indexedInputs?.map((param, i) => {
if (Array.isArray(args_[i]))
return args_[i].map((_, j) => encode(param, args_[i][j]));
return typeof args_[i] !== 'undefined' && args_[i] !== null
? encode(param, args_[i])
: null;
}) ?? [];
}
}
const selector = (() => {
if (abiEvent.hash)
return abiEvent.hash;
return getSelector(abiEvent);
})();
return { topics: [selector, ...topics] };
}
function format(abiEvent) {
return abitype.formatAbiItem(abiEvent);
}
function from(abiEvent, options = {}) {
return AbiItem.from(abiEvent, options);
}
function fromAbi(abi, name, options) {
const item = AbiItem.fromAbi(abi, name, options);
if (item.type !== 'event')
throw new AbiItem.NotFoundError({ name, type: 'event' });
return item;
}
function getSelector(abiItem) {
return AbiItem.getSignatureHash(abiItem);
}
class ArgsMismatchError extends Errors.BaseError {
constructor({ abiEvent, expected, given, }) {
super('Given arguments do not match the expected arguments.', {
metaMessages: [
`Event: ${format(abiEvent)}`,
`Expected Arguments: ${!expected ? 'None' : ''}`,
expected ? (0, errors_js_1.prettyPrint)(expected) : undefined,
`Given Arguments: ${!given ? 'None' : ''}`,
given ? (0, errors_js_1.prettyPrint)(given) : undefined,
],
});
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'AbiEvent.ArgsMismatchError'
});
}
}
exports.ArgsMismatchError = ArgsMismatchError;
class InputNotFoundError extends Errors.BaseError {
constructor({ abiEvent, name, }) {
super(`Parameter "${name}" not found on \`${format(abiEvent)}\`.`);
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'AbiEvent.InputNotFoundError'
});
}
}
exports.InputNotFoundError = InputNotFoundError;
class DataMismatchError extends Errors.BaseError {
constructor({ abiEvent, data, parameters, size, }) {
super([
`Data size of ${size} bytes is too small for non-indexed event parameters.`,
].join('\n'), {
metaMessages: [
`Non-indexed Parameters: (${AbiParameters.format(parameters)})`,
`Data: ${data} (${size} bytes)`,
],
});
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'AbiEvent.DataMismatchError'
});
Object.defineProperty(this, "abiEvent", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "data", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "parameters", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "size", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
this.abiEvent = abiEvent;
this.data = data;
this.parameters = parameters;
this.size = size;
}
}
exports.DataMismatchError = DataMismatchError;
class TopicsMismatchError extends Errors.BaseError {
constructor({ abiEvent, param, }) {
super([
`Expected a topic for indexed event parameter${param.name ? ` "${param.name}"` : ''} for "${format(abiEvent)}".`,
].join('\n'));
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'AbiEvent.TopicsMismatchError'
});
Object.defineProperty(this, "abiEvent", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
this.abiEvent = abiEvent;
}
}
exports.TopicsMismatchError = TopicsMismatchError;
class SelectorTopicMismatchError extends Errors.BaseError {
constructor({ abiEvent, actual, expected, }) {
super(`topics[0]="${actual}" does not match the expected topics[0]="${expected}".`, {
metaMessages: [`Event: ${format(abiEvent)}`, `Selector: ${expected}`],
});
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'AbiEvent.SelectorTopicMismatchError'
});
}
}
exports.SelectorTopicMismatchError = SelectorTopicMismatchError;
class FilterTypeNotSupportedError extends Errors.BaseError {
constructor(type) {
super(`Filter type "${type}" is not supported.`);
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'AbiEvent.FilterTypeNotSupportedError'
});
}
}
exports.FilterTypeNotSupportedError = FilterTypeNotSupportedError;
//# sourceMappingURL=AbiEvent.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,107 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.decodeData = decodeData;
exports.decodeResult = decodeResult;
exports.encodeData = encodeData;
exports.encodeResult = encodeResult;
exports.format = format;
exports.from = from;
exports.fromAbi = fromAbi;
exports.getSelector = getSelector;
const abitype = require("abitype");
const AbiItem = require("./AbiItem.js");
const AbiParameters = require("./AbiParameters.js");
const Hex = require("./Hex.js");
function decodeData(...parameters) {
const [abiFunction, data] = (() => {
if (Array.isArray(parameters[0])) {
const [abi, name, data] = parameters;
return [fromAbi(abi, name), data];
}
return parameters;
})();
const { overloads } = abiFunction;
if (Hex.size(data) < 4)
throw new AbiItem.InvalidSelectorSizeError({ data });
if (abiFunction.inputs?.length === 0)
return undefined;
const item = overloads
? fromAbi([abiFunction, ...overloads], data)
: abiFunction;
if (Hex.size(data) <= 4)
return undefined;
return AbiParameters.decode(item.inputs, Hex.slice(data, 4));
}
function decodeResult(...parameters) {
const [abiFunction, data, options = {}] = (() => {
if (Array.isArray(parameters[0])) {
const [abi, name, data, options] = parameters;
return [fromAbi(abi, name), data, options];
}
return parameters;
})();
const values = AbiParameters.decode(abiFunction.outputs, data, options);
if (values && Object.keys(values).length === 0)
return undefined;
if (values && Object.keys(values).length === 1) {
if (Array.isArray(values))
return values[0];
return Object.values(values)[0];
}
return values;
}
function encodeData(...parameters) {
const [abiFunction, args = []] = (() => {
if (Array.isArray(parameters[0])) {
const [abi, name, args] = parameters;
return [fromAbi(abi, name, { args }), args];
}
const [abiFunction, args] = parameters;
return [abiFunction, args];
})();
const { overloads } = abiFunction;
const item = overloads
? fromAbi([abiFunction, ...overloads], abiFunction.name, {
args,
})
: abiFunction;
const selector = getSelector(item);
const data = args.length > 0 ? AbiParameters.encode(item.inputs, args) : undefined;
return data ? Hex.concat(selector, data) : selector;
}
function encodeResult(...parameters) {
const [abiFunction, output, options = {}] = (() => {
if (Array.isArray(parameters[0])) {
const [abi, name, output, options] = parameters;
return [fromAbi(abi, name), output, options];
}
return parameters;
})();
const { as = 'Array' } = options;
const values = (() => {
if (abiFunction.outputs.length === 1)
return [output];
if (Array.isArray(output))
return output;
if (as === 'Object')
return Object.values(output);
return [output];
})();
return AbiParameters.encode(abiFunction.outputs, values);
}
function format(abiFunction) {
return abitype.formatAbiItem(abiFunction);
}
function from(abiFunction, options = {}) {
return AbiItem.from(abiFunction, options);
}
function fromAbi(abi, name, options) {
const item = AbiItem.fromAbi(abi, name, options);
if (item.type !== 'function')
throw new AbiItem.NotFoundError({ name, type: 'function' });
return item;
}
function getSelector(abiItem) {
return AbiItem.getSelector(abiItem);
}
//# sourceMappingURL=AbiFunction.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"AbiFunction.js","sourceRoot":"","sources":["../../core/AbiFunction.ts"],"names":[],"mappings":"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"}

195
node_modules/viem/node_modules/ox/_cjs/core/AbiItem.js generated vendored Normal file
View File

@@ -0,0 +1,195 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.InvalidSelectorSizeError = exports.NotFoundError = exports.AmbiguityError = void 0;
exports.format = format;
exports.from = from;
exports.fromAbi = fromAbi;
exports.getSelector = getSelector;
exports.getSignature = getSignature;
exports.getSignatureHash = getSignatureHash;
const abitype = require("abitype");
const Errors = require("./Errors.js");
const Hash = require("./Hash.js");
const Hex = require("./Hex.js");
const internal = require("./internal/abiItem.js");
function format(abiItem) {
return abitype.formatAbiItem(abiItem);
}
function from(abiItem, options = {}) {
const { prepare = true } = options;
const item = (() => {
if (Array.isArray(abiItem))
return abitype.parseAbiItem(abiItem);
if (typeof abiItem === 'string')
return abitype.parseAbiItem(abiItem);
return abiItem;
})();
return {
...item,
...(prepare ? { hash: getSignatureHash(item) } : {}),
};
}
function fromAbi(abi, name, options) {
const { args = [], prepare = true } = (options ??
{});
const isSelector = Hex.validate(name, { strict: false });
const abiItems = abi.filter((abiItem) => {
if (isSelector) {
if (abiItem.type === 'function' || abiItem.type === 'error')
return getSelector(abiItem) === Hex.slice(name, 0, 4);
if (abiItem.type === 'event')
return getSignatureHash(abiItem) === name;
return false;
}
return 'name' in abiItem && abiItem.name === name;
});
if (abiItems.length === 0)
throw new NotFoundError({ name: name });
if (abiItems.length === 1)
return {
...abiItems[0],
...(prepare ? { hash: getSignatureHash(abiItems[0]) } : {}),
};
let matchedAbiItem;
for (const abiItem of abiItems) {
if (!('inputs' in abiItem))
continue;
if (!args || args.length === 0) {
if (!abiItem.inputs || abiItem.inputs.length === 0)
return {
...abiItem,
...(prepare ? { hash: getSignatureHash(abiItem) } : {}),
};
continue;
}
if (!abiItem.inputs)
continue;
if (abiItem.inputs.length === 0)
continue;
if (abiItem.inputs.length !== args.length)
continue;
const matched = args.every((arg, index) => {
const abiParameter = 'inputs' in abiItem && abiItem.inputs[index];
if (!abiParameter)
return false;
return internal.isArgOfType(arg, abiParameter);
});
if (matched) {
if (matchedAbiItem &&
'inputs' in matchedAbiItem &&
matchedAbiItem.inputs) {
const ambiguousTypes = internal.getAmbiguousTypes(abiItem.inputs, matchedAbiItem.inputs, args);
if (ambiguousTypes)
throw new AmbiguityError({
abiItem,
type: ambiguousTypes[0],
}, {
abiItem: matchedAbiItem,
type: ambiguousTypes[1],
});
}
matchedAbiItem = abiItem;
}
}
const abiItem = (() => {
if (matchedAbiItem)
return matchedAbiItem;
const [abiItem, ...overloads] = abiItems;
return { ...abiItem, overloads };
})();
if (!abiItem)
throw new NotFoundError({ name: name });
return {
...abiItem,
...(prepare ? { hash: getSignatureHash(abiItem) } : {}),
};
}
function getSelector(...parameters) {
const abiItem = (() => {
if (Array.isArray(parameters[0])) {
const [abi, name] = parameters;
return fromAbi(abi, name);
}
return parameters[0];
})();
return Hex.slice(getSignatureHash(abiItem), 0, 4);
}
function getSignature(...parameters) {
const abiItem = (() => {
if (Array.isArray(parameters[0])) {
const [abi, name] = parameters;
return fromAbi(abi, name);
}
return parameters[0];
})();
const signature = (() => {
if (typeof abiItem === 'string')
return abiItem;
return abitype.formatAbiItem(abiItem);
})();
return internal.normalizeSignature(signature);
}
function getSignatureHash(...parameters) {
const abiItem = (() => {
if (Array.isArray(parameters[0])) {
const [abi, name] = parameters;
return fromAbi(abi, name);
}
return parameters[0];
})();
if (typeof abiItem !== 'string' && 'hash' in abiItem && abiItem.hash)
return abiItem.hash;
return Hash.keccak256(Hex.fromString(getSignature(abiItem)));
}
class AmbiguityError extends Errors.BaseError {
constructor(x, y) {
super('Found ambiguous types in overloaded ABI Items.', {
metaMessages: [
`\`${x.type}\` in \`${internal.normalizeSignature(abitype.formatAbiItem(x.abiItem))}\`, and`,
`\`${y.type}\` in \`${internal.normalizeSignature(abitype.formatAbiItem(y.abiItem))}\``,
'',
'These types encode differently and cannot be distinguished at runtime.',
'Remove one of the ambiguous items in the ABI.',
],
});
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'AbiItem.AmbiguityError'
});
}
}
exports.AmbiguityError = AmbiguityError;
class NotFoundError extends Errors.BaseError {
constructor({ name, data, type = 'item', }) {
const selector = (() => {
if (name)
return ` with name "${name}"`;
if (data)
return ` with data "${data}"`;
return '';
})();
super(`ABI ${type}${selector} not found.`);
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'AbiItem.NotFoundError'
});
}
}
exports.NotFoundError = NotFoundError;
class InvalidSelectorSizeError extends Errors.BaseError {
constructor({ data }) {
super(`Selector size is invalid. Expected 4 bytes. Received ${Hex.size(data)} bytes ("${data}").`);
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'AbiItem.InvalidSelectorSizeError'
});
}
}
exports.InvalidSelectorSizeError = InvalidSelectorSizeError;
//# sourceMappingURL=AbiItem.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,227 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.InvalidTypeError = exports.InvalidArrayError = exports.LengthMismatchError = exports.BytesSizeMismatchError = exports.ArrayLengthMismatchError = exports.ZeroDataError = exports.DataSizeTooSmallError = void 0;
exports.decode = decode;
exports.encode = encode;
exports.encodePacked = encodePacked;
exports.format = format;
exports.from = from;
const abitype = require("abitype");
const Address = require("./Address.js");
const Bytes = require("./Bytes.js");
const Errors = require("./Errors.js");
const Hex = require("./Hex.js");
const internal = require("./internal/abiParameters.js");
const Cursor = require("./internal/cursor.js");
const Solidity = require("./Solidity.js");
function decode(parameters, data, options = {}) {
const { as = 'Array', checksumAddress = false } = options;
const bytes = typeof data === 'string' ? Bytes.fromHex(data) : data;
const cursor = Cursor.create(bytes);
if (Bytes.size(bytes) === 0 && parameters.length > 0)
throw new ZeroDataError();
if (Bytes.size(bytes) && Bytes.size(bytes) < 32)
throw new DataSizeTooSmallError({
data: typeof data === 'string' ? data : Hex.fromBytes(data),
parameters: parameters,
size: Bytes.size(bytes),
});
let consumed = 0;
const values = as === 'Array' ? [] : {};
for (let i = 0; i < parameters.length; ++i) {
const param = parameters[i];
cursor.setPosition(consumed);
const [data, consumed_] = internal.decodeParameter(cursor, param, {
checksumAddress,
staticPosition: 0,
});
consumed += consumed_;
if (as === 'Array')
values.push(data);
else
values[param.name ?? i] = data;
}
return values;
}
function encode(parameters, values, options) {
const { checksumAddress = false } = options ?? {};
if (parameters.length !== values.length)
throw new LengthMismatchError({
expectedLength: parameters.length,
givenLength: values.length,
});
const preparedParameters = internal.prepareParameters({
checksumAddress,
parameters: parameters,
values: values,
});
const data = internal.encode(preparedParameters);
if (data.length === 0)
return '0x';
return data;
}
function encodePacked(types, values) {
if (types.length !== values.length)
throw new LengthMismatchError({
expectedLength: types.length,
givenLength: values.length,
});
const data = [];
for (let i = 0; i < types.length; i++) {
const type = types[i];
const value = values[i];
data.push(encodePacked.encode(type, value));
}
return Hex.concat(...data);
}
(function (encodePacked) {
function encode(type, value, isArray = false) {
if (type === 'address') {
const address = value;
Address.assert(address);
return Hex.padLeft(address.toLowerCase(), isArray ? 32 : 0);
}
if (type === 'string')
return Hex.fromString(value);
if (type === 'bytes')
return value;
if (type === 'bool')
return Hex.padLeft(Hex.fromBoolean(value), isArray ? 32 : 1);
const intMatch = type.match(Solidity.integerRegex);
if (intMatch) {
const [_type, baseType, bits = '256'] = intMatch;
const size = Number.parseInt(bits, 10) / 8;
return Hex.fromNumber(value, {
size: isArray ? 32 : size,
signed: baseType === 'int',
});
}
const bytesMatch = type.match(Solidity.bytesRegex);
if (bytesMatch) {
const [_type, size] = bytesMatch;
if (Number.parseInt(size, 10) !== (value.length - 2) / 2)
throw new BytesSizeMismatchError({
expectedSize: Number.parseInt(size, 10),
value: value,
});
return Hex.padRight(value, isArray ? 32 : 0);
}
const arrayMatch = type.match(Solidity.arrayRegex);
if (arrayMatch && Array.isArray(value)) {
const [_type, childType] = arrayMatch;
const data = [];
for (let i = 0; i < value.length; i++) {
data.push(encode(childType, value[i], true));
}
if (data.length === 0)
return '0x';
return Hex.concat(...data);
}
throw new InvalidTypeError(type);
}
encodePacked.encode = encode;
})(encodePacked || (exports.encodePacked = encodePacked = {}));
function format(parameters) {
return abitype.formatAbiParameters(parameters);
}
function from(parameters) {
if (Array.isArray(parameters) && typeof parameters[0] === 'string')
return abitype.parseAbiParameters(parameters);
if (typeof parameters === 'string')
return abitype.parseAbiParameters(parameters);
return parameters;
}
class DataSizeTooSmallError extends Errors.BaseError {
constructor({ data, parameters, size, }) {
super(`Data size of ${size} bytes is too small for given parameters.`, {
metaMessages: [
`Params: (${abitype.formatAbiParameters(parameters)})`,
`Data: ${data} (${size} bytes)`,
],
});
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'AbiParameters.DataSizeTooSmallError'
});
}
}
exports.DataSizeTooSmallError = DataSizeTooSmallError;
class ZeroDataError extends Errors.BaseError {
constructor() {
super('Cannot decode zero data ("0x") with ABI parameters.');
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'AbiParameters.ZeroDataError'
});
}
}
exports.ZeroDataError = ZeroDataError;
class ArrayLengthMismatchError extends Errors.BaseError {
constructor({ expectedLength, givenLength, type, }) {
super(`Array length mismatch for type \`${type}\`. Expected: \`${expectedLength}\`. Given: \`${givenLength}\`.`);
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'AbiParameters.ArrayLengthMismatchError'
});
}
}
exports.ArrayLengthMismatchError = ArrayLengthMismatchError;
class BytesSizeMismatchError extends Errors.BaseError {
constructor({ expectedSize, value, }) {
super(`Size of bytes "${value}" (bytes${Hex.size(value)}) does not match expected size (bytes${expectedSize}).`);
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'AbiParameters.BytesSizeMismatchError'
});
}
}
exports.BytesSizeMismatchError = BytesSizeMismatchError;
class LengthMismatchError extends Errors.BaseError {
constructor({ expectedLength, givenLength, }) {
super([
'ABI encoding parameters/values length mismatch.',
`Expected length (parameters): ${expectedLength}`,
`Given length (values): ${givenLength}`,
].join('\n'));
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'AbiParameters.LengthMismatchError'
});
}
}
exports.LengthMismatchError = LengthMismatchError;
class InvalidArrayError extends Errors.BaseError {
constructor(value) {
super(`Value \`${value}\` is not a valid array.`);
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'AbiParameters.InvalidArrayError'
});
}
}
exports.InvalidArrayError = InvalidArrayError;
class InvalidTypeError extends Errors.BaseError {
constructor(type) {
super(`Type \`${type}\` is not a valid ABI Type.`);
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'AbiParameters.InvalidTypeError'
});
}
}
exports.InvalidTypeError = InvalidTypeError;
//# sourceMappingURL=AbiParameters.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,51 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.InvalidStorageKeySizeError = void 0;
exports.fromTupleList = fromTupleList;
exports.toTupleList = toTupleList;
const Address = require("./Address.js");
const Errors = require("./Errors.js");
const Hash = require("./Hash.js");
const Hex = require("./Hex.js");
function fromTupleList(accessList) {
const list = [];
for (let i = 0; i < accessList.length; i++) {
const [address, storageKeys] = accessList[i];
if (address)
Address.assert(address, { strict: false });
list.push({
address: address,
storageKeys: storageKeys.map((key) => Hash.validate(key) ? key : Hex.trimLeft(key)),
});
}
return list;
}
function toTupleList(accessList) {
if (!accessList || accessList.length === 0)
return [];
const tuple = [];
for (const { address, storageKeys } of accessList) {
for (let j = 0; j < storageKeys.length; j++)
if (Hex.size(storageKeys[j]) !== 32)
throw new InvalidStorageKeySizeError({
storageKey: storageKeys[j],
});
if (address)
Address.assert(address, { strict: false });
tuple.push([address, storageKeys]);
}
return tuple;
}
class InvalidStorageKeySizeError extends Errors.BaseError {
constructor({ storageKey }) {
super(`Size for storage key "${storageKey}" is invalid. Expected 32 bytes. Got ${Hex.size(storageKey)} bytes.`);
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'AccessList.InvalidStorageKeySizeError'
});
}
}
exports.InvalidStorageKeySizeError = InvalidStorageKeySizeError;
//# sourceMappingURL=AccessList.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"AccessList.js","sourceRoot":"","sources":["../../core/AccessList.ts"],"names":[],"mappings":";;;AAiDA,sCAeC;AA+BD,kCAkBC;AAjHD,wCAAuC;AACvC,sCAAqC;AACrC,kCAAiC;AACjC,gCAA+B;AA8C/B,SAAgB,aAAa,CAAC,UAAiB;IAC7C,MAAM,IAAI,GAAwB,EAAE,CAAA;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,UAAU,CAAC,CAAC,CAAyB,CAAA;QAEpE,IAAI,OAAO;YAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QAEvD,IAAI,CAAC,IAAI,CAAC;YACR,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAC7C;SACF,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AA+BD,SAAgB,WAAW,CACzB,UAAmC;IAEnC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAErD,MAAM,KAAK,GAAmB,EAAE,CAAA;IAChC,KAAK,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,UAAU,EAAE,CAAC;QAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE;YACzC,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,KAAK,EAAE;gBAClC,MAAM,IAAI,0BAA0B,CAAC;oBACnC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAE;iBAC5B,CAAC,CAAA;QAEN,IAAI,OAAO;YAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QAEvD,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAA;IACpC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAGD,MAAa,0BAA2B,SAAQ,MAAM,CAAC,SAAS;IAE9D,YAAY,EAAE,UAAU,EAA2B;QACjD,KAAK,CACH,yBAAyB,UAAU,wCAAwC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CACzG,CAAA;QAJe;;;;mBAAO,uCAAuC;WAAA;IAKhE,CAAC;CACF;AAPD,gEAOC"}

View File

@@ -0,0 +1,3 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=AccountProof.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"AccountProof.js","sourceRoot":"","sources":["../../core/AccountProof.ts"],"names":[],"mappings":""}

116
node_modules/viem/node_modules/ox/_cjs/core/Address.js generated vendored Normal file
View File

@@ -0,0 +1,116 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.InvalidChecksumError = exports.InvalidInputError = exports.InvalidAddressError = void 0;
exports.assert = assert;
exports.checksum = checksum;
exports.from = from;
exports.fromPublicKey = fromPublicKey;
exports.isEqual = isEqual;
exports.validate = validate;
const Bytes = require("./Bytes.js");
const Caches = require("./Caches.js");
const Errors = require("./Errors.js");
const Hash = require("./Hash.js");
const PublicKey = require("./PublicKey.js");
const addressRegex = /^0x[a-fA-F0-9]{40}$/;
function assert(value, options = {}) {
const { strict = true } = options;
if (!addressRegex.test(value))
throw new InvalidAddressError({
address: value,
cause: new InvalidInputError(),
});
if (strict) {
if (value.toLowerCase() === value)
return;
if (checksum(value) !== value)
throw new InvalidAddressError({
address: value,
cause: new InvalidChecksumError(),
});
}
}
function checksum(address) {
if (Caches.checksum.has(address))
return Caches.checksum.get(address);
assert(address, { strict: false });
const hexAddress = address.substring(2).toLowerCase();
const hash = Hash.keccak256(Bytes.fromString(hexAddress), { as: 'Bytes' });
const characters = hexAddress.split('');
for (let i = 0; i < 40; i += 2) {
if (hash[i >> 1] >> 4 >= 8 && characters[i]) {
characters[i] = characters[i].toUpperCase();
}
if ((hash[i >> 1] & 0x0f) >= 8 && characters[i + 1]) {
characters[i + 1] = characters[i + 1].toUpperCase();
}
}
const result = `0x${characters.join('')}`;
Caches.checksum.set(address, result);
return result;
}
function from(address, options = {}) {
const { checksum: checksumVal = false } = options;
assert(address);
if (checksumVal)
return checksum(address);
return address;
}
function fromPublicKey(publicKey, options = {}) {
const address = Hash.keccak256(`0x${PublicKey.toHex(publicKey).slice(4)}`).substring(26);
return from(`0x${address}`, options);
}
function isEqual(addressA, addressB) {
assert(addressA, { strict: false });
assert(addressB, { strict: false });
return addressA.toLowerCase() === addressB.toLowerCase();
}
function validate(address, options = {}) {
const { strict = true } = options ?? {};
try {
assert(address, { strict });
return true;
}
catch {
return false;
}
}
class InvalidAddressError extends Errors.BaseError {
constructor({ address, cause }) {
super(`Address "${address}" is invalid.`, {
cause,
});
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'Address.InvalidAddressError'
});
}
}
exports.InvalidAddressError = InvalidAddressError;
class InvalidInputError extends Errors.BaseError {
constructor() {
super('Address is not a 20 byte (40 hexadecimal character) value.');
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'Address.InvalidInputError'
});
}
}
exports.InvalidInputError = InvalidInputError;
class InvalidChecksumError extends Errors.BaseError {
constructor() {
super('Address does not match its checksum counterpart.');
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'Address.InvalidChecksumError'
});
}
}
exports.InvalidChecksumError = InvalidChecksumError;
//# sourceMappingURL=Address.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Address.js","sourceRoot":"","sources":["../../core/Address.ts"],"names":[],"mappings":"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"}

51
node_modules/viem/node_modules/ox/_cjs/core/AesGcm.js generated vendored Normal file
View File

@@ -0,0 +1,51 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ivLength = void 0;
exports.decrypt = decrypt;
exports.encrypt = encrypt;
exports.getKey = getKey;
exports.randomSalt = randomSalt;
const Bytes = require("./Bytes.js");
const Hex = require("./Hex.js");
exports.ivLength = 16;
async function decrypt(value, key, options = {}) {
const { as = typeof value === 'string' ? 'Hex' : 'Bytes' } = options;
const encrypted = Bytes.from(value);
const iv = encrypted.slice(0, exports.ivLength);
const data = encrypted.slice(exports.ivLength);
const decrypted = await globalThis.crypto.subtle.decrypt({
name: 'AES-GCM',
iv,
}, key, Bytes.from(data));
const result = new Uint8Array(decrypted);
if (as === 'Bytes')
return result;
return Hex.from(result);
}
async function encrypt(value, key, options = {}) {
const { as = typeof value === 'string' ? 'Hex' : 'Bytes' } = options;
const iv = Bytes.random(exports.ivLength);
const encrypted = await globalThis.crypto.subtle.encrypt({
name: 'AES-GCM',
iv,
}, key, Bytes.from(value));
const result = Bytes.concat(iv, new Uint8Array(encrypted));
if (as === 'Bytes')
return result;
return Hex.from(result);
}
async function getKey(options) {
const { iterations = 900_000, password, salt = randomSalt(32) } = options;
const baseKey = await globalThis.crypto.subtle.importKey('raw', Bytes.fromString(password), { name: 'PBKDF2' }, false, ['deriveBits', 'deriveKey']);
const key = await globalThis.crypto.subtle.deriveKey({
name: 'PBKDF2',
salt,
iterations,
hash: 'SHA-256',
}, baseKey, { name: 'AES-GCM', length: 256 }, false, ['encrypt', 'decrypt']);
return key;
}
function randomSalt(size = 32) {
return Bytes.random(size);
}
//# sourceMappingURL=AesGcm.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"AesGcm.js","sourceRoot":"","sources":["../../core/AesGcm.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,96 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.from = from;
exports.fromRpc = fromRpc;
exports.fromRpcList = fromRpcList;
exports.fromTuple = fromTuple;
exports.fromTupleList = fromTupleList;
exports.getSignPayload = getSignPayload;
exports.hash = hash;
exports.toRpc = toRpc;
exports.toRpcList = toRpcList;
exports.toTuple = toTuple;
exports.toTupleList = toTupleList;
const Hash = require("./Hash.js");
const Hex = require("./Hex.js");
const Rlp = require("./Rlp.js");
const Signature = require("./Signature.js");
function from(authorization, options = {}) {
if (typeof authorization.chainId === 'string')
return fromRpc(authorization);
return { ...authorization, ...options.signature };
}
function fromRpc(authorization) {
const { address, chainId, nonce } = authorization;
const signature = Signature.extract(authorization);
return {
address,
chainId: Number(chainId),
nonce: BigInt(nonce),
...signature,
};
}
function fromRpcList(authorizationList) {
return authorizationList.map(fromRpc);
}
function fromTuple(tuple) {
const [chainId, address, nonce, yParity, r, s] = tuple;
let args = {
address,
chainId: chainId === '0x' ? 0 : Number(chainId),
nonce: nonce === '0x' ? 0n : BigInt(nonce),
};
if (yParity && r && s)
args = { ...args, ...Signature.fromTuple([yParity, r, s]) };
return from(args);
}
function fromTupleList(tupleList) {
const list = [];
for (const tuple of tupleList)
list.push(fromTuple(tuple));
return list;
}
function getSignPayload(authorization) {
return hash(authorization, { presign: true });
}
function hash(authorization, options = {}) {
const { presign } = options;
return Hash.keccak256(Hex.concat('0x05', Rlp.fromHex(toTuple(presign
? {
address: authorization.address,
chainId: authorization.chainId,
nonce: authorization.nonce,
}
: authorization))));
}
function toRpc(authorization) {
const { address, chainId, nonce, ...signature } = authorization;
return {
address,
chainId: Hex.fromNumber(chainId),
nonce: Hex.fromNumber(nonce),
...Signature.toRpc(signature),
};
}
function toRpcList(authorizationList) {
return authorizationList.map(toRpc);
}
function toTuple(authorization) {
const { address, chainId, nonce } = authorization;
const signature = Signature.extract(authorization);
return [
chainId ? Hex.fromNumber(chainId) : '0x',
address,
nonce ? Hex.fromNumber(nonce) : '0x',
...(signature ? Signature.toTuple(signature) : []),
];
}
function toTupleList(list) {
if (!list || list.length === 0)
return [];
const tupleList = [];
for (const authorization of list)
tupleList.push(toTuple(authorization));
return tupleList;
}
//# sourceMappingURL=Authorization.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Authorization.js","sourceRoot":"","sources":["../../core/Authorization.ts"],"names":[],"mappings":"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"}

73
node_modules/viem/node_modules/ox/_cjs/core/Base32.js generated vendored Normal file
View File

@@ -0,0 +1,73 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.InvalidCharacterError = void 0;
exports.fromBytes = fromBytes;
exports.fromHex = fromHex;
exports.toBytes = toBytes;
exports.toHex = toHex;
const Bytes = require("./Bytes.js");
const Errors = require("./Errors.js");
const Hex = require("./Hex.js");
const alphabet = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l';
const alphabetMap = (() => {
const map = {};
for (let i = 0; i < alphabet.length; i++)
map[alphabet[i]] = i;
return map;
})();
function fromBytes(value) {
let bits = 0;
let acc = 0;
let result = '';
for (const byte of value) {
acc = (acc << 8) | byte;
bits += 8;
while (bits >= 5) {
bits -= 5;
result += alphabet[(acc >>> bits) & 0x1f];
}
}
if (bits > 0)
result += alphabet[(acc << (5 - bits)) & 0x1f];
return result;
}
function fromHex(value) {
return fromBytes(Bytes.fromHex(value));
}
function toBytes(value) {
const values = [];
for (const char of value) {
const v = alphabetMap[char];
if (v === undefined)
throw new InvalidCharacterError({ character: char });
values.push(v);
}
let bits = 0;
let acc = 0;
const bytes = [];
for (const v of values) {
acc = (acc << 5) | v;
bits += 5;
if (bits >= 8) {
bits -= 8;
bytes.push((acc >>> bits) & 0xff);
}
}
return new Uint8Array(bytes);
}
function toHex(value) {
return Hex.fromBytes(toBytes(value));
}
class InvalidCharacterError extends Errors.BaseError {
constructor({ character }) {
super(`Invalid bech32 base32 character: "${character}".`);
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: 'Base32.InvalidCharacterError'
});
}
}
exports.InvalidCharacterError = InvalidCharacterError;
//# sourceMappingURL=Base32.js.map

Some files were not shown because too many files have changed in this diff Show More