@piprail/sdk 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,41 @@ All notable changes to `@piprail/sdk` are documented here. The format
4
4
  follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the
5
5
  versions follow [Semantic Versioning](https://semver.org/).
6
6
 
7
+ ## [1.2.0] — 2026-06-04
8
+
9
+ Two new EVM presets — **HyperEVM (Hyperliquid)** and **Monad** — bringing the built-in count to
10
+ **26 chains across 8 families (19 EVM)**. Both reuse the existing EVM driver: one row of
11
+ on-chain-verified data each, no new code path and no new peer dep. Fully backward-compatible.
12
+
13
+ ### Added
14
+ - **HyperEVM (Hyperliquid), `chain: 'hyperevm'`, chainId 999** — native Circle USDC
15
+ (`0xb88339CB7199b77E23DB6E890353E22632Ba630f`, 6 dp; CCTP V2). The highest-activity EVM venue
16
+ of 2025–26 (perps DEX + on-chain agent vaults). Pay in USDC or native HYPE. HyperEVM's USDT is
17
+ USDT0 (LayerZero), not Tether-native, so it's omitted (pass it as a custom `{ address, decimals }`).
18
+ - **Monad, `chain: 'monad'`, chainId 143** — native Circle USDC
19
+ (`0x754704Bc059F8C67012fEd69BC8A327a5aafb603`, 6 dp; CCTP V2). The biggest new EVM L1 of 2025
20
+ (parallel EVM, ~10k TPS). Pay in USDC or native MON. USDT0 omitted, as above.
21
+
22
+ Both addresses were verified on-chain (live `eth_chainId` + `symbol()`/`decimals()`) before
23
+ shipping; `chain: 'hyperevm'` / `chain: 'monad'` work with no setup call.
24
+
25
+ ## [1.1.1] — 2026-06-03
26
+
27
+ Docs + examples only — **no code change**; the API and every chain behave exactly as 1.1.0.
28
+
29
+ ### Docs
30
+ - **"In the browser — no build, no npm" guide** in the README. `@piprail/sdk` is browser-clean
31
+ and runs from any npm-mirroring CDN (`esm.sh` / `jsDelivr`), so a plain HTML page can take or
32
+ make payments with no bundler — the CDN resolves `viem` and any lazily-imported chain lib.
33
+ Verified end-to-end (gate + client, Node + browser, plus a real on-chain payment made **from a
34
+ browser**). Includes the injected-wallet pattern and a loud "never ship a raw key in client-side
35
+ HTML" warning.
36
+
37
+ ### Examples
38
+ - **New `examples/browser/`** — a single self-contained HTML file that loads the SDK from a CDN and
39
+ runs a live in-browser x402 demo (build a real `402` challenge, quote it), no build step. A hosted,
40
+ interactive version of the same demo is live at https://piprail.com/demo.
41
+
7
42
  ## [1.1.0] — 2026-06-03
8
43
 
9
44
  Found by the live-test campaign: **native NEAR + native TRX are now payment assets** (native
package/README.md CHANGED
@@ -160,6 +160,8 @@ Every token address below was verified on-chain (symbol + decimals) before shipp
160
160
  | `'worldchain'` | World Chain | USDC |
161
161
  | `'sei'` | Sei | USDC |
162
162
  | `'injective'` | Injective | USDC, USDT |
163
+ | `'hyperevm'` | HyperEVM (Hyperliquid) | USDC |
164
+ | `'monad'` | Monad | USDC |
163
165
  | `'solana'` | Solana | USDC, USDT |
164
166
  | `'ton'` | TON | USDT |
165
167
  | `'tron'` | Tron | USDT |
@@ -445,6 +447,27 @@ export async function handler(req: Request): Promise<Response> {
445
447
 
446
448
  Reuse one gate per route — its in-memory replay guard stops a proof being spent twice. Running multiple instances? Pass your own `isUsed` / `markUsed` (e.g. Redis `SET NX`).
447
449
 
450
+ ## In the browser — no build, no npm
451
+
452
+ The SDK is browser-clean (no Node-only globals in the protocol layer), so a plain HTML page can take **or** make payments straight from a CDN — every npm-mirroring CDN serves it automatically:
453
+
454
+ ```html
455
+ <script type="module">
456
+ import { PipRailClient } from 'https://esm.sh/@piprail/sdk' // or jsDelivr: .../npm/@piprail/sdk@1/+esm
457
+ // In a browser, sign with the visitor's wallet — never a raw key (page source is public):
458
+ import { createWalletClient, custom } from 'https://esm.sh/viem'
459
+ const walletClient = createWalletClient({ transport: custom(window.ethereum) })
460
+
461
+ const client = new PipRailClient({ chain: 'base', wallet: { walletClient } })
462
+ const res = await client.fetch('https://api.example.com/paid') // 402 → wallet signs → 200
463
+ </script>
464
+ ```
465
+
466
+ - **Which chains run in the browser.** EVM (viem) works out of the box; **Solana, Sui, and NEAR** load their libs from the CDN too (an [import map](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script/type/importmap) pins each to a browser-ESM build — see [`examples/browser/`](../examples/browser)). A few chains' libraries (**TON, Tron, XRPL, Stellar**) don't ship a clean browser ESM build yet, so use those **server-side** — the identical one line, on Node/Bun/Deno/Workers. The lazy import means a pure-EVM page never downloads any of them.
467
+ - **The merchant gate runs anywhere.** `createPaymentGate` needs only a `payTo` address — no key — so building challenges and verifying proofs works in the browser too (the typical *deployment* is still a server, since a browser can't receive inbound HTTP to gate).
468
+ - **Both halves verified on Node and in a real browser**, against the published package. Runnable showcase: [`examples/browser/`](../examples/browser) — a single HTML file with a live, in-browser 402 demo; or try it hosted at [piprail.com/demo](https://piprail.com/demo).
469
+ - **Keys:** raw `{ privateKey }` wallets belong only in a **server's** environment. In a browser, use an injected `walletClient` as above.
470
+
448
471
  ## Architecture (under the hood)
449
472
 
450
473
  Two layers, one contract. Worth knowing if you're extending the SDK or auditing it.
package/dist/index.cjs CHANGED
@@ -82,6 +82,8 @@ var _viem = require('viem');
82
82
 
83
83
 
84
84
 
85
+
86
+
85
87
 
86
88
  var _chains = require('viem/chains');
87
89
  var CHAINS = {
@@ -210,6 +212,28 @@ var CHAINS = {
210
212
  USDC: { address: "0xa00C59fF5a080D2b954d0c75e46E22a0c371235a", decimals: 6, symbol: "USDC" },
211
213
  USDT: { address: "0x88f7F2b685F9692caf8c478f5BADF09eE9B1Cc13", decimals: 6, symbol: "USDT" }
212
214
  }
215
+ },
216
+ // HyperEVM (Hyperliquid, chainId 999) — native Circle USDC, verified on-chain
217
+ // 2026-06-04 (eth_chainId 0x3e7; USDC symbol "USDC", decimals 6). HyperEVM's
218
+ // "USDT" is USDT0 (LayerZero/omnichain), not Circle/Tether-native, so it's
219
+ // intentionally omitted; pass it as a custom { address, decimals } if needed.
220
+ // The highest-activity EVM venue of 2025–26 (perps DEX + on-chain agent vaults).
221
+ hyperevm: {
222
+ chain: _chains.hyperEvm,
223
+ tokens: {
224
+ USDC: { address: "0xb88339CB7199b77E23DB6E890353E22632Ba630f", decimals: 6, symbol: "USDC" }
225
+ }
226
+ },
227
+ // Monad (chainId 143) — native Circle USDC, verified on-chain 2026-06-04
228
+ // (eth_chainId 0x8f; USDC symbol "USDC", decimals 6; CCTP V2). Monad's "USDT"
229
+ // is USDT0 (LayerZero/omnichain), not Circle/Tether-native, so it's
230
+ // intentionally omitted; pass it as a custom { address, decimals } if needed.
231
+ // The biggest new EVM L1 of 2025 (parallel EVM, ~10k TPS).
232
+ monad: {
233
+ chain: _chains.monad,
234
+ tokens: {
235
+ USDC: { address: "0x754704Bc059F8C67012fEd69BC8A327a5aafb603", decimals: 6, symbol: "USDC" }
236
+ }
213
237
  }
214
238
  };
215
239
  function isViemChain(input) {
package/dist/index.d.cts CHANGED
@@ -838,7 +838,7 @@ declare const CHAINS: {
838
838
  gasPrice: bigint;
839
839
  maxFeePerBlobGas?: undefined | undefined;
840
840
  maxFeePerGas?: undefined | undefined;
841
- maxPriorityFeePerGas?: undefined | undefined;
841
+ maxPriorityFeePerGas? /** Native coin metadata. Defaults to 18-decimal ETH. */: undefined | undefined;
842
842
  isSystemTx?: undefined | undefined;
843
843
  mint?: undefined | undefined;
844
844
  sourceHash?: undefined | undefined;
@@ -1580,7 +1580,7 @@ declare const CHAINS: {
1580
1580
  yParity: number;
1581
1581
  accessList: viem.AccessList;
1582
1582
  authorizationList?: undefined | undefined;
1583
- blobVersionedHashes? /** EVM chain id, e.g. 5000 for Mantle. */: undefined | undefined;
1583
+ blobVersionedHashes?: undefined | undefined;
1584
1584
  chainId: number;
1585
1585
  type: "eip1559";
1586
1586
  gasPrice?: undefined | undefined;
@@ -2982,7 +2982,7 @@ declare const CHAINS: {
2982
2982
  } | {
2983
2983
  blockHash: `0x${string}` | null;
2984
2984
  blockNumber: bigint | null;
2985
- blockTimestamp? /** JSON-RPC endpoint. */: bigint | undefined;
2985
+ blockTimestamp?: bigint | undefined;
2986
2986
  from: abitype.Address;
2987
2987
  gas: bigint;
2988
2988
  hash: viem.Hash;
@@ -3340,7 +3340,9 @@ declare const CHAINS: {
3340
3340
  value: bigint;
3341
3341
  yParity: number;
3342
3342
  accessList: viem.AccessList;
3343
- authorizationList?: undefined | undefined;
3343
+ authorizationList
3344
+ /** JSON-RPC endpoint. */
3345
+ ? /** JSON-RPC endpoint. */: undefined | undefined;
3344
3346
  blobVersionedHashes?: undefined | undefined;
3345
3347
  chainId: number;
3346
3348
  type: "eip2930";
@@ -3614,6 +3616,122 @@ declare const CHAINS: {
3614
3616
  };
3615
3617
  };
3616
3618
  };
3619
+ hyperevm: {
3620
+ chain: {
3621
+ blockExplorers: {
3622
+ readonly default: {
3623
+ readonly name: "HyperEVMScan";
3624
+ readonly url: "https://hyperevmscan.io";
3625
+ };
3626
+ };
3627
+ blockTime?: number | undefined | undefined;
3628
+ contracts: {
3629
+ readonly multicall3: {
3630
+ readonly address: "0xcA11bde05977b3631167028862bE2a173976CA11";
3631
+ readonly blockCreated: 13051;
3632
+ };
3633
+ };
3634
+ ensTlds?: readonly string[] | undefined;
3635
+ id: 999;
3636
+ name: "HyperEVM";
3637
+ nativeCurrency: {
3638
+ readonly name: "HYPE";
3639
+ readonly symbol: "HYPE";
3640
+ readonly decimals: 18;
3641
+ };
3642
+ experimental_preconfirmationTime?: number | undefined | undefined;
3643
+ rpcUrls: {
3644
+ readonly default: {
3645
+ readonly http: readonly ["https://rpc.hyperliquid.xyz/evm"];
3646
+ };
3647
+ };
3648
+ sourceId?: number | undefined | undefined;
3649
+ testnet: false;
3650
+ custom?: Record<string, unknown> | undefined;
3651
+ extendSchema?: Record<string, unknown> | undefined;
3652
+ fees?: viem.ChainFees<undefined> | undefined;
3653
+ formatters?: undefined;
3654
+ prepareTransactionRequest?: ((args: viem.PrepareTransactionRequestParameters, options: {
3655
+ client: viem.Client;
3656
+ phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
3657
+ }) => Promise<viem.PrepareTransactionRequestParameters>) | [fn: ((args: viem.PrepareTransactionRequestParameters, options: {
3658
+ client: viem.Client;
3659
+ phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
3660
+ }) => Promise<viem.PrepareTransactionRequestParameters>) | undefined, options: {
3661
+ runAt: readonly ("beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters")[];
3662
+ }] | undefined;
3663
+ serializers?: viem.ChainSerializers<undefined, viem.TransactionSerializable> | undefined;
3664
+ verifyHash?: ((client: viem.Client, parameters: viem.VerifyHashActionParameters) => Promise<viem.VerifyHashActionReturnType>) | undefined;
3665
+ };
3666
+ tokens: {
3667
+ USDC: {
3668
+ address: "0xb88339CB7199b77E23DB6E890353E22632Ba630f";
3669
+ decimals: number;
3670
+ symbol: string;
3671
+ };
3672
+ };
3673
+ };
3674
+ monad: {
3675
+ chain: {
3676
+ blockExplorers: {
3677
+ readonly default: {
3678
+ readonly name: "MonadVision";
3679
+ readonly url: "https://monadvision.com";
3680
+ };
3681
+ readonly monadscan: {
3682
+ readonly name: "Monadscan";
3683
+ readonly url: "https://monadscan.com";
3684
+ readonly apiUrl: "https://api.monadscan.com/api";
3685
+ };
3686
+ };
3687
+ blockTime: 400;
3688
+ contracts: {
3689
+ readonly multicall3: {
3690
+ readonly address: "0xcA11bde05977b3631167028862bE2a173976CA11";
3691
+ readonly blockCreated: 9248132;
3692
+ };
3693
+ };
3694
+ ensTlds?: readonly string[] | undefined;
3695
+ id: 143;
3696
+ name: "Monad";
3697
+ nativeCurrency: {
3698
+ readonly name: "Monad";
3699
+ readonly symbol: "MON";
3700
+ readonly decimals: 18;
3701
+ };
3702
+ experimental_preconfirmationTime?: number | undefined | undefined;
3703
+ rpcUrls: {
3704
+ readonly default: {
3705
+ readonly http: readonly ["https://rpc.monad.xyz", "https://rpc1.monad.xyz"];
3706
+ readonly webSocket: readonly ["wss://rpc.monad.xyz", "wss://rpc1.monad.xyz"];
3707
+ };
3708
+ };
3709
+ sourceId?: number | undefined | undefined;
3710
+ testnet: false;
3711
+ custom?: Record<string, unknown> | undefined;
3712
+ extendSchema?: Record<string, unknown> | undefined;
3713
+ fees?: viem.ChainFees<undefined> | undefined;
3714
+ formatters?: undefined;
3715
+ prepareTransactionRequest?: ((args: viem.PrepareTransactionRequestParameters, options: {
3716
+ client: viem.Client;
3717
+ phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
3718
+ }) => Promise<viem.PrepareTransactionRequestParameters>) | [fn: ((args: viem.PrepareTransactionRequestParameters, options: {
3719
+ client: viem.Client;
3720
+ phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
3721
+ }) => Promise<viem.PrepareTransactionRequestParameters>) | undefined, options: {
3722
+ runAt: readonly ("beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters")[];
3723
+ }] | undefined;
3724
+ serializers?: viem.ChainSerializers<undefined, viem.TransactionSerializable> | undefined;
3725
+ verifyHash?: ((client: viem.Client, parameters: viem.VerifyHashActionParameters) => Promise<viem.VerifyHashActionReturnType>) | undefined;
3726
+ };
3727
+ tokens: {
3728
+ USDC: {
3729
+ address: "0x754704Bc059F8C67012fEd69BC8A327a5aafb603";
3730
+ decimals: number;
3731
+ symbol: string;
3732
+ };
3733
+ };
3734
+ };
3617
3735
  };
3618
3736
  /** A built-in EVM chain name. */
3619
3737
  type ChainName = keyof typeof CHAINS;
package/dist/index.d.ts CHANGED
@@ -838,7 +838,7 @@ declare const CHAINS: {
838
838
  gasPrice: bigint;
839
839
  maxFeePerBlobGas?: undefined | undefined;
840
840
  maxFeePerGas?: undefined | undefined;
841
- maxPriorityFeePerGas?: undefined | undefined;
841
+ maxPriorityFeePerGas? /** Native coin metadata. Defaults to 18-decimal ETH. */: undefined | undefined;
842
842
  isSystemTx?: undefined | undefined;
843
843
  mint?: undefined | undefined;
844
844
  sourceHash?: undefined | undefined;
@@ -1580,7 +1580,7 @@ declare const CHAINS: {
1580
1580
  yParity: number;
1581
1581
  accessList: viem.AccessList;
1582
1582
  authorizationList?: undefined | undefined;
1583
- blobVersionedHashes? /** EVM chain id, e.g. 5000 for Mantle. */: undefined | undefined;
1583
+ blobVersionedHashes?: undefined | undefined;
1584
1584
  chainId: number;
1585
1585
  type: "eip1559";
1586
1586
  gasPrice?: undefined | undefined;
@@ -2982,7 +2982,7 @@ declare const CHAINS: {
2982
2982
  } | {
2983
2983
  blockHash: `0x${string}` | null;
2984
2984
  blockNumber: bigint | null;
2985
- blockTimestamp? /** JSON-RPC endpoint. */: bigint | undefined;
2985
+ blockTimestamp?: bigint | undefined;
2986
2986
  from: abitype.Address;
2987
2987
  gas: bigint;
2988
2988
  hash: viem.Hash;
@@ -3340,7 +3340,9 @@ declare const CHAINS: {
3340
3340
  value: bigint;
3341
3341
  yParity: number;
3342
3342
  accessList: viem.AccessList;
3343
- authorizationList?: undefined | undefined;
3343
+ authorizationList
3344
+ /** JSON-RPC endpoint. */
3345
+ ? /** JSON-RPC endpoint. */: undefined | undefined;
3344
3346
  blobVersionedHashes?: undefined | undefined;
3345
3347
  chainId: number;
3346
3348
  type: "eip2930";
@@ -3614,6 +3616,122 @@ declare const CHAINS: {
3614
3616
  };
3615
3617
  };
3616
3618
  };
3619
+ hyperevm: {
3620
+ chain: {
3621
+ blockExplorers: {
3622
+ readonly default: {
3623
+ readonly name: "HyperEVMScan";
3624
+ readonly url: "https://hyperevmscan.io";
3625
+ };
3626
+ };
3627
+ blockTime?: number | undefined | undefined;
3628
+ contracts: {
3629
+ readonly multicall3: {
3630
+ readonly address: "0xcA11bde05977b3631167028862bE2a173976CA11";
3631
+ readonly blockCreated: 13051;
3632
+ };
3633
+ };
3634
+ ensTlds?: readonly string[] | undefined;
3635
+ id: 999;
3636
+ name: "HyperEVM";
3637
+ nativeCurrency: {
3638
+ readonly name: "HYPE";
3639
+ readonly symbol: "HYPE";
3640
+ readonly decimals: 18;
3641
+ };
3642
+ experimental_preconfirmationTime?: number | undefined | undefined;
3643
+ rpcUrls: {
3644
+ readonly default: {
3645
+ readonly http: readonly ["https://rpc.hyperliquid.xyz/evm"];
3646
+ };
3647
+ };
3648
+ sourceId?: number | undefined | undefined;
3649
+ testnet: false;
3650
+ custom?: Record<string, unknown> | undefined;
3651
+ extendSchema?: Record<string, unknown> | undefined;
3652
+ fees?: viem.ChainFees<undefined> | undefined;
3653
+ formatters?: undefined;
3654
+ prepareTransactionRequest?: ((args: viem.PrepareTransactionRequestParameters, options: {
3655
+ client: viem.Client;
3656
+ phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
3657
+ }) => Promise<viem.PrepareTransactionRequestParameters>) | [fn: ((args: viem.PrepareTransactionRequestParameters, options: {
3658
+ client: viem.Client;
3659
+ phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
3660
+ }) => Promise<viem.PrepareTransactionRequestParameters>) | undefined, options: {
3661
+ runAt: readonly ("beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters")[];
3662
+ }] | undefined;
3663
+ serializers?: viem.ChainSerializers<undefined, viem.TransactionSerializable> | undefined;
3664
+ verifyHash?: ((client: viem.Client, parameters: viem.VerifyHashActionParameters) => Promise<viem.VerifyHashActionReturnType>) | undefined;
3665
+ };
3666
+ tokens: {
3667
+ USDC: {
3668
+ address: "0xb88339CB7199b77E23DB6E890353E22632Ba630f";
3669
+ decimals: number;
3670
+ symbol: string;
3671
+ };
3672
+ };
3673
+ };
3674
+ monad: {
3675
+ chain: {
3676
+ blockExplorers: {
3677
+ readonly default: {
3678
+ readonly name: "MonadVision";
3679
+ readonly url: "https://monadvision.com";
3680
+ };
3681
+ readonly monadscan: {
3682
+ readonly name: "Monadscan";
3683
+ readonly url: "https://monadscan.com";
3684
+ readonly apiUrl: "https://api.monadscan.com/api";
3685
+ };
3686
+ };
3687
+ blockTime: 400;
3688
+ contracts: {
3689
+ readonly multicall3: {
3690
+ readonly address: "0xcA11bde05977b3631167028862bE2a173976CA11";
3691
+ readonly blockCreated: 9248132;
3692
+ };
3693
+ };
3694
+ ensTlds?: readonly string[] | undefined;
3695
+ id: 143;
3696
+ name: "Monad";
3697
+ nativeCurrency: {
3698
+ readonly name: "Monad";
3699
+ readonly symbol: "MON";
3700
+ readonly decimals: 18;
3701
+ };
3702
+ experimental_preconfirmationTime?: number | undefined | undefined;
3703
+ rpcUrls: {
3704
+ readonly default: {
3705
+ readonly http: readonly ["https://rpc.monad.xyz", "https://rpc1.monad.xyz"];
3706
+ readonly webSocket: readonly ["wss://rpc.monad.xyz", "wss://rpc1.monad.xyz"];
3707
+ };
3708
+ };
3709
+ sourceId?: number | undefined | undefined;
3710
+ testnet: false;
3711
+ custom?: Record<string, unknown> | undefined;
3712
+ extendSchema?: Record<string, unknown> | undefined;
3713
+ fees?: viem.ChainFees<undefined> | undefined;
3714
+ formatters?: undefined;
3715
+ prepareTransactionRequest?: ((args: viem.PrepareTransactionRequestParameters, options: {
3716
+ client: viem.Client;
3717
+ phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
3718
+ }) => Promise<viem.PrepareTransactionRequestParameters>) | [fn: ((args: viem.PrepareTransactionRequestParameters, options: {
3719
+ client: viem.Client;
3720
+ phase: "beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters";
3721
+ }) => Promise<viem.PrepareTransactionRequestParameters>) | undefined, options: {
3722
+ runAt: readonly ("beforeFillTransaction" | "beforeFillParameters" | "afterFillParameters")[];
3723
+ }] | undefined;
3724
+ serializers?: viem.ChainSerializers<undefined, viem.TransactionSerializable> | undefined;
3725
+ verifyHash?: ((client: viem.Client, parameters: viem.VerifyHashActionParameters) => Promise<viem.VerifyHashActionReturnType>) | undefined;
3726
+ };
3727
+ tokens: {
3728
+ USDC: {
3729
+ address: "0x754704Bc059F8C67012fEd69BC8A327a5aafb603";
3730
+ decimals: number;
3731
+ symbol: string;
3732
+ };
3733
+ };
3734
+ };
3617
3735
  };
3618
3736
  /** A built-in EVM chain name. */
3619
3737
  type ChainName = keyof typeof CHAINS;
package/dist/index.js CHANGED
@@ -71,10 +71,12 @@ import {
71
71
  base,
72
72
  bsc,
73
73
  celo,
74
+ hyperEvm,
74
75
  injective,
75
76
  linea,
76
77
  mainnet,
77
78
  mantle,
79
+ monad,
78
80
  optimism,
79
81
  polygon,
80
82
  scroll,
@@ -210,6 +212,28 @@ var CHAINS = {
210
212
  USDC: { address: "0xa00C59fF5a080D2b954d0c75e46E22a0c371235a", decimals: 6, symbol: "USDC" },
211
213
  USDT: { address: "0x88f7F2b685F9692caf8c478f5BADF09eE9B1Cc13", decimals: 6, symbol: "USDT" }
212
214
  }
215
+ },
216
+ // HyperEVM (Hyperliquid, chainId 999) — native Circle USDC, verified on-chain
217
+ // 2026-06-04 (eth_chainId 0x3e7; USDC symbol "USDC", decimals 6). HyperEVM's
218
+ // "USDT" is USDT0 (LayerZero/omnichain), not Circle/Tether-native, so it's
219
+ // intentionally omitted; pass it as a custom { address, decimals } if needed.
220
+ // The highest-activity EVM venue of 2025–26 (perps DEX + on-chain agent vaults).
221
+ hyperevm: {
222
+ chain: hyperEvm,
223
+ tokens: {
224
+ USDC: { address: "0xb88339CB7199b77E23DB6E890353E22632Ba630f", decimals: 6, symbol: "USDC" }
225
+ }
226
+ },
227
+ // Monad (chainId 143) — native Circle USDC, verified on-chain 2026-06-04
228
+ // (eth_chainId 0x8f; USDC symbol "USDC", decimals 6; CCTP V2). Monad's "USDT"
229
+ // is USDT0 (LayerZero/omnichain), not Circle/Tether-native, so it's
230
+ // intentionally omitted; pass it as a custom { address, decimals } if needed.
231
+ // The biggest new EVM L1 of 2025 (parallel EVM, ~10k TPS).
232
+ monad: {
233
+ chain: monad,
234
+ tokens: {
235
+ USDC: { address: "0x754704Bc059F8C67012fEd69BC8A327a5aafb603", decimals: 6, symbol: "USDC" }
236
+ }
213
237
  }
214
238
  };
215
239
  function isViemChain(input) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@piprail/sdk",
3
- "version": "1.1.0",
4
- "description": "Accept x402 crypto payments across 24 chains — every major EVM chain plus Solana, TON, Tron, NEAR, Sui, Stellar & XRPL — in a couple of lines. No backend, no database, no fee; payments settle straight to your wallet.",
3
+ "version": "1.2.0",
4
+ "description": "Accept x402 crypto payments across 26 chains — every major EVM chain plus Solana, TON, Tron, NEAR, Sui, Stellar & XRPL — in a couple of lines. No backend, no database, no fee; payments settle straight to your wallet.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
7
7
  "module": "./dist/index.js",