@switch-win/sdk 1.2.9 → 1.3.1
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 +34 -0
- package/GASLESS.md +434 -0
- package/LIMIT-ORDERS.md +213 -205
- package/README.md +134 -105
- package/ROBINHOOD.md +201 -198
- package/abi/GaslessSwitchV2ABI.json +1095 -0
- package/dist/constants.d.ts +276 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +403 -0
- package/dist/constants.js.map +1 -0
- package/dist/gasless-client.d.ts +82 -0
- package/dist/gasless-client.d.ts.map +1 -0
- package/dist/gasless-client.js +467 -0
- package/dist/gasless-client.js.map +1 -0
- package/dist/gasless-index.d.ts +5 -0
- package/dist/gasless-index.d.ts.map +1 -0
- package/dist/gasless-index.js +5 -0
- package/dist/gasless-index.js.map +1 -0
- package/dist/gasless-operators.d.ts +32 -0
- package/dist/gasless-operators.d.ts.map +1 -0
- package/dist/gasless-operators.js +132 -0
- package/dist/gasless-operators.js.map +1 -0
- package/dist/gasless-store.d.ts +18 -0
- package/dist/gasless-store.d.ts.map +1 -0
- package/dist/gasless-store.js +83 -0
- package/dist/gasless-store.js.map +1 -0
- package/dist/gasless-types.d.ts +222 -0
- package/dist/gasless-types.d.ts.map +1 -0
- package/dist/gasless-types.js +2 -0
- package/dist/gasless-types.js.map +1 -0
- package/dist/gasless.d.ts +135 -0
- package/dist/gasless.d.ts.map +1 -0
- package/dist/gasless.js +513 -0
- package/dist/gasless.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/limit-orders.d.ts +440 -0
- package/dist/limit-orders.d.ts.map +1 -0
- package/dist/limit-orders.js +387 -0
- package/dist/limit-orders.js.map +1 -0
- package/dist/networks/index.d.ts +3 -0
- package/dist/networks/index.d.ts.map +1 -0
- package/dist/networks/index.js +2 -0
- package/dist/networks/index.js.map +1 -0
- package/dist/networks/robinhood.d.ts +536 -0
- package/dist/networks/robinhood.d.ts.map +1 -0
- package/dist/networks/robinhood.js +489 -0
- package/dist/networks/robinhood.js.map +1 -0
- package/dist/types.d.ts +436 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +19 -0
- package/dist/types.js.map +1 -0
- package/examples/gasless-nextjs-proxy.ts +87 -0
- package/examples/gasless-operator.ts +76 -0
- package/examples/gasless-swap.ts +173 -0
- package/examples/limit-order-ethers.ts +195 -0
- package/examples/nextjs-proxy.ts +82 -0
- package/examples/react-hooks.tsx +396 -0
- package/examples/swap-ethers.ts +209 -0
- package/examples/swap-web3py.py +267 -0
- package/package.json +53 -12
- package/src/constants.ts +184 -182
- package/src/gasless-client.ts +824 -0
- package/src/gasless-index.ts +4 -0
- package/src/gasless-operators.ts +227 -0
- package/src/gasless-store.ts +137 -0
- package/src/gasless-types.ts +262 -0
- package/src/gasless.ts +756 -0
- package/src/index.ts +69 -63
- package/src/limit-orders.ts +206 -195
- package/src/types.ts +80 -55
|
@@ -0,0 +1,489 @@
|
|
|
1
|
+
import { API_BASE } from "../constants.js";
|
|
2
|
+
/** API network value used by Switch endpoints. */
|
|
3
|
+
export const ROBINHOOD_NETWORK = "robinhood";
|
|
4
|
+
/** Robinhood Chain mainnet metadata. */
|
|
5
|
+
export const ROBINHOOD_CHAIN = {
|
|
6
|
+
id: 4663,
|
|
7
|
+
name: "Robinhood Chain",
|
|
8
|
+
nativeCurrency: {
|
|
9
|
+
name: "Ether",
|
|
10
|
+
symbol: "ETH",
|
|
11
|
+
decimals: 18,
|
|
12
|
+
},
|
|
13
|
+
rpcUrls: ["https://rpc.mainnet.chain.robinhood.com"],
|
|
14
|
+
blockExplorerUrl: "https://robinhoodchain.blockscout.com",
|
|
15
|
+
};
|
|
16
|
+
/** Native-ETH sentinel accepted by the Switch quote API. */
|
|
17
|
+
export const ROBINHOOD_NATIVE_ETH = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
|
|
18
|
+
/** Switch contracts deployed on Robinhood Chain. */
|
|
19
|
+
export const ROBINHOOD_SWITCH_CONTRACTS = {
|
|
20
|
+
/** ERC-20 approval target. Use quote.tx.to when submitting a swap. */
|
|
21
|
+
router: "0x8b2bBdF41C1486b3482bD0e9603d72f012EE8599",
|
|
22
|
+
legacyRouter: "0x8730C3e2cF2c8CDa8E6166837A1Ed26f46aa9E59",
|
|
23
|
+
/** Legacy view remains bound to the legacy Router; prefer hosted API quotes. */
|
|
24
|
+
routerView: "0xFF6b56d3F444eB5b7FA1db047F57140C84810376",
|
|
25
|
+
limitOrder: "0x1E05115387f314398bbb1A808B25308E71150396",
|
|
26
|
+
legacyLimitOrder: "0x752c50DDd3B426cAE3D7A995F313Ac74ac6B0230",
|
|
27
|
+
nativeEthFlow: "0x8170a3B0e2FD2e4333E0Ca9c9414B2D3dd6aF689",
|
|
28
|
+
legacyNativeEthFlow: "0x029FfC6aF9112eA078f1D6f4a98826DDB2136cf6",
|
|
29
|
+
directFillQuoter: "0x77b246C127c3c501Ec2836A2B53B555208b30B44",
|
|
30
|
+
uniswapV2Adapter: "0x7a14d7A8509a66209D4332843b983b29bF5604A4",
|
|
31
|
+
uniswapV3Adapter: "0xbcA08f296d9Ba0dc19Aa0E05D355365cE29A3205",
|
|
32
|
+
uniswapV4Adapter: "0xB9885d3C55e79499bf887F2fBe445e01A8cFFf1c",
|
|
33
|
+
limitOrderAdapter: "0xb13CC4C37e1C609617C51B5dCDf8e4Ae5721Faa4",
|
|
34
|
+
legacyLimitOrderAdapter: "0x412F625072c10e58C619D1e0b3C95cd3d5689871",
|
|
35
|
+
swapHoodV2Adapter: "0x6D8746f02e52944c13824fA691c6f4186E463354",
|
|
36
|
+
swapHoodV3Adapter: "0x9645dE0AcB48F0AAefdBEb423F0558457907DE98",
|
|
37
|
+
up33Adapter: "0x388179D2FB0ABcE9b03068916aF8a3c4dfD023c8",
|
|
38
|
+
sheriffV2Adapter: "0xBDB3EB0355981500f58C9bc77c3E61762844A146",
|
|
39
|
+
sheriffAlgebraAdapter: "0xaC4da986100724983042Ec28c28db243E2f828CB",
|
|
40
|
+
aeonAlgebraAdapter: "0x20615954FB87360139e7DdDB519359498EbD1904",
|
|
41
|
+
catnipV2Adapter: "0x5b2Ca358d56490Dc86224D502522314De7707237",
|
|
42
|
+
pancakeSwapV2Adapter: "0x3B6e71A59553143937Fef74a7B50AFD24528786E",
|
|
43
|
+
pancakeSwapV3Adapter: "0xD2Adac87bab4f0f99CF2a21c552c88d1C9825cCC",
|
|
44
|
+
robinSwapV2Adapter: "0xF694145F104c3C24f723301e160D2Ccf0Db31FE6",
|
|
45
|
+
robinSwapV3Adapter: "0x798f77D63b46b0E019de206E111e5ea5CC16BEc8",
|
|
46
|
+
sushiSwapV3Adapter: "0xca3EA0Fd6E31f94c81B6586836790adE638313ED",
|
|
47
|
+
gigaV2Adapter: "0xa379c7D17F7fEe735773879D4069886B117AB54a",
|
|
48
|
+
gigaV3Adapter: "0xcAa612CDe3d3FbE97Be97eB5f79BC91597432d55",
|
|
49
|
+
flapAdapter: "0x6af2A4475C44d5833575150Bf7C3D3FE6Bf4F344",
|
|
50
|
+
ramsesV3Adapter: "0xdBf182774C60932c6fe1Bf3FFaB8Ca28CCb0dC17",
|
|
51
|
+
ramsesV2Adapter: "0x5fe3b873c222e76f7630b40052f07ee06196E6d3",
|
|
52
|
+
limitOrderAdapterIndex: 3,
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Snapshot of the ordered production adapter registry verified on 2026-08-25.
|
|
56
|
+
*
|
|
57
|
+
* Adapter registration can change. Fetch
|
|
58
|
+
* `GET /swap/adapters?network=robinhood` when runtime freshness matters.
|
|
59
|
+
*/
|
|
60
|
+
export const ROBINHOOD_ADAPTERS = [
|
|
61
|
+
{
|
|
62
|
+
index: 0,
|
|
63
|
+
name: "UniswapV2",
|
|
64
|
+
address: ROBINHOOD_SWITCH_CONTRACTS.uniswapV2Adapter,
|
|
65
|
+
taxSafe: true,
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
index: 1,
|
|
69
|
+
name: "UniswapV3",
|
|
70
|
+
address: ROBINHOOD_SWITCH_CONTRACTS.uniswapV3Adapter,
|
|
71
|
+
taxSafe: false,
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
index: 2,
|
|
75
|
+
name: "UniswapV4",
|
|
76
|
+
address: ROBINHOOD_SWITCH_CONTRACTS.uniswapV4Adapter,
|
|
77
|
+
taxSafe: false,
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
index: 3,
|
|
81
|
+
name: "SwitchLimitOrders",
|
|
82
|
+
address: ROBINHOOD_SWITCH_CONTRACTS.limitOrderAdapter,
|
|
83
|
+
taxSafe: false,
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
index: 4,
|
|
87
|
+
name: "SwapHoodV2",
|
|
88
|
+
address: ROBINHOOD_SWITCH_CONTRACTS.swapHoodV2Adapter,
|
|
89
|
+
taxSafe: true,
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
index: 5,
|
|
93
|
+
name: "SwapHoodV3",
|
|
94
|
+
address: ROBINHOOD_SWITCH_CONTRACTS.swapHoodV3Adapter,
|
|
95
|
+
taxSafe: false,
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
index: 6,
|
|
99
|
+
name: "Up33",
|
|
100
|
+
address: ROBINHOOD_SWITCH_CONTRACTS.up33Adapter,
|
|
101
|
+
taxSafe: false,
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
index: 7,
|
|
105
|
+
name: "SheriffV2",
|
|
106
|
+
address: ROBINHOOD_SWITCH_CONTRACTS.sheriffV2Adapter,
|
|
107
|
+
taxSafe: true,
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
index: 8,
|
|
111
|
+
name: "SheriffAlgebra",
|
|
112
|
+
address: ROBINHOOD_SWITCH_CONTRACTS.sheriffAlgebraAdapter,
|
|
113
|
+
taxSafe: false,
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
index: 9,
|
|
117
|
+
name: "AeonAlgebra",
|
|
118
|
+
address: ROBINHOOD_SWITCH_CONTRACTS.aeonAlgebraAdapter,
|
|
119
|
+
taxSafe: false,
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
index: 10,
|
|
123
|
+
name: "CatnipV2",
|
|
124
|
+
address: ROBINHOOD_SWITCH_CONTRACTS.catnipV2Adapter,
|
|
125
|
+
taxSafe: true,
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
index: 11,
|
|
129
|
+
name: "PancakeSwapV2",
|
|
130
|
+
address: ROBINHOOD_SWITCH_CONTRACTS.pancakeSwapV2Adapter,
|
|
131
|
+
taxSafe: true,
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
index: 12,
|
|
135
|
+
name: "PancakeSwapV3",
|
|
136
|
+
address: ROBINHOOD_SWITCH_CONTRACTS.pancakeSwapV3Adapter,
|
|
137
|
+
taxSafe: false,
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
index: 13,
|
|
141
|
+
name: "RobinSwapV2",
|
|
142
|
+
address: ROBINHOOD_SWITCH_CONTRACTS.robinSwapV2Adapter,
|
|
143
|
+
taxSafe: true,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
index: 14,
|
|
147
|
+
name: "RobinSwapV3",
|
|
148
|
+
address: ROBINHOOD_SWITCH_CONTRACTS.robinSwapV3Adapter,
|
|
149
|
+
taxSafe: false,
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
index: 15,
|
|
153
|
+
name: "SushiSwapV3",
|
|
154
|
+
address: ROBINHOOD_SWITCH_CONTRACTS.sushiSwapV3Adapter,
|
|
155
|
+
taxSafe: false,
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
index: 16,
|
|
159
|
+
name: "GigaV2",
|
|
160
|
+
address: ROBINHOOD_SWITCH_CONTRACTS.gigaV2Adapter,
|
|
161
|
+
taxSafe: true,
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
index: 17,
|
|
165
|
+
name: "GigaV3",
|
|
166
|
+
address: ROBINHOOD_SWITCH_CONTRACTS.gigaV3Adapter,
|
|
167
|
+
taxSafe: false,
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
index: 18,
|
|
171
|
+
name: "Flap",
|
|
172
|
+
address: ROBINHOOD_SWITCH_CONTRACTS.flapAdapter,
|
|
173
|
+
taxSafe: true,
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
index: 19,
|
|
177
|
+
name: "RamsesV3",
|
|
178
|
+
address: ROBINHOOD_SWITCH_CONTRACTS.ramsesV3Adapter,
|
|
179
|
+
taxSafe: false,
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
index: 20,
|
|
183
|
+
name: "RamsesV2",
|
|
184
|
+
address: ROBINHOOD_SWITCH_CONTRACTS.ramsesV2Adapter,
|
|
185
|
+
taxSafe: true,
|
|
186
|
+
},
|
|
187
|
+
];
|
|
188
|
+
/** Adapter indices currently eligible for Robinhood transfer-tax routes. */
|
|
189
|
+
export const ROBINHOOD_TAX_SAFE_ADAPTER_INDICES = [
|
|
190
|
+
0, 4, 7, 10, 11, 13, 16, 18, 20,
|
|
191
|
+
];
|
|
192
|
+
/** Current Robinhood transfer-tax-safe adapter metadata. */
|
|
193
|
+
export const ROBINHOOD_TAX_SAFE_ADAPTERS = ROBINHOOD_ADAPTERS.filter((adapter) => adapter.taxSafe);
|
|
194
|
+
/** EIP-712 domain used for Robinhood ERC-20 limit-order signatures. */
|
|
195
|
+
export const ROBINHOOD_LIMIT_ORDER_EIP712_DOMAIN = {
|
|
196
|
+
name: "SwitchLimitOrder",
|
|
197
|
+
version: "2",
|
|
198
|
+
chainId: ROBINHOOD_CHAIN.id,
|
|
199
|
+
verifyingContract: ROBINHOOD_SWITCH_CONTRACTS.limitOrder,
|
|
200
|
+
};
|
|
201
|
+
/** Uniswap contracts used by the Robinhood Switch deployment. */
|
|
202
|
+
export const ROBINHOOD_UNISWAP_CONTRACTS = {
|
|
203
|
+
v2Factory: "0x8bcEaA40B9AcdfAedF85AdF4FF01F5Ad6517937f",
|
|
204
|
+
v3Factory: "0x1f7d7550B1b028f7571E69A784071F0205FD2EfA",
|
|
205
|
+
v3QuoterV2: "0x33e885eD0Ec9bF04EcfB19341582aADCb4c8A9E7",
|
|
206
|
+
v3SwapRouter02: "0xCaf681a66D020601342297493863E78C959E5cb2",
|
|
207
|
+
/** Canonical Uniswap V4 singleton and periphery deployments. */
|
|
208
|
+
v4PoolManager: "0x8366a39cc670b4001a1121b8f6a443a643e40951",
|
|
209
|
+
v4PositionDescriptor: "0x9639443158e8c5efa35bd45287bf2effd3d8dc06",
|
|
210
|
+
v4PositionManager: "0x58daec3116aae6d93017baaea7749052e8a04fa7",
|
|
211
|
+
v4Quoter: "0x8dc178efb8111bb0973dd9d722ebeff267c98f94",
|
|
212
|
+
v4StateView: "0xf3334192d15450cdd385c8b70e03f9a6bd9e673b",
|
|
213
|
+
v4UniversalRouter: "0x8876789976decbfcbbbe364623c63652db8c0904",
|
|
214
|
+
permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* Tokens in the Switch Robinhood frontend's curated list.
|
|
218
|
+
*
|
|
219
|
+
* Community-token addresses must never be selected by symbol alone; clones
|
|
220
|
+
* can share the same symbol. The addresses, symbols, and decimals below were
|
|
221
|
+
* checked against Robinhood Chain on 2026-07-11.
|
|
222
|
+
*/
|
|
223
|
+
export const ROBINHOOD_TOKENS = {
|
|
224
|
+
WETH: {
|
|
225
|
+
address: "0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73",
|
|
226
|
+
symbol: "WETH",
|
|
227
|
+
name: "Wrapped Ether",
|
|
228
|
+
decimals: 18,
|
|
229
|
+
},
|
|
230
|
+
USDG: {
|
|
231
|
+
address: "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",
|
|
232
|
+
symbol: "USDG",
|
|
233
|
+
name: "Global Dollar",
|
|
234
|
+
decimals: 6,
|
|
235
|
+
},
|
|
236
|
+
VIRTUAL: {
|
|
237
|
+
address: "0xc6911796042b15d7Fa4F6CDe69e245DdCd3d9c31",
|
|
238
|
+
symbol: "VIRTUAL",
|
|
239
|
+
name: "Virtuals Protocol",
|
|
240
|
+
decimals: 18,
|
|
241
|
+
},
|
|
242
|
+
CASHCAT: {
|
|
243
|
+
address: "0x020bfC650A365f8BB26819deAAbF3E21291018b4",
|
|
244
|
+
symbol: "CASHCAT",
|
|
245
|
+
name: "Cash Cat",
|
|
246
|
+
decimals: 18,
|
|
247
|
+
},
|
|
248
|
+
WALLET: {
|
|
249
|
+
address: "0x0339f5459FC690aC85F1782e15782A151b4A9E1b",
|
|
250
|
+
symbol: "WALLET",
|
|
251
|
+
name: "Robinhood Wallet",
|
|
252
|
+
decimals: 18,
|
|
253
|
+
},
|
|
254
|
+
SEEDCOIN: {
|
|
255
|
+
address: "0x58f693A30F124E59b125F7c7b837b0F6bbAF5a45",
|
|
256
|
+
symbol: "SEEDCOIN",
|
|
257
|
+
name: "Seedcoin",
|
|
258
|
+
decimals: 18,
|
|
259
|
+
},
|
|
260
|
+
JUGGERNAUT: {
|
|
261
|
+
address: "0xD7321801CAae694090694Ff55A9323139F043B88",
|
|
262
|
+
symbol: "JUGGERNAUT",
|
|
263
|
+
name: "The Juggernaut",
|
|
264
|
+
decimals: 18,
|
|
265
|
+
},
|
|
266
|
+
HOODRAT: {
|
|
267
|
+
address: "0x8e62F281f282686fCa6dCB39288069a93fC23F1c",
|
|
268
|
+
symbol: "HOODRAT",
|
|
269
|
+
name: "Hoodrat",
|
|
270
|
+
decimals: 18,
|
|
271
|
+
},
|
|
272
|
+
DIH: {
|
|
273
|
+
address: "0x17bb0C898254406b1Ea2e8E99B0C263e26c9E4a4",
|
|
274
|
+
symbol: "DIH",
|
|
275
|
+
name: "Dog In Hood",
|
|
276
|
+
decimals: 18,
|
|
277
|
+
},
|
|
278
|
+
KITSU: {
|
|
279
|
+
address: "0x8d4dFaaA4198b6486E0293Fec914C2B6a821D4DC",
|
|
280
|
+
symbol: "KITSU",
|
|
281
|
+
name: "KITSU",
|
|
282
|
+
decimals: 18,
|
|
283
|
+
},
|
|
284
|
+
WEN: {
|
|
285
|
+
address: "0xA80eb66b3E0CF66ccB46f8b8C9e7ff5803eEb820",
|
|
286
|
+
symbol: "WEN",
|
|
287
|
+
name: "Wen Lambo",
|
|
288
|
+
decimals: 18,
|
|
289
|
+
},
|
|
290
|
+
REPE: {
|
|
291
|
+
address: "0x5266eeafF092D6136AB63D18B975A60a0Cc0C8f7",
|
|
292
|
+
symbol: "REPE",
|
|
293
|
+
name: "Robinhood Pepe",
|
|
294
|
+
decimals: 18,
|
|
295
|
+
},
|
|
296
|
+
TENDIES: {
|
|
297
|
+
address: "0x45242320DBB855EeA8Fd36804C6487E10E97FCF9",
|
|
298
|
+
symbol: "TENDIES",
|
|
299
|
+
name: "TENDIES",
|
|
300
|
+
decimals: 18,
|
|
301
|
+
},
|
|
302
|
+
GME: {
|
|
303
|
+
address: "0x7e86381A763F0Ecca2bDF27C54eAC403ddD48123",
|
|
304
|
+
symbol: "GME",
|
|
305
|
+
name: "GameStop",
|
|
306
|
+
decimals: 18,
|
|
307
|
+
},
|
|
308
|
+
TOKEN_4663: {
|
|
309
|
+
address: "0xd4052415613B34Af236024B895574c467f65b6dD",
|
|
310
|
+
symbol: "4663",
|
|
311
|
+
name: "4663",
|
|
312
|
+
decimals: 18,
|
|
313
|
+
},
|
|
314
|
+
MARIAN: {
|
|
315
|
+
address: "0x01637b14B7378B99dE75A64d50656d98488D9a4d",
|
|
316
|
+
symbol: "MARIAN",
|
|
317
|
+
name: "Lady Marian",
|
|
318
|
+
decimals: 18,
|
|
319
|
+
},
|
|
320
|
+
INDEX: {
|
|
321
|
+
address: "0x56910D4409F3a0C78C64DD8D0545FF0705389870",
|
|
322
|
+
symbol: "Index",
|
|
323
|
+
name: "The Index",
|
|
324
|
+
decimals: 18,
|
|
325
|
+
},
|
|
326
|
+
VEX: {
|
|
327
|
+
address: "0x8Ff92566f2e81BDd68EDfAa8cde73942A723796b",
|
|
328
|
+
symbol: "VEX",
|
|
329
|
+
name: "ProjectVex",
|
|
330
|
+
decimals: 18,
|
|
331
|
+
},
|
|
332
|
+
HOODIE: {
|
|
333
|
+
address: "0xC72c01AAB5f5678dc1d6f5C6d2B417d91D402Ba3",
|
|
334
|
+
symbol: "HOODIE",
|
|
335
|
+
name: "HOODIE",
|
|
336
|
+
decimals: 18,
|
|
337
|
+
},
|
|
338
|
+
WISHBONE: {
|
|
339
|
+
address: "0x77581054581B9c525E7dd7a0155DE43867532d03",
|
|
340
|
+
symbol: "WISHBONE",
|
|
341
|
+
name: "WISHBONE",
|
|
342
|
+
decimals: 18,
|
|
343
|
+
},
|
|
344
|
+
VLAD: {
|
|
345
|
+
address: "0x31BE8f7485e36928C9De86566c62da82d4B6BF81",
|
|
346
|
+
symbol: "VLAD",
|
|
347
|
+
name: "The Green Bull",
|
|
348
|
+
decimals: 18,
|
|
349
|
+
},
|
|
350
|
+
AEON: {
|
|
351
|
+
address: "0xd4c93eD1843606f92CccA078941f3d52A585982f",
|
|
352
|
+
symbol: "AEON",
|
|
353
|
+
name: "Aeon",
|
|
354
|
+
decimals: 18,
|
|
355
|
+
},
|
|
356
|
+
};
|
|
357
|
+
/** Exact ERC-20 ordering used by the Switch Robinhood token dropdown. */
|
|
358
|
+
export const ROBINHOOD_FRONTEND_TOKEN_LIST = [
|
|
359
|
+
ROBINHOOD_TOKENS.WETH,
|
|
360
|
+
ROBINHOOD_TOKENS.USDG,
|
|
361
|
+
ROBINHOOD_TOKENS.VIRTUAL,
|
|
362
|
+
ROBINHOOD_TOKENS.CASHCAT,
|
|
363
|
+
ROBINHOOD_TOKENS.WALLET,
|
|
364
|
+
ROBINHOOD_TOKENS.SEEDCOIN,
|
|
365
|
+
ROBINHOOD_TOKENS.JUGGERNAUT,
|
|
366
|
+
ROBINHOOD_TOKENS.HOODRAT,
|
|
367
|
+
ROBINHOOD_TOKENS.DIH,
|
|
368
|
+
ROBINHOOD_TOKENS.KITSU,
|
|
369
|
+
ROBINHOOD_TOKENS.WEN,
|
|
370
|
+
ROBINHOOD_TOKENS.REPE,
|
|
371
|
+
ROBINHOOD_TOKENS.TENDIES,
|
|
372
|
+
ROBINHOOD_TOKENS.GME,
|
|
373
|
+
ROBINHOOD_TOKENS.TOKEN_4663,
|
|
374
|
+
ROBINHOOD_TOKENS.MARIAN,
|
|
375
|
+
ROBINHOOD_TOKENS.INDEX,
|
|
376
|
+
ROBINHOOD_TOKENS.VEX,
|
|
377
|
+
ROBINHOOD_TOKENS.HOODIE,
|
|
378
|
+
ROBINHOOD_TOKENS.WISHBONE,
|
|
379
|
+
ROBINHOOD_TOKENS.VLAD,
|
|
380
|
+
ROBINHOOD_TOKENS.AEON,
|
|
381
|
+
];
|
|
382
|
+
/**
|
|
383
|
+
* Tokens used to initialize the Robinhood swap UI.
|
|
384
|
+
*
|
|
385
|
+
* The current default pair is native ETH -> USDG. WETH remains in this set so
|
|
386
|
+
* native/wrapped lookup and token selection use the canonical deployment.
|
|
387
|
+
*/
|
|
388
|
+
export const ROBINHOOD_FRONTEND_DEFAULT_TOKENS = [
|
|
389
|
+
{
|
|
390
|
+
address: ROBINHOOD_NATIVE_ETH,
|
|
391
|
+
symbol: "ETH",
|
|
392
|
+
name: "Ether",
|
|
393
|
+
decimals: 18,
|
|
394
|
+
},
|
|
395
|
+
ROBINHOOD_TOKENS.WETH,
|
|
396
|
+
ROBINHOOD_TOKENS.USDG,
|
|
397
|
+
ROBINHOOD_TOKENS.VIRTUAL,
|
|
398
|
+
ROBINHOOD_TOKENS.CASHCAT,
|
|
399
|
+
ROBINHOOD_TOKENS.INDEX,
|
|
400
|
+
];
|
|
401
|
+
/**
|
|
402
|
+
* Production trusted-hop addresses, ordered by routing usefulness.
|
|
403
|
+
*
|
|
404
|
+
* The 2026-07-16 audit combined Dexscreener pool connectivity with Switch tax
|
|
405
|
+
* simulation, then required multiple meaningful liquidity corridors. VEX is
|
|
406
|
+
* selectable but excluded because it is taxed; INDEX is excluded because its
|
|
407
|
+
* dominant liquidity currently depends on unsupported V4 hooks. Keep this
|
|
408
|
+
* list synchronized with the Robinhood backend and operator bot.
|
|
409
|
+
*/
|
|
410
|
+
export const ROBINHOOD_TRUSTED_INTERMEDIATES = [
|
|
411
|
+
ROBINHOOD_TOKENS.WETH.address,
|
|
412
|
+
ROBINHOOD_TOKENS.USDG.address,
|
|
413
|
+
ROBINHOOD_TOKENS.VIRTUAL.address,
|
|
414
|
+
ROBINHOOD_TOKENS.CASHCAT.address,
|
|
415
|
+
ROBINHOOD_TOKENS.HOODRAT.address,
|
|
416
|
+
ROBINHOOD_TOKENS.TENDIES.address,
|
|
417
|
+
ROBINHOOD_TOKENS.JUGGERNAUT.address,
|
|
418
|
+
ROBINHOOD_TOKENS.MARIAN.address,
|
|
419
|
+
ROBINHOOD_TOKENS.WALLET.address,
|
|
420
|
+
];
|
|
421
|
+
/** Preferred Robinhood fee tokens, from highest to lowest priority. */
|
|
422
|
+
export const ROBINHOOD_FEE_TOKEN_PRIORITY = [
|
|
423
|
+
ROBINHOOD_TOKENS.WETH.address,
|
|
424
|
+
ROBINHOOD_TOKENS.USDG.address,
|
|
425
|
+
ROBINHOOD_TOKENS.WALLET.address,
|
|
426
|
+
ROBINHOOD_TOKENS.SEEDCOIN.address,
|
|
427
|
+
ROBINHOOD_TOKENS.CASHCAT.address,
|
|
428
|
+
];
|
|
429
|
+
const ROBINHOOD_FEE_PRIORITY_BY_ADDRESS = new Map(ROBINHOOD_FEE_TOKEN_PRIORITY.map((address, index) => [
|
|
430
|
+
address.toLowerCase(),
|
|
431
|
+
index + 1,
|
|
432
|
+
]));
|
|
433
|
+
ROBINHOOD_FEE_PRIORITY_BY_ADDRESS.set(ROBINHOOD_NATIVE_ETH.toLowerCase(), 1);
|
|
434
|
+
/**
|
|
435
|
+
* Select the safer/preferred fee side for a Robinhood swap.
|
|
436
|
+
*
|
|
437
|
+
* Tax safety takes precedence over fee-token preference. Native ETH is treated
|
|
438
|
+
* as equivalent to WETH. `false` means fee on input; `true` means fee on output.
|
|
439
|
+
*/
|
|
440
|
+
export function selectRobinhoodFeeOnOutput(from, to, fromTax, toTax) {
|
|
441
|
+
const inputHasSellTax = fromTax.isTaxToken && fromTax.sellTaxBps > 0;
|
|
442
|
+
const outputHasBuyTax = toTax.isTaxToken && toTax.buyTaxBps > 0;
|
|
443
|
+
if (inputHasSellTax && outputHasBuyTax)
|
|
444
|
+
return false;
|
|
445
|
+
if (outputHasBuyTax)
|
|
446
|
+
return false;
|
|
447
|
+
if (inputHasSellTax)
|
|
448
|
+
return true;
|
|
449
|
+
const inputPriority = ROBINHOOD_FEE_PRIORITY_BY_ADDRESS.get(from.toLowerCase()) ?? Infinity;
|
|
450
|
+
const outputPriority = ROBINHOOD_FEE_PRIORITY_BY_ADDRESS.get(to.toLowerCase()) ?? Infinity;
|
|
451
|
+
if (outputPriority < inputPriority)
|
|
452
|
+
return true;
|
|
453
|
+
if (inputPriority < outputPriority)
|
|
454
|
+
return false;
|
|
455
|
+
if (inputPriority !== Infinity)
|
|
456
|
+
return true;
|
|
457
|
+
return false;
|
|
458
|
+
}
|
|
459
|
+
/** Build a Robinhood quote URL with the required network value included. */
|
|
460
|
+
export function buildRobinhoodQuoteUrl(params, apiBase = API_BASE) {
|
|
461
|
+
const query = new URLSearchParams({
|
|
462
|
+
network: ROBINHOOD_NETWORK,
|
|
463
|
+
from: params.from,
|
|
464
|
+
to: params.to,
|
|
465
|
+
amount: params.amount.toString(),
|
|
466
|
+
});
|
|
467
|
+
if (params.sender)
|
|
468
|
+
query.set("sender", params.sender);
|
|
469
|
+
if (params.receiver)
|
|
470
|
+
query.set("receiver", params.receiver);
|
|
471
|
+
if (params.slippage !== undefined) {
|
|
472
|
+
query.set("slippage", params.slippage.toString());
|
|
473
|
+
}
|
|
474
|
+
if (params.fee !== undefined)
|
|
475
|
+
query.set("fee", params.fee.toString());
|
|
476
|
+
if (params.partnerAddress) {
|
|
477
|
+
query.set("partnerAddress", params.partnerAddress);
|
|
478
|
+
}
|
|
479
|
+
if (params.feeOnOutput !== undefined) {
|
|
480
|
+
query.set("feeOnOutput", params.feeOnOutput.toString());
|
|
481
|
+
}
|
|
482
|
+
if (params.adapters !== undefined) {
|
|
483
|
+
query.set("adapters", Array.isArray(params.adapters)
|
|
484
|
+
? params.adapters.join(",")
|
|
485
|
+
: String(params.adapters));
|
|
486
|
+
}
|
|
487
|
+
return `${apiBase.replace(/\/$/, "")}/swap/quote?${query.toString()}`;
|
|
488
|
+
}
|
|
489
|
+
//# sourceMappingURL=robinhood.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"robinhood.js","sourceRoot":"","sources":["../../src/networks/robinhood.ts"],"names":[],"mappings":"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"}
|