@b3dotfun/sdk 0.0.89-alpha.3 → 0.0.89
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/dist/cjs/anyspend/react/components/AnySpend.js +1 -4
- package/dist/cjs/anyspend/react/components/AnySpendCustom.js +1 -1
- package/dist/cjs/anyspend/utils/chain.d.ts +0 -23
- package/dist/cjs/anyspend/utils/chain.js +12 -56
- package/dist/cjs/global-account/react/hooks/useFirstEOA.d.ts +2 -2
- package/dist/esm/anyspend/react/components/AnySpend.js +1 -4
- package/dist/esm/anyspend/react/components/AnySpendCustom.js +1 -1
- package/dist/esm/anyspend/utils/chain.d.ts +0 -23
- package/dist/esm/anyspend/utils/chain.js +12 -53
- package/dist/esm/global-account/react/hooks/useFirstEOA.d.ts +2 -2
- package/dist/types/anyspend/utils/chain.d.ts +0 -23
- package/dist/types/global-account/react/hooks/useFirstEOA.d.ts +2 -2
- package/package.json +1 -1
- package/src/anyspend/react/components/AnySpend.tsx +1 -5
- package/src/anyspend/react/components/AnySpendCustom.tsx +1 -1
- package/src/anyspend/utils/chain.ts +36 -70
- package/dist/cjs/anyspend/constants/rpc.d.ts +0 -22
- package/dist/cjs/anyspend/constants/rpc.js +0 -38
- package/dist/esm/anyspend/constants/rpc.d.ts +0 -22
- package/dist/esm/anyspend/constants/rpc.js +0 -35
- package/dist/types/anyspend/constants/rpc.d.ts +0 -22
- package/src/anyspend/constants/rpc.ts +0 -38
|
@@ -107,10 +107,7 @@ function AnySpendInner({ sourceChainId, destinationTokenAddress, destinationToke
|
|
|
107
107
|
defaultToken: defaultSrcToken,
|
|
108
108
|
prefix: "from",
|
|
109
109
|
});
|
|
110
|
-
|
|
111
|
-
// use the default token for the new chain (handles chain selection in AnySpendDeposit)
|
|
112
|
-
const effectiveSrcToken = sourceChainId && srcTokenFromUrl.chainId !== sourceChainId ? defaultSrcToken : srcTokenFromUrl;
|
|
113
|
-
const [selectedSrcToken, setSelectedSrcToken] = (0, react_4.useState)(effectiveSrcToken);
|
|
110
|
+
const [selectedSrcToken, setSelectedSrcToken] = (0, react_4.useState)(srcTokenFromUrl);
|
|
114
111
|
const { data: srcTokenMetadata } = (0, react_2.useTokenData)(selectedSrcToken?.chainId, selectedSrcToken?.address);
|
|
115
112
|
const [srcAmount, setSrcAmount] = (0, react_4.useState)(searchParams.get("fromAmount") || "0");
|
|
116
113
|
// State for onramp amount
|
|
@@ -151,7 +151,7 @@ function AnySpendCustomInner({ loadOrder, mode = "modal", activeTab: activeTabPr
|
|
|
151
151
|
const searchParams = (0, react_2.useSearchParamsSSR)();
|
|
152
152
|
const router = (0, react_2.useRouter)();
|
|
153
153
|
const [activePanel, setActivePanel] = (0, react_5.useState)(loadOrder ? PanelView.ORDER_DETAILS : PanelView.CONFIRM_ORDER);
|
|
154
|
-
const [activeTab, setActiveTab] = (0, react_5.useState)(
|
|
154
|
+
const [activeTab, setActiveTab] = (0, react_5.useState)(activeTabProps);
|
|
155
155
|
// Payment method state with dual-state system (auto + explicit user selection)
|
|
156
156
|
// Note: AnySpendCustom doesn't use auto-selection, only explicit user selection
|
|
157
157
|
const { setSelectedCryptoPaymentMethod, effectiveCryptoPaymentMethod, resetPaymentMethods } = (0, useCryptoPaymentMethodState_1.useCryptoPaymentMethodState)();
|
|
@@ -1,29 +1,6 @@
|
|
|
1
1
|
import { components } from "../../anyspend/types/api";
|
|
2
2
|
import { Account, Chain, PublicClient, Transport, WalletClient } from "viem";
|
|
3
3
|
import { ChainType, IBaseChain, IEVMChain, IHyperliquidChain, ISolanaChain } from "../types/chain";
|
|
4
|
-
/**
|
|
5
|
-
* Set custom RPC URL overrides for specific chains.
|
|
6
|
-
* These overrides are used by chainIdToPublicClient and chainIdToWalletClient.
|
|
7
|
-
*
|
|
8
|
-
* @param overrides - A record mapping chain IDs to custom RPC URLs
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* // Set once at app initialization using environment variables
|
|
12
|
-
* setChainRpcOverrides({
|
|
13
|
-
* 1: process.env.ETHEREUM_RPC_URL,
|
|
14
|
-
* 8453: process.env.BASE_RPC_URL,
|
|
15
|
-
* 42161: process.env.ARBITRUM_RPC_URL,
|
|
16
|
-
* });
|
|
17
|
-
*/
|
|
18
|
-
export declare function setChainRpcOverrides(overrides: Record<number, string>): void;
|
|
19
|
-
/**
|
|
20
|
-
* Get the current RPC URL overrides.
|
|
21
|
-
*/
|
|
22
|
-
export declare function getChainRpcOverrides(): Record<number, string>;
|
|
23
|
-
/**
|
|
24
|
-
* Clear all RPC URL overrides.
|
|
25
|
-
*/
|
|
26
|
-
export declare function clearChainRpcOverrides(): void;
|
|
27
4
|
export declare const hyperEVM: {
|
|
28
5
|
blockExplorers: {
|
|
29
6
|
readonly default: {
|
|
@@ -4,9 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.ALL_CHAINS = exports.HYPERLIQUID_CHAINS = exports.SOLANA_CHAINS = exports.EVM_CHAINS = exports.HYPERLIQUID_MAINNET = exports.SOLANA_MAINNET = exports.EVM_TESTNET = exports.EVM_MAINNET = exports.hyperEVM = void 0;
|
|
7
|
-
exports.setChainRpcOverrides = setChainRpcOverrides;
|
|
8
|
-
exports.getChainRpcOverrides = getChainRpcOverrides;
|
|
9
|
-
exports.clearChainRpcOverrides = clearChainRpcOverrides;
|
|
10
7
|
exports.getSolanaChains = getSolanaChains;
|
|
11
8
|
exports.getAllEvmChains = getAllEvmChains;
|
|
12
9
|
exports.getChainType = getChainType;
|
|
@@ -29,7 +26,6 @@ exports.isHyperliquidChain = isHyperliquidChain;
|
|
|
29
26
|
exports.getHyperliquidChain = getHyperliquidChain;
|
|
30
27
|
exports.getAvailableChainIds = getAvailableChainIds;
|
|
31
28
|
const constants_1 = require("../../anyspend/constants");
|
|
32
|
-
const rpc_1 = require("../../anyspend/constants/rpc");
|
|
33
29
|
const invariant_1 = __importDefault(require("invariant"));
|
|
34
30
|
const viem_1 = require("viem");
|
|
35
31
|
const chains_1 = require("viem/chains");
|
|
@@ -38,45 +34,11 @@ const token_1 = require("./token");
|
|
|
38
34
|
function getCustomEvmChain(chain, rpcUrl) {
|
|
39
35
|
return (0, viem_1.defineChain)({ ...chain, rpcUrls: { default: { http: [rpcUrl] } } });
|
|
40
36
|
}
|
|
41
|
-
/**
|
|
42
|
-
* Global RPC URL overrides for EVM chains.
|
|
43
|
-
* Use setChainRpcOverrides() to configure custom RPC endpoints.
|
|
44
|
-
*/
|
|
45
|
-
let chainRpcOverrides = {};
|
|
46
|
-
/**
|
|
47
|
-
* Set custom RPC URL overrides for specific chains.
|
|
48
|
-
* These overrides are used by chainIdToPublicClient and chainIdToWalletClient.
|
|
49
|
-
*
|
|
50
|
-
* @param overrides - A record mapping chain IDs to custom RPC URLs
|
|
51
|
-
*
|
|
52
|
-
* @example
|
|
53
|
-
* // Set once at app initialization using environment variables
|
|
54
|
-
* setChainRpcOverrides({
|
|
55
|
-
* 1: process.env.ETHEREUM_RPC_URL,
|
|
56
|
-
* 8453: process.env.BASE_RPC_URL,
|
|
57
|
-
* 42161: process.env.ARBITRUM_RPC_URL,
|
|
58
|
-
* });
|
|
59
|
-
*/
|
|
60
|
-
function setChainRpcOverrides(overrides) {
|
|
61
|
-
chainRpcOverrides = { ...overrides };
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Get the current RPC URL overrides.
|
|
65
|
-
*/
|
|
66
|
-
function getChainRpcOverrides() {
|
|
67
|
-
return { ...chainRpcOverrides };
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Clear all RPC URL overrides.
|
|
71
|
-
*/
|
|
72
|
-
function clearChainRpcOverrides() {
|
|
73
|
-
chainRpcOverrides = {};
|
|
74
|
-
}
|
|
75
37
|
exports.hyperEVM = (0, viem_1.defineChain)({
|
|
76
38
|
id: token_1.HYPEREVM_CHAIN_ID,
|
|
77
39
|
name: "HyperEVM",
|
|
78
40
|
nativeCurrency: { name: "HyperEVM", symbol: "HYPE", decimals: 18 },
|
|
79
|
-
rpcUrls: { default: { http: [
|
|
41
|
+
rpcUrls: { default: { http: ["https://rpc.hyperliquid.xyz/evm"] } },
|
|
80
42
|
blockExplorers: { default: { name: "HyperEVM Explorer", url: "https://hyperevmscan.io/" } },
|
|
81
43
|
});
|
|
82
44
|
// export const b4testnet = defineChain({
|
|
@@ -96,7 +58,7 @@ exports.EVM_MAINNET = {
|
|
|
96
58
|
canDepositNative: true,
|
|
97
59
|
defaultToken: (0, token_1.getEthToken)(chains_1.mainnet.id),
|
|
98
60
|
nativeToken: (0, token_1.getEthToken)(chains_1.mainnet.id),
|
|
99
|
-
viem: getCustomEvmChain(chains_1.mainnet,
|
|
61
|
+
viem: getCustomEvmChain(chains_1.mainnet, "https://quick-chaotic-film.quiknode.pro/39a7aae6a7078f9f36c435e6f34c071c641cf863/"),
|
|
100
62
|
pollingInterval: 4000, // 4 seconds for Ethereum mainnet
|
|
101
63
|
zapperEnum: "ETHEREUM_MAINNET",
|
|
102
64
|
coingeckoName: "eth",
|
|
@@ -111,7 +73,7 @@ exports.EVM_MAINNET = {
|
|
|
111
73
|
canDepositNative: true,
|
|
112
74
|
defaultToken: (0, token_1.getEthToken)(chains_1.arbitrum.id),
|
|
113
75
|
nativeToken: (0, token_1.getEthToken)(chains_1.arbitrum.id),
|
|
114
|
-
viem: getCustomEvmChain(chains_1.arbitrum,
|
|
76
|
+
viem: getCustomEvmChain(chains_1.arbitrum, "https://proportionate-twilight-patina.arbitrum-mainnet.quiknode.pro/60e4825626515233a0f566f5915601af6043127b/"),
|
|
115
77
|
pollingInterval: 500, // 500ms for Arbitrum's fast blocks
|
|
116
78
|
zapperEnum: "ARBITRUM_MAINNET",
|
|
117
79
|
coingeckoName: "arbitrum",
|
|
@@ -126,7 +88,7 @@ exports.EVM_MAINNET = {
|
|
|
126
88
|
canDepositNative: true,
|
|
127
89
|
defaultToken: (0, token_1.getEthToken)(chains_1.base.id),
|
|
128
90
|
nativeToken: (0, token_1.getEthToken)(chains_1.base.id),
|
|
129
|
-
viem: getCustomEvmChain(chains_1.base,
|
|
91
|
+
viem: getCustomEvmChain(chains_1.base, "https://sly-indulgent-bird.base-mainnet.quiknode.pro/4e31fab6845eb29a2764723a43896999fe962e48/"),
|
|
130
92
|
pollingInterval: 1000, // 1 second for Base
|
|
131
93
|
zapperEnum: "BASE_MAINNET",
|
|
132
94
|
coingeckoName: "base",
|
|
@@ -141,7 +103,7 @@ exports.EVM_MAINNET = {
|
|
|
141
103
|
canDepositNative: true,
|
|
142
104
|
defaultToken: (0, token_1.getEthToken)(chains_1.optimism.id),
|
|
143
105
|
nativeToken: (0, token_1.getEthToken)(chains_1.optimism.id),
|
|
144
|
-
viem: getCustomEvmChain(chains_1.optimism,
|
|
106
|
+
viem: getCustomEvmChain(chains_1.optimism, "https://black-cosmopolitan-hexagon.optimism.quiknode.pro/18382925841f9d09f9e76eef954bf189aa234523/"),
|
|
145
107
|
pollingInterval: 1000, // 1 second for Optimism
|
|
146
108
|
zapperEnum: "OPTIMISM_MAINNET",
|
|
147
109
|
coingeckoName: "optimism",
|
|
@@ -156,7 +118,7 @@ exports.EVM_MAINNET = {
|
|
|
156
118
|
canDepositNative: true,
|
|
157
119
|
defaultToken: (0, token_1.getPolToken)(),
|
|
158
120
|
nativeToken: (0, token_1.getPolToken)(),
|
|
159
|
-
viem: getCustomEvmChain(chains_1.polygon,
|
|
121
|
+
viem: getCustomEvmChain(chains_1.polygon, "https://purple-young-field.matic.quiknode.pro/ca54f365c1a4c7f970223eb8087e0fc579feba12/"),
|
|
160
122
|
pollingInterval: 1000, // 1 second for Polygon
|
|
161
123
|
zapperEnum: "POLYGON_MAINNET",
|
|
162
124
|
coingeckoName: "polygon_pos",
|
|
@@ -171,7 +133,7 @@ exports.EVM_MAINNET = {
|
|
|
171
133
|
canDepositNative: true,
|
|
172
134
|
defaultToken: (0, token_1.getAvaxToken)(),
|
|
173
135
|
nativeToken: (0, token_1.getAvaxToken)(),
|
|
174
|
-
viem: getCustomEvmChain(chains_1.avalanche,
|
|
136
|
+
viem: getCustomEvmChain(chains_1.avalanche, "https://avalanche-c-chain-rpc.publicnode.com"),
|
|
175
137
|
pollingInterval: 1000, // 1 second for Avalanche
|
|
176
138
|
zapperEnum: "AVALANCHE_MAINNET",
|
|
177
139
|
coingeckoName: "avax",
|
|
@@ -186,7 +148,7 @@ exports.EVM_MAINNET = {
|
|
|
186
148
|
canDepositNative: true,
|
|
187
149
|
defaultToken: (0, token_1.getBnbToken)(),
|
|
188
150
|
nativeToken: (0, token_1.getBnbToken)(),
|
|
189
|
-
viem: getCustomEvmChain(chains_1.bsc,
|
|
151
|
+
viem: getCustomEvmChain(chains_1.bsc, "https://methodical-divine-flower.bsc.quiknode.pro/9fc7efd3c34cc016cceacc27ee95850629b7cd21/"),
|
|
190
152
|
pollingInterval: 1000, // 1 second for BSC
|
|
191
153
|
zapperEnum: "BSC_MAINNET",
|
|
192
154
|
coingeckoName: "bsc",
|
|
@@ -201,7 +163,7 @@ exports.EVM_MAINNET = {
|
|
|
201
163
|
canDepositNative: true,
|
|
202
164
|
defaultToken: (0, token_1.getEthToken)(chains_1.b3.id),
|
|
203
165
|
nativeToken: (0, token_1.getEthToken)(chains_1.b3.id),
|
|
204
|
-
viem: getCustomEvmChain(chains_1.b3,
|
|
166
|
+
viem: getCustomEvmChain(chains_1.b3, "https://late-dimensional-yard.b3-mainnet.quiknode.pro/461dbdbd44158cd7a7a764a58ffb01a67eef77f2/"),
|
|
205
167
|
pollingInterval: 1000, // 1 second for B3
|
|
206
168
|
zapperEnum: "B3_MAINNET",
|
|
207
169
|
coingeckoName: "b3",
|
|
@@ -216,7 +178,7 @@ exports.EVM_MAINNET = {
|
|
|
216
178
|
canDepositNative: true,
|
|
217
179
|
defaultToken: (0, token_1.getEthToken)(chains_1.abstract.id),
|
|
218
180
|
nativeToken: (0, token_1.getEthToken)(chains_1.abstract.id),
|
|
219
|
-
viem: getCustomEvmChain(chains_1.abstract,
|
|
181
|
+
viem: getCustomEvmChain(chains_1.abstract, "https://cosmopolitan-nameless-mountain.abstract-mainnet.quiknode.pro/863853304b986b582bdacf625ce3350397c560f8/"),
|
|
220
182
|
pollingInterval: 3000, // 3 seconds for Abstract
|
|
221
183
|
zapperEnum: "ABSTRACT_MAINNET",
|
|
222
184
|
coingeckoName: "abstract",
|
|
@@ -331,22 +293,16 @@ function getChainType(chainId) {
|
|
|
331
293
|
}
|
|
332
294
|
function chainIdToPublicClient(chainId) {
|
|
333
295
|
(0, invariant_1.default)(exports.EVM_CHAINS[chainId], `Chain ${chainId} is not an EVM chain`);
|
|
334
|
-
// Use override RPC if configured, otherwise use the default chain RPC
|
|
335
|
-
const rpcOverride = chainRpcOverrides[chainId];
|
|
336
|
-
const chain = rpcOverride ? getCustomEvmChain(exports.EVM_CHAINS[chainId].viem, rpcOverride) : exports.EVM_CHAINS[chainId].viem;
|
|
337
296
|
return (0, viem_1.createPublicClient)({
|
|
338
|
-
chain,
|
|
297
|
+
chain: exports.EVM_CHAINS[chainId].viem,
|
|
339
298
|
transport: (0, viem_1.http)(),
|
|
340
299
|
pollingInterval: exports.EVM_CHAINS[chainId].pollingInterval,
|
|
341
300
|
});
|
|
342
301
|
}
|
|
343
302
|
function chainIdToWalletClient(chainId, account) {
|
|
344
303
|
(0, invariant_1.default)(exports.EVM_CHAINS[chainId], `Chain ${chainId} is not an EVM chain`);
|
|
345
|
-
// Use override RPC if configured, otherwise use the default chain RPC
|
|
346
|
-
const rpcOverride = chainRpcOverrides[chainId];
|
|
347
|
-
const chain = rpcOverride ? getCustomEvmChain(exports.EVM_CHAINS[chainId].viem, rpcOverride) : exports.EVM_CHAINS[chainId].viem;
|
|
348
304
|
return (0, viem_1.createWalletClient)({
|
|
349
|
-
chain,
|
|
305
|
+
chain: exports.EVM_CHAINS[chainId].viem,
|
|
350
306
|
transport: (0, viem_1.http)(),
|
|
351
307
|
account,
|
|
352
308
|
pollingInterval: exports.EVM_CHAINS[chainId].pollingInterval,
|
|
@@ -7455,12 +7455,12 @@ export declare function useFirstEOA(chain?: {
|
|
|
7455
7455
|
[x: `bytes6[${string}]`]: undefined;
|
|
7456
7456
|
[x: `bytes9[${string}]`]: undefined;
|
|
7457
7457
|
[x: `bytes8[${string}]`]: undefined;
|
|
7458
|
-
[x: `bytes10[${string}]`]: undefined;
|
|
7459
7458
|
[x: `bytes2[${string}]`]: undefined;
|
|
7460
7459
|
[x: `bytes3[${string}]`]: undefined;
|
|
7461
7460
|
[x: `bytes4[${string}]`]: undefined;
|
|
7462
7461
|
[x: `bytes5[${string}]`]: undefined;
|
|
7463
7462
|
[x: `bytes7[${string}]`]: undefined;
|
|
7463
|
+
[x: `bytes10[${string}]`]: undefined;
|
|
7464
7464
|
[x: `bytes11[${string}]`]: undefined;
|
|
7465
7465
|
[x: `bytes12[${string}]`]: undefined;
|
|
7466
7466
|
[x: `bytes13[${string}]`]: undefined;
|
|
@@ -7557,12 +7557,12 @@ export declare function useFirstEOA(chain?: {
|
|
|
7557
7557
|
bytes6?: undefined;
|
|
7558
7558
|
bytes9?: undefined;
|
|
7559
7559
|
bytes8?: undefined;
|
|
7560
|
-
bytes10?: undefined;
|
|
7561
7560
|
bytes2?: undefined;
|
|
7562
7561
|
bytes3?: undefined;
|
|
7563
7562
|
bytes4?: undefined;
|
|
7564
7563
|
bytes5?: undefined;
|
|
7565
7564
|
bytes7?: undefined;
|
|
7565
|
+
bytes10?: undefined;
|
|
7566
7566
|
bytes11?: undefined;
|
|
7567
7567
|
bytes12?: undefined;
|
|
7568
7568
|
bytes13?: undefined;
|
|
@@ -100,10 +100,7 @@ function AnySpendInner({ sourceChainId, destinationTokenAddress, destinationToke
|
|
|
100
100
|
defaultToken: defaultSrcToken,
|
|
101
101
|
prefix: "from",
|
|
102
102
|
});
|
|
103
|
-
|
|
104
|
-
// use the default token for the new chain (handles chain selection in AnySpendDeposit)
|
|
105
|
-
const effectiveSrcToken = sourceChainId && srcTokenFromUrl.chainId !== sourceChainId ? defaultSrcToken : srcTokenFromUrl;
|
|
106
|
-
const [selectedSrcToken, setSelectedSrcToken] = useState(effectiveSrcToken);
|
|
103
|
+
const [selectedSrcToken, setSelectedSrcToken] = useState(srcTokenFromUrl);
|
|
107
104
|
const { data: srcTokenMetadata } = useTokenData(selectedSrcToken?.chainId, selectedSrcToken?.address);
|
|
108
105
|
const [srcAmount, setSrcAmount] = useState(searchParams.get("fromAmount") || "0");
|
|
109
106
|
// State for onramp amount
|
|
@@ -112,7 +112,7 @@ function AnySpendCustomInner({ loadOrder, mode = "modal", activeTab: activeTabPr
|
|
|
112
112
|
const searchParams = useSearchParamsSSR();
|
|
113
113
|
const router = useRouter();
|
|
114
114
|
const [activePanel, setActivePanel] = useState(loadOrder ? PanelView.ORDER_DETAILS : PanelView.CONFIRM_ORDER);
|
|
115
|
-
const [activeTab, setActiveTab] = useState(
|
|
115
|
+
const [activeTab, setActiveTab] = useState(activeTabProps);
|
|
116
116
|
// Payment method state with dual-state system (auto + explicit user selection)
|
|
117
117
|
// Note: AnySpendCustom doesn't use auto-selection, only explicit user selection
|
|
118
118
|
const { setSelectedCryptoPaymentMethod, effectiveCryptoPaymentMethod, resetPaymentMethods } = useCryptoPaymentMethodState();
|
|
@@ -1,29 +1,6 @@
|
|
|
1
1
|
import { components } from "../../anyspend/types/api";
|
|
2
2
|
import { Account, Chain, PublicClient, Transport, WalletClient } from "viem";
|
|
3
3
|
import { ChainType, IBaseChain, IEVMChain, IHyperliquidChain, ISolanaChain } from "../types/chain";
|
|
4
|
-
/**
|
|
5
|
-
* Set custom RPC URL overrides for specific chains.
|
|
6
|
-
* These overrides are used by chainIdToPublicClient and chainIdToWalletClient.
|
|
7
|
-
*
|
|
8
|
-
* @param overrides - A record mapping chain IDs to custom RPC URLs
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* // Set once at app initialization using environment variables
|
|
12
|
-
* setChainRpcOverrides({
|
|
13
|
-
* 1: process.env.ETHEREUM_RPC_URL,
|
|
14
|
-
* 8453: process.env.BASE_RPC_URL,
|
|
15
|
-
* 42161: process.env.ARBITRUM_RPC_URL,
|
|
16
|
-
* });
|
|
17
|
-
*/
|
|
18
|
-
export declare function setChainRpcOverrides(overrides: Record<number, string>): void;
|
|
19
|
-
/**
|
|
20
|
-
* Get the current RPC URL overrides.
|
|
21
|
-
*/
|
|
22
|
-
export declare function getChainRpcOverrides(): Record<number, string>;
|
|
23
|
-
/**
|
|
24
|
-
* Clear all RPC URL overrides.
|
|
25
|
-
*/
|
|
26
|
-
export declare function clearChainRpcOverrides(): void;
|
|
27
4
|
export declare const hyperEVM: {
|
|
28
5
|
blockExplorers: {
|
|
29
6
|
readonly default: {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { RELAY_SOLANA_MAINNET_CHAIN_ID } from "../../anyspend/constants/index.js";
|
|
2
|
-
import { ABSTRACT_PUBLIC_RPC, ARBITRUM_PUBLIC_RPC, AVALANCHE_PUBLIC_RPC, B3_PUBLIC_RPC, BASE_PUBLIC_RPC, BSC_PUBLIC_RPC, ETHEREUM_PUBLIC_RPC, HYPEREVM_PUBLIC_RPC, OPTIMISM_PUBLIC_RPC, POLYGON_PUBLIC_RPC, } from "../../anyspend/constants/rpc.js";
|
|
3
2
|
import invariant from "invariant";
|
|
4
3
|
import { createPublicClient, createWalletClient, defineChain, http, parseEther, } from "viem";
|
|
5
4
|
import { abstract, arbitrum, avalanche, b3, base, bsc, mainnet, optimism, polygon } from "viem/chains";
|
|
@@ -8,45 +7,11 @@ import { getAvaxToken, getBnbToken, getEthToken, getHyperEVMNativeToken, getHype
|
|
|
8
7
|
function getCustomEvmChain(chain, rpcUrl) {
|
|
9
8
|
return defineChain({ ...chain, rpcUrls: { default: { http: [rpcUrl] } } });
|
|
10
9
|
}
|
|
11
|
-
/**
|
|
12
|
-
* Global RPC URL overrides for EVM chains.
|
|
13
|
-
* Use setChainRpcOverrides() to configure custom RPC endpoints.
|
|
14
|
-
*/
|
|
15
|
-
let chainRpcOverrides = {};
|
|
16
|
-
/**
|
|
17
|
-
* Set custom RPC URL overrides for specific chains.
|
|
18
|
-
* These overrides are used by chainIdToPublicClient and chainIdToWalletClient.
|
|
19
|
-
*
|
|
20
|
-
* @param overrides - A record mapping chain IDs to custom RPC URLs
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* // Set once at app initialization using environment variables
|
|
24
|
-
* setChainRpcOverrides({
|
|
25
|
-
* 1: process.env.ETHEREUM_RPC_URL,
|
|
26
|
-
* 8453: process.env.BASE_RPC_URL,
|
|
27
|
-
* 42161: process.env.ARBITRUM_RPC_URL,
|
|
28
|
-
* });
|
|
29
|
-
*/
|
|
30
|
-
export function setChainRpcOverrides(overrides) {
|
|
31
|
-
chainRpcOverrides = { ...overrides };
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Get the current RPC URL overrides.
|
|
35
|
-
*/
|
|
36
|
-
export function getChainRpcOverrides() {
|
|
37
|
-
return { ...chainRpcOverrides };
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Clear all RPC URL overrides.
|
|
41
|
-
*/
|
|
42
|
-
export function clearChainRpcOverrides() {
|
|
43
|
-
chainRpcOverrides = {};
|
|
44
|
-
}
|
|
45
10
|
export const hyperEVM = defineChain({
|
|
46
11
|
id: HYPEREVM_CHAIN_ID,
|
|
47
12
|
name: "HyperEVM",
|
|
48
13
|
nativeCurrency: { name: "HyperEVM", symbol: "HYPE", decimals: 18 },
|
|
49
|
-
rpcUrls: { default: { http: [
|
|
14
|
+
rpcUrls: { default: { http: ["https://rpc.hyperliquid.xyz/evm"] } },
|
|
50
15
|
blockExplorers: { default: { name: "HyperEVM Explorer", url: "https://hyperevmscan.io/" } },
|
|
51
16
|
});
|
|
52
17
|
// export const b4testnet = defineChain({
|
|
@@ -66,7 +31,7 @@ export const EVM_MAINNET = {
|
|
|
66
31
|
canDepositNative: true,
|
|
67
32
|
defaultToken: getEthToken(mainnet.id),
|
|
68
33
|
nativeToken: getEthToken(mainnet.id),
|
|
69
|
-
viem: getCustomEvmChain(mainnet,
|
|
34
|
+
viem: getCustomEvmChain(mainnet, "https://quick-chaotic-film.quiknode.pro/39a7aae6a7078f9f36c435e6f34c071c641cf863/"),
|
|
70
35
|
pollingInterval: 4000, // 4 seconds for Ethereum mainnet
|
|
71
36
|
zapperEnum: "ETHEREUM_MAINNET",
|
|
72
37
|
coingeckoName: "eth",
|
|
@@ -81,7 +46,7 @@ export const EVM_MAINNET = {
|
|
|
81
46
|
canDepositNative: true,
|
|
82
47
|
defaultToken: getEthToken(arbitrum.id),
|
|
83
48
|
nativeToken: getEthToken(arbitrum.id),
|
|
84
|
-
viem: getCustomEvmChain(arbitrum,
|
|
49
|
+
viem: getCustomEvmChain(arbitrum, "https://proportionate-twilight-patina.arbitrum-mainnet.quiknode.pro/60e4825626515233a0f566f5915601af6043127b/"),
|
|
85
50
|
pollingInterval: 500, // 500ms for Arbitrum's fast blocks
|
|
86
51
|
zapperEnum: "ARBITRUM_MAINNET",
|
|
87
52
|
coingeckoName: "arbitrum",
|
|
@@ -96,7 +61,7 @@ export const EVM_MAINNET = {
|
|
|
96
61
|
canDepositNative: true,
|
|
97
62
|
defaultToken: getEthToken(base.id),
|
|
98
63
|
nativeToken: getEthToken(base.id),
|
|
99
|
-
viem: getCustomEvmChain(base,
|
|
64
|
+
viem: getCustomEvmChain(base, "https://sly-indulgent-bird.base-mainnet.quiknode.pro/4e31fab6845eb29a2764723a43896999fe962e48/"),
|
|
100
65
|
pollingInterval: 1000, // 1 second for Base
|
|
101
66
|
zapperEnum: "BASE_MAINNET",
|
|
102
67
|
coingeckoName: "base",
|
|
@@ -111,7 +76,7 @@ export const EVM_MAINNET = {
|
|
|
111
76
|
canDepositNative: true,
|
|
112
77
|
defaultToken: getEthToken(optimism.id),
|
|
113
78
|
nativeToken: getEthToken(optimism.id),
|
|
114
|
-
viem: getCustomEvmChain(optimism,
|
|
79
|
+
viem: getCustomEvmChain(optimism, "https://black-cosmopolitan-hexagon.optimism.quiknode.pro/18382925841f9d09f9e76eef954bf189aa234523/"),
|
|
115
80
|
pollingInterval: 1000, // 1 second for Optimism
|
|
116
81
|
zapperEnum: "OPTIMISM_MAINNET",
|
|
117
82
|
coingeckoName: "optimism",
|
|
@@ -126,7 +91,7 @@ export const EVM_MAINNET = {
|
|
|
126
91
|
canDepositNative: true,
|
|
127
92
|
defaultToken: getPolToken(),
|
|
128
93
|
nativeToken: getPolToken(),
|
|
129
|
-
viem: getCustomEvmChain(polygon,
|
|
94
|
+
viem: getCustomEvmChain(polygon, "https://purple-young-field.matic.quiknode.pro/ca54f365c1a4c7f970223eb8087e0fc579feba12/"),
|
|
130
95
|
pollingInterval: 1000, // 1 second for Polygon
|
|
131
96
|
zapperEnum: "POLYGON_MAINNET",
|
|
132
97
|
coingeckoName: "polygon_pos",
|
|
@@ -141,7 +106,7 @@ export const EVM_MAINNET = {
|
|
|
141
106
|
canDepositNative: true,
|
|
142
107
|
defaultToken: getAvaxToken(),
|
|
143
108
|
nativeToken: getAvaxToken(),
|
|
144
|
-
viem: getCustomEvmChain(avalanche,
|
|
109
|
+
viem: getCustomEvmChain(avalanche, "https://avalanche-c-chain-rpc.publicnode.com"),
|
|
145
110
|
pollingInterval: 1000, // 1 second for Avalanche
|
|
146
111
|
zapperEnum: "AVALANCHE_MAINNET",
|
|
147
112
|
coingeckoName: "avax",
|
|
@@ -156,7 +121,7 @@ export const EVM_MAINNET = {
|
|
|
156
121
|
canDepositNative: true,
|
|
157
122
|
defaultToken: getBnbToken(),
|
|
158
123
|
nativeToken: getBnbToken(),
|
|
159
|
-
viem: getCustomEvmChain(bsc,
|
|
124
|
+
viem: getCustomEvmChain(bsc, "https://methodical-divine-flower.bsc.quiknode.pro/9fc7efd3c34cc016cceacc27ee95850629b7cd21/"),
|
|
160
125
|
pollingInterval: 1000, // 1 second for BSC
|
|
161
126
|
zapperEnum: "BSC_MAINNET",
|
|
162
127
|
coingeckoName: "bsc",
|
|
@@ -171,7 +136,7 @@ export const EVM_MAINNET = {
|
|
|
171
136
|
canDepositNative: true,
|
|
172
137
|
defaultToken: getEthToken(b3.id),
|
|
173
138
|
nativeToken: getEthToken(b3.id),
|
|
174
|
-
viem: getCustomEvmChain(b3,
|
|
139
|
+
viem: getCustomEvmChain(b3, "https://late-dimensional-yard.b3-mainnet.quiknode.pro/461dbdbd44158cd7a7a764a58ffb01a67eef77f2/"),
|
|
175
140
|
pollingInterval: 1000, // 1 second for B3
|
|
176
141
|
zapperEnum: "B3_MAINNET",
|
|
177
142
|
coingeckoName: "b3",
|
|
@@ -186,7 +151,7 @@ export const EVM_MAINNET = {
|
|
|
186
151
|
canDepositNative: true,
|
|
187
152
|
defaultToken: getEthToken(abstract.id),
|
|
188
153
|
nativeToken: getEthToken(abstract.id),
|
|
189
|
-
viem: getCustomEvmChain(abstract,
|
|
154
|
+
viem: getCustomEvmChain(abstract, "https://cosmopolitan-nameless-mountain.abstract-mainnet.quiknode.pro/863853304b986b582bdacf625ce3350397c560f8/"),
|
|
190
155
|
pollingInterval: 3000, // 3 seconds for Abstract
|
|
191
156
|
zapperEnum: "ABSTRACT_MAINNET",
|
|
192
157
|
coingeckoName: "abstract",
|
|
@@ -301,22 +266,16 @@ export function getChainType(chainId) {
|
|
|
301
266
|
}
|
|
302
267
|
export function chainIdToPublicClient(chainId) {
|
|
303
268
|
invariant(EVM_CHAINS[chainId], `Chain ${chainId} is not an EVM chain`);
|
|
304
|
-
// Use override RPC if configured, otherwise use the default chain RPC
|
|
305
|
-
const rpcOverride = chainRpcOverrides[chainId];
|
|
306
|
-
const chain = rpcOverride ? getCustomEvmChain(EVM_CHAINS[chainId].viem, rpcOverride) : EVM_CHAINS[chainId].viem;
|
|
307
269
|
return createPublicClient({
|
|
308
|
-
chain,
|
|
270
|
+
chain: EVM_CHAINS[chainId].viem,
|
|
309
271
|
transport: http(),
|
|
310
272
|
pollingInterval: EVM_CHAINS[chainId].pollingInterval,
|
|
311
273
|
});
|
|
312
274
|
}
|
|
313
275
|
export function chainIdToWalletClient(chainId, account) {
|
|
314
276
|
invariant(EVM_CHAINS[chainId], `Chain ${chainId} is not an EVM chain`);
|
|
315
|
-
// Use override RPC if configured, otherwise use the default chain RPC
|
|
316
|
-
const rpcOverride = chainRpcOverrides[chainId];
|
|
317
|
-
const chain = rpcOverride ? getCustomEvmChain(EVM_CHAINS[chainId].viem, rpcOverride) : EVM_CHAINS[chainId].viem;
|
|
318
277
|
return createWalletClient({
|
|
319
|
-
chain,
|
|
278
|
+
chain: EVM_CHAINS[chainId].viem,
|
|
320
279
|
transport: http(),
|
|
321
280
|
account,
|
|
322
281
|
pollingInterval: EVM_CHAINS[chainId].pollingInterval,
|
|
@@ -7455,12 +7455,12 @@ export declare function useFirstEOA(chain?: {
|
|
|
7455
7455
|
[x: `bytes6[${string}]`]: undefined;
|
|
7456
7456
|
[x: `bytes9[${string}]`]: undefined;
|
|
7457
7457
|
[x: `bytes8[${string}]`]: undefined;
|
|
7458
|
-
[x: `bytes10[${string}]`]: undefined;
|
|
7459
7458
|
[x: `bytes2[${string}]`]: undefined;
|
|
7460
7459
|
[x: `bytes3[${string}]`]: undefined;
|
|
7461
7460
|
[x: `bytes4[${string}]`]: undefined;
|
|
7462
7461
|
[x: `bytes5[${string}]`]: undefined;
|
|
7463
7462
|
[x: `bytes7[${string}]`]: undefined;
|
|
7463
|
+
[x: `bytes10[${string}]`]: undefined;
|
|
7464
7464
|
[x: `bytes11[${string}]`]: undefined;
|
|
7465
7465
|
[x: `bytes12[${string}]`]: undefined;
|
|
7466
7466
|
[x: `bytes13[${string}]`]: undefined;
|
|
@@ -7557,12 +7557,12 @@ export declare function useFirstEOA(chain?: {
|
|
|
7557
7557
|
bytes6?: undefined;
|
|
7558
7558
|
bytes9?: undefined;
|
|
7559
7559
|
bytes8?: undefined;
|
|
7560
|
-
bytes10?: undefined;
|
|
7561
7560
|
bytes2?: undefined;
|
|
7562
7561
|
bytes3?: undefined;
|
|
7563
7562
|
bytes4?: undefined;
|
|
7564
7563
|
bytes5?: undefined;
|
|
7565
7564
|
bytes7?: undefined;
|
|
7565
|
+
bytes10?: undefined;
|
|
7566
7566
|
bytes11?: undefined;
|
|
7567
7567
|
bytes12?: undefined;
|
|
7568
7568
|
bytes13?: undefined;
|
|
@@ -1,29 +1,6 @@
|
|
|
1
1
|
import { components } from "@b3dotfun/sdk/anyspend/types/api";
|
|
2
2
|
import { Account, Chain, PublicClient, Transport, WalletClient } from "viem";
|
|
3
3
|
import { ChainType, IBaseChain, IEVMChain, IHyperliquidChain, ISolanaChain } from "../types/chain";
|
|
4
|
-
/**
|
|
5
|
-
* Set custom RPC URL overrides for specific chains.
|
|
6
|
-
* These overrides are used by chainIdToPublicClient and chainIdToWalletClient.
|
|
7
|
-
*
|
|
8
|
-
* @param overrides - A record mapping chain IDs to custom RPC URLs
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* // Set once at app initialization using environment variables
|
|
12
|
-
* setChainRpcOverrides({
|
|
13
|
-
* 1: process.env.ETHEREUM_RPC_URL,
|
|
14
|
-
* 8453: process.env.BASE_RPC_URL,
|
|
15
|
-
* 42161: process.env.ARBITRUM_RPC_URL,
|
|
16
|
-
* });
|
|
17
|
-
*/
|
|
18
|
-
export declare function setChainRpcOverrides(overrides: Record<number, string>): void;
|
|
19
|
-
/**
|
|
20
|
-
* Get the current RPC URL overrides.
|
|
21
|
-
*/
|
|
22
|
-
export declare function getChainRpcOverrides(): Record<number, string>;
|
|
23
|
-
/**
|
|
24
|
-
* Clear all RPC URL overrides.
|
|
25
|
-
*/
|
|
26
|
-
export declare function clearChainRpcOverrides(): void;
|
|
27
4
|
export declare const hyperEVM: {
|
|
28
5
|
blockExplorers: {
|
|
29
6
|
readonly default: {
|
|
@@ -7455,12 +7455,12 @@ export declare function useFirstEOA(chain?: {
|
|
|
7455
7455
|
[x: `bytes6[${string}]`]: undefined;
|
|
7456
7456
|
[x: `bytes9[${string}]`]: undefined;
|
|
7457
7457
|
[x: `bytes8[${string}]`]: undefined;
|
|
7458
|
-
[x: `bytes10[${string}]`]: undefined;
|
|
7459
7458
|
[x: `bytes2[${string}]`]: undefined;
|
|
7460
7459
|
[x: `bytes3[${string}]`]: undefined;
|
|
7461
7460
|
[x: `bytes4[${string}]`]: undefined;
|
|
7462
7461
|
[x: `bytes5[${string}]`]: undefined;
|
|
7463
7462
|
[x: `bytes7[${string}]`]: undefined;
|
|
7463
|
+
[x: `bytes10[${string}]`]: undefined;
|
|
7464
7464
|
[x: `bytes11[${string}]`]: undefined;
|
|
7465
7465
|
[x: `bytes12[${string}]`]: undefined;
|
|
7466
7466
|
[x: `bytes13[${string}]`]: undefined;
|
|
@@ -7557,12 +7557,12 @@ export declare function useFirstEOA(chain?: {
|
|
|
7557
7557
|
bytes6?: undefined;
|
|
7558
7558
|
bytes9?: undefined;
|
|
7559
7559
|
bytes8?: undefined;
|
|
7560
|
-
bytes10?: undefined;
|
|
7561
7560
|
bytes2?: undefined;
|
|
7562
7561
|
bytes3?: undefined;
|
|
7563
7562
|
bytes4?: undefined;
|
|
7564
7563
|
bytes5?: undefined;
|
|
7565
7564
|
bytes7?: undefined;
|
|
7565
|
+
bytes10?: undefined;
|
|
7566
7566
|
bytes11?: undefined;
|
|
7567
7567
|
bytes12?: undefined;
|
|
7568
7568
|
bytes13?: undefined;
|
package/package.json
CHANGED
|
@@ -249,11 +249,7 @@ function AnySpendInner({
|
|
|
249
249
|
defaultToken: defaultSrcToken,
|
|
250
250
|
prefix: "from",
|
|
251
251
|
});
|
|
252
|
-
|
|
253
|
-
// use the default token for the new chain (handles chain selection in AnySpendDeposit)
|
|
254
|
-
const effectiveSrcToken =
|
|
255
|
-
sourceChainId && srcTokenFromUrl.chainId !== sourceChainId ? defaultSrcToken : srcTokenFromUrl;
|
|
256
|
-
const [selectedSrcToken, setSelectedSrcToken] = useState<components["schemas"]["Token"]>(effectiveSrcToken);
|
|
252
|
+
const [selectedSrcToken, setSelectedSrcToken] = useState<components["schemas"]["Token"]>(srcTokenFromUrl);
|
|
257
253
|
const { data: srcTokenMetadata } = useTokenData(selectedSrcToken?.chainId, selectedSrcToken?.address);
|
|
258
254
|
const [srcAmount, setSrcAmount] = useState<string>(searchParams.get("fromAmount") || "0");
|
|
259
255
|
|
|
@@ -253,7 +253,7 @@ function AnySpendCustomInner({
|
|
|
253
253
|
const [activePanel, setActivePanel] = useState<PanelView>(
|
|
254
254
|
loadOrder ? PanelView.ORDER_DETAILS : PanelView.CONFIRM_ORDER,
|
|
255
255
|
);
|
|
256
|
-
const [activeTab, setActiveTab] = useState<"crypto" | "fiat">(
|
|
256
|
+
const [activeTab, setActiveTab] = useState<"crypto" | "fiat">(activeTabProps);
|
|
257
257
|
|
|
258
258
|
// Payment method state with dual-state system (auto + explicit user selection)
|
|
259
259
|
// Note: AnySpendCustom doesn't use auto-selection, only explicit user selection
|
|
@@ -1,16 +1,4 @@
|
|
|
1
1
|
import { RELAY_SOLANA_MAINNET_CHAIN_ID } from "@b3dotfun/sdk/anyspend/constants";
|
|
2
|
-
import {
|
|
3
|
-
ABSTRACT_PUBLIC_RPC,
|
|
4
|
-
ARBITRUM_PUBLIC_RPC,
|
|
5
|
-
AVALANCHE_PUBLIC_RPC,
|
|
6
|
-
B3_PUBLIC_RPC,
|
|
7
|
-
BASE_PUBLIC_RPC,
|
|
8
|
-
BSC_PUBLIC_RPC,
|
|
9
|
-
ETHEREUM_PUBLIC_RPC,
|
|
10
|
-
HYPEREVM_PUBLIC_RPC,
|
|
11
|
-
OPTIMISM_PUBLIC_RPC,
|
|
12
|
-
POLYGON_PUBLIC_RPC,
|
|
13
|
-
} from "@b3dotfun/sdk/anyspend/constants/rpc";
|
|
14
2
|
import { components } from "@b3dotfun/sdk/anyspend/types/api";
|
|
15
3
|
import invariant from "invariant";
|
|
16
4
|
import {
|
|
@@ -43,49 +31,11 @@ function getCustomEvmChain(chain: Chain, rpcUrl: string): Chain {
|
|
|
43
31
|
return defineChain({ ...chain, rpcUrls: { default: { http: [rpcUrl] } } });
|
|
44
32
|
}
|
|
45
33
|
|
|
46
|
-
/**
|
|
47
|
-
* Global RPC URL overrides for EVM chains.
|
|
48
|
-
* Use setChainRpcOverrides() to configure custom RPC endpoints.
|
|
49
|
-
*/
|
|
50
|
-
let chainRpcOverrides: Record<number, string> = {};
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Set custom RPC URL overrides for specific chains.
|
|
54
|
-
* These overrides are used by chainIdToPublicClient and chainIdToWalletClient.
|
|
55
|
-
*
|
|
56
|
-
* @param overrides - A record mapping chain IDs to custom RPC URLs
|
|
57
|
-
*
|
|
58
|
-
* @example
|
|
59
|
-
* // Set once at app initialization using environment variables
|
|
60
|
-
* setChainRpcOverrides({
|
|
61
|
-
* 1: process.env.ETHEREUM_RPC_URL,
|
|
62
|
-
* 8453: process.env.BASE_RPC_URL,
|
|
63
|
-
* 42161: process.env.ARBITRUM_RPC_URL,
|
|
64
|
-
* });
|
|
65
|
-
*/
|
|
66
|
-
export function setChainRpcOverrides(overrides: Record<number, string>): void {
|
|
67
|
-
chainRpcOverrides = { ...overrides };
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Get the current RPC URL overrides.
|
|
72
|
-
*/
|
|
73
|
-
export function getChainRpcOverrides(): Record<number, string> {
|
|
74
|
-
return { ...chainRpcOverrides };
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Clear all RPC URL overrides.
|
|
79
|
-
*/
|
|
80
|
-
export function clearChainRpcOverrides(): void {
|
|
81
|
-
chainRpcOverrides = {};
|
|
82
|
-
}
|
|
83
|
-
|
|
84
34
|
export const hyperEVM = defineChain({
|
|
85
35
|
id: HYPEREVM_CHAIN_ID,
|
|
86
36
|
name: "HyperEVM",
|
|
87
37
|
nativeCurrency: { name: "HyperEVM", symbol: "HYPE", decimals: 18 },
|
|
88
|
-
rpcUrls: { default: { http: [
|
|
38
|
+
rpcUrls: { default: { http: ["https://rpc.hyperliquid.xyz/evm"] } },
|
|
89
39
|
blockExplorers: { default: { name: "HyperEVM Explorer", url: "https://hyperevmscan.io/" } },
|
|
90
40
|
});
|
|
91
41
|
|
|
@@ -107,7 +57,10 @@ export const EVM_MAINNET: Record<number, IEVMChain> = {
|
|
|
107
57
|
canDepositNative: true,
|
|
108
58
|
defaultToken: getEthToken(mainnet.id),
|
|
109
59
|
nativeToken: getEthToken(mainnet.id),
|
|
110
|
-
viem: getCustomEvmChain(
|
|
60
|
+
viem: getCustomEvmChain(
|
|
61
|
+
mainnet,
|
|
62
|
+
"https://quick-chaotic-film.quiknode.pro/39a7aae6a7078f9f36c435e6f34c071c641cf863/",
|
|
63
|
+
),
|
|
111
64
|
pollingInterval: 4000, // 4 seconds for Ethereum mainnet
|
|
112
65
|
zapperEnum: "ETHEREUM_MAINNET",
|
|
113
66
|
coingeckoName: "eth",
|
|
@@ -122,7 +75,10 @@ export const EVM_MAINNET: Record<number, IEVMChain> = {
|
|
|
122
75
|
canDepositNative: true,
|
|
123
76
|
defaultToken: getEthToken(arbitrum.id),
|
|
124
77
|
nativeToken: getEthToken(arbitrum.id),
|
|
125
|
-
viem: getCustomEvmChain(
|
|
78
|
+
viem: getCustomEvmChain(
|
|
79
|
+
arbitrum,
|
|
80
|
+
"https://proportionate-twilight-patina.arbitrum-mainnet.quiknode.pro/60e4825626515233a0f566f5915601af6043127b/",
|
|
81
|
+
),
|
|
126
82
|
pollingInterval: 500, // 500ms for Arbitrum's fast blocks
|
|
127
83
|
zapperEnum: "ARBITRUM_MAINNET",
|
|
128
84
|
coingeckoName: "arbitrum",
|
|
@@ -137,7 +93,10 @@ export const EVM_MAINNET: Record<number, IEVMChain> = {
|
|
|
137
93
|
canDepositNative: true,
|
|
138
94
|
defaultToken: getEthToken(base.id),
|
|
139
95
|
nativeToken: getEthToken(base.id),
|
|
140
|
-
viem: getCustomEvmChain(
|
|
96
|
+
viem: getCustomEvmChain(
|
|
97
|
+
base,
|
|
98
|
+
"https://sly-indulgent-bird.base-mainnet.quiknode.pro/4e31fab6845eb29a2764723a43896999fe962e48/",
|
|
99
|
+
),
|
|
141
100
|
pollingInterval: 1000, // 1 second for Base
|
|
142
101
|
zapperEnum: "BASE_MAINNET",
|
|
143
102
|
coingeckoName: "base",
|
|
@@ -152,7 +111,10 @@ export const EVM_MAINNET: Record<number, IEVMChain> = {
|
|
|
152
111
|
canDepositNative: true,
|
|
153
112
|
defaultToken: getEthToken(optimism.id),
|
|
154
113
|
nativeToken: getEthToken(optimism.id),
|
|
155
|
-
viem: getCustomEvmChain(
|
|
114
|
+
viem: getCustomEvmChain(
|
|
115
|
+
optimism,
|
|
116
|
+
"https://black-cosmopolitan-hexagon.optimism.quiknode.pro/18382925841f9d09f9e76eef954bf189aa234523/",
|
|
117
|
+
),
|
|
156
118
|
pollingInterval: 1000, // 1 second for Optimism
|
|
157
119
|
zapperEnum: "OPTIMISM_MAINNET",
|
|
158
120
|
coingeckoName: "optimism",
|
|
@@ -167,7 +129,10 @@ export const EVM_MAINNET: Record<number, IEVMChain> = {
|
|
|
167
129
|
canDepositNative: true,
|
|
168
130
|
defaultToken: getPolToken(),
|
|
169
131
|
nativeToken: getPolToken(),
|
|
170
|
-
viem: getCustomEvmChain(
|
|
132
|
+
viem: getCustomEvmChain(
|
|
133
|
+
polygon,
|
|
134
|
+
"https://purple-young-field.matic.quiknode.pro/ca54f365c1a4c7f970223eb8087e0fc579feba12/",
|
|
135
|
+
),
|
|
171
136
|
pollingInterval: 1000, // 1 second for Polygon
|
|
172
137
|
zapperEnum: "POLYGON_MAINNET",
|
|
173
138
|
coingeckoName: "polygon_pos",
|
|
@@ -182,7 +147,7 @@ export const EVM_MAINNET: Record<number, IEVMChain> = {
|
|
|
182
147
|
canDepositNative: true,
|
|
183
148
|
defaultToken: getAvaxToken(),
|
|
184
149
|
nativeToken: getAvaxToken(),
|
|
185
|
-
viem: getCustomEvmChain(avalanche,
|
|
150
|
+
viem: getCustomEvmChain(avalanche, "https://avalanche-c-chain-rpc.publicnode.com"),
|
|
186
151
|
pollingInterval: 1000, // 1 second for Avalanche
|
|
187
152
|
zapperEnum: "AVALANCHE_MAINNET",
|
|
188
153
|
coingeckoName: "avax",
|
|
@@ -197,7 +162,10 @@ export const EVM_MAINNET: Record<number, IEVMChain> = {
|
|
|
197
162
|
canDepositNative: true,
|
|
198
163
|
defaultToken: getBnbToken(),
|
|
199
164
|
nativeToken: getBnbToken(),
|
|
200
|
-
viem: getCustomEvmChain(
|
|
165
|
+
viem: getCustomEvmChain(
|
|
166
|
+
bsc,
|
|
167
|
+
"https://methodical-divine-flower.bsc.quiknode.pro/9fc7efd3c34cc016cceacc27ee95850629b7cd21/",
|
|
168
|
+
),
|
|
201
169
|
pollingInterval: 1000, // 1 second for BSC
|
|
202
170
|
zapperEnum: "BSC_MAINNET",
|
|
203
171
|
coingeckoName: "bsc",
|
|
@@ -212,7 +180,10 @@ export const EVM_MAINNET: Record<number, IEVMChain> = {
|
|
|
212
180
|
canDepositNative: true,
|
|
213
181
|
defaultToken: getEthToken(b3.id),
|
|
214
182
|
nativeToken: getEthToken(b3.id),
|
|
215
|
-
viem: getCustomEvmChain(
|
|
183
|
+
viem: getCustomEvmChain(
|
|
184
|
+
b3,
|
|
185
|
+
"https://late-dimensional-yard.b3-mainnet.quiknode.pro/461dbdbd44158cd7a7a764a58ffb01a67eef77f2/",
|
|
186
|
+
),
|
|
216
187
|
pollingInterval: 1000, // 1 second for B3
|
|
217
188
|
zapperEnum: "B3_MAINNET",
|
|
218
189
|
coingeckoName: "b3",
|
|
@@ -227,7 +198,10 @@ export const EVM_MAINNET: Record<number, IEVMChain> = {
|
|
|
227
198
|
canDepositNative: true,
|
|
228
199
|
defaultToken: getEthToken(abstract.id),
|
|
229
200
|
nativeToken: getEthToken(abstract.id),
|
|
230
|
-
viem: getCustomEvmChain(
|
|
201
|
+
viem: getCustomEvmChain(
|
|
202
|
+
abstract,
|
|
203
|
+
"https://cosmopolitan-nameless-mountain.abstract-mainnet.quiknode.pro/863853304b986b582bdacf625ce3350397c560f8/",
|
|
204
|
+
),
|
|
231
205
|
pollingInterval: 3000, // 3 seconds for Abstract
|
|
232
206
|
zapperEnum: "ABSTRACT_MAINNET",
|
|
233
207
|
coingeckoName: "abstract",
|
|
@@ -354,12 +328,8 @@ export function getChainType(chainId: number): ChainType {
|
|
|
354
328
|
export function chainIdToPublicClient(chainId: number): PublicClient {
|
|
355
329
|
invariant(EVM_CHAINS[chainId], `Chain ${chainId} is not an EVM chain`);
|
|
356
330
|
|
|
357
|
-
// Use override RPC if configured, otherwise use the default chain RPC
|
|
358
|
-
const rpcOverride = chainRpcOverrides[chainId];
|
|
359
|
-
const chain = rpcOverride ? getCustomEvmChain(EVM_CHAINS[chainId].viem, rpcOverride) : EVM_CHAINS[chainId].viem;
|
|
360
|
-
|
|
361
331
|
return createPublicClient({
|
|
362
|
-
chain,
|
|
332
|
+
chain: EVM_CHAINS[chainId].viem,
|
|
363
333
|
transport: http(),
|
|
364
334
|
pollingInterval: EVM_CHAINS[chainId].pollingInterval,
|
|
365
335
|
});
|
|
@@ -368,12 +338,8 @@ export function chainIdToPublicClient(chainId: number): PublicClient {
|
|
|
368
338
|
export function chainIdToWalletClient(chainId: number, account?: Account): WalletClient<Transport, Chain> {
|
|
369
339
|
invariant(EVM_CHAINS[chainId], `Chain ${chainId} is not an EVM chain`);
|
|
370
340
|
|
|
371
|
-
// Use override RPC if configured, otherwise use the default chain RPC
|
|
372
|
-
const rpcOverride = chainRpcOverrides[chainId];
|
|
373
|
-
const chain = rpcOverride ? getCustomEvmChain(EVM_CHAINS[chainId].viem, rpcOverride) : EVM_CHAINS[chainId].viem;
|
|
374
|
-
|
|
375
341
|
return createWalletClient({
|
|
376
|
-
chain,
|
|
342
|
+
chain: EVM_CHAINS[chainId].viem,
|
|
377
343
|
transport: http(),
|
|
378
344
|
account,
|
|
379
345
|
pollingInterval: EVM_CHAINS[chainId].pollingInterval,
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Public RPC endpoints for EVM chains.
|
|
3
|
-
* These are free, public endpoints that can be used without API keys.
|
|
4
|
-
*
|
|
5
|
-
* Sources:
|
|
6
|
-
* - https://publicnode.com
|
|
7
|
-
* - https://chainlist.org
|
|
8
|
-
*/
|
|
9
|
-
export declare const ETHEREUM_PUBLIC_RPC = "https://ethereum-rpc.publicnode.com";
|
|
10
|
-
export declare const ARBITRUM_PUBLIC_RPC = "https://arbitrum-one-rpc.publicnode.com";
|
|
11
|
-
export declare const BASE_PUBLIC_RPC = "https://base-rpc.publicnode.com";
|
|
12
|
-
export declare const OPTIMISM_PUBLIC_RPC = "https://optimism-rpc.publicnode.com";
|
|
13
|
-
export declare const POLYGON_PUBLIC_RPC = "https://polygon-bor-rpc.publicnode.com";
|
|
14
|
-
export declare const AVALANCHE_PUBLIC_RPC = "https://avalanche-c-chain-rpc.publicnode.com";
|
|
15
|
-
export declare const BSC_PUBLIC_RPC = "https://bsc-rpc.publicnode.com";
|
|
16
|
-
export declare const B3_PUBLIC_RPC = "https://mainnet-rpc.b3.fun/http";
|
|
17
|
-
export declare const ABSTRACT_PUBLIC_RPC = "https://api.mainnet.abs.xyz";
|
|
18
|
-
export declare const HYPEREVM_PUBLIC_RPC = "https://rpc.hyperliquid.xyz/evm";
|
|
19
|
-
/**
|
|
20
|
-
* Map of chain IDs to their default public RPC URLs.
|
|
21
|
-
*/
|
|
22
|
-
export declare const PUBLIC_RPC_URLS: Record<number, string>;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Public RPC endpoints for EVM chains.
|
|
4
|
-
* These are free, public endpoints that can be used without API keys.
|
|
5
|
-
*
|
|
6
|
-
* Sources:
|
|
7
|
-
* - https://publicnode.com
|
|
8
|
-
* - https://chainlist.org
|
|
9
|
-
*/
|
|
10
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.PUBLIC_RPC_URLS = exports.HYPEREVM_PUBLIC_RPC = exports.ABSTRACT_PUBLIC_RPC = exports.B3_PUBLIC_RPC = exports.BSC_PUBLIC_RPC = exports.AVALANCHE_PUBLIC_RPC = exports.POLYGON_PUBLIC_RPC = exports.OPTIMISM_PUBLIC_RPC = exports.BASE_PUBLIC_RPC = exports.ARBITRUM_PUBLIC_RPC = exports.ETHEREUM_PUBLIC_RPC = void 0;
|
|
12
|
-
// PublicNode endpoints
|
|
13
|
-
exports.ETHEREUM_PUBLIC_RPC = "https://ethereum-rpc.publicnode.com";
|
|
14
|
-
exports.ARBITRUM_PUBLIC_RPC = "https://arbitrum-one-rpc.publicnode.com";
|
|
15
|
-
exports.BASE_PUBLIC_RPC = "https://base-rpc.publicnode.com";
|
|
16
|
-
exports.OPTIMISM_PUBLIC_RPC = "https://optimism-rpc.publicnode.com";
|
|
17
|
-
exports.POLYGON_PUBLIC_RPC = "https://polygon-bor-rpc.publicnode.com";
|
|
18
|
-
exports.AVALANCHE_PUBLIC_RPC = "https://avalanche-c-chain-rpc.publicnode.com";
|
|
19
|
-
exports.BSC_PUBLIC_RPC = "https://bsc-rpc.publicnode.com";
|
|
20
|
-
// Chain-specific public endpoints
|
|
21
|
-
exports.B3_PUBLIC_RPC = "https://mainnet-rpc.b3.fun/http";
|
|
22
|
-
exports.ABSTRACT_PUBLIC_RPC = "https://api.mainnet.abs.xyz";
|
|
23
|
-
exports.HYPEREVM_PUBLIC_RPC = "https://rpc.hyperliquid.xyz/evm";
|
|
24
|
-
/**
|
|
25
|
-
* Map of chain IDs to their default public RPC URLs.
|
|
26
|
-
*/
|
|
27
|
-
exports.PUBLIC_RPC_URLS = {
|
|
28
|
-
1: exports.ETHEREUM_PUBLIC_RPC, // Ethereum Mainnet
|
|
29
|
-
42161: exports.ARBITRUM_PUBLIC_RPC, // Arbitrum One
|
|
30
|
-
8453: exports.BASE_PUBLIC_RPC, // Base
|
|
31
|
-
10: exports.OPTIMISM_PUBLIC_RPC, // Optimism
|
|
32
|
-
137: exports.POLYGON_PUBLIC_RPC, // Polygon
|
|
33
|
-
43114: exports.AVALANCHE_PUBLIC_RPC, // Avalanche C-Chain
|
|
34
|
-
56: exports.BSC_PUBLIC_RPC, // BNB Smart Chain
|
|
35
|
-
8333: exports.B3_PUBLIC_RPC, // B3
|
|
36
|
-
2741: exports.ABSTRACT_PUBLIC_RPC, // Abstract
|
|
37
|
-
999: exports.HYPEREVM_PUBLIC_RPC, // HyperEVM
|
|
38
|
-
};
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Public RPC endpoints for EVM chains.
|
|
3
|
-
* These are free, public endpoints that can be used without API keys.
|
|
4
|
-
*
|
|
5
|
-
* Sources:
|
|
6
|
-
* - https://publicnode.com
|
|
7
|
-
* - https://chainlist.org
|
|
8
|
-
*/
|
|
9
|
-
export declare const ETHEREUM_PUBLIC_RPC = "https://ethereum-rpc.publicnode.com";
|
|
10
|
-
export declare const ARBITRUM_PUBLIC_RPC = "https://arbitrum-one-rpc.publicnode.com";
|
|
11
|
-
export declare const BASE_PUBLIC_RPC = "https://base-rpc.publicnode.com";
|
|
12
|
-
export declare const OPTIMISM_PUBLIC_RPC = "https://optimism-rpc.publicnode.com";
|
|
13
|
-
export declare const POLYGON_PUBLIC_RPC = "https://polygon-bor-rpc.publicnode.com";
|
|
14
|
-
export declare const AVALANCHE_PUBLIC_RPC = "https://avalanche-c-chain-rpc.publicnode.com";
|
|
15
|
-
export declare const BSC_PUBLIC_RPC = "https://bsc-rpc.publicnode.com";
|
|
16
|
-
export declare const B3_PUBLIC_RPC = "https://mainnet-rpc.b3.fun/http";
|
|
17
|
-
export declare const ABSTRACT_PUBLIC_RPC = "https://api.mainnet.abs.xyz";
|
|
18
|
-
export declare const HYPEREVM_PUBLIC_RPC = "https://rpc.hyperliquid.xyz/evm";
|
|
19
|
-
/**
|
|
20
|
-
* Map of chain IDs to their default public RPC URLs.
|
|
21
|
-
*/
|
|
22
|
-
export declare const PUBLIC_RPC_URLS: Record<number, string>;
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Public RPC endpoints for EVM chains.
|
|
3
|
-
* These are free, public endpoints that can be used without API keys.
|
|
4
|
-
*
|
|
5
|
-
* Sources:
|
|
6
|
-
* - https://publicnode.com
|
|
7
|
-
* - https://chainlist.org
|
|
8
|
-
*/
|
|
9
|
-
// PublicNode endpoints
|
|
10
|
-
export const ETHEREUM_PUBLIC_RPC = "https://ethereum-rpc.publicnode.com";
|
|
11
|
-
export const ARBITRUM_PUBLIC_RPC = "https://arbitrum-one-rpc.publicnode.com";
|
|
12
|
-
export const BASE_PUBLIC_RPC = "https://base-rpc.publicnode.com";
|
|
13
|
-
export const OPTIMISM_PUBLIC_RPC = "https://optimism-rpc.publicnode.com";
|
|
14
|
-
export const POLYGON_PUBLIC_RPC = "https://polygon-bor-rpc.publicnode.com";
|
|
15
|
-
export const AVALANCHE_PUBLIC_RPC = "https://avalanche-c-chain-rpc.publicnode.com";
|
|
16
|
-
export const BSC_PUBLIC_RPC = "https://bsc-rpc.publicnode.com";
|
|
17
|
-
// Chain-specific public endpoints
|
|
18
|
-
export const B3_PUBLIC_RPC = "https://mainnet-rpc.b3.fun/http";
|
|
19
|
-
export const ABSTRACT_PUBLIC_RPC = "https://api.mainnet.abs.xyz";
|
|
20
|
-
export const HYPEREVM_PUBLIC_RPC = "https://rpc.hyperliquid.xyz/evm";
|
|
21
|
-
/**
|
|
22
|
-
* Map of chain IDs to their default public RPC URLs.
|
|
23
|
-
*/
|
|
24
|
-
export const PUBLIC_RPC_URLS = {
|
|
25
|
-
1: ETHEREUM_PUBLIC_RPC, // Ethereum Mainnet
|
|
26
|
-
42161: ARBITRUM_PUBLIC_RPC, // Arbitrum One
|
|
27
|
-
8453: BASE_PUBLIC_RPC, // Base
|
|
28
|
-
10: OPTIMISM_PUBLIC_RPC, // Optimism
|
|
29
|
-
137: POLYGON_PUBLIC_RPC, // Polygon
|
|
30
|
-
43114: AVALANCHE_PUBLIC_RPC, // Avalanche C-Chain
|
|
31
|
-
56: BSC_PUBLIC_RPC, // BNB Smart Chain
|
|
32
|
-
8333: B3_PUBLIC_RPC, // B3
|
|
33
|
-
2741: ABSTRACT_PUBLIC_RPC, // Abstract
|
|
34
|
-
999: HYPEREVM_PUBLIC_RPC, // HyperEVM
|
|
35
|
-
};
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Public RPC endpoints for EVM chains.
|
|
3
|
-
* These are free, public endpoints that can be used without API keys.
|
|
4
|
-
*
|
|
5
|
-
* Sources:
|
|
6
|
-
* - https://publicnode.com
|
|
7
|
-
* - https://chainlist.org
|
|
8
|
-
*/
|
|
9
|
-
export declare const ETHEREUM_PUBLIC_RPC = "https://ethereum-rpc.publicnode.com";
|
|
10
|
-
export declare const ARBITRUM_PUBLIC_RPC = "https://arbitrum-one-rpc.publicnode.com";
|
|
11
|
-
export declare const BASE_PUBLIC_RPC = "https://base-rpc.publicnode.com";
|
|
12
|
-
export declare const OPTIMISM_PUBLIC_RPC = "https://optimism-rpc.publicnode.com";
|
|
13
|
-
export declare const POLYGON_PUBLIC_RPC = "https://polygon-bor-rpc.publicnode.com";
|
|
14
|
-
export declare const AVALANCHE_PUBLIC_RPC = "https://avalanche-c-chain-rpc.publicnode.com";
|
|
15
|
-
export declare const BSC_PUBLIC_RPC = "https://bsc-rpc.publicnode.com";
|
|
16
|
-
export declare const B3_PUBLIC_RPC = "https://mainnet-rpc.b3.fun/http";
|
|
17
|
-
export declare const ABSTRACT_PUBLIC_RPC = "https://api.mainnet.abs.xyz";
|
|
18
|
-
export declare const HYPEREVM_PUBLIC_RPC = "https://rpc.hyperliquid.xyz/evm";
|
|
19
|
-
/**
|
|
20
|
-
* Map of chain IDs to their default public RPC URLs.
|
|
21
|
-
*/
|
|
22
|
-
export declare const PUBLIC_RPC_URLS: Record<number, string>;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Public RPC endpoints for EVM chains.
|
|
3
|
-
* These are free, public endpoints that can be used without API keys.
|
|
4
|
-
*
|
|
5
|
-
* Sources:
|
|
6
|
-
* - https://publicnode.com
|
|
7
|
-
* - https://chainlist.org
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
// PublicNode endpoints
|
|
11
|
-
export const ETHEREUM_PUBLIC_RPC = "https://ethereum-rpc.publicnode.com";
|
|
12
|
-
export const ARBITRUM_PUBLIC_RPC = "https://arbitrum-one-rpc.publicnode.com";
|
|
13
|
-
export const BASE_PUBLIC_RPC = "https://base-rpc.publicnode.com";
|
|
14
|
-
export const OPTIMISM_PUBLIC_RPC = "https://optimism-rpc.publicnode.com";
|
|
15
|
-
export const POLYGON_PUBLIC_RPC = "https://polygon-bor-rpc.publicnode.com";
|
|
16
|
-
export const AVALANCHE_PUBLIC_RPC = "https://avalanche-c-chain-rpc.publicnode.com";
|
|
17
|
-
export const BSC_PUBLIC_RPC = "https://bsc-rpc.publicnode.com";
|
|
18
|
-
|
|
19
|
-
// Chain-specific public endpoints
|
|
20
|
-
export const B3_PUBLIC_RPC = "https://mainnet-rpc.b3.fun/http";
|
|
21
|
-
export const ABSTRACT_PUBLIC_RPC = "https://api.mainnet.abs.xyz";
|
|
22
|
-
export const HYPEREVM_PUBLIC_RPC = "https://rpc.hyperliquid.xyz/evm";
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Map of chain IDs to their default public RPC URLs.
|
|
26
|
-
*/
|
|
27
|
-
export const PUBLIC_RPC_URLS: Record<number, string> = {
|
|
28
|
-
1: ETHEREUM_PUBLIC_RPC, // Ethereum Mainnet
|
|
29
|
-
42161: ARBITRUM_PUBLIC_RPC, // Arbitrum One
|
|
30
|
-
8453: BASE_PUBLIC_RPC, // Base
|
|
31
|
-
10: OPTIMISM_PUBLIC_RPC, // Optimism
|
|
32
|
-
137: POLYGON_PUBLIC_RPC, // Polygon
|
|
33
|
-
43114: AVALANCHE_PUBLIC_RPC, // Avalanche C-Chain
|
|
34
|
-
56: BSC_PUBLIC_RPC, // BNB Smart Chain
|
|
35
|
-
8333: B3_PUBLIC_RPC, // B3
|
|
36
|
-
2741: ABSTRACT_PUBLIC_RPC, // Abstract
|
|
37
|
-
999: HYPEREVM_PUBLIC_RPC, // HyperEVM
|
|
38
|
-
};
|