├── .gitignore ├── README.md ├── abi ├── bsc_factory_v2.json ├── bsc_router_v2.json ├── erc20.json ├── pair.json ├── router_v2.json ├── router_v3.json ├── uniswap_factory_v2.json ├── uniswap_factory_v3.json └── volume_boost.json ├── config.ts ├── constants.ts ├── ether_volume_bot.rar ├── fetchAbi.ts ├── index.ts ├── package-lock.json ├── package.json ├── tsconfig.json ├── types.ts ├── utils.ts ├── volume-boost.sol └── wallets ├── 1740149775.json ├── 1740150187.json ├── 1740150555.json ├── 1740151566.json ├── 1740151953.json ├── 1740152449.json ├── 1740156378.json └── log.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Volume bot on EVM chains 2 | 3 | ## Supported chains 4 | BSC, Ethereum mainnet, (Any EVM chain) 5 | 6 | ## Technology 7 | 8 | Languange: Typescript, Solidity 9 | Type: Bot Script 10 | 11 | ## How to use the bot? 12 | 13 | - You should install node modules by 14 | ``` 15 | npm i 16 | ``` 17 | 18 | - Edit the contents in the `.env` file. I've already sent you the project with `.env` file. 19 | 20 | You should input your wallet address and privatekey there. 21 | ``` 22 | ETH_BASE_WALLET_ADDRESS="Your wallet address" 23 | ETH_BASE_WALLET_ADDRESS="The private key of your base wallet" 24 | ``` 25 | There are rpc addresses in thge`.env` file and they are not paid version. 26 | 27 | If you have good one you can replce them with yours. 28 | 29 | - Then you should see the `config.json` file. I has the main configurations for running the bot. I added comments for your good understanding. 30 | ``` 31 | //Random amount for wallet. 32 | export const amountMax = 0.003; //Ether balance 33 | export const amountMin = 0.001; //Should be more than 0.001 34 | 35 | //Fee balance that must be remaining in the wallet 36 | export const fee = 0.001; //Must be greater than 0.001 37 | ``` 38 | 39 | I recommend that you should increase `fee` for the successful transaction. ex: 0.05, 0.06. 40 | 41 | Before that you should have enough BNB in your base wallet. 42 | 43 | For example if you set config values like this... 44 | ``` 45 | //Random time interval of buy and sell 46 | export const maxInterval = 30000 //millisecond 47 | export const minInterval = 5000//millisecond 48 | 49 | //Random amount for wallet. 50 | export const amountMax = 0.03; //Ether balance 51 | export const amountMin = 0.01; //Should be more than 0.001 52 | 53 | //Fee balance that must be remaining in the wallet 54 | export const fee = 0.005; //Must be greater than 0.001 55 | 56 | //Number of sub wallets. 57 | export const subWalletNum = 20; 58 | 59 | //ChainId : Sepolia, BSC, Ethereum 60 | export const CHAINID:ChainId = ChainId.BSC; 61 | ``` 62 | 63 | Your wallet should have `(0.03 + 0.005) * 20 = 0.7 (BNB/ETH); 64 | 65 | I Recommend that you should use much fee value like 0.01 so that you can gather funds if you have some error while running the bot. 66 | 67 | While you are running the bot there will be a new json file to save the wallets you generated, so you can withdraw funds if there is a problem. 68 | 69 | I will add automatic fund-gathering function later if you want. 70 | 71 | 72 | Then you can run the bot 73 | ``` 74 | npm run dev 75 | ``` 76 | 77 | 78 | ## Features 79 | - Generating random wallets 80 | - Funding wallets that will trade as real traders 81 | - Random trade with funded wallets 82 | - Gathering funds after work 83 | 84 | ## Example 85 | 86 | 87 | https://github.com/user-attachments/assets/ac6e55f6-7ece-4cad-8dc7-883423c32f4e 88 | 89 | ## Tx links 90 | https://bscscan.com/tx/0x581cda788080b52fbd5db8c4d3500c22a6c136a07b73e2311d1fc29330d48fe5 91 | https://bscscan.com/tx/0x8c870cf1721c2c765b45d2b13731bf384ec2e8020552aafb0436c01ded98f2ab 92 | https://bscscan.com/tx/0xb46d289c48d04dc6cc74849ecd9ef4fff6bf86aa3b16fc231d019b82c7789bc2 93 | 94 | ## Future 95 | - Randomizing trading amount 96 | - Randomizing trading frequency (Buy/Sell) 97 | - Randomizing the pool 98 | 99 | ## How to contact 100 | Telegram: [@midaBricoll](https://t.me/midaBricoll) 101 | 102 | Twitter: [@dieharye](https://x.com/dieharye) 103 | -------------------------------------------------------------------------------- /abi/bsc_factory_v2.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "inputs": [ 4 | { 5 | "internalType": "address", 6 | "name": "_feeToSetter", 7 | "type": "address" 8 | } 9 | ], 10 | "payable": false, 11 | "stateMutability": "nonpayable", 12 | "type": "constructor" 13 | }, 14 | { 15 | "anonymous": false, 16 | "inputs": [ 17 | { 18 | "indexed": true, 19 | "internalType": "address", 20 | "name": "token0", 21 | "type": "address" 22 | }, 23 | { 24 | "indexed": true, 25 | "internalType": "address", 26 | "name": "token1", 27 | "type": "address" 28 | }, 29 | { 30 | "indexed": false, 31 | "internalType": "address", 32 | "name": "pair", 33 | "type": "address" 34 | }, 35 | { 36 | "indexed": false, 37 | "internalType": "uint256", 38 | "name": "", 39 | "type": "uint256" 40 | } 41 | ], 42 | "name": "PairCreated", 43 | "type": "event" 44 | }, 45 | { 46 | "constant": true, 47 | "inputs": [], 48 | "name": "INIT_CODE_PAIR_HASH", 49 | "outputs": [ 50 | { 51 | "internalType": "bytes32", 52 | "name": "", 53 | "type": "bytes32" 54 | } 55 | ], 56 | "payable": false, 57 | "stateMutability": "view", 58 | "type": "function" 59 | }, 60 | { 61 | "constant": true, 62 | "inputs": [ 63 | { 64 | "internalType": "uint256", 65 | "name": "", 66 | "type": "uint256" 67 | } 68 | ], 69 | "name": "allPairs", 70 | "outputs": [ 71 | { 72 | "internalType": "address", 73 | "name": "", 74 | "type": "address" 75 | } 76 | ], 77 | "payable": false, 78 | "stateMutability": "view", 79 | "type": "function" 80 | }, 81 | { 82 | "constant": true, 83 | "inputs": [], 84 | "name": "allPairsLength", 85 | "outputs": [ 86 | { 87 | "internalType": "uint256", 88 | "name": "", 89 | "type": "uint256" 90 | } 91 | ], 92 | "payable": false, 93 | "stateMutability": "view", 94 | "type": "function" 95 | }, 96 | { 97 | "constant": false, 98 | "inputs": [ 99 | { 100 | "internalType": "address", 101 | "name": "tokenA", 102 | "type": "address" 103 | }, 104 | { 105 | "internalType": "address", 106 | "name": "tokenB", 107 | "type": "address" 108 | } 109 | ], 110 | "name": "createPair", 111 | "outputs": [ 112 | { 113 | "internalType": "address", 114 | "name": "pair", 115 | "type": "address" 116 | } 117 | ], 118 | "payable": false, 119 | "stateMutability": "nonpayable", 120 | "type": "function" 121 | }, 122 | { 123 | "constant": true, 124 | "inputs": [], 125 | "name": "feeTo", 126 | "outputs": [ 127 | { 128 | "internalType": "address", 129 | "name": "", 130 | "type": "address" 131 | } 132 | ], 133 | "payable": false, 134 | "stateMutability": "view", 135 | "type": "function" 136 | }, 137 | { 138 | "constant": true, 139 | "inputs": [], 140 | "name": "feeToSetter", 141 | "outputs": [ 142 | { 143 | "internalType": "address", 144 | "name": "", 145 | "type": "address" 146 | } 147 | ], 148 | "payable": false, 149 | "stateMutability": "view", 150 | "type": "function" 151 | }, 152 | { 153 | "constant": true, 154 | "inputs": [ 155 | { 156 | "internalType": "address", 157 | "name": "", 158 | "type": "address" 159 | }, 160 | { 161 | "internalType": "address", 162 | "name": "", 163 | "type": "address" 164 | } 165 | ], 166 | "name": "getPair", 167 | "outputs": [ 168 | { 169 | "internalType": "address", 170 | "name": "", 171 | "type": "address" 172 | } 173 | ], 174 | "payable": false, 175 | "stateMutability": "view", 176 | "type": "function" 177 | }, 178 | { 179 | "constant": false, 180 | "inputs": [ 181 | { 182 | "internalType": "address", 183 | "name": "_feeTo", 184 | "type": "address" 185 | } 186 | ], 187 | "name": "setFeeTo", 188 | "outputs": [], 189 | "payable": false, 190 | "stateMutability": "nonpayable", 191 | "type": "function" 192 | }, 193 | { 194 | "constant": false, 195 | "inputs": [ 196 | { 197 | "internalType": "address", 198 | "name": "_feeToSetter", 199 | "type": "address" 200 | } 201 | ], 202 | "name": "setFeeToSetter", 203 | "outputs": [], 204 | "payable": false, 205 | "stateMutability": "nonpayable", 206 | "type": "function" 207 | } 208 | ] -------------------------------------------------------------------------------- /abi/bsc_router_v2.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "inputs": [ 4 | { 5 | "internalType": "address", 6 | "name": "_factory", 7 | "type": "address" 8 | }, 9 | { 10 | "internalType": "address", 11 | "name": "_WETH", 12 | "type": "address" 13 | } 14 | ], 15 | "stateMutability": "nonpayable", 16 | "type": "constructor" 17 | }, 18 | { 19 | "inputs": [], 20 | "name": "WETH", 21 | "outputs": [ 22 | { 23 | "internalType": "address", 24 | "name": "", 25 | "type": "address" 26 | } 27 | ], 28 | "stateMutability": "view", 29 | "type": "function" 30 | }, 31 | { 32 | "inputs": [ 33 | { 34 | "internalType": "address", 35 | "name": "tokenA", 36 | "type": "address" 37 | }, 38 | { 39 | "internalType": "address", 40 | "name": "tokenB", 41 | "type": "address" 42 | }, 43 | { 44 | "internalType": "uint256", 45 | "name": "amountADesired", 46 | "type": "uint256" 47 | }, 48 | { 49 | "internalType": "uint256", 50 | "name": "amountBDesired", 51 | "type": "uint256" 52 | }, 53 | { 54 | "internalType": "uint256", 55 | "name": "amountAMin", 56 | "type": "uint256" 57 | }, 58 | { 59 | "internalType": "uint256", 60 | "name": "amountBMin", 61 | "type": "uint256" 62 | }, 63 | { 64 | "internalType": "address", 65 | "name": "to", 66 | "type": "address" 67 | }, 68 | { 69 | "internalType": "uint256", 70 | "name": "deadline", 71 | "type": "uint256" 72 | } 73 | ], 74 | "name": "addLiquidity", 75 | "outputs": [ 76 | { 77 | "internalType": "uint256", 78 | "name": "amountA", 79 | "type": "uint256" 80 | }, 81 | { 82 | "internalType": "uint256", 83 | "name": "amountB", 84 | "type": "uint256" 85 | }, 86 | { 87 | "internalType": "uint256", 88 | "name": "liquidity", 89 | "type": "uint256" 90 | } 91 | ], 92 | "stateMutability": "nonpayable", 93 | "type": "function" 94 | }, 95 | { 96 | "inputs": [ 97 | { 98 | "internalType": "address", 99 | "name": "token", 100 | "type": "address" 101 | }, 102 | { 103 | "internalType": "uint256", 104 | "name": "amountTokenDesired", 105 | "type": "uint256" 106 | }, 107 | { 108 | "internalType": "uint256", 109 | "name": "amountTokenMin", 110 | "type": "uint256" 111 | }, 112 | { 113 | "internalType": "uint256", 114 | "name": "amountETHMin", 115 | "type": "uint256" 116 | }, 117 | { 118 | "internalType": "address", 119 | "name": "to", 120 | "type": "address" 121 | }, 122 | { 123 | "internalType": "uint256", 124 | "name": "deadline", 125 | "type": "uint256" 126 | } 127 | ], 128 | "name": "addLiquidityETH", 129 | "outputs": [ 130 | { 131 | "internalType": "uint256", 132 | "name": "amountToken", 133 | "type": "uint256" 134 | }, 135 | { 136 | "internalType": "uint256", 137 | "name": "amountETH", 138 | "type": "uint256" 139 | }, 140 | { 141 | "internalType": "uint256", 142 | "name": "liquidity", 143 | "type": "uint256" 144 | } 145 | ], 146 | "stateMutability": "payable", 147 | "type": "function" 148 | }, 149 | { 150 | "inputs": [], 151 | "name": "factory", 152 | "outputs": [ 153 | { 154 | "internalType": "address", 155 | "name": "", 156 | "type": "address" 157 | } 158 | ], 159 | "stateMutability": "view", 160 | "type": "function" 161 | }, 162 | { 163 | "inputs": [ 164 | { 165 | "internalType": "uint256", 166 | "name": "amountOut", 167 | "type": "uint256" 168 | }, 169 | { 170 | "internalType": "uint256", 171 | "name": "reserveIn", 172 | "type": "uint256" 173 | }, 174 | { 175 | "internalType": "uint256", 176 | "name": "reserveOut", 177 | "type": "uint256" 178 | } 179 | ], 180 | "name": "getAmountIn", 181 | "outputs": [ 182 | { 183 | "internalType": "uint256", 184 | "name": "amountIn", 185 | "type": "uint256" 186 | } 187 | ], 188 | "stateMutability": "pure", 189 | "type": "function" 190 | }, 191 | { 192 | "inputs": [ 193 | { 194 | "internalType": "uint256", 195 | "name": "amountIn", 196 | "type": "uint256" 197 | }, 198 | { 199 | "internalType": "uint256", 200 | "name": "reserveIn", 201 | "type": "uint256" 202 | }, 203 | { 204 | "internalType": "uint256", 205 | "name": "reserveOut", 206 | "type": "uint256" 207 | } 208 | ], 209 | "name": "getAmountOut", 210 | "outputs": [ 211 | { 212 | "internalType": "uint256", 213 | "name": "amountOut", 214 | "type": "uint256" 215 | } 216 | ], 217 | "stateMutability": "pure", 218 | "type": "function" 219 | }, 220 | { 221 | "inputs": [ 222 | { 223 | "internalType": "uint256", 224 | "name": "amountOut", 225 | "type": "uint256" 226 | }, 227 | { 228 | "internalType": "address[]", 229 | "name": "path", 230 | "type": "address[]" 231 | } 232 | ], 233 | "name": "getAmountsIn", 234 | "outputs": [ 235 | { 236 | "internalType": "uint256[]", 237 | "name": "amounts", 238 | "type": "uint256[]" 239 | } 240 | ], 241 | "stateMutability": "view", 242 | "type": "function" 243 | }, 244 | { 245 | "inputs": [ 246 | { 247 | "internalType": "uint256", 248 | "name": "amountIn", 249 | "type": "uint256" 250 | }, 251 | { 252 | "internalType": "address[]", 253 | "name": "path", 254 | "type": "address[]" 255 | } 256 | ], 257 | "name": "getAmountsOut", 258 | "outputs": [ 259 | { 260 | "internalType": "uint256[]", 261 | "name": "amounts", 262 | "type": "uint256[]" 263 | } 264 | ], 265 | "stateMutability": "view", 266 | "type": "function" 267 | }, 268 | { 269 | "inputs": [ 270 | { 271 | "internalType": "uint256", 272 | "name": "amountA", 273 | "type": "uint256" 274 | }, 275 | { 276 | "internalType": "uint256", 277 | "name": "reserveA", 278 | "type": "uint256" 279 | }, 280 | { 281 | "internalType": "uint256", 282 | "name": "reserveB", 283 | "type": "uint256" 284 | } 285 | ], 286 | "name": "quote", 287 | "outputs": [ 288 | { 289 | "internalType": "uint256", 290 | "name": "amountB", 291 | "type": "uint256" 292 | } 293 | ], 294 | "stateMutability": "pure", 295 | "type": "function" 296 | }, 297 | { 298 | "inputs": [ 299 | { 300 | "internalType": "address", 301 | "name": "tokenA", 302 | "type": "address" 303 | }, 304 | { 305 | "internalType": "address", 306 | "name": "tokenB", 307 | "type": "address" 308 | }, 309 | { 310 | "internalType": "uint256", 311 | "name": "liquidity", 312 | "type": "uint256" 313 | }, 314 | { 315 | "internalType": "uint256", 316 | "name": "amountAMin", 317 | "type": "uint256" 318 | }, 319 | { 320 | "internalType": "uint256", 321 | "name": "amountBMin", 322 | "type": "uint256" 323 | }, 324 | { 325 | "internalType": "address", 326 | "name": "to", 327 | "type": "address" 328 | }, 329 | { 330 | "internalType": "uint256", 331 | "name": "deadline", 332 | "type": "uint256" 333 | } 334 | ], 335 | "name": "removeLiquidity", 336 | "outputs": [ 337 | { 338 | "internalType": "uint256", 339 | "name": "amountA", 340 | "type": "uint256" 341 | }, 342 | { 343 | "internalType": "uint256", 344 | "name": "amountB", 345 | "type": "uint256" 346 | } 347 | ], 348 | "stateMutability": "nonpayable", 349 | "type": "function" 350 | }, 351 | { 352 | "inputs": [ 353 | { 354 | "internalType": "address", 355 | "name": "token", 356 | "type": "address" 357 | }, 358 | { 359 | "internalType": "uint256", 360 | "name": "liquidity", 361 | "type": "uint256" 362 | }, 363 | { 364 | "internalType": "uint256", 365 | "name": "amountTokenMin", 366 | "type": "uint256" 367 | }, 368 | { 369 | "internalType": "uint256", 370 | "name": "amountETHMin", 371 | "type": "uint256" 372 | }, 373 | { 374 | "internalType": "address", 375 | "name": "to", 376 | "type": "address" 377 | }, 378 | { 379 | "internalType": "uint256", 380 | "name": "deadline", 381 | "type": "uint256" 382 | } 383 | ], 384 | "name": "removeLiquidityETH", 385 | "outputs": [ 386 | { 387 | "internalType": "uint256", 388 | "name": "amountToken", 389 | "type": "uint256" 390 | }, 391 | { 392 | "internalType": "uint256", 393 | "name": "amountETH", 394 | "type": "uint256" 395 | } 396 | ], 397 | "stateMutability": "nonpayable", 398 | "type": "function" 399 | }, 400 | { 401 | "inputs": [ 402 | { 403 | "internalType": "address", 404 | "name": "token", 405 | "type": "address" 406 | }, 407 | { 408 | "internalType": "uint256", 409 | "name": "liquidity", 410 | "type": "uint256" 411 | }, 412 | { 413 | "internalType": "uint256", 414 | "name": "amountTokenMin", 415 | "type": "uint256" 416 | }, 417 | { 418 | "internalType": "uint256", 419 | "name": "amountETHMin", 420 | "type": "uint256" 421 | }, 422 | { 423 | "internalType": "address", 424 | "name": "to", 425 | "type": "address" 426 | }, 427 | { 428 | "internalType": "uint256", 429 | "name": "deadline", 430 | "type": "uint256" 431 | } 432 | ], 433 | "name": "removeLiquidityETHSupportingFeeOnTransferTokens", 434 | "outputs": [ 435 | { 436 | "internalType": "uint256", 437 | "name": "amountETH", 438 | "type": "uint256" 439 | } 440 | ], 441 | "stateMutability": "nonpayable", 442 | "type": "function" 443 | }, 444 | { 445 | "inputs": [ 446 | { 447 | "internalType": "address", 448 | "name": "token", 449 | "type": "address" 450 | }, 451 | { 452 | "internalType": "uint256", 453 | "name": "liquidity", 454 | "type": "uint256" 455 | }, 456 | { 457 | "internalType": "uint256", 458 | "name": "amountTokenMin", 459 | "type": "uint256" 460 | }, 461 | { 462 | "internalType": "uint256", 463 | "name": "amountETHMin", 464 | "type": "uint256" 465 | }, 466 | { 467 | "internalType": "address", 468 | "name": "to", 469 | "type": "address" 470 | }, 471 | { 472 | "internalType": "uint256", 473 | "name": "deadline", 474 | "type": "uint256" 475 | }, 476 | { 477 | "internalType": "bool", 478 | "name": "approveMax", 479 | "type": "bool" 480 | }, 481 | { 482 | "internalType": "uint8", 483 | "name": "v", 484 | "type": "uint8" 485 | }, 486 | { 487 | "internalType": "bytes32", 488 | "name": "r", 489 | "type": "bytes32" 490 | }, 491 | { 492 | "internalType": "bytes32", 493 | "name": "s", 494 | "type": "bytes32" 495 | } 496 | ], 497 | "name": "removeLiquidityETHWithPermit", 498 | "outputs": [ 499 | { 500 | "internalType": "uint256", 501 | "name": "amountToken", 502 | "type": "uint256" 503 | }, 504 | { 505 | "internalType": "uint256", 506 | "name": "amountETH", 507 | "type": "uint256" 508 | } 509 | ], 510 | "stateMutability": "nonpayable", 511 | "type": "function" 512 | }, 513 | { 514 | "inputs": [ 515 | { 516 | "internalType": "address", 517 | "name": "token", 518 | "type": "address" 519 | }, 520 | { 521 | "internalType": "uint256", 522 | "name": "liquidity", 523 | "type": "uint256" 524 | }, 525 | { 526 | "internalType": "uint256", 527 | "name": "amountTokenMin", 528 | "type": "uint256" 529 | }, 530 | { 531 | "internalType": "uint256", 532 | "name": "amountETHMin", 533 | "type": "uint256" 534 | }, 535 | { 536 | "internalType": "address", 537 | "name": "to", 538 | "type": "address" 539 | }, 540 | { 541 | "internalType": "uint256", 542 | "name": "deadline", 543 | "type": "uint256" 544 | }, 545 | { 546 | "internalType": "bool", 547 | "name": "approveMax", 548 | "type": "bool" 549 | }, 550 | { 551 | "internalType": "uint8", 552 | "name": "v", 553 | "type": "uint8" 554 | }, 555 | { 556 | "internalType": "bytes32", 557 | "name": "r", 558 | "type": "bytes32" 559 | }, 560 | { 561 | "internalType": "bytes32", 562 | "name": "s", 563 | "type": "bytes32" 564 | } 565 | ], 566 | "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", 567 | "outputs": [ 568 | { 569 | "internalType": "uint256", 570 | "name": "amountETH", 571 | "type": "uint256" 572 | } 573 | ], 574 | "stateMutability": "nonpayable", 575 | "type": "function" 576 | }, 577 | { 578 | "inputs": [ 579 | { 580 | "internalType": "address", 581 | "name": "tokenA", 582 | "type": "address" 583 | }, 584 | { 585 | "internalType": "address", 586 | "name": "tokenB", 587 | "type": "address" 588 | }, 589 | { 590 | "internalType": "uint256", 591 | "name": "liquidity", 592 | "type": "uint256" 593 | }, 594 | { 595 | "internalType": "uint256", 596 | "name": "amountAMin", 597 | "type": "uint256" 598 | }, 599 | { 600 | "internalType": "uint256", 601 | "name": "amountBMin", 602 | "type": "uint256" 603 | }, 604 | { 605 | "internalType": "address", 606 | "name": "to", 607 | "type": "address" 608 | }, 609 | { 610 | "internalType": "uint256", 611 | "name": "deadline", 612 | "type": "uint256" 613 | }, 614 | { 615 | "internalType": "bool", 616 | "name": "approveMax", 617 | "type": "bool" 618 | }, 619 | { 620 | "internalType": "uint8", 621 | "name": "v", 622 | "type": "uint8" 623 | }, 624 | { 625 | "internalType": "bytes32", 626 | "name": "r", 627 | "type": "bytes32" 628 | }, 629 | { 630 | "internalType": "bytes32", 631 | "name": "s", 632 | "type": "bytes32" 633 | } 634 | ], 635 | "name": "removeLiquidityWithPermit", 636 | "outputs": [ 637 | { 638 | "internalType": "uint256", 639 | "name": "amountA", 640 | "type": "uint256" 641 | }, 642 | { 643 | "internalType": "uint256", 644 | "name": "amountB", 645 | "type": "uint256" 646 | } 647 | ], 648 | "stateMutability": "nonpayable", 649 | "type": "function" 650 | }, 651 | { 652 | "inputs": [ 653 | { 654 | "internalType": "uint256", 655 | "name": "amountOut", 656 | "type": "uint256" 657 | }, 658 | { 659 | "internalType": "address[]", 660 | "name": "path", 661 | "type": "address[]" 662 | }, 663 | { 664 | "internalType": "address", 665 | "name": "to", 666 | "type": "address" 667 | }, 668 | { 669 | "internalType": "uint256", 670 | "name": "deadline", 671 | "type": "uint256" 672 | } 673 | ], 674 | "name": "swapETHForExactTokens", 675 | "outputs": [ 676 | { 677 | "internalType": "uint256[]", 678 | "name": "amounts", 679 | "type": "uint256[]" 680 | } 681 | ], 682 | "stateMutability": "payable", 683 | "type": "function" 684 | }, 685 | { 686 | "inputs": [ 687 | { 688 | "internalType": "uint256", 689 | "name": "amountOutMin", 690 | "type": "uint256" 691 | }, 692 | { 693 | "internalType": "address[]", 694 | "name": "path", 695 | "type": "address[]" 696 | }, 697 | { 698 | "internalType": "address", 699 | "name": "to", 700 | "type": "address" 701 | }, 702 | { 703 | "internalType": "uint256", 704 | "name": "deadline", 705 | "type": "uint256" 706 | } 707 | ], 708 | "name": "swapExactETHForTokens", 709 | "outputs": [ 710 | { 711 | "internalType": "uint256[]", 712 | "name": "amounts", 713 | "type": "uint256[]" 714 | } 715 | ], 716 | "stateMutability": "payable", 717 | "type": "function" 718 | }, 719 | { 720 | "inputs": [ 721 | { 722 | "internalType": "uint256", 723 | "name": "amountOutMin", 724 | "type": "uint256" 725 | }, 726 | { 727 | "internalType": "address[]", 728 | "name": "path", 729 | "type": "address[]" 730 | }, 731 | { 732 | "internalType": "address", 733 | "name": "to", 734 | "type": "address" 735 | }, 736 | { 737 | "internalType": "uint256", 738 | "name": "deadline", 739 | "type": "uint256" 740 | } 741 | ], 742 | "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", 743 | "outputs": [], 744 | "stateMutability": "payable", 745 | "type": "function" 746 | }, 747 | { 748 | "inputs": [ 749 | { 750 | "internalType": "uint256", 751 | "name": "amountIn", 752 | "type": "uint256" 753 | }, 754 | { 755 | "internalType": "uint256", 756 | "name": "amountOutMin", 757 | "type": "uint256" 758 | }, 759 | { 760 | "internalType": "address[]", 761 | "name": "path", 762 | "type": "address[]" 763 | }, 764 | { 765 | "internalType": "address", 766 | "name": "to", 767 | "type": "address" 768 | }, 769 | { 770 | "internalType": "uint256", 771 | "name": "deadline", 772 | "type": "uint256" 773 | } 774 | ], 775 | "name": "swapExactTokensForETH", 776 | "outputs": [ 777 | { 778 | "internalType": "uint256[]", 779 | "name": "amounts", 780 | "type": "uint256[]" 781 | } 782 | ], 783 | "stateMutability": "nonpayable", 784 | "type": "function" 785 | }, 786 | { 787 | "inputs": [ 788 | { 789 | "internalType": "uint256", 790 | "name": "amountIn", 791 | "type": "uint256" 792 | }, 793 | { 794 | "internalType": "uint256", 795 | "name": "amountOutMin", 796 | "type": "uint256" 797 | }, 798 | { 799 | "internalType": "address[]", 800 | "name": "path", 801 | "type": "address[]" 802 | }, 803 | { 804 | "internalType": "address", 805 | "name": "to", 806 | "type": "address" 807 | }, 808 | { 809 | "internalType": "uint256", 810 | "name": "deadline", 811 | "type": "uint256" 812 | } 813 | ], 814 | "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", 815 | "outputs": [], 816 | "stateMutability": "nonpayable", 817 | "type": "function" 818 | }, 819 | { 820 | "inputs": [ 821 | { 822 | "internalType": "uint256", 823 | "name": "amountIn", 824 | "type": "uint256" 825 | }, 826 | { 827 | "internalType": "uint256", 828 | "name": "amountOutMin", 829 | "type": "uint256" 830 | }, 831 | { 832 | "internalType": "address[]", 833 | "name": "path", 834 | "type": "address[]" 835 | }, 836 | { 837 | "internalType": "address", 838 | "name": "to", 839 | "type": "address" 840 | }, 841 | { 842 | "internalType": "uint256", 843 | "name": "deadline", 844 | "type": "uint256" 845 | } 846 | ], 847 | "name": "swapExactTokensForTokens", 848 | "outputs": [ 849 | { 850 | "internalType": "uint256[]", 851 | "name": "amounts", 852 | "type": "uint256[]" 853 | } 854 | ], 855 | "stateMutability": "nonpayable", 856 | "type": "function" 857 | }, 858 | { 859 | "inputs": [ 860 | { 861 | "internalType": "uint256", 862 | "name": "amountIn", 863 | "type": "uint256" 864 | }, 865 | { 866 | "internalType": "uint256", 867 | "name": "amountOutMin", 868 | "type": "uint256" 869 | }, 870 | { 871 | "internalType": "address[]", 872 | "name": "path", 873 | "type": "address[]" 874 | }, 875 | { 876 | "internalType": "address", 877 | "name": "to", 878 | "type": "address" 879 | }, 880 | { 881 | "internalType": "uint256", 882 | "name": "deadline", 883 | "type": "uint256" 884 | } 885 | ], 886 | "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", 887 | "outputs": [], 888 | "stateMutability": "nonpayable", 889 | "type": "function" 890 | }, 891 | { 892 | "inputs": [ 893 | { 894 | "internalType": "uint256", 895 | "name": "amountOut", 896 | "type": "uint256" 897 | }, 898 | { 899 | "internalType": "uint256", 900 | "name": "amountInMax", 901 | "type": "uint256" 902 | }, 903 | { 904 | "internalType": "address[]", 905 | "name": "path", 906 | "type": "address[]" 907 | }, 908 | { 909 | "internalType": "address", 910 | "name": "to", 911 | "type": "address" 912 | }, 913 | { 914 | "internalType": "uint256", 915 | "name": "deadline", 916 | "type": "uint256" 917 | } 918 | ], 919 | "name": "swapTokensForExactETH", 920 | "outputs": [ 921 | { 922 | "internalType": "uint256[]", 923 | "name": "amounts", 924 | "type": "uint256[]" 925 | } 926 | ], 927 | "stateMutability": "nonpayable", 928 | "type": "function" 929 | }, 930 | { 931 | "inputs": [ 932 | { 933 | "internalType": "uint256", 934 | "name": "amountOut", 935 | "type": "uint256" 936 | }, 937 | { 938 | "internalType": "uint256", 939 | "name": "amountInMax", 940 | "type": "uint256" 941 | }, 942 | { 943 | "internalType": "address[]", 944 | "name": "path", 945 | "type": "address[]" 946 | }, 947 | { 948 | "internalType": "address", 949 | "name": "to", 950 | "type": "address" 951 | }, 952 | { 953 | "internalType": "uint256", 954 | "name": "deadline", 955 | "type": "uint256" 956 | } 957 | ], 958 | "name": "swapTokensForExactTokens", 959 | "outputs": [ 960 | { 961 | "internalType": "uint256[]", 962 | "name": "amounts", 963 | "type": "uint256[]" 964 | } 965 | ], 966 | "stateMutability": "nonpayable", 967 | "type": "function" 968 | }, 969 | { 970 | "stateMutability": "payable", 971 | "type": "receive" 972 | } 973 | ] -------------------------------------------------------------------------------- /abi/erc20.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "constant": true, 4 | "inputs": [], 5 | "name": "name", 6 | "outputs": [ 7 | { 8 | "name": "", 9 | "type": "string" 10 | } 11 | ], 12 | "payable": false, 13 | "stateMutability": "view", 14 | "type": "function" 15 | }, 16 | { 17 | "constant": false, 18 | "inputs": [ 19 | { 20 | "name": "_spender", 21 | "type": "address" 22 | }, 23 | { 24 | "name": "_value", 25 | "type": "uint256" 26 | } 27 | ], 28 | "name": "approve", 29 | "outputs": [ 30 | { 31 | "name": "", 32 | "type": "bool" 33 | } 34 | ], 35 | "payable": false, 36 | "stateMutability": "nonpayable", 37 | "type": "function" 38 | }, 39 | { 40 | "constant": true, 41 | "inputs": [], 42 | "name": "totalSupply", 43 | "outputs": [ 44 | { 45 | "name": "", 46 | "type": "uint256" 47 | } 48 | ], 49 | "payable": false, 50 | "stateMutability": "view", 51 | "type": "function" 52 | }, 53 | { 54 | "constant": false, 55 | "inputs": [ 56 | { 57 | "name": "_from", 58 | "type": "address" 59 | }, 60 | { 61 | "name": "_to", 62 | "type": "address" 63 | }, 64 | { 65 | "name": "_value", 66 | "type": "uint256" 67 | } 68 | ], 69 | "name": "transferFrom", 70 | "outputs": [ 71 | { 72 | "name": "", 73 | "type": "bool" 74 | } 75 | ], 76 | "payable": false, 77 | "stateMutability": "nonpayable", 78 | "type": "function" 79 | }, 80 | { 81 | "constant": true, 82 | "inputs": [], 83 | "name": "decimals", 84 | "outputs": [ 85 | { 86 | "name": "", 87 | "type": "uint8" 88 | } 89 | ], 90 | "payable": false, 91 | "stateMutability": "view", 92 | "type": "function" 93 | }, 94 | { 95 | "constant": true, 96 | "inputs": [ 97 | { 98 | "name": "_owner", 99 | "type": "address" 100 | } 101 | ], 102 | "name": "balanceOf", 103 | "outputs": [ 104 | { 105 | "name": "balance", 106 | "type": "uint256" 107 | } 108 | ], 109 | "payable": false, 110 | "stateMutability": "view", 111 | "type": "function" 112 | }, 113 | { 114 | "constant": true, 115 | "inputs": [], 116 | "name": "symbol", 117 | "outputs": [ 118 | { 119 | "name": "", 120 | "type": "string" 121 | } 122 | ], 123 | "payable": false, 124 | "stateMutability": "view", 125 | "type": "function" 126 | }, 127 | { 128 | "constant": false, 129 | "inputs": [ 130 | { 131 | "name": "_to", 132 | "type": "address" 133 | }, 134 | { 135 | "name": "_value", 136 | "type": "uint256" 137 | } 138 | ], 139 | "name": "transfer", 140 | "outputs": [ 141 | { 142 | "name": "", 143 | "type": "bool" 144 | } 145 | ], 146 | "payable": false, 147 | "stateMutability": "nonpayable", 148 | "type": "function" 149 | }, 150 | { 151 | "constant": true, 152 | "inputs": [ 153 | { 154 | "name": "_owner", 155 | "type": "address" 156 | }, 157 | { 158 | "name": "_spender", 159 | "type": "address" 160 | } 161 | ], 162 | "name": "allowance", 163 | "outputs": [ 164 | { 165 | "name": "", 166 | "type": "uint256" 167 | } 168 | ], 169 | "payable": false, 170 | "stateMutability": "view", 171 | "type": "function" 172 | }, 173 | { 174 | "payable": true, 175 | "stateMutability": "payable", 176 | "type": "fallback" 177 | }, 178 | { 179 | "anonymous": false, 180 | "inputs": [ 181 | { 182 | "indexed": true, 183 | "name": "owner", 184 | "type": "address" 185 | }, 186 | { 187 | "indexed": true, 188 | "name": "spender", 189 | "type": "address" 190 | }, 191 | { 192 | "indexed": false, 193 | "name": "value", 194 | "type": "uint256" 195 | } 196 | ], 197 | "name": "Approval", 198 | "type": "event" 199 | }, 200 | { 201 | "anonymous": false, 202 | "inputs": [ 203 | { 204 | "indexed": true, 205 | "name": "from", 206 | "type": "address" 207 | }, 208 | { 209 | "indexed": true, 210 | "name": "to", 211 | "type": "address" 212 | }, 213 | { 214 | "indexed": false, 215 | "name": "value", 216 | "type": "uint256" 217 | } 218 | ], 219 | "name": "Transfer", 220 | "type": "event" 221 | } 222 | ] -------------------------------------------------------------------------------- /abi/pair.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "inputs": [], 4 | "payable": false, 5 | "stateMutability": "nonpayable", 6 | "type": "constructor" 7 | }, 8 | { 9 | "anonymous": false, 10 | "inputs": [ 11 | { 12 | "indexed": true, 13 | "internalType": "address", 14 | "name": "owner", 15 | "type": "address" 16 | }, 17 | { 18 | "indexed": true, 19 | "internalType": "address", 20 | "name": "spender", 21 | "type": "address" 22 | }, 23 | { 24 | "indexed": false, 25 | "internalType": "uint256", 26 | "name": "value", 27 | "type": "uint256" 28 | } 29 | ], 30 | "name": "Approval", 31 | "type": "event" 32 | }, 33 | { 34 | "anonymous": false, 35 | "inputs": [ 36 | { 37 | "indexed": true, 38 | "internalType": "address", 39 | "name": "sender", 40 | "type": "address" 41 | }, 42 | { 43 | "indexed": false, 44 | "internalType": "uint256", 45 | "name": "amount0", 46 | "type": "uint256" 47 | }, 48 | { 49 | "indexed": false, 50 | "internalType": "uint256", 51 | "name": "amount1", 52 | "type": "uint256" 53 | }, 54 | { 55 | "indexed": true, 56 | "internalType": "address", 57 | "name": "to", 58 | "type": "address" 59 | } 60 | ], 61 | "name": "Burn", 62 | "type": "event" 63 | }, 64 | { 65 | "anonymous": false, 66 | "inputs": [ 67 | { 68 | "indexed": true, 69 | "internalType": "address", 70 | "name": "sender", 71 | "type": "address" 72 | }, 73 | { 74 | "indexed": false, 75 | "internalType": "uint256", 76 | "name": "amount0", 77 | "type": "uint256" 78 | }, 79 | { 80 | "indexed": false, 81 | "internalType": "uint256", 82 | "name": "amount1", 83 | "type": "uint256" 84 | } 85 | ], 86 | "name": "Mint", 87 | "type": "event" 88 | }, 89 | { 90 | "anonymous": false, 91 | "inputs": [ 92 | { 93 | "indexed": true, 94 | "internalType": "address", 95 | "name": "sender", 96 | "type": "address" 97 | }, 98 | { 99 | "indexed": false, 100 | "internalType": "uint256", 101 | "name": "amount0In", 102 | "type": "uint256" 103 | }, 104 | { 105 | "indexed": false, 106 | "internalType": "uint256", 107 | "name": "amount1In", 108 | "type": "uint256" 109 | }, 110 | { 111 | "indexed": false, 112 | "internalType": "uint256", 113 | "name": "amount0Out", 114 | "type": "uint256" 115 | }, 116 | { 117 | "indexed": false, 118 | "internalType": "uint256", 119 | "name": "amount1Out", 120 | "type": "uint256" 121 | }, 122 | { 123 | "indexed": true, 124 | "internalType": "address", 125 | "name": "to", 126 | "type": "address" 127 | } 128 | ], 129 | "name": "Swap", 130 | "type": "event" 131 | }, 132 | { 133 | "anonymous": false, 134 | "inputs": [ 135 | { 136 | "indexed": false, 137 | "internalType": "uint112", 138 | "name": "reserve0", 139 | "type": "uint112" 140 | }, 141 | { 142 | "indexed": false, 143 | "internalType": "uint112", 144 | "name": "reserve1", 145 | "type": "uint112" 146 | } 147 | ], 148 | "name": "Sync", 149 | "type": "event" 150 | }, 151 | { 152 | "anonymous": false, 153 | "inputs": [ 154 | { 155 | "indexed": true, 156 | "internalType": "address", 157 | "name": "from", 158 | "type": "address" 159 | }, 160 | { 161 | "indexed": true, 162 | "internalType": "address", 163 | "name": "to", 164 | "type": "address" 165 | }, 166 | { 167 | "indexed": false, 168 | "internalType": "uint256", 169 | "name": "value", 170 | "type": "uint256" 171 | } 172 | ], 173 | "name": "Transfer", 174 | "type": "event" 175 | }, 176 | { 177 | "constant": true, 178 | "inputs": [], 179 | "name": "DOMAIN_SEPARATOR", 180 | "outputs": [ 181 | { 182 | "internalType": "bytes32", 183 | "name": "", 184 | "type": "bytes32" 185 | } 186 | ], 187 | "payable": false, 188 | "stateMutability": "view", 189 | "type": "function" 190 | }, 191 | { 192 | "constant": true, 193 | "inputs": [], 194 | "name": "MINIMUM_LIQUIDITY", 195 | "outputs": [ 196 | { 197 | "internalType": "uint256", 198 | "name": "", 199 | "type": "uint256" 200 | } 201 | ], 202 | "payable": false, 203 | "stateMutability": "view", 204 | "type": "function" 205 | }, 206 | { 207 | "constant": true, 208 | "inputs": [], 209 | "name": "PERMIT_TYPEHASH", 210 | "outputs": [ 211 | { 212 | "internalType": "bytes32", 213 | "name": "", 214 | "type": "bytes32" 215 | } 216 | ], 217 | "payable": false, 218 | "stateMutability": "view", 219 | "type": "function" 220 | }, 221 | { 222 | "constant": true, 223 | "inputs": [ 224 | { 225 | "internalType": "address", 226 | "name": "", 227 | "type": "address" 228 | }, 229 | { 230 | "internalType": "address", 231 | "name": "", 232 | "type": "address" 233 | } 234 | ], 235 | "name": "allowance", 236 | "outputs": [ 237 | { 238 | "internalType": "uint256", 239 | "name": "", 240 | "type": "uint256" 241 | } 242 | ], 243 | "payable": false, 244 | "stateMutability": "view", 245 | "type": "function" 246 | }, 247 | { 248 | "constant": false, 249 | "inputs": [ 250 | { 251 | "internalType": "address", 252 | "name": "spender", 253 | "type": "address" 254 | }, 255 | { 256 | "internalType": "uint256", 257 | "name": "value", 258 | "type": "uint256" 259 | } 260 | ], 261 | "name": "approve", 262 | "outputs": [ 263 | { 264 | "internalType": "bool", 265 | "name": "", 266 | "type": "bool" 267 | } 268 | ], 269 | "payable": false, 270 | "stateMutability": "nonpayable", 271 | "type": "function" 272 | }, 273 | { 274 | "constant": true, 275 | "inputs": [ 276 | { 277 | "internalType": "address", 278 | "name": "", 279 | "type": "address" 280 | } 281 | ], 282 | "name": "balanceOf", 283 | "outputs": [ 284 | { 285 | "internalType": "uint256", 286 | "name": "", 287 | "type": "uint256" 288 | } 289 | ], 290 | "payable": false, 291 | "stateMutability": "view", 292 | "type": "function" 293 | }, 294 | { 295 | "constant": false, 296 | "inputs": [ 297 | { 298 | "internalType": "address", 299 | "name": "to", 300 | "type": "address" 301 | } 302 | ], 303 | "name": "burn", 304 | "outputs": [ 305 | { 306 | "internalType": "uint256", 307 | "name": "amount0", 308 | "type": "uint256" 309 | }, 310 | { 311 | "internalType": "uint256", 312 | "name": "amount1", 313 | "type": "uint256" 314 | } 315 | ], 316 | "payable": false, 317 | "stateMutability": "nonpayable", 318 | "type": "function" 319 | }, 320 | { 321 | "constant": true, 322 | "inputs": [], 323 | "name": "decimals", 324 | "outputs": [ 325 | { 326 | "internalType": "uint8", 327 | "name": "", 328 | "type": "uint8" 329 | } 330 | ], 331 | "payable": false, 332 | "stateMutability": "view", 333 | "type": "function" 334 | }, 335 | { 336 | "constant": true, 337 | "inputs": [], 338 | "name": "factory", 339 | "outputs": [ 340 | { 341 | "internalType": "address", 342 | "name": "", 343 | "type": "address" 344 | } 345 | ], 346 | "payable": false, 347 | "stateMutability": "view", 348 | "type": "function" 349 | }, 350 | { 351 | "constant": true, 352 | "inputs": [], 353 | "name": "getReserves", 354 | "outputs": [ 355 | { 356 | "internalType": "uint112", 357 | "name": "_reserve0", 358 | "type": "uint112" 359 | }, 360 | { 361 | "internalType": "uint112", 362 | "name": "_reserve1", 363 | "type": "uint112" 364 | }, 365 | { 366 | "internalType": "uint32", 367 | "name": "_blockTimestampLast", 368 | "type": "uint32" 369 | } 370 | ], 371 | "payable": false, 372 | "stateMutability": "view", 373 | "type": "function" 374 | }, 375 | { 376 | "constant": false, 377 | "inputs": [ 378 | { 379 | "internalType": "address", 380 | "name": "_token0", 381 | "type": "address" 382 | }, 383 | { 384 | "internalType": "address", 385 | "name": "_token1", 386 | "type": "address" 387 | } 388 | ], 389 | "name": "initialize", 390 | "outputs": [], 391 | "payable": false, 392 | "stateMutability": "nonpayable", 393 | "type": "function" 394 | }, 395 | { 396 | "constant": true, 397 | "inputs": [], 398 | "name": "kLast", 399 | "outputs": [ 400 | { 401 | "internalType": "uint256", 402 | "name": "", 403 | "type": "uint256" 404 | } 405 | ], 406 | "payable": false, 407 | "stateMutability": "view", 408 | "type": "function" 409 | }, 410 | { 411 | "constant": false, 412 | "inputs": [ 413 | { 414 | "internalType": "address", 415 | "name": "to", 416 | "type": "address" 417 | } 418 | ], 419 | "name": "mint", 420 | "outputs": [ 421 | { 422 | "internalType": "uint256", 423 | "name": "liquidity", 424 | "type": "uint256" 425 | } 426 | ], 427 | "payable": false, 428 | "stateMutability": "nonpayable", 429 | "type": "function" 430 | }, 431 | { 432 | "constant": true, 433 | "inputs": [], 434 | "name": "name", 435 | "outputs": [ 436 | { 437 | "internalType": "string", 438 | "name": "", 439 | "type": "string" 440 | } 441 | ], 442 | "payable": false, 443 | "stateMutability": "view", 444 | "type": "function" 445 | }, 446 | { 447 | "constant": true, 448 | "inputs": [ 449 | { 450 | "internalType": "address", 451 | "name": "", 452 | "type": "address" 453 | } 454 | ], 455 | "name": "nonces", 456 | "outputs": [ 457 | { 458 | "internalType": "uint256", 459 | "name": "", 460 | "type": "uint256" 461 | } 462 | ], 463 | "payable": false, 464 | "stateMutability": "view", 465 | "type": "function" 466 | }, 467 | { 468 | "constant": false, 469 | "inputs": [ 470 | { 471 | "internalType": "address", 472 | "name": "owner", 473 | "type": "address" 474 | }, 475 | { 476 | "internalType": "address", 477 | "name": "spender", 478 | "type": "address" 479 | }, 480 | { 481 | "internalType": "uint256", 482 | "name": "value", 483 | "type": "uint256" 484 | }, 485 | { 486 | "internalType": "uint256", 487 | "name": "deadline", 488 | "type": "uint256" 489 | }, 490 | { 491 | "internalType": "uint8", 492 | "name": "v", 493 | "type": "uint8" 494 | }, 495 | { 496 | "internalType": "bytes32", 497 | "name": "r", 498 | "type": "bytes32" 499 | }, 500 | { 501 | "internalType": "bytes32", 502 | "name": "s", 503 | "type": "bytes32" 504 | } 505 | ], 506 | "name": "permit", 507 | "outputs": [], 508 | "payable": false, 509 | "stateMutability": "nonpayable", 510 | "type": "function" 511 | }, 512 | { 513 | "constant": true, 514 | "inputs": [], 515 | "name": "price0CumulativeLast", 516 | "outputs": [ 517 | { 518 | "internalType": "uint256", 519 | "name": "", 520 | "type": "uint256" 521 | } 522 | ], 523 | "payable": false, 524 | "stateMutability": "view", 525 | "type": "function" 526 | }, 527 | { 528 | "constant": true, 529 | "inputs": [], 530 | "name": "price1CumulativeLast", 531 | "outputs": [ 532 | { 533 | "internalType": "uint256", 534 | "name": "", 535 | "type": "uint256" 536 | } 537 | ], 538 | "payable": false, 539 | "stateMutability": "view", 540 | "type": "function" 541 | }, 542 | { 543 | "constant": false, 544 | "inputs": [ 545 | { 546 | "internalType": "address", 547 | "name": "to", 548 | "type": "address" 549 | } 550 | ], 551 | "name": "skim", 552 | "outputs": [], 553 | "payable": false, 554 | "stateMutability": "nonpayable", 555 | "type": "function" 556 | }, 557 | { 558 | "constant": false, 559 | "inputs": [ 560 | { 561 | "internalType": "uint256", 562 | "name": "amount0Out", 563 | "type": "uint256" 564 | }, 565 | { 566 | "internalType": "uint256", 567 | "name": "amount1Out", 568 | "type": "uint256" 569 | }, 570 | { 571 | "internalType": "address", 572 | "name": "to", 573 | "type": "address" 574 | }, 575 | { 576 | "internalType": "bytes", 577 | "name": "data", 578 | "type": "bytes" 579 | } 580 | ], 581 | "name": "swap", 582 | "outputs": [], 583 | "payable": false, 584 | "stateMutability": "nonpayable", 585 | "type": "function" 586 | }, 587 | { 588 | "constant": true, 589 | "inputs": [], 590 | "name": "symbol", 591 | "outputs": [ 592 | { 593 | "internalType": "string", 594 | "name": "", 595 | "type": "string" 596 | } 597 | ], 598 | "payable": false, 599 | "stateMutability": "view", 600 | "type": "function" 601 | }, 602 | { 603 | "constant": false, 604 | "inputs": [], 605 | "name": "sync", 606 | "outputs": [], 607 | "payable": false, 608 | "stateMutability": "nonpayable", 609 | "type": "function" 610 | }, 611 | { 612 | "constant": true, 613 | "inputs": [], 614 | "name": "token0", 615 | "outputs": [ 616 | { 617 | "internalType": "address", 618 | "name": "", 619 | "type": "address" 620 | } 621 | ], 622 | "payable": false, 623 | "stateMutability": "view", 624 | "type": "function" 625 | }, 626 | { 627 | "constant": true, 628 | "inputs": [], 629 | "name": "token1", 630 | "outputs": [ 631 | { 632 | "internalType": "address", 633 | "name": "", 634 | "type": "address" 635 | } 636 | ], 637 | "payable": false, 638 | "stateMutability": "view", 639 | "type": "function" 640 | }, 641 | { 642 | "constant": true, 643 | "inputs": [], 644 | "name": "totalSupply", 645 | "outputs": [ 646 | { 647 | "internalType": "uint256", 648 | "name": "", 649 | "type": "uint256" 650 | } 651 | ], 652 | "payable": false, 653 | "stateMutability": "view", 654 | "type": "function" 655 | }, 656 | { 657 | "constant": false, 658 | "inputs": [ 659 | { 660 | "internalType": "address", 661 | "name": "to", 662 | "type": "address" 663 | }, 664 | { 665 | "internalType": "uint256", 666 | "name": "value", 667 | "type": "uint256" 668 | } 669 | ], 670 | "name": "transfer", 671 | "outputs": [ 672 | { 673 | "internalType": "bool", 674 | "name": "", 675 | "type": "bool" 676 | } 677 | ], 678 | "payable": false, 679 | "stateMutability": "nonpayable", 680 | "type": "function" 681 | }, 682 | { 683 | "constant": false, 684 | "inputs": [ 685 | { 686 | "internalType": "address", 687 | "name": "from", 688 | "type": "address" 689 | }, 690 | { 691 | "internalType": "address", 692 | "name": "to", 693 | "type": "address" 694 | }, 695 | { 696 | "internalType": "uint256", 697 | "name": "value", 698 | "type": "uint256" 699 | } 700 | ], 701 | "name": "transferFrom", 702 | "outputs": [ 703 | { 704 | "internalType": "bool", 705 | "name": "", 706 | "type": "bool" 707 | } 708 | ], 709 | "payable": false, 710 | "stateMutability": "nonpayable", 711 | "type": "function" 712 | } 713 | ] -------------------------------------------------------------------------------- /abi/router_v2.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "inputs": [ 4 | { 5 | "internalType": "address", 6 | "name": "_factory", 7 | "type": "address" 8 | }, 9 | { 10 | "internalType": "address", 11 | "name": "_WETH", 12 | "type": "address" 13 | } 14 | ], 15 | "stateMutability": "nonpayable", 16 | "type": "constructor" 17 | }, 18 | { 19 | "inputs": [], 20 | "name": "WETH", 21 | "outputs": [ 22 | { 23 | "internalType": "address", 24 | "name": "", 25 | "type": "address" 26 | } 27 | ], 28 | "stateMutability": "view", 29 | "type": "function" 30 | }, 31 | { 32 | "inputs": [ 33 | { 34 | "internalType": "address", 35 | "name": "tokenA", 36 | "type": "address" 37 | }, 38 | { 39 | "internalType": "address", 40 | "name": "tokenB", 41 | "type": "address" 42 | }, 43 | { 44 | "internalType": "uint256", 45 | "name": "amountADesired", 46 | "type": "uint256" 47 | }, 48 | { 49 | "internalType": "uint256", 50 | "name": "amountBDesired", 51 | "type": "uint256" 52 | }, 53 | { 54 | "internalType": "uint256", 55 | "name": "amountAMin", 56 | "type": "uint256" 57 | }, 58 | { 59 | "internalType": "uint256", 60 | "name": "amountBMin", 61 | "type": "uint256" 62 | }, 63 | { 64 | "internalType": "address", 65 | "name": "to", 66 | "type": "address" 67 | }, 68 | { 69 | "internalType": "uint256", 70 | "name": "deadline", 71 | "type": "uint256" 72 | } 73 | ], 74 | "name": "addLiquidity", 75 | "outputs": [ 76 | { 77 | "internalType": "uint256", 78 | "name": "amountA", 79 | "type": "uint256" 80 | }, 81 | { 82 | "internalType": "uint256", 83 | "name": "amountB", 84 | "type": "uint256" 85 | }, 86 | { 87 | "internalType": "uint256", 88 | "name": "liquidity", 89 | "type": "uint256" 90 | } 91 | ], 92 | "stateMutability": "nonpayable", 93 | "type": "function" 94 | }, 95 | { 96 | "inputs": [ 97 | { 98 | "internalType": "address", 99 | "name": "token", 100 | "type": "address" 101 | }, 102 | { 103 | "internalType": "uint256", 104 | "name": "amountTokenDesired", 105 | "type": "uint256" 106 | }, 107 | { 108 | "internalType": "uint256", 109 | "name": "amountTokenMin", 110 | "type": "uint256" 111 | }, 112 | { 113 | "internalType": "uint256", 114 | "name": "amountETHMin", 115 | "type": "uint256" 116 | }, 117 | { 118 | "internalType": "address", 119 | "name": "to", 120 | "type": "address" 121 | }, 122 | { 123 | "internalType": "uint256", 124 | "name": "deadline", 125 | "type": "uint256" 126 | } 127 | ], 128 | "name": "addLiquidityETH", 129 | "outputs": [ 130 | { 131 | "internalType": "uint256", 132 | "name": "amountToken", 133 | "type": "uint256" 134 | }, 135 | { 136 | "internalType": "uint256", 137 | "name": "amountETH", 138 | "type": "uint256" 139 | }, 140 | { 141 | "internalType": "uint256", 142 | "name": "liquidity", 143 | "type": "uint256" 144 | } 145 | ], 146 | "stateMutability": "payable", 147 | "type": "function" 148 | }, 149 | { 150 | "inputs": [], 151 | "name": "factory", 152 | "outputs": [ 153 | { 154 | "internalType": "address", 155 | "name": "", 156 | "type": "address" 157 | } 158 | ], 159 | "stateMutability": "view", 160 | "type": "function" 161 | }, 162 | { 163 | "inputs": [ 164 | { 165 | "internalType": "uint256", 166 | "name": "amountOut", 167 | "type": "uint256" 168 | }, 169 | { 170 | "internalType": "uint256", 171 | "name": "reserveIn", 172 | "type": "uint256" 173 | }, 174 | { 175 | "internalType": "uint256", 176 | "name": "reserveOut", 177 | "type": "uint256" 178 | } 179 | ], 180 | "name": "getAmountIn", 181 | "outputs": [ 182 | { 183 | "internalType": "uint256", 184 | "name": "amountIn", 185 | "type": "uint256" 186 | } 187 | ], 188 | "stateMutability": "pure", 189 | "type": "function" 190 | }, 191 | { 192 | "inputs": [ 193 | { 194 | "internalType": "uint256", 195 | "name": "amountIn", 196 | "type": "uint256" 197 | }, 198 | { 199 | "internalType": "uint256", 200 | "name": "reserveIn", 201 | "type": "uint256" 202 | }, 203 | { 204 | "internalType": "uint256", 205 | "name": "reserveOut", 206 | "type": "uint256" 207 | } 208 | ], 209 | "name": "getAmountOut", 210 | "outputs": [ 211 | { 212 | "internalType": "uint256", 213 | "name": "amountOut", 214 | "type": "uint256" 215 | } 216 | ], 217 | "stateMutability": "pure", 218 | "type": "function" 219 | }, 220 | { 221 | "inputs": [ 222 | { 223 | "internalType": "uint256", 224 | "name": "amountOut", 225 | "type": "uint256" 226 | }, 227 | { 228 | "internalType": "address[]", 229 | "name": "path", 230 | "type": "address[]" 231 | } 232 | ], 233 | "name": "getAmountsIn", 234 | "outputs": [ 235 | { 236 | "internalType": "uint256[]", 237 | "name": "amounts", 238 | "type": "uint256[]" 239 | } 240 | ], 241 | "stateMutability": "view", 242 | "type": "function" 243 | }, 244 | { 245 | "inputs": [ 246 | { 247 | "internalType": "uint256", 248 | "name": "amountIn", 249 | "type": "uint256" 250 | }, 251 | { 252 | "internalType": "address[]", 253 | "name": "path", 254 | "type": "address[]" 255 | } 256 | ], 257 | "name": "getAmountsOut", 258 | "outputs": [ 259 | { 260 | "internalType": "uint256[]", 261 | "name": "amounts", 262 | "type": "uint256[]" 263 | } 264 | ], 265 | "stateMutability": "view", 266 | "type": "function" 267 | }, 268 | { 269 | "inputs": [ 270 | { 271 | "internalType": "uint256", 272 | "name": "amountA", 273 | "type": "uint256" 274 | }, 275 | { 276 | "internalType": "uint256", 277 | "name": "reserveA", 278 | "type": "uint256" 279 | }, 280 | { 281 | "internalType": "uint256", 282 | "name": "reserveB", 283 | "type": "uint256" 284 | } 285 | ], 286 | "name": "quote", 287 | "outputs": [ 288 | { 289 | "internalType": "uint256", 290 | "name": "amountB", 291 | "type": "uint256" 292 | } 293 | ], 294 | "stateMutability": "pure", 295 | "type": "function" 296 | }, 297 | { 298 | "inputs": [ 299 | { 300 | "internalType": "address", 301 | "name": "tokenA", 302 | "type": "address" 303 | }, 304 | { 305 | "internalType": "address", 306 | "name": "tokenB", 307 | "type": "address" 308 | }, 309 | { 310 | "internalType": "uint256", 311 | "name": "liquidity", 312 | "type": "uint256" 313 | }, 314 | { 315 | "internalType": "uint256", 316 | "name": "amountAMin", 317 | "type": "uint256" 318 | }, 319 | { 320 | "internalType": "uint256", 321 | "name": "amountBMin", 322 | "type": "uint256" 323 | }, 324 | { 325 | "internalType": "address", 326 | "name": "to", 327 | "type": "address" 328 | }, 329 | { 330 | "internalType": "uint256", 331 | "name": "deadline", 332 | "type": "uint256" 333 | } 334 | ], 335 | "name": "removeLiquidity", 336 | "outputs": [ 337 | { 338 | "internalType": "uint256", 339 | "name": "amountA", 340 | "type": "uint256" 341 | }, 342 | { 343 | "internalType": "uint256", 344 | "name": "amountB", 345 | "type": "uint256" 346 | } 347 | ], 348 | "stateMutability": "nonpayable", 349 | "type": "function" 350 | }, 351 | { 352 | "inputs": [ 353 | { 354 | "internalType": "address", 355 | "name": "token", 356 | "type": "address" 357 | }, 358 | { 359 | "internalType": "uint256", 360 | "name": "liquidity", 361 | "type": "uint256" 362 | }, 363 | { 364 | "internalType": "uint256", 365 | "name": "amountTokenMin", 366 | "type": "uint256" 367 | }, 368 | { 369 | "internalType": "uint256", 370 | "name": "amountETHMin", 371 | "type": "uint256" 372 | }, 373 | { 374 | "internalType": "address", 375 | "name": "to", 376 | "type": "address" 377 | }, 378 | { 379 | "internalType": "uint256", 380 | "name": "deadline", 381 | "type": "uint256" 382 | } 383 | ], 384 | "name": "removeLiquidityETH", 385 | "outputs": [ 386 | { 387 | "internalType": "uint256", 388 | "name": "amountToken", 389 | "type": "uint256" 390 | }, 391 | { 392 | "internalType": "uint256", 393 | "name": "amountETH", 394 | "type": "uint256" 395 | } 396 | ], 397 | "stateMutability": "nonpayable", 398 | "type": "function" 399 | }, 400 | { 401 | "inputs": [ 402 | { 403 | "internalType": "address", 404 | "name": "token", 405 | "type": "address" 406 | }, 407 | { 408 | "internalType": "uint256", 409 | "name": "liquidity", 410 | "type": "uint256" 411 | }, 412 | { 413 | "internalType": "uint256", 414 | "name": "amountTokenMin", 415 | "type": "uint256" 416 | }, 417 | { 418 | "internalType": "uint256", 419 | "name": "amountETHMin", 420 | "type": "uint256" 421 | }, 422 | { 423 | "internalType": "address", 424 | "name": "to", 425 | "type": "address" 426 | }, 427 | { 428 | "internalType": "uint256", 429 | "name": "deadline", 430 | "type": "uint256" 431 | } 432 | ], 433 | "name": "removeLiquidityETHSupportingFeeOnTransferTokens", 434 | "outputs": [ 435 | { 436 | "internalType": "uint256", 437 | "name": "amountETH", 438 | "type": "uint256" 439 | } 440 | ], 441 | "stateMutability": "nonpayable", 442 | "type": "function" 443 | }, 444 | { 445 | "inputs": [ 446 | { 447 | "internalType": "address", 448 | "name": "token", 449 | "type": "address" 450 | }, 451 | { 452 | "internalType": "uint256", 453 | "name": "liquidity", 454 | "type": "uint256" 455 | }, 456 | { 457 | "internalType": "uint256", 458 | "name": "amountTokenMin", 459 | "type": "uint256" 460 | }, 461 | { 462 | "internalType": "uint256", 463 | "name": "amountETHMin", 464 | "type": "uint256" 465 | }, 466 | { 467 | "internalType": "address", 468 | "name": "to", 469 | "type": "address" 470 | }, 471 | { 472 | "internalType": "uint256", 473 | "name": "deadline", 474 | "type": "uint256" 475 | }, 476 | { 477 | "internalType": "bool", 478 | "name": "approveMax", 479 | "type": "bool" 480 | }, 481 | { 482 | "internalType": "uint8", 483 | "name": "v", 484 | "type": "uint8" 485 | }, 486 | { 487 | "internalType": "bytes32", 488 | "name": "r", 489 | "type": "bytes32" 490 | }, 491 | { 492 | "internalType": "bytes32", 493 | "name": "s", 494 | "type": "bytes32" 495 | } 496 | ], 497 | "name": "removeLiquidityETHWithPermit", 498 | "outputs": [ 499 | { 500 | "internalType": "uint256", 501 | "name": "amountToken", 502 | "type": "uint256" 503 | }, 504 | { 505 | "internalType": "uint256", 506 | "name": "amountETH", 507 | "type": "uint256" 508 | } 509 | ], 510 | "stateMutability": "nonpayable", 511 | "type": "function" 512 | }, 513 | { 514 | "inputs": [ 515 | { 516 | "internalType": "address", 517 | "name": "token", 518 | "type": "address" 519 | }, 520 | { 521 | "internalType": "uint256", 522 | "name": "liquidity", 523 | "type": "uint256" 524 | }, 525 | { 526 | "internalType": "uint256", 527 | "name": "amountTokenMin", 528 | "type": "uint256" 529 | }, 530 | { 531 | "internalType": "uint256", 532 | "name": "amountETHMin", 533 | "type": "uint256" 534 | }, 535 | { 536 | "internalType": "address", 537 | "name": "to", 538 | "type": "address" 539 | }, 540 | { 541 | "internalType": "uint256", 542 | "name": "deadline", 543 | "type": "uint256" 544 | }, 545 | { 546 | "internalType": "bool", 547 | "name": "approveMax", 548 | "type": "bool" 549 | }, 550 | { 551 | "internalType": "uint8", 552 | "name": "v", 553 | "type": "uint8" 554 | }, 555 | { 556 | "internalType": "bytes32", 557 | "name": "r", 558 | "type": "bytes32" 559 | }, 560 | { 561 | "internalType": "bytes32", 562 | "name": "s", 563 | "type": "bytes32" 564 | } 565 | ], 566 | "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens", 567 | "outputs": [ 568 | { 569 | "internalType": "uint256", 570 | "name": "amountETH", 571 | "type": "uint256" 572 | } 573 | ], 574 | "stateMutability": "nonpayable", 575 | "type": "function" 576 | }, 577 | { 578 | "inputs": [ 579 | { 580 | "internalType": "address", 581 | "name": "tokenA", 582 | "type": "address" 583 | }, 584 | { 585 | "internalType": "address", 586 | "name": "tokenB", 587 | "type": "address" 588 | }, 589 | { 590 | "internalType": "uint256", 591 | "name": "liquidity", 592 | "type": "uint256" 593 | }, 594 | { 595 | "internalType": "uint256", 596 | "name": "amountAMin", 597 | "type": "uint256" 598 | }, 599 | { 600 | "internalType": "uint256", 601 | "name": "amountBMin", 602 | "type": "uint256" 603 | }, 604 | { 605 | "internalType": "address", 606 | "name": "to", 607 | "type": "address" 608 | }, 609 | { 610 | "internalType": "uint256", 611 | "name": "deadline", 612 | "type": "uint256" 613 | }, 614 | { 615 | "internalType": "bool", 616 | "name": "approveMax", 617 | "type": "bool" 618 | }, 619 | { 620 | "internalType": "uint8", 621 | "name": "v", 622 | "type": "uint8" 623 | }, 624 | { 625 | "internalType": "bytes32", 626 | "name": "r", 627 | "type": "bytes32" 628 | }, 629 | { 630 | "internalType": "bytes32", 631 | "name": "s", 632 | "type": "bytes32" 633 | } 634 | ], 635 | "name": "removeLiquidityWithPermit", 636 | "outputs": [ 637 | { 638 | "internalType": "uint256", 639 | "name": "amountA", 640 | "type": "uint256" 641 | }, 642 | { 643 | "internalType": "uint256", 644 | "name": "amountB", 645 | "type": "uint256" 646 | } 647 | ], 648 | "stateMutability": "nonpayable", 649 | "type": "function" 650 | }, 651 | { 652 | "inputs": [ 653 | { 654 | "internalType": "uint256", 655 | "name": "amountOut", 656 | "type": "uint256" 657 | }, 658 | { 659 | "internalType": "address[]", 660 | "name": "path", 661 | "type": "address[]" 662 | }, 663 | { 664 | "internalType": "address", 665 | "name": "to", 666 | "type": "address" 667 | }, 668 | { 669 | "internalType": "uint256", 670 | "name": "deadline", 671 | "type": "uint256" 672 | } 673 | ], 674 | "name": "swapETHForExactTokens", 675 | "outputs": [ 676 | { 677 | "internalType": "uint256[]", 678 | "name": "amounts", 679 | "type": "uint256[]" 680 | } 681 | ], 682 | "stateMutability": "payable", 683 | "type": "function" 684 | }, 685 | { 686 | "inputs": [ 687 | { 688 | "internalType": "uint256", 689 | "name": "amountOutMin", 690 | "type": "uint256" 691 | }, 692 | { 693 | "internalType": "address[]", 694 | "name": "path", 695 | "type": "address[]" 696 | }, 697 | { 698 | "internalType": "address", 699 | "name": "to", 700 | "type": "address" 701 | }, 702 | { 703 | "internalType": "uint256", 704 | "name": "deadline", 705 | "type": "uint256" 706 | } 707 | ], 708 | "name": "swapExactETHForTokens", 709 | "outputs": [ 710 | { 711 | "internalType": "uint256[]", 712 | "name": "amounts", 713 | "type": "uint256[]" 714 | } 715 | ], 716 | "stateMutability": "payable", 717 | "type": "function" 718 | }, 719 | { 720 | "inputs": [ 721 | { 722 | "internalType": "uint256", 723 | "name": "amountOutMin", 724 | "type": "uint256" 725 | }, 726 | { 727 | "internalType": "address[]", 728 | "name": "path", 729 | "type": "address[]" 730 | }, 731 | { 732 | "internalType": "address", 733 | "name": "to", 734 | "type": "address" 735 | }, 736 | { 737 | "internalType": "uint256", 738 | "name": "deadline", 739 | "type": "uint256" 740 | } 741 | ], 742 | "name": "swapExactETHForTokensSupportingFeeOnTransferTokens", 743 | "outputs": [], 744 | "stateMutability": "payable", 745 | "type": "function" 746 | }, 747 | { 748 | "inputs": [ 749 | { 750 | "internalType": "uint256", 751 | "name": "amountIn", 752 | "type": "uint256" 753 | }, 754 | { 755 | "internalType": "uint256", 756 | "name": "amountOutMin", 757 | "type": "uint256" 758 | }, 759 | { 760 | "internalType": "address[]", 761 | "name": "path", 762 | "type": "address[]" 763 | }, 764 | { 765 | "internalType": "address", 766 | "name": "to", 767 | "type": "address" 768 | }, 769 | { 770 | "internalType": "uint256", 771 | "name": "deadline", 772 | "type": "uint256" 773 | } 774 | ], 775 | "name": "swapExactTokensForETH", 776 | "outputs": [ 777 | { 778 | "internalType": "uint256[]", 779 | "name": "amounts", 780 | "type": "uint256[]" 781 | } 782 | ], 783 | "stateMutability": "nonpayable", 784 | "type": "function" 785 | }, 786 | { 787 | "inputs": [ 788 | { 789 | "internalType": "uint256", 790 | "name": "amountIn", 791 | "type": "uint256" 792 | }, 793 | { 794 | "internalType": "uint256", 795 | "name": "amountOutMin", 796 | "type": "uint256" 797 | }, 798 | { 799 | "internalType": "address[]", 800 | "name": "path", 801 | "type": "address[]" 802 | }, 803 | { 804 | "internalType": "address", 805 | "name": "to", 806 | "type": "address" 807 | }, 808 | { 809 | "internalType": "uint256", 810 | "name": "deadline", 811 | "type": "uint256" 812 | } 813 | ], 814 | "name": "swapExactTokensForETHSupportingFeeOnTransferTokens", 815 | "outputs": [], 816 | "stateMutability": "nonpayable", 817 | "type": "function" 818 | }, 819 | { 820 | "inputs": [ 821 | { 822 | "internalType": "uint256", 823 | "name": "amountIn", 824 | "type": "uint256" 825 | }, 826 | { 827 | "internalType": "uint256", 828 | "name": "amountOutMin", 829 | "type": "uint256" 830 | }, 831 | { 832 | "internalType": "address[]", 833 | "name": "path", 834 | "type": "address[]" 835 | }, 836 | { 837 | "internalType": "address", 838 | "name": "to", 839 | "type": "address" 840 | }, 841 | { 842 | "internalType": "uint256", 843 | "name": "deadline", 844 | "type": "uint256" 845 | } 846 | ], 847 | "name": "swapExactTokensForTokens", 848 | "outputs": [ 849 | { 850 | "internalType": "uint256[]", 851 | "name": "amounts", 852 | "type": "uint256[]" 853 | } 854 | ], 855 | "stateMutability": "nonpayable", 856 | "type": "function" 857 | }, 858 | { 859 | "inputs": [ 860 | { 861 | "internalType": "uint256", 862 | "name": "amountIn", 863 | "type": "uint256" 864 | }, 865 | { 866 | "internalType": "uint256", 867 | "name": "amountOutMin", 868 | "type": "uint256" 869 | }, 870 | { 871 | "internalType": "address[]", 872 | "name": "path", 873 | "type": "address[]" 874 | }, 875 | { 876 | "internalType": "address", 877 | "name": "to", 878 | "type": "address" 879 | }, 880 | { 881 | "internalType": "uint256", 882 | "name": "deadline", 883 | "type": "uint256" 884 | } 885 | ], 886 | "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens", 887 | "outputs": [], 888 | "stateMutability": "nonpayable", 889 | "type": "function" 890 | }, 891 | { 892 | "inputs": [ 893 | { 894 | "internalType": "uint256", 895 | "name": "amountOut", 896 | "type": "uint256" 897 | }, 898 | { 899 | "internalType": "uint256", 900 | "name": "amountInMax", 901 | "type": "uint256" 902 | }, 903 | { 904 | "internalType": "address[]", 905 | "name": "path", 906 | "type": "address[]" 907 | }, 908 | { 909 | "internalType": "address", 910 | "name": "to", 911 | "type": "address" 912 | }, 913 | { 914 | "internalType": "uint256", 915 | "name": "deadline", 916 | "type": "uint256" 917 | } 918 | ], 919 | "name": "swapTokensForExactETH", 920 | "outputs": [ 921 | { 922 | "internalType": "uint256[]", 923 | "name": "amounts", 924 | "type": "uint256[]" 925 | } 926 | ], 927 | "stateMutability": "nonpayable", 928 | "type": "function" 929 | }, 930 | { 931 | "inputs": [ 932 | { 933 | "internalType": "uint256", 934 | "name": "amountOut", 935 | "type": "uint256" 936 | }, 937 | { 938 | "internalType": "uint256", 939 | "name": "amountInMax", 940 | "type": "uint256" 941 | }, 942 | { 943 | "internalType": "address[]", 944 | "name": "path", 945 | "type": "address[]" 946 | }, 947 | { 948 | "internalType": "address", 949 | "name": "to", 950 | "type": "address" 951 | }, 952 | { 953 | "internalType": "uint256", 954 | "name": "deadline", 955 | "type": "uint256" 956 | } 957 | ], 958 | "name": "swapTokensForExactTokens", 959 | "outputs": [ 960 | { 961 | "internalType": "uint256[]", 962 | "name": "amounts", 963 | "type": "uint256[]" 964 | } 965 | ], 966 | "stateMutability": "nonpayable", 967 | "type": "function" 968 | }, 969 | { 970 | "stateMutability": "payable", 971 | "type": "receive" 972 | } 973 | ] -------------------------------------------------------------------------------- /abi/router_v3.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "inputs": [ 4 | { 5 | "internalType": "address", 6 | "name": "_factory", 7 | "type": "address" 8 | }, 9 | { 10 | "internalType": "address", 11 | "name": "_WETH9", 12 | "type": "address" 13 | } 14 | ], 15 | "stateMutability": "nonpayable", 16 | "type": "constructor" 17 | }, 18 | { 19 | "inputs": [], 20 | "name": "WETH9", 21 | "outputs": [ 22 | { 23 | "internalType": "address", 24 | "name": "", 25 | "type": "address" 26 | } 27 | ], 28 | "stateMutability": "view", 29 | "type": "function" 30 | }, 31 | { 32 | "inputs": [ 33 | { 34 | "components": [ 35 | { 36 | "internalType": "bytes", 37 | "name": "path", 38 | "type": "bytes" 39 | }, 40 | { 41 | "internalType": "address", 42 | "name": "recipient", 43 | "type": "address" 44 | }, 45 | { 46 | "internalType": "uint256", 47 | "name": "deadline", 48 | "type": "uint256" 49 | }, 50 | { 51 | "internalType": "uint256", 52 | "name": "amountIn", 53 | "type": "uint256" 54 | }, 55 | { 56 | "internalType": "uint256", 57 | "name": "amountOutMinimum", 58 | "type": "uint256" 59 | } 60 | ], 61 | "internalType": "struct ISwapRouter.ExactInputParams", 62 | "name": "params", 63 | "type": "tuple" 64 | } 65 | ], 66 | "name": "exactInput", 67 | "outputs": [ 68 | { 69 | "internalType": "uint256", 70 | "name": "amountOut", 71 | "type": "uint256" 72 | } 73 | ], 74 | "stateMutability": "payable", 75 | "type": "function" 76 | }, 77 | { 78 | "inputs": [ 79 | { 80 | "components": [ 81 | { 82 | "internalType": "address", 83 | "name": "tokenIn", 84 | "type": "address" 85 | }, 86 | { 87 | "internalType": "address", 88 | "name": "tokenOut", 89 | "type": "address" 90 | }, 91 | { 92 | "internalType": "uint24", 93 | "name": "fee", 94 | "type": "uint24" 95 | }, 96 | { 97 | "internalType": "address", 98 | "name": "recipient", 99 | "type": "address" 100 | }, 101 | { 102 | "internalType": "uint256", 103 | "name": "deadline", 104 | "type": "uint256" 105 | }, 106 | { 107 | "internalType": "uint256", 108 | "name": "amountIn", 109 | "type": "uint256" 110 | }, 111 | { 112 | "internalType": "uint256", 113 | "name": "amountOutMinimum", 114 | "type": "uint256" 115 | }, 116 | { 117 | "internalType": "uint160", 118 | "name": "sqrtPriceLimitX96", 119 | "type": "uint160" 120 | } 121 | ], 122 | "internalType": "struct ISwapRouter.ExactInputSingleParams", 123 | "name": "params", 124 | "type": "tuple" 125 | } 126 | ], 127 | "name": "exactInputSingle", 128 | "outputs": [ 129 | { 130 | "internalType": "uint256", 131 | "name": "amountOut", 132 | "type": "uint256" 133 | } 134 | ], 135 | "stateMutability": "payable", 136 | "type": "function" 137 | }, 138 | { 139 | "inputs": [ 140 | { 141 | "components": [ 142 | { 143 | "internalType": "bytes", 144 | "name": "path", 145 | "type": "bytes" 146 | }, 147 | { 148 | "internalType": "address", 149 | "name": "recipient", 150 | "type": "address" 151 | }, 152 | { 153 | "internalType": "uint256", 154 | "name": "deadline", 155 | "type": "uint256" 156 | }, 157 | { 158 | "internalType": "uint256", 159 | "name": "amountOut", 160 | "type": "uint256" 161 | }, 162 | { 163 | "internalType": "uint256", 164 | "name": "amountInMaximum", 165 | "type": "uint256" 166 | } 167 | ], 168 | "internalType": "struct ISwapRouter.ExactOutputParams", 169 | "name": "params", 170 | "type": "tuple" 171 | } 172 | ], 173 | "name": "exactOutput", 174 | "outputs": [ 175 | { 176 | "internalType": "uint256", 177 | "name": "amountIn", 178 | "type": "uint256" 179 | } 180 | ], 181 | "stateMutability": "payable", 182 | "type": "function" 183 | }, 184 | { 185 | "inputs": [ 186 | { 187 | "components": [ 188 | { 189 | "internalType": "address", 190 | "name": "tokenIn", 191 | "type": "address" 192 | }, 193 | { 194 | "internalType": "address", 195 | "name": "tokenOut", 196 | "type": "address" 197 | }, 198 | { 199 | "internalType": "uint24", 200 | "name": "fee", 201 | "type": "uint24" 202 | }, 203 | { 204 | "internalType": "address", 205 | "name": "recipient", 206 | "type": "address" 207 | }, 208 | { 209 | "internalType": "uint256", 210 | "name": "deadline", 211 | "type": "uint256" 212 | }, 213 | { 214 | "internalType": "uint256", 215 | "name": "amountOut", 216 | "type": "uint256" 217 | }, 218 | { 219 | "internalType": "uint256", 220 | "name": "amountInMaximum", 221 | "type": "uint256" 222 | }, 223 | { 224 | "internalType": "uint160", 225 | "name": "sqrtPriceLimitX96", 226 | "type": "uint160" 227 | } 228 | ], 229 | "internalType": "struct ISwapRouter.ExactOutputSingleParams", 230 | "name": "params", 231 | "type": "tuple" 232 | } 233 | ], 234 | "name": "exactOutputSingle", 235 | "outputs": [ 236 | { 237 | "internalType": "uint256", 238 | "name": "amountIn", 239 | "type": "uint256" 240 | } 241 | ], 242 | "stateMutability": "payable", 243 | "type": "function" 244 | }, 245 | { 246 | "inputs": [], 247 | "name": "factory", 248 | "outputs": [ 249 | { 250 | "internalType": "address", 251 | "name": "", 252 | "type": "address" 253 | } 254 | ], 255 | "stateMutability": "view", 256 | "type": "function" 257 | }, 258 | { 259 | "inputs": [ 260 | { 261 | "internalType": "bytes[]", 262 | "name": "data", 263 | "type": "bytes[]" 264 | } 265 | ], 266 | "name": "multicall", 267 | "outputs": [ 268 | { 269 | "internalType": "bytes[]", 270 | "name": "results", 271 | "type": "bytes[]" 272 | } 273 | ], 274 | "stateMutability": "payable", 275 | "type": "function" 276 | }, 277 | { 278 | "inputs": [], 279 | "name": "refundETH", 280 | "outputs": [], 281 | "stateMutability": "payable", 282 | "type": "function" 283 | }, 284 | { 285 | "inputs": [ 286 | { 287 | "internalType": "address", 288 | "name": "token", 289 | "type": "address" 290 | }, 291 | { 292 | "internalType": "uint256", 293 | "name": "value", 294 | "type": "uint256" 295 | }, 296 | { 297 | "internalType": "uint256", 298 | "name": "deadline", 299 | "type": "uint256" 300 | }, 301 | { 302 | "internalType": "uint8", 303 | "name": "v", 304 | "type": "uint8" 305 | }, 306 | { 307 | "internalType": "bytes32", 308 | "name": "r", 309 | "type": "bytes32" 310 | }, 311 | { 312 | "internalType": "bytes32", 313 | "name": "s", 314 | "type": "bytes32" 315 | } 316 | ], 317 | "name": "selfPermit", 318 | "outputs": [], 319 | "stateMutability": "payable", 320 | "type": "function" 321 | }, 322 | { 323 | "inputs": [ 324 | { 325 | "internalType": "address", 326 | "name": "token", 327 | "type": "address" 328 | }, 329 | { 330 | "internalType": "uint256", 331 | "name": "nonce", 332 | "type": "uint256" 333 | }, 334 | { 335 | "internalType": "uint256", 336 | "name": "expiry", 337 | "type": "uint256" 338 | }, 339 | { 340 | "internalType": "uint8", 341 | "name": "v", 342 | "type": "uint8" 343 | }, 344 | { 345 | "internalType": "bytes32", 346 | "name": "r", 347 | "type": "bytes32" 348 | }, 349 | { 350 | "internalType": "bytes32", 351 | "name": "s", 352 | "type": "bytes32" 353 | } 354 | ], 355 | "name": "selfPermitAllowed", 356 | "outputs": [], 357 | "stateMutability": "payable", 358 | "type": "function" 359 | }, 360 | { 361 | "inputs": [ 362 | { 363 | "internalType": "address", 364 | "name": "token", 365 | "type": "address" 366 | }, 367 | { 368 | "internalType": "uint256", 369 | "name": "nonce", 370 | "type": "uint256" 371 | }, 372 | { 373 | "internalType": "uint256", 374 | "name": "expiry", 375 | "type": "uint256" 376 | }, 377 | { 378 | "internalType": "uint8", 379 | "name": "v", 380 | "type": "uint8" 381 | }, 382 | { 383 | "internalType": "bytes32", 384 | "name": "r", 385 | "type": "bytes32" 386 | }, 387 | { 388 | "internalType": "bytes32", 389 | "name": "s", 390 | "type": "bytes32" 391 | } 392 | ], 393 | "name": "selfPermitAllowedIfNecessary", 394 | "outputs": [], 395 | "stateMutability": "payable", 396 | "type": "function" 397 | }, 398 | { 399 | "inputs": [ 400 | { 401 | "internalType": "address", 402 | "name": "token", 403 | "type": "address" 404 | }, 405 | { 406 | "internalType": "uint256", 407 | "name": "value", 408 | "type": "uint256" 409 | }, 410 | { 411 | "internalType": "uint256", 412 | "name": "deadline", 413 | "type": "uint256" 414 | }, 415 | { 416 | "internalType": "uint8", 417 | "name": "v", 418 | "type": "uint8" 419 | }, 420 | { 421 | "internalType": "bytes32", 422 | "name": "r", 423 | "type": "bytes32" 424 | }, 425 | { 426 | "internalType": "bytes32", 427 | "name": "s", 428 | "type": "bytes32" 429 | } 430 | ], 431 | "name": "selfPermitIfNecessary", 432 | "outputs": [], 433 | "stateMutability": "payable", 434 | "type": "function" 435 | }, 436 | { 437 | "inputs": [ 438 | { 439 | "internalType": "address", 440 | "name": "token", 441 | "type": "address" 442 | }, 443 | { 444 | "internalType": "uint256", 445 | "name": "amountMinimum", 446 | "type": "uint256" 447 | }, 448 | { 449 | "internalType": "address", 450 | "name": "recipient", 451 | "type": "address" 452 | } 453 | ], 454 | "name": "sweepToken", 455 | "outputs": [], 456 | "stateMutability": "payable", 457 | "type": "function" 458 | }, 459 | { 460 | "inputs": [ 461 | { 462 | "internalType": "address", 463 | "name": "token", 464 | "type": "address" 465 | }, 466 | { 467 | "internalType": "uint256", 468 | "name": "amountMinimum", 469 | "type": "uint256" 470 | }, 471 | { 472 | "internalType": "address", 473 | "name": "recipient", 474 | "type": "address" 475 | }, 476 | { 477 | "internalType": "uint256", 478 | "name": "feeBips", 479 | "type": "uint256" 480 | }, 481 | { 482 | "internalType": "address", 483 | "name": "feeRecipient", 484 | "type": "address" 485 | } 486 | ], 487 | "name": "sweepTokenWithFee", 488 | "outputs": [], 489 | "stateMutability": "payable", 490 | "type": "function" 491 | }, 492 | { 493 | "inputs": [ 494 | { 495 | "internalType": "int256", 496 | "name": "amount0Delta", 497 | "type": "int256" 498 | }, 499 | { 500 | "internalType": "int256", 501 | "name": "amount1Delta", 502 | "type": "int256" 503 | }, 504 | { 505 | "internalType": "bytes", 506 | "name": "_data", 507 | "type": "bytes" 508 | } 509 | ], 510 | "name": "uniswapV3SwapCallback", 511 | "outputs": [], 512 | "stateMutability": "nonpayable", 513 | "type": "function" 514 | }, 515 | { 516 | "inputs": [ 517 | { 518 | "internalType": "uint256", 519 | "name": "amountMinimum", 520 | "type": "uint256" 521 | }, 522 | { 523 | "internalType": "address", 524 | "name": "recipient", 525 | "type": "address" 526 | } 527 | ], 528 | "name": "unwrapWETH9", 529 | "outputs": [], 530 | "stateMutability": "payable", 531 | "type": "function" 532 | }, 533 | { 534 | "inputs": [ 535 | { 536 | "internalType": "uint256", 537 | "name": "amountMinimum", 538 | "type": "uint256" 539 | }, 540 | { 541 | "internalType": "address", 542 | "name": "recipient", 543 | "type": "address" 544 | }, 545 | { 546 | "internalType": "uint256", 547 | "name": "feeBips", 548 | "type": "uint256" 549 | }, 550 | { 551 | "internalType": "address", 552 | "name": "feeRecipient", 553 | "type": "address" 554 | } 555 | ], 556 | "name": "unwrapWETH9WithFee", 557 | "outputs": [], 558 | "stateMutability": "payable", 559 | "type": "function" 560 | }, 561 | { 562 | "stateMutability": "payable", 563 | "type": "receive" 564 | } 565 | ] -------------------------------------------------------------------------------- /abi/uniswap_factory_v2.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "inputs": [ 4 | { 5 | "internalType": "address", 6 | "name": "_feeToSetter", 7 | "type": "address" 8 | } 9 | ], 10 | "payable": false, 11 | "stateMutability": "nonpayable", 12 | "type": "constructor" 13 | }, 14 | { 15 | "anonymous": false, 16 | "inputs": [ 17 | { 18 | "indexed": true, 19 | "internalType": "address", 20 | "name": "token0", 21 | "type": "address" 22 | }, 23 | { 24 | "indexed": true, 25 | "internalType": "address", 26 | "name": "token1", 27 | "type": "address" 28 | }, 29 | { 30 | "indexed": false, 31 | "internalType": "address", 32 | "name": "pair", 33 | "type": "address" 34 | }, 35 | { 36 | "indexed": false, 37 | "internalType": "uint256", 38 | "name": "", 39 | "type": "uint256" 40 | } 41 | ], 42 | "name": "PairCreated", 43 | "type": "event" 44 | }, 45 | { 46 | "constant": true, 47 | "inputs": [ 48 | { 49 | "internalType": "uint256", 50 | "name": "", 51 | "type": "uint256" 52 | } 53 | ], 54 | "name": "allPairs", 55 | "outputs": [ 56 | { 57 | "internalType": "address", 58 | "name": "", 59 | "type": "address" 60 | } 61 | ], 62 | "payable": false, 63 | "stateMutability": "view", 64 | "type": "function" 65 | }, 66 | { 67 | "constant": true, 68 | "inputs": [], 69 | "name": "allPairsLength", 70 | "outputs": [ 71 | { 72 | "internalType": "uint256", 73 | "name": "", 74 | "type": "uint256" 75 | } 76 | ], 77 | "payable": false, 78 | "stateMutability": "view", 79 | "type": "function" 80 | }, 81 | { 82 | "constant": false, 83 | "inputs": [ 84 | { 85 | "internalType": "address", 86 | "name": "tokenA", 87 | "type": "address" 88 | }, 89 | { 90 | "internalType": "address", 91 | "name": "tokenB", 92 | "type": "address" 93 | } 94 | ], 95 | "name": "createPair", 96 | "outputs": [ 97 | { 98 | "internalType": "address", 99 | "name": "pair", 100 | "type": "address" 101 | } 102 | ], 103 | "payable": false, 104 | "stateMutability": "nonpayable", 105 | "type": "function" 106 | }, 107 | { 108 | "constant": true, 109 | "inputs": [], 110 | "name": "feeTo", 111 | "outputs": [ 112 | { 113 | "internalType": "address", 114 | "name": "", 115 | "type": "address" 116 | } 117 | ], 118 | "payable": false, 119 | "stateMutability": "view", 120 | "type": "function" 121 | }, 122 | { 123 | "constant": true, 124 | "inputs": [], 125 | "name": "feeToSetter", 126 | "outputs": [ 127 | { 128 | "internalType": "address", 129 | "name": "", 130 | "type": "address" 131 | } 132 | ], 133 | "payable": false, 134 | "stateMutability": "view", 135 | "type": "function" 136 | }, 137 | { 138 | "constant": true, 139 | "inputs": [ 140 | { 141 | "internalType": "address", 142 | "name": "", 143 | "type": "address" 144 | }, 145 | { 146 | "internalType": "address", 147 | "name": "", 148 | "type": "address" 149 | } 150 | ], 151 | "name": "getPair", 152 | "outputs": [ 153 | { 154 | "internalType": "address", 155 | "name": "", 156 | "type": "address" 157 | } 158 | ], 159 | "payable": false, 160 | "stateMutability": "view", 161 | "type": "function" 162 | }, 163 | { 164 | "constant": false, 165 | "inputs": [ 166 | { 167 | "internalType": "address", 168 | "name": "_feeTo", 169 | "type": "address" 170 | } 171 | ], 172 | "name": "setFeeTo", 173 | "outputs": [], 174 | "payable": false, 175 | "stateMutability": "nonpayable", 176 | "type": "function" 177 | }, 178 | { 179 | "constant": false, 180 | "inputs": [ 181 | { 182 | "internalType": "address", 183 | "name": "_feeToSetter", 184 | "type": "address" 185 | } 186 | ], 187 | "name": "setFeeToSetter", 188 | "outputs": [], 189 | "payable": false, 190 | "stateMutability": "nonpayable", 191 | "type": "function" 192 | } 193 | ] -------------------------------------------------------------------------------- /abi/uniswap_factory_v3.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "inputs": [], 4 | "stateMutability": "nonpayable", 5 | "type": "constructor" 6 | }, 7 | { 8 | "anonymous": false, 9 | "inputs": [ 10 | { 11 | "indexed": true, 12 | "internalType": "uint24", 13 | "name": "fee", 14 | "type": "uint24" 15 | }, 16 | { 17 | "indexed": true, 18 | "internalType": "int24", 19 | "name": "tickSpacing", 20 | "type": "int24" 21 | } 22 | ], 23 | "name": "FeeAmountEnabled", 24 | "type": "event" 25 | }, 26 | { 27 | "anonymous": false, 28 | "inputs": [ 29 | { 30 | "indexed": true, 31 | "internalType": "address", 32 | "name": "oldOwner", 33 | "type": "address" 34 | }, 35 | { 36 | "indexed": true, 37 | "internalType": "address", 38 | "name": "newOwner", 39 | "type": "address" 40 | } 41 | ], 42 | "name": "OwnerChanged", 43 | "type": "event" 44 | }, 45 | { 46 | "anonymous": false, 47 | "inputs": [ 48 | { 49 | "indexed": true, 50 | "internalType": "address", 51 | "name": "token0", 52 | "type": "address" 53 | }, 54 | { 55 | "indexed": true, 56 | "internalType": "address", 57 | "name": "token1", 58 | "type": "address" 59 | }, 60 | { 61 | "indexed": true, 62 | "internalType": "uint24", 63 | "name": "fee", 64 | "type": "uint24" 65 | }, 66 | { 67 | "indexed": false, 68 | "internalType": "int24", 69 | "name": "tickSpacing", 70 | "type": "int24" 71 | }, 72 | { 73 | "indexed": false, 74 | "internalType": "address", 75 | "name": "pool", 76 | "type": "address" 77 | } 78 | ], 79 | "name": "PoolCreated", 80 | "type": "event" 81 | }, 82 | { 83 | "inputs": [ 84 | { 85 | "internalType": "address", 86 | "name": "tokenA", 87 | "type": "address" 88 | }, 89 | { 90 | "internalType": "address", 91 | "name": "tokenB", 92 | "type": "address" 93 | }, 94 | { 95 | "internalType": "uint24", 96 | "name": "fee", 97 | "type": "uint24" 98 | } 99 | ], 100 | "name": "createPool", 101 | "outputs": [ 102 | { 103 | "internalType": "address", 104 | "name": "pool", 105 | "type": "address" 106 | } 107 | ], 108 | "stateMutability": "nonpayable", 109 | "type": "function" 110 | }, 111 | { 112 | "inputs": [ 113 | { 114 | "internalType": "uint24", 115 | "name": "fee", 116 | "type": "uint24" 117 | }, 118 | { 119 | "internalType": "int24", 120 | "name": "tickSpacing", 121 | "type": "int24" 122 | } 123 | ], 124 | "name": "enableFeeAmount", 125 | "outputs": [], 126 | "stateMutability": "nonpayable", 127 | "type": "function" 128 | }, 129 | { 130 | "inputs": [ 131 | { 132 | "internalType": "uint24", 133 | "name": "", 134 | "type": "uint24" 135 | } 136 | ], 137 | "name": "feeAmountTickSpacing", 138 | "outputs": [ 139 | { 140 | "internalType": "int24", 141 | "name": "", 142 | "type": "int24" 143 | } 144 | ], 145 | "stateMutability": "view", 146 | "type": "function" 147 | }, 148 | { 149 | "inputs": [ 150 | { 151 | "internalType": "address", 152 | "name": "", 153 | "type": "address" 154 | }, 155 | { 156 | "internalType": "address", 157 | "name": "", 158 | "type": "address" 159 | }, 160 | { 161 | "internalType": "uint24", 162 | "name": "", 163 | "type": "uint24" 164 | } 165 | ], 166 | "name": "getPool", 167 | "outputs": [ 168 | { 169 | "internalType": "address", 170 | "name": "", 171 | "type": "address" 172 | } 173 | ], 174 | "stateMutability": "view", 175 | "type": "function" 176 | }, 177 | { 178 | "inputs": [], 179 | "name": "owner", 180 | "outputs": [ 181 | { 182 | "internalType": "address", 183 | "name": "", 184 | "type": "address" 185 | } 186 | ], 187 | "stateMutability": "view", 188 | "type": "function" 189 | }, 190 | { 191 | "inputs": [], 192 | "name": "parameters", 193 | "outputs": [ 194 | { 195 | "internalType": "address", 196 | "name": "factory", 197 | "type": "address" 198 | }, 199 | { 200 | "internalType": "address", 201 | "name": "token0", 202 | "type": "address" 203 | }, 204 | { 205 | "internalType": "address", 206 | "name": "token1", 207 | "type": "address" 208 | }, 209 | { 210 | "internalType": "uint24", 211 | "name": "fee", 212 | "type": "uint24" 213 | }, 214 | { 215 | "internalType": "int24", 216 | "name": "tickSpacing", 217 | "type": "int24" 218 | } 219 | ], 220 | "stateMutability": "view", 221 | "type": "function" 222 | }, 223 | { 224 | "inputs": [ 225 | { 226 | "internalType": "address", 227 | "name": "_owner", 228 | "type": "address" 229 | } 230 | ], 231 | "name": "setOwner", 232 | "outputs": [], 233 | "stateMutability": "nonpayable", 234 | "type": "function" 235 | } 236 | ] -------------------------------------------------------------------------------- /abi/volume_boost.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "inputs": [ 4 | { 5 | "internalType": "address", 6 | "name": "_routerAddress", 7 | "type": "address" 8 | } 9 | ], 10 | "stateMutability": "nonpayable", 11 | "type": "constructor" 12 | }, 13 | { 14 | "anonymous": false, 15 | "inputs": [ 16 | { 17 | "indexed": true, 18 | "internalType": "address", 19 | "name": "token", 20 | "type": "address" 21 | }, 22 | { 23 | "indexed": false, 24 | "internalType": "address", 25 | "name": "router", 26 | "type": "address" 27 | } 28 | ], 29 | "name": "ApproveToken", 30 | "type": "event" 31 | }, 32 | { 33 | "anonymous": false, 34 | "inputs": [ 35 | { 36 | "indexed": true, 37 | "internalType": "address", 38 | "name": "token", 39 | "type": "address" 40 | }, 41 | { 42 | "indexed": false, 43 | "internalType": "uint256", 44 | "name": "ethSpent", 45 | "type": "uint256" 46 | }, 47 | { 48 | "indexed": false, 49 | "internalType": "uint256", 50 | "name": "tokensBought", 51 | "type": "uint256" 52 | } 53 | ], 54 | "name": "BuySellExecuted", 55 | "type": "event" 56 | }, 57 | { 58 | "anonymous": false, 59 | "inputs": [ 60 | { 61 | "indexed": true, 62 | "internalType": "address", 63 | "name": "sender", 64 | "type": "address" 65 | }, 66 | { 67 | "indexed": false, 68 | "internalType": "uint256", 69 | "name": "amount", 70 | "type": "uint256" 71 | } 72 | ], 73 | "name": "EthDeposited", 74 | "type": "event" 75 | }, 76 | { 77 | "anonymous": false, 78 | "inputs": [ 79 | { 80 | "indexed": true, 81 | "internalType": "address", 82 | "name": "owner", 83 | "type": "address" 84 | }, 85 | { 86 | "indexed": false, 87 | "internalType": "uint256", 88 | "name": "amount", 89 | "type": "uint256" 90 | } 91 | ], 92 | "name": "EthWithdrawn", 93 | "type": "event" 94 | }, 95 | { 96 | "inputs": [ 97 | { 98 | "internalType": "address", 99 | "name": "_tokenAddress", 100 | "type": "address" 101 | } 102 | ], 103 | "name": "approveToken", 104 | "outputs": [], 105 | "stateMutability": "nonpayable", 106 | "type": "function" 107 | }, 108 | { 109 | "inputs": [ 110 | { 111 | "internalType": "address", 112 | "name": "_tokenAddress", 113 | "type": "address" 114 | } 115 | ], 116 | "name": "executeBuySell", 117 | "outputs": [], 118 | "stateMutability": "payable", 119 | "type": "function" 120 | }, 121 | { 122 | "inputs": [], 123 | "name": "owner", 124 | "outputs": [ 125 | { 126 | "internalType": "address", 127 | "name": "", 128 | "type": "address" 129 | } 130 | ], 131 | "stateMutability": "view", 132 | "type": "function" 133 | }, 134 | { 135 | "inputs": [], 136 | "name": "uniswapRouter", 137 | "outputs": [ 138 | { 139 | "internalType": "contract IUniswapV2Router02", 140 | "name": "", 141 | "type": "address" 142 | } 143 | ], 144 | "stateMutability": "view", 145 | "type": "function" 146 | }, 147 | { 148 | "inputs": [ 149 | { 150 | "internalType": "uint256", 151 | "name": "_amount", 152 | "type": "uint256" 153 | } 154 | ], 155 | "name": "withdrawEth", 156 | "outputs": [], 157 | "stateMutability": "nonpayable", 158 | "type": "function" 159 | }, 160 | { 161 | "stateMutability": "payable", 162 | "type": "receive" 163 | } 164 | ] -------------------------------------------------------------------------------- /config.ts: -------------------------------------------------------------------------------- 1 | import { ChainId } from "./types"; 2 | 3 | export const testVersion = false; 4 | 5 | //Random time interval of buy and sell 6 | export const maxInterval = 30000 //millisecond 7 | export const minInterval = 5000//millisecond 8 | 9 | //Random amount for wallet. 10 | export const amountMax = 0.003; //Ether balance 11 | export const amountMin = 0.001; //Should be more than 0.001 12 | 13 | //Fee balance that must be remaining in the wallet 14 | export const fee = 0.001; //Must be greater than 0.001 15 | 16 | //Number of sub wallets. 17 | export const subWalletNum = 2; 18 | 19 | //ChainId : Sepolia, BSC, Ethereum 20 | export const CHAINID:ChainId = ChainId.BSC; -------------------------------------------------------------------------------- /constants.ts: -------------------------------------------------------------------------------- 1 | import * as dotenv from 'dotenv'; 2 | import { testVersion } from './config'; 3 | import { ChainId } from './types'; 4 | dotenv.config(); 5 | 6 | export const retrieveEnvVariable = (variableName: string) => { 7 | const variable = process.env[variableName] || ''; 8 | if (!variable) { 9 | console.log(`${variableName} is not set`); 10 | process.exit(1); 11 | } 12 | return variable; 13 | }; 14 | 15 | // Load environment variables from .env file 16 | dotenv.config(); 17 | 18 | export const TARGET_TOKEN_ADDRESS = String(retrieveEnvVariable('TARGET_TOKEN_ADDRESS')); 19 | 20 | export const ETH_RPC_ENDPOINT = String(retrieveEnvVariable('ETH_RPC_ENDPOINT')); 21 | export const BSC_RPC_ENDPOINT = String(retrieveEnvVariable('BSC_RPC_ENDPOINT')); 22 | export const ETH_SEPOLIA_RPC_ENDPOINT = String(retrieveEnvVariable('ETH_SEPOLIA_RPC_ENDPOINT')); 23 | export const MEV_BLOCK_RPC_ENDPOINT = String(retrieveEnvVariable('MEV_BLOCK_RPC_ENDPOINT')); 24 | 25 | export const BASE_WALLET_ADDRESS = String(retrieveEnvVariable('ETH_BASE_WALLET_ADDRESS')); 26 | export const BASE_WALLET_PRIVATE_KEY = String(retrieveEnvVariable('ETH_BASE_WALLET_PRIVATE_KEY')); 27 | 28 | // Constant variables 29 | export const WETH_ADDRESS = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'; 30 | export const WETH_ADDRESS_SEPOLIA = "0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14"; 31 | export const UNISWAP_ROUTER_V2 = '0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D'; 32 | export const UNISWAP_ROUTER_V2_SEPOLIA = "0xeE567Fe1712Faf6149d80dA1E6934E354124CfE3" 33 | export const UNISWAP_ROUTER_V3 = testVersion ? "0x3bFA4769FB09eefC5a80d6E87c3B9C650f7Ae48E" : '0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45'; 34 | export const UNISWAP_FACTORY_V2 = testVersion ? "0xF62c03E08ada871A0bEb309762E260a7a6a880E6" : '0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f'; 35 | export const UNISWAP_FACTORY_V2_SEPOLIA = "0xF62c03E08ada871A0bEb309762E260a7a6a880E6"; 36 | export const UNISWAP_FACTORY_V3 = testVersion ? "0x0227628f3F023bb0B980b67D528571c95c6DaC1c" : '0x1f98431c8ad98523631ae4a59f267346ea31f984'; 37 | export const WBNB_ADDRESS = "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"; 38 | export const PANCAKE_ROUTER_V2 = "0x10ED43C718714eb63d5aA57B78B54704E256024E"; 39 | export const PANCAKE_FACTORY_V2 = "0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73"; 40 | 41 | export const CONFIRM_ENDPOINT = testVersion ? ETH_SEPOLIA_RPC_ENDPOINT : MEV_BLOCK_RPC_ENDPOINT; 42 | export const ETH_ENDPOINT = testVersion ? ETH_SEPOLIA_RPC_ENDPOINT : ETH_RPC_ENDPOINT; 43 | export const BSC_ENDPOINT = testVersion ? ETH_SEPOLIA_RPC_ENDPOINT : BSC_RPC_ENDPOINT; 44 | 45 | export const routers: Record = { 46 | [ChainId.BSC]: PANCAKE_ROUTER_V2, 47 | [ChainId.Ethereum]: UNISWAP_ROUTER_V2, 48 | [ChainId.Sepolia]: UNISWAP_ROUTER_V2_SEPOLIA 49 | }; 50 | 51 | export const WrappedNative: Record ={ 52 | [ChainId.BSC]: WBNB_ADDRESS, 53 | [ChainId.Ethereum]: WETH_ADDRESS, 54 | [ChainId.Sepolia]: WETH_ADDRESS_SEPOLIA, 55 | } 56 | 57 | export const RPCs: Record = { 58 | [ChainId.BSC]: BSC_RPC_ENDPOINT, 59 | [ChainId.Ethereum]: ETH_RPC_ENDPOINT, 60 | [ChainId.Sepolia]: ETH_SEPOLIA_RPC_ENDPOINT, 61 | } -------------------------------------------------------------------------------- /ether_volume_bot.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/donpushme/ether-volume-bot/b50b0872107d611f49640bdc2db2cf0bd8de6539/ether_volume_bot.rar -------------------------------------------------------------------------------- /fetchAbi.ts: -------------------------------------------------------------------------------- 1 | import * as fs from 'fs'; 2 | import { ContractAbi } from 'web3'; 3 | import { ChainId } from './types'; 4 | import { BSC_ENDPOINT, BSC_RPC_ENDPOINT, ETH_ENDPOINT, WBNB_ADDRESS, WETH_ADDRESS } from './constants'; 5 | 6 | export function get_bsc_factory_abi(): ContractAbi { 7 | const data = fs.readFileSync('abi/bsc_factory_v2.json', 'utf8'); 8 | return JSON.parse(data); 9 | } 10 | 11 | export function get_router_abi(): ContractAbi { 12 | const data = fs.readFileSync('abi/router_v2.json', 'utf8'); 13 | return JSON.parse(data); 14 | } 15 | 16 | export function get_bsc_router_abi(): ContractAbi { 17 | const data = fs.readFileSync('abi/bsc_router_v2.json', 'utf8'); 18 | return JSON.parse(data); 19 | } 20 | 21 | export function get_factory_v2_abi(): ContractAbi { 22 | const data = fs.readFileSync('abi/uniswap_factory_v2.json', 'utf8'); 23 | return JSON.parse(data); 24 | } 25 | 26 | export function get_factory_v3_abi(): ContractAbi { 27 | const data = fs.readFileSync('abi/uniswap_factory_v3.json', 'utf8'); 28 | return JSON.parse(data); 29 | } 30 | 31 | export function get_router_v3_abi(): ContractAbi { 32 | const data = fs.readFileSync('abi/router_v3.json', 'utf8'); 33 | return JSON.parse(data); 34 | } 35 | 36 | export function get_pair_abi(): ContractAbi { 37 | const data = fs.readFileSync('abi/pair.json', 'utf8'); 38 | return JSON.parse(data); 39 | } 40 | 41 | export function get_erc20_abi(): ContractAbi { 42 | const data = fs.readFileSync('abi/erc20.json', 'utf8'); 43 | return JSON.parse(data); 44 | } 45 | 46 | export function get_volume_boost_contract_abi(): ContractAbi { 47 | const data = fs.readFileSync('abi/volume_boost.json', 'utf8'); 48 | return JSON.parse(data); 49 | } -------------------------------------------------------------------------------- /index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | get_erc20_abi, 3 | get_router_abi, 4 | } from './fetchAbi'; 5 | import { 6 | BASE_WALLET_ADDRESS, 7 | BASE_WALLET_PRIVATE_KEY, 8 | TARGET_TOKEN_ADDRESS, 9 | WrappedNative 10 | } from './constants' 11 | import { ChainId, Wallet } from './types'; 12 | import { delay, gather, generateWallets, getRandomDelay, getRouterAddress, getRpc, readingWallets, saveWallet, sendEther } from './utils'; 13 | import { ethers } from 'ethers' 14 | import fs from "fs"; 15 | import { CHAINID, fee, subWalletNum } from './config'; 16 | 17 | const baseWallet = { 18 | privateKey: BASE_WALLET_PRIVATE_KEY, 19 | address: BASE_WALLET_ADDRESS, 20 | } 21 | 22 | let fileName = ""; 23 | 24 | export const buyToken = async (tokenAddress: string, wallet: Wallet, chainId: ChainId) => { 25 | const routerAbi = get_router_abi(); 26 | const routerAddress = getRouterAddress(chainId); 27 | const rpc = getRpc(chainId); 28 | const provider = new ethers.JsonRpcProvider(rpc); 29 | const block = await provider.getBlock("latest"); 30 | const currentTimestamp = block?.timestamp || 9999999999999; 31 | try { 32 | const signer = new ethers.Wallet(wallet.privateKey, provider) 33 | const contract = new ethers.Contract(routerAddress, routerAbi, signer); 34 | 35 | console.log("=================================== Buying ===================================") 36 | console.log(`Token Address: ${tokenAddress}`) 37 | await delay(5000); 38 | const tx = await contract 39 | .swapExactETHForTokensSupportingFeeOnTransferTokens(0, 40 | [WrappedNative[chainId], tokenAddress], 41 | wallet.address, 42 | currentTimestamp + 1000000000, 43 | { 44 | value: ethers.parseEther(wallet.amount.toString()) 45 | }); 46 | await tx.wait(); 47 | console.log(`Buy : ${tx.hash}`); 48 | return tx.hash; 49 | } catch (error) { 50 | console.log(error); 51 | await gather(wallet, provider); 52 | return ""; 53 | } 54 | } 55 | 56 | export const sellToken = async (tokenAddress: string, wallet: Wallet, chainId: ChainId) => { 57 | const routerAbi = get_router_abi(); 58 | const routerAddress = getRouterAddress(chainId); 59 | const rpc = getRpc(chainId); 60 | const provider = new ethers.JsonRpcProvider(rpc); 61 | const block = await provider.getBlock("latest"); 62 | const currentTimestamp = block?.timestamp || 9999999999999; 63 | const erc20Abi = get_erc20_abi(); 64 | try { 65 | const signer = new ethers.Wallet(wallet.privateKey, provider) 66 | const tokenContract = new ethers.Contract(tokenAddress, erc20Abi, signer); 67 | const tokenBalance = await tokenContract.balanceOf(wallet.address); 68 | 69 | console.log("=================================== Approving ===================================") 70 | console.log(`Approving ${tokenAddress} to sell from ${wallet.address}`); 71 | await delay(5000); 72 | const approval = await tokenContract.approve(routerAddress, tokenBalance); 73 | console.log(`Approval : ${approval.hash}`); 74 | 75 | console.log("=================================== Selling ===================================") 76 | const contract = new ethers.Contract(routerAddress, routerAbi, signer); 77 | await delay(5000); 78 | const tx = await contract.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenBalance, 0, [tokenAddress, WrappedNative[chainId]], wallet.address, currentTimestamp + 1000000000); 79 | await tx.wait(); 80 | console.log(`Sell : ${tx.hash}`); 81 | 82 | await gather(wallet, provider); 83 | return tx.hash; 84 | } catch (error) { 85 | console.log(error); 86 | return "Transaction Failed"; 87 | } 88 | } 89 | 90 | export const processTransaction = async (wallet: Wallet, token_addr: string, chainId: number) => { 91 | const rpc = getRpc(chainId); 92 | const provider = new ethers.JsonRpcProvider(rpc); 93 | try { 94 | const transferAmount = (+wallet.amount + +fee).toFixed(6); 95 | const isTransferred = await sendEther(baseWallet.privateKey, wallet.address, transferAmount, provider); 96 | if (isTransferred) { 97 | await saveWallet({...wallet, funded: transferAmount}, fileName); 98 | } 99 | const hash = await buyToken(token_addr, wallet, chainId); 100 | 101 | if(hash == "") { 102 | console.log("Trading with the next wallet."); 103 | return; 104 | } 105 | 106 | const delayTime = getRandomDelay(); 107 | console.log(`=================================== Delaying ${delayTime / 1000}s ===================================`) 108 | await delay(delayTime); 109 | await sellToken(token_addr, wallet, chainId) 110 | } catch (error) { 111 | console.error(`Error processing transaction for user`, error); 112 | } 113 | const delayTime = getRandomDelay(); 114 | console.log(`=================================== Delaying ${delayTime / 1000}s ===================================`) 115 | await delay(delayTime); 116 | } 117 | const runBot = async () => { 118 | console.log(`Generating ${subWalletNum} subwallets`); 119 | fileName = await generateWallets(subWalletNum); 120 | const wallets = await readingWallets(fileName); 121 | 122 | for (let i = 0; i < wallets.length; i++) { 123 | await processTransaction(wallets[i], TARGET_TOKEN_ADDRESS, CHAINID); 124 | 125 | const delayTime = getRandomDelay(); 126 | console.log(`=================================== Delaying ${delayTime / 1000}s ===================================`) 127 | await delay(delayTime); 128 | } 129 | } 130 | 131 | 132 | runBot() 133 | 134 | 135 | 136 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ether", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "ether", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "axios": "^1.7.9", 13 | "dotenv": "^16.4.7", 14 | "ethers": "^6.13.5", 15 | "fs": "^0.0.1-security", 16 | "ts-node": "^10.9.2", 17 | "typescript": "^5.7.3", 18 | "web3": "^4.16.0" 19 | } 20 | }, 21 | "node_modules/@adraffy/ens-normalize": { 22 | "version": "1.11.0", 23 | "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.0.tgz", 24 | "integrity": "sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==", 25 | "license": "MIT" 26 | }, 27 | "node_modules/@cspotcode/source-map-support": { 28 | "version": "0.8.1", 29 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", 30 | "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", 31 | "license": "MIT", 32 | "dependencies": { 33 | "@jridgewell/trace-mapping": "0.3.9" 34 | }, 35 | "engines": { 36 | "node": ">=12" 37 | } 38 | }, 39 | "node_modules/@ethereumjs/rlp": { 40 | "version": "4.0.1", 41 | "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", 42 | "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", 43 | "license": "MPL-2.0", 44 | "bin": { 45 | "rlp": "bin/rlp" 46 | }, 47 | "engines": { 48 | "node": ">=14" 49 | } 50 | }, 51 | "node_modules/@jridgewell/resolve-uri": { 52 | "version": "3.1.2", 53 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 54 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 55 | "license": "MIT", 56 | "engines": { 57 | "node": ">=6.0.0" 58 | } 59 | }, 60 | "node_modules/@jridgewell/sourcemap-codec": { 61 | "version": "1.5.0", 62 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 63 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 64 | "license": "MIT" 65 | }, 66 | "node_modules/@jridgewell/trace-mapping": { 67 | "version": "0.3.9", 68 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", 69 | "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", 70 | "license": "MIT", 71 | "dependencies": { 72 | "@jridgewell/resolve-uri": "^3.0.3", 73 | "@jridgewell/sourcemap-codec": "^1.4.10" 74 | } 75 | }, 76 | "node_modules/@noble/curves": { 77 | "version": "1.4.2", 78 | "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", 79 | "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", 80 | "license": "MIT", 81 | "dependencies": { 82 | "@noble/hashes": "1.4.0" 83 | }, 84 | "funding": { 85 | "url": "https://paulmillr.com/funding/" 86 | } 87 | }, 88 | "node_modules/@noble/hashes": { 89 | "version": "1.4.0", 90 | "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", 91 | "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", 92 | "license": "MIT", 93 | "engines": { 94 | "node": ">= 16" 95 | }, 96 | "funding": { 97 | "url": "https://paulmillr.com/funding/" 98 | } 99 | }, 100 | "node_modules/@scure/base": { 101 | "version": "1.1.9", 102 | "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", 103 | "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", 104 | "license": "MIT", 105 | "funding": { 106 | "url": "https://paulmillr.com/funding/" 107 | } 108 | }, 109 | "node_modules/@scure/bip32": { 110 | "version": "1.4.0", 111 | "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", 112 | "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", 113 | "license": "MIT", 114 | "dependencies": { 115 | "@noble/curves": "~1.4.0", 116 | "@noble/hashes": "~1.4.0", 117 | "@scure/base": "~1.1.6" 118 | }, 119 | "funding": { 120 | "url": "https://paulmillr.com/funding/" 121 | } 122 | }, 123 | "node_modules/@scure/bip39": { 124 | "version": "1.3.0", 125 | "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", 126 | "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", 127 | "license": "MIT", 128 | "dependencies": { 129 | "@noble/hashes": "~1.4.0", 130 | "@scure/base": "~1.1.6" 131 | }, 132 | "funding": { 133 | "url": "https://paulmillr.com/funding/" 134 | } 135 | }, 136 | "node_modules/@tsconfig/node10": { 137 | "version": "1.0.11", 138 | "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", 139 | "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", 140 | "license": "MIT" 141 | }, 142 | "node_modules/@tsconfig/node12": { 143 | "version": "1.0.11", 144 | "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", 145 | "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", 146 | "license": "MIT" 147 | }, 148 | "node_modules/@tsconfig/node14": { 149 | "version": "1.0.3", 150 | "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", 151 | "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", 152 | "license": "MIT" 153 | }, 154 | "node_modules/@tsconfig/node16": { 155 | "version": "1.0.4", 156 | "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", 157 | "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", 158 | "license": "MIT" 159 | }, 160 | "node_modules/@types/node": { 161 | "version": "22.13.4", 162 | "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz", 163 | "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==", 164 | "license": "MIT", 165 | "dependencies": { 166 | "undici-types": "~6.20.0" 167 | } 168 | }, 169 | "node_modules/@types/ws": { 170 | "version": "8.5.3", 171 | "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", 172 | "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", 173 | "license": "MIT", 174 | "dependencies": { 175 | "@types/node": "*" 176 | } 177 | }, 178 | "node_modules/abitype": { 179 | "version": "0.7.1", 180 | "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.7.1.tgz", 181 | "integrity": "sha512-VBkRHTDZf9Myaek/dO3yMmOzB/y2s3Zo6nVU7yaw1G+TvCHAjwaJzNGN9yo4K5D8bU/VZXKP1EJpRhFr862PlQ==", 182 | "license": "MIT", 183 | "peerDependencies": { 184 | "typescript": ">=4.9.4", 185 | "zod": "^3 >=3.19.1" 186 | }, 187 | "peerDependenciesMeta": { 188 | "zod": { 189 | "optional": true 190 | } 191 | } 192 | }, 193 | "node_modules/acorn": { 194 | "version": "8.14.0", 195 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", 196 | "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", 197 | "license": "MIT", 198 | "bin": { 199 | "acorn": "bin/acorn" 200 | }, 201 | "engines": { 202 | "node": ">=0.4.0" 203 | } 204 | }, 205 | "node_modules/acorn-walk": { 206 | "version": "8.3.4", 207 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", 208 | "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", 209 | "license": "MIT", 210 | "dependencies": { 211 | "acorn": "^8.11.0" 212 | }, 213 | "engines": { 214 | "node": ">=0.4.0" 215 | } 216 | }, 217 | "node_modules/aes-js": { 218 | "version": "4.0.0-beta.5", 219 | "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", 220 | "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", 221 | "license": "MIT" 222 | }, 223 | "node_modules/arg": { 224 | "version": "4.1.3", 225 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", 226 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", 227 | "license": "MIT" 228 | }, 229 | "node_modules/asynckit": { 230 | "version": "0.4.0", 231 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 232 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", 233 | "license": "MIT" 234 | }, 235 | "node_modules/available-typed-arrays": { 236 | "version": "1.0.7", 237 | "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", 238 | "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", 239 | "license": "MIT", 240 | "dependencies": { 241 | "possible-typed-array-names": "^1.0.0" 242 | }, 243 | "engines": { 244 | "node": ">= 0.4" 245 | }, 246 | "funding": { 247 | "url": "https://github.com/sponsors/ljharb" 248 | } 249 | }, 250 | "node_modules/axios": { 251 | "version": "1.7.9", 252 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", 253 | "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", 254 | "license": "MIT", 255 | "dependencies": { 256 | "follow-redirects": "^1.15.6", 257 | "form-data": "^4.0.0", 258 | "proxy-from-env": "^1.1.0" 259 | } 260 | }, 261 | "node_modules/call-bind": { 262 | "version": "1.0.8", 263 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", 264 | "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", 265 | "license": "MIT", 266 | "dependencies": { 267 | "call-bind-apply-helpers": "^1.0.0", 268 | "es-define-property": "^1.0.0", 269 | "get-intrinsic": "^1.2.4", 270 | "set-function-length": "^1.2.2" 271 | }, 272 | "engines": { 273 | "node": ">= 0.4" 274 | }, 275 | "funding": { 276 | "url": "https://github.com/sponsors/ljharb" 277 | } 278 | }, 279 | "node_modules/call-bind-apply-helpers": { 280 | "version": "1.0.2", 281 | "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", 282 | "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", 283 | "license": "MIT", 284 | "dependencies": { 285 | "es-errors": "^1.3.0", 286 | "function-bind": "^1.1.2" 287 | }, 288 | "engines": { 289 | "node": ">= 0.4" 290 | } 291 | }, 292 | "node_modules/call-bound": { 293 | "version": "1.0.3", 294 | "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", 295 | "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", 296 | "license": "MIT", 297 | "dependencies": { 298 | "call-bind-apply-helpers": "^1.0.1", 299 | "get-intrinsic": "^1.2.6" 300 | }, 301 | "engines": { 302 | "node": ">= 0.4" 303 | }, 304 | "funding": { 305 | "url": "https://github.com/sponsors/ljharb" 306 | } 307 | }, 308 | "node_modules/combined-stream": { 309 | "version": "1.0.8", 310 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 311 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 312 | "license": "MIT", 313 | "dependencies": { 314 | "delayed-stream": "~1.0.0" 315 | }, 316 | "engines": { 317 | "node": ">= 0.8" 318 | } 319 | }, 320 | "node_modules/crc-32": { 321 | "version": "1.2.2", 322 | "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", 323 | "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", 324 | "license": "Apache-2.0", 325 | "bin": { 326 | "crc32": "bin/crc32.njs" 327 | }, 328 | "engines": { 329 | "node": ">=0.8" 330 | } 331 | }, 332 | "node_modules/create-require": { 333 | "version": "1.1.1", 334 | "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", 335 | "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", 336 | "license": "MIT" 337 | }, 338 | "node_modules/cross-fetch": { 339 | "version": "4.1.0", 340 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", 341 | "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", 342 | "license": "MIT", 343 | "dependencies": { 344 | "node-fetch": "^2.7.0" 345 | } 346 | }, 347 | "node_modules/define-data-property": { 348 | "version": "1.1.4", 349 | "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", 350 | "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", 351 | "license": "MIT", 352 | "dependencies": { 353 | "es-define-property": "^1.0.0", 354 | "es-errors": "^1.3.0", 355 | "gopd": "^1.0.1" 356 | }, 357 | "engines": { 358 | "node": ">= 0.4" 359 | }, 360 | "funding": { 361 | "url": "https://github.com/sponsors/ljharb" 362 | } 363 | }, 364 | "node_modules/delayed-stream": { 365 | "version": "1.0.0", 366 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 367 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 368 | "license": "MIT", 369 | "engines": { 370 | "node": ">=0.4.0" 371 | } 372 | }, 373 | "node_modules/diff": { 374 | "version": "4.0.2", 375 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 376 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 377 | "license": "BSD-3-Clause", 378 | "engines": { 379 | "node": ">=0.3.1" 380 | } 381 | }, 382 | "node_modules/dotenv": { 383 | "version": "16.4.7", 384 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", 385 | "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", 386 | "license": "BSD-2-Clause", 387 | "engines": { 388 | "node": ">=12" 389 | }, 390 | "funding": { 391 | "url": "https://dotenvx.com" 392 | } 393 | }, 394 | "node_modules/dunder-proto": { 395 | "version": "1.0.1", 396 | "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", 397 | "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", 398 | "license": "MIT", 399 | "dependencies": { 400 | "call-bind-apply-helpers": "^1.0.1", 401 | "es-errors": "^1.3.0", 402 | "gopd": "^1.2.0" 403 | }, 404 | "engines": { 405 | "node": ">= 0.4" 406 | } 407 | }, 408 | "node_modules/es-define-property": { 409 | "version": "1.0.1", 410 | "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", 411 | "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", 412 | "license": "MIT", 413 | "engines": { 414 | "node": ">= 0.4" 415 | } 416 | }, 417 | "node_modules/es-errors": { 418 | "version": "1.3.0", 419 | "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", 420 | "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", 421 | "license": "MIT", 422 | "engines": { 423 | "node": ">= 0.4" 424 | } 425 | }, 426 | "node_modules/es-object-atoms": { 427 | "version": "1.1.1", 428 | "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", 429 | "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", 430 | "license": "MIT", 431 | "dependencies": { 432 | "es-errors": "^1.3.0" 433 | }, 434 | "engines": { 435 | "node": ">= 0.4" 436 | } 437 | }, 438 | "node_modules/es-set-tostringtag": { 439 | "version": "2.1.0", 440 | "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", 441 | "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", 442 | "license": "MIT", 443 | "dependencies": { 444 | "es-errors": "^1.3.0", 445 | "get-intrinsic": "^1.2.6", 446 | "has-tostringtag": "^1.0.2", 447 | "hasown": "^2.0.2" 448 | }, 449 | "engines": { 450 | "node": ">= 0.4" 451 | } 452 | }, 453 | "node_modules/ethereum-cryptography": { 454 | "version": "2.2.1", 455 | "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", 456 | "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", 457 | "license": "MIT", 458 | "dependencies": { 459 | "@noble/curves": "1.4.2", 460 | "@noble/hashes": "1.4.0", 461 | "@scure/bip32": "1.4.0", 462 | "@scure/bip39": "1.3.0" 463 | } 464 | }, 465 | "node_modules/ethers": { 466 | "version": "6.13.5", 467 | "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.5.tgz", 468 | "integrity": "sha512-+knKNieu5EKRThQJWwqaJ10a6HE9sSehGeqWN65//wE7j47ZpFhKAnHB/JJFibwwg61I/koxaPsXbXpD/skNOQ==", 469 | "funding": [ 470 | { 471 | "type": "individual", 472 | "url": "https://github.com/sponsors/ethers-io/" 473 | }, 474 | { 475 | "type": "individual", 476 | "url": "https://www.buymeacoffee.com/ricmoo" 477 | } 478 | ], 479 | "license": "MIT", 480 | "dependencies": { 481 | "@adraffy/ens-normalize": "1.10.1", 482 | "@noble/curves": "1.2.0", 483 | "@noble/hashes": "1.3.2", 484 | "@types/node": "22.7.5", 485 | "aes-js": "4.0.0-beta.5", 486 | "tslib": "2.7.0", 487 | "ws": "8.17.1" 488 | }, 489 | "engines": { 490 | "node": ">=14.0.0" 491 | } 492 | }, 493 | "node_modules/ethers/node_modules/@adraffy/ens-normalize": { 494 | "version": "1.10.1", 495 | "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", 496 | "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", 497 | "license": "MIT" 498 | }, 499 | "node_modules/ethers/node_modules/@noble/curves": { 500 | "version": "1.2.0", 501 | "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", 502 | "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", 503 | "license": "MIT", 504 | "dependencies": { 505 | "@noble/hashes": "1.3.2" 506 | }, 507 | "funding": { 508 | "url": "https://paulmillr.com/funding/" 509 | } 510 | }, 511 | "node_modules/ethers/node_modules/@noble/hashes": { 512 | "version": "1.3.2", 513 | "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", 514 | "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", 515 | "license": "MIT", 516 | "engines": { 517 | "node": ">= 16" 518 | }, 519 | "funding": { 520 | "url": "https://paulmillr.com/funding/" 521 | } 522 | }, 523 | "node_modules/ethers/node_modules/@types/node": { 524 | "version": "22.7.5", 525 | "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", 526 | "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", 527 | "license": "MIT", 528 | "dependencies": { 529 | "undici-types": "~6.19.2" 530 | } 531 | }, 532 | "node_modules/ethers/node_modules/undici-types": { 533 | "version": "6.19.8", 534 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", 535 | "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", 536 | "license": "MIT" 537 | }, 538 | "node_modules/ethers/node_modules/ws": { 539 | "version": "8.17.1", 540 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", 541 | "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", 542 | "license": "MIT", 543 | "engines": { 544 | "node": ">=10.0.0" 545 | }, 546 | "peerDependencies": { 547 | "bufferutil": "^4.0.1", 548 | "utf-8-validate": ">=5.0.2" 549 | }, 550 | "peerDependenciesMeta": { 551 | "bufferutil": { 552 | "optional": true 553 | }, 554 | "utf-8-validate": { 555 | "optional": true 556 | } 557 | } 558 | }, 559 | "node_modules/eventemitter3": { 560 | "version": "5.0.1", 561 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", 562 | "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", 563 | "license": "MIT" 564 | }, 565 | "node_modules/follow-redirects": { 566 | "version": "1.15.9", 567 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", 568 | "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", 569 | "funding": [ 570 | { 571 | "type": "individual", 572 | "url": "https://github.com/sponsors/RubenVerborgh" 573 | } 574 | ], 575 | "license": "MIT", 576 | "engines": { 577 | "node": ">=4.0" 578 | }, 579 | "peerDependenciesMeta": { 580 | "debug": { 581 | "optional": true 582 | } 583 | } 584 | }, 585 | "node_modules/for-each": { 586 | "version": "0.3.5", 587 | "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", 588 | "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", 589 | "license": "MIT", 590 | "dependencies": { 591 | "is-callable": "^1.2.7" 592 | }, 593 | "engines": { 594 | "node": ">= 0.4" 595 | }, 596 | "funding": { 597 | "url": "https://github.com/sponsors/ljharb" 598 | } 599 | }, 600 | "node_modules/form-data": { 601 | "version": "4.0.2", 602 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", 603 | "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", 604 | "license": "MIT", 605 | "dependencies": { 606 | "asynckit": "^0.4.0", 607 | "combined-stream": "^1.0.8", 608 | "es-set-tostringtag": "^2.1.0", 609 | "mime-types": "^2.1.12" 610 | }, 611 | "engines": { 612 | "node": ">= 6" 613 | } 614 | }, 615 | "node_modules/fs": { 616 | "version": "0.0.1-security", 617 | "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", 618 | "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==", 619 | "license": "ISC" 620 | }, 621 | "node_modules/function-bind": { 622 | "version": "1.1.2", 623 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 624 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 625 | "license": "MIT", 626 | "funding": { 627 | "url": "https://github.com/sponsors/ljharb" 628 | } 629 | }, 630 | "node_modules/get-intrinsic": { 631 | "version": "1.2.7", 632 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", 633 | "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", 634 | "license": "MIT", 635 | "dependencies": { 636 | "call-bind-apply-helpers": "^1.0.1", 637 | "es-define-property": "^1.0.1", 638 | "es-errors": "^1.3.0", 639 | "es-object-atoms": "^1.0.0", 640 | "function-bind": "^1.1.2", 641 | "get-proto": "^1.0.0", 642 | "gopd": "^1.2.0", 643 | "has-symbols": "^1.1.0", 644 | "hasown": "^2.0.2", 645 | "math-intrinsics": "^1.1.0" 646 | }, 647 | "engines": { 648 | "node": ">= 0.4" 649 | }, 650 | "funding": { 651 | "url": "https://github.com/sponsors/ljharb" 652 | } 653 | }, 654 | "node_modules/get-proto": { 655 | "version": "1.0.1", 656 | "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", 657 | "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", 658 | "license": "MIT", 659 | "dependencies": { 660 | "dunder-proto": "^1.0.1", 661 | "es-object-atoms": "^1.0.0" 662 | }, 663 | "engines": { 664 | "node": ">= 0.4" 665 | } 666 | }, 667 | "node_modules/gopd": { 668 | "version": "1.2.0", 669 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", 670 | "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", 671 | "license": "MIT", 672 | "engines": { 673 | "node": ">= 0.4" 674 | }, 675 | "funding": { 676 | "url": "https://github.com/sponsors/ljharb" 677 | } 678 | }, 679 | "node_modules/has-property-descriptors": { 680 | "version": "1.0.2", 681 | "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", 682 | "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", 683 | "license": "MIT", 684 | "dependencies": { 685 | "es-define-property": "^1.0.0" 686 | }, 687 | "funding": { 688 | "url": "https://github.com/sponsors/ljharb" 689 | } 690 | }, 691 | "node_modules/has-symbols": { 692 | "version": "1.1.0", 693 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", 694 | "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", 695 | "license": "MIT", 696 | "engines": { 697 | "node": ">= 0.4" 698 | }, 699 | "funding": { 700 | "url": "https://github.com/sponsors/ljharb" 701 | } 702 | }, 703 | "node_modules/has-tostringtag": { 704 | "version": "1.0.2", 705 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", 706 | "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", 707 | "license": "MIT", 708 | "dependencies": { 709 | "has-symbols": "^1.0.3" 710 | }, 711 | "engines": { 712 | "node": ">= 0.4" 713 | }, 714 | "funding": { 715 | "url": "https://github.com/sponsors/ljharb" 716 | } 717 | }, 718 | "node_modules/hasown": { 719 | "version": "2.0.2", 720 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 721 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 722 | "license": "MIT", 723 | "dependencies": { 724 | "function-bind": "^1.1.2" 725 | }, 726 | "engines": { 727 | "node": ">= 0.4" 728 | } 729 | }, 730 | "node_modules/inherits": { 731 | "version": "2.0.4", 732 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 733 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 734 | "license": "ISC" 735 | }, 736 | "node_modules/is-arguments": { 737 | "version": "1.2.0", 738 | "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", 739 | "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", 740 | "license": "MIT", 741 | "dependencies": { 742 | "call-bound": "^1.0.2", 743 | "has-tostringtag": "^1.0.2" 744 | }, 745 | "engines": { 746 | "node": ">= 0.4" 747 | }, 748 | "funding": { 749 | "url": "https://github.com/sponsors/ljharb" 750 | } 751 | }, 752 | "node_modules/is-callable": { 753 | "version": "1.2.7", 754 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", 755 | "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", 756 | "license": "MIT", 757 | "engines": { 758 | "node": ">= 0.4" 759 | }, 760 | "funding": { 761 | "url": "https://github.com/sponsors/ljharb" 762 | } 763 | }, 764 | "node_modules/is-generator-function": { 765 | "version": "1.1.0", 766 | "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", 767 | "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", 768 | "license": "MIT", 769 | "dependencies": { 770 | "call-bound": "^1.0.3", 771 | "get-proto": "^1.0.0", 772 | "has-tostringtag": "^1.0.2", 773 | "safe-regex-test": "^1.1.0" 774 | }, 775 | "engines": { 776 | "node": ">= 0.4" 777 | }, 778 | "funding": { 779 | "url": "https://github.com/sponsors/ljharb" 780 | } 781 | }, 782 | "node_modules/is-regex": { 783 | "version": "1.2.1", 784 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", 785 | "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", 786 | "license": "MIT", 787 | "dependencies": { 788 | "call-bound": "^1.0.2", 789 | "gopd": "^1.2.0", 790 | "has-tostringtag": "^1.0.2", 791 | "hasown": "^2.0.2" 792 | }, 793 | "engines": { 794 | "node": ">= 0.4" 795 | }, 796 | "funding": { 797 | "url": "https://github.com/sponsors/ljharb" 798 | } 799 | }, 800 | "node_modules/is-typed-array": { 801 | "version": "1.1.15", 802 | "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", 803 | "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", 804 | "license": "MIT", 805 | "dependencies": { 806 | "which-typed-array": "^1.1.16" 807 | }, 808 | "engines": { 809 | "node": ">= 0.4" 810 | }, 811 | "funding": { 812 | "url": "https://github.com/sponsors/ljharb" 813 | } 814 | }, 815 | "node_modules/isomorphic-ws": { 816 | "version": "5.0.0", 817 | "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", 818 | "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", 819 | "license": "MIT", 820 | "peerDependencies": { 821 | "ws": "*" 822 | } 823 | }, 824 | "node_modules/make-error": { 825 | "version": "1.3.6", 826 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 827 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", 828 | "license": "ISC" 829 | }, 830 | "node_modules/math-intrinsics": { 831 | "version": "1.1.0", 832 | "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", 833 | "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", 834 | "license": "MIT", 835 | "engines": { 836 | "node": ">= 0.4" 837 | } 838 | }, 839 | "node_modules/mime-db": { 840 | "version": "1.52.0", 841 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 842 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 843 | "license": "MIT", 844 | "engines": { 845 | "node": ">= 0.6" 846 | } 847 | }, 848 | "node_modules/mime-types": { 849 | "version": "2.1.35", 850 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 851 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 852 | "license": "MIT", 853 | "dependencies": { 854 | "mime-db": "1.52.0" 855 | }, 856 | "engines": { 857 | "node": ">= 0.6" 858 | } 859 | }, 860 | "node_modules/node-fetch": { 861 | "version": "2.7.0", 862 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", 863 | "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", 864 | "license": "MIT", 865 | "dependencies": { 866 | "whatwg-url": "^5.0.0" 867 | }, 868 | "engines": { 869 | "node": "4.x || >=6.0.0" 870 | }, 871 | "peerDependencies": { 872 | "encoding": "^0.1.0" 873 | }, 874 | "peerDependenciesMeta": { 875 | "encoding": { 876 | "optional": true 877 | } 878 | } 879 | }, 880 | "node_modules/possible-typed-array-names": { 881 | "version": "1.1.0", 882 | "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", 883 | "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", 884 | "license": "MIT", 885 | "engines": { 886 | "node": ">= 0.4" 887 | } 888 | }, 889 | "node_modules/proxy-from-env": { 890 | "version": "1.1.0", 891 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 892 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", 893 | "license": "MIT" 894 | }, 895 | "node_modules/safe-regex-test": { 896 | "version": "1.1.0", 897 | "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", 898 | "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", 899 | "license": "MIT", 900 | "dependencies": { 901 | "call-bound": "^1.0.2", 902 | "es-errors": "^1.3.0", 903 | "is-regex": "^1.2.1" 904 | }, 905 | "engines": { 906 | "node": ">= 0.4" 907 | }, 908 | "funding": { 909 | "url": "https://github.com/sponsors/ljharb" 910 | } 911 | }, 912 | "node_modules/set-function-length": { 913 | "version": "1.2.2", 914 | "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", 915 | "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", 916 | "license": "MIT", 917 | "dependencies": { 918 | "define-data-property": "^1.1.4", 919 | "es-errors": "^1.3.0", 920 | "function-bind": "^1.1.2", 921 | "get-intrinsic": "^1.2.4", 922 | "gopd": "^1.0.1", 923 | "has-property-descriptors": "^1.0.2" 924 | }, 925 | "engines": { 926 | "node": ">= 0.4" 927 | } 928 | }, 929 | "node_modules/setimmediate": { 930 | "version": "1.0.5", 931 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 932 | "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", 933 | "license": "MIT" 934 | }, 935 | "node_modules/tr46": { 936 | "version": "0.0.3", 937 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 938 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", 939 | "license": "MIT" 940 | }, 941 | "node_modules/ts-node": { 942 | "version": "10.9.2", 943 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", 944 | "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", 945 | "license": "MIT", 946 | "dependencies": { 947 | "@cspotcode/source-map-support": "^0.8.0", 948 | "@tsconfig/node10": "^1.0.7", 949 | "@tsconfig/node12": "^1.0.7", 950 | "@tsconfig/node14": "^1.0.0", 951 | "@tsconfig/node16": "^1.0.2", 952 | "acorn": "^8.4.1", 953 | "acorn-walk": "^8.1.1", 954 | "arg": "^4.1.0", 955 | "create-require": "^1.1.0", 956 | "diff": "^4.0.1", 957 | "make-error": "^1.1.1", 958 | "v8-compile-cache-lib": "^3.0.1", 959 | "yn": "3.1.1" 960 | }, 961 | "bin": { 962 | "ts-node": "dist/bin.js", 963 | "ts-node-cwd": "dist/bin-cwd.js", 964 | "ts-node-esm": "dist/bin-esm.js", 965 | "ts-node-script": "dist/bin-script.js", 966 | "ts-node-transpile-only": "dist/bin-transpile.js", 967 | "ts-script": "dist/bin-script-deprecated.js" 968 | }, 969 | "peerDependencies": { 970 | "@swc/core": ">=1.2.50", 971 | "@swc/wasm": ">=1.2.50", 972 | "@types/node": "*", 973 | "typescript": ">=2.7" 974 | }, 975 | "peerDependenciesMeta": { 976 | "@swc/core": { 977 | "optional": true 978 | }, 979 | "@swc/wasm": { 980 | "optional": true 981 | } 982 | } 983 | }, 984 | "node_modules/tslib": { 985 | "version": "2.7.0", 986 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", 987 | "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", 988 | "license": "0BSD" 989 | }, 990 | "node_modules/typescript": { 991 | "version": "5.7.3", 992 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", 993 | "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", 994 | "license": "Apache-2.0", 995 | "bin": { 996 | "tsc": "bin/tsc", 997 | "tsserver": "bin/tsserver" 998 | }, 999 | "engines": { 1000 | "node": ">=14.17" 1001 | } 1002 | }, 1003 | "node_modules/undici-types": { 1004 | "version": "6.20.0", 1005 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", 1006 | "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", 1007 | "license": "MIT" 1008 | }, 1009 | "node_modules/util": { 1010 | "version": "0.12.5", 1011 | "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", 1012 | "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", 1013 | "license": "MIT", 1014 | "dependencies": { 1015 | "inherits": "^2.0.3", 1016 | "is-arguments": "^1.0.4", 1017 | "is-generator-function": "^1.0.7", 1018 | "is-typed-array": "^1.1.3", 1019 | "which-typed-array": "^1.1.2" 1020 | } 1021 | }, 1022 | "node_modules/v8-compile-cache-lib": { 1023 | "version": "3.0.1", 1024 | "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", 1025 | "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", 1026 | "license": "MIT" 1027 | }, 1028 | "node_modules/web3": { 1029 | "version": "4.16.0", 1030 | "resolved": "https://registry.npmjs.org/web3/-/web3-4.16.0.tgz", 1031 | "integrity": "sha512-SgoMSBo6EsJ5GFCGar2E/pR2lcR/xmUSuQ61iK6yDqzxmm42aPPxSqZfJz2z/UCR6pk03u77pU8TGV6lgMDdIQ==", 1032 | "license": "LGPL-3.0", 1033 | "dependencies": { 1034 | "web3-core": "^4.7.1", 1035 | "web3-errors": "^1.3.1", 1036 | "web3-eth": "^4.11.1", 1037 | "web3-eth-abi": "^4.4.1", 1038 | "web3-eth-accounts": "^4.3.1", 1039 | "web3-eth-contract": "^4.7.2", 1040 | "web3-eth-ens": "^4.4.0", 1041 | "web3-eth-iban": "^4.0.7", 1042 | "web3-eth-personal": "^4.1.0", 1043 | "web3-net": "^4.1.0", 1044 | "web3-providers-http": "^4.2.0", 1045 | "web3-providers-ws": "^4.0.8", 1046 | "web3-rpc-methods": "^1.3.0", 1047 | "web3-rpc-providers": "^1.0.0-rc.4", 1048 | "web3-types": "^1.10.0", 1049 | "web3-utils": "^4.3.3", 1050 | "web3-validator": "^2.0.6" 1051 | }, 1052 | "engines": { 1053 | "node": ">=14.0.0", 1054 | "npm": ">=6.12.0" 1055 | } 1056 | }, 1057 | "node_modules/web3-core": { 1058 | "version": "4.7.1", 1059 | "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-4.7.1.tgz", 1060 | "integrity": "sha512-9KSeASCb/y6BG7rwhgtYC4CvYY66JfkmGNEYb7q1xgjt9BWfkf09MJPaRyoyT5trdOxYDHkT9tDlypvQWaU8UQ==", 1061 | "license": "LGPL-3.0", 1062 | "dependencies": { 1063 | "web3-errors": "^1.3.1", 1064 | "web3-eth-accounts": "^4.3.1", 1065 | "web3-eth-iban": "^4.0.7", 1066 | "web3-providers-http": "^4.2.0", 1067 | "web3-providers-ws": "^4.0.8", 1068 | "web3-types": "^1.10.0", 1069 | "web3-utils": "^4.3.3", 1070 | "web3-validator": "^2.0.6" 1071 | }, 1072 | "engines": { 1073 | "node": ">=14", 1074 | "npm": ">=6.12.0" 1075 | }, 1076 | "optionalDependencies": { 1077 | "web3-providers-ipc": "^4.0.7" 1078 | } 1079 | }, 1080 | "node_modules/web3-errors": { 1081 | "version": "1.3.1", 1082 | "resolved": "https://registry.npmjs.org/web3-errors/-/web3-errors-1.3.1.tgz", 1083 | "integrity": "sha512-w3NMJujH+ZSW4ltIZZKtdbkbyQEvBzyp3JRn59Ckli0Nz4VMsVq8aF1bLWM7A2kuQ+yVEm3ySeNU+7mSRwx7RQ==", 1084 | "license": "LGPL-3.0", 1085 | "dependencies": { 1086 | "web3-types": "^1.10.0" 1087 | }, 1088 | "engines": { 1089 | "node": ">=14", 1090 | "npm": ">=6.12.0" 1091 | } 1092 | }, 1093 | "node_modules/web3-eth": { 1094 | "version": "4.11.1", 1095 | "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-4.11.1.tgz", 1096 | "integrity": "sha512-q9zOkzHnbLv44mwgLjLXuyqszHuUgZWsQayD2i/rus2uk0G7hMn11bE2Q3hOVnJS4ws4VCtUznlMxwKQ+38V2w==", 1097 | "license": "LGPL-3.0", 1098 | "dependencies": { 1099 | "setimmediate": "^1.0.5", 1100 | "web3-core": "^4.7.1", 1101 | "web3-errors": "^1.3.1", 1102 | "web3-eth-abi": "^4.4.1", 1103 | "web3-eth-accounts": "^4.3.1", 1104 | "web3-net": "^4.1.0", 1105 | "web3-providers-ws": "^4.0.8", 1106 | "web3-rpc-methods": "^1.3.0", 1107 | "web3-types": "^1.10.0", 1108 | "web3-utils": "^4.3.3", 1109 | "web3-validator": "^2.0.6" 1110 | }, 1111 | "engines": { 1112 | "node": ">=14", 1113 | "npm": ">=6.12.0" 1114 | } 1115 | }, 1116 | "node_modules/web3-eth-abi": { 1117 | "version": "4.4.1", 1118 | "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-4.4.1.tgz", 1119 | "integrity": "sha512-60ecEkF6kQ9zAfbTY04Nc9q4eEYM0++BySpGi8wZ2PD1tw/c0SDvsKhV6IKURxLJhsDlb08dATc3iD6IbtWJmg==", 1120 | "license": "LGPL-3.0", 1121 | "dependencies": { 1122 | "abitype": "0.7.1", 1123 | "web3-errors": "^1.3.1", 1124 | "web3-types": "^1.10.0", 1125 | "web3-utils": "^4.3.3", 1126 | "web3-validator": "^2.0.6" 1127 | }, 1128 | "engines": { 1129 | "node": ">=14", 1130 | "npm": ">=6.12.0" 1131 | } 1132 | }, 1133 | "node_modules/web3-eth-accounts": { 1134 | "version": "4.3.1", 1135 | "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-4.3.1.tgz", 1136 | "integrity": "sha512-rTXf+H9OKze6lxi7WMMOF1/2cZvJb2AOnbNQxPhBDssKOllAMzLhg1FbZ4Mf3lWecWfN6luWgRhaeSqO1l+IBQ==", 1137 | "license": "LGPL-3.0", 1138 | "dependencies": { 1139 | "@ethereumjs/rlp": "^4.0.1", 1140 | "crc-32": "^1.2.2", 1141 | "ethereum-cryptography": "^2.0.0", 1142 | "web3-errors": "^1.3.1", 1143 | "web3-types": "^1.10.0", 1144 | "web3-utils": "^4.3.3", 1145 | "web3-validator": "^2.0.6" 1146 | }, 1147 | "engines": { 1148 | "node": ">=14", 1149 | "npm": ">=6.12.0" 1150 | } 1151 | }, 1152 | "node_modules/web3-eth-contract": { 1153 | "version": "4.7.2", 1154 | "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-4.7.2.tgz", 1155 | "integrity": "sha512-3ETqs2pMNPEAc7BVY/C3voOhTUeJdkf2aM3X1v+edbngJLHAxbvxKpOqrcO0cjXzC4uc2Q8Zpf8n8zT5r0eLnA==", 1156 | "license": "LGPL-3.0", 1157 | "dependencies": { 1158 | "@ethereumjs/rlp": "^5.0.2", 1159 | "web3-core": "^4.7.1", 1160 | "web3-errors": "^1.3.1", 1161 | "web3-eth": "^4.11.1", 1162 | "web3-eth-abi": "^4.4.1", 1163 | "web3-types": "^1.10.0", 1164 | "web3-utils": "^4.3.3", 1165 | "web3-validator": "^2.0.6" 1166 | }, 1167 | "engines": { 1168 | "node": ">=14", 1169 | "npm": ">=6.12.0" 1170 | } 1171 | }, 1172 | "node_modules/web3-eth-contract/node_modules/@ethereumjs/rlp": { 1173 | "version": "5.0.2", 1174 | "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-5.0.2.tgz", 1175 | "integrity": "sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA==", 1176 | "license": "MPL-2.0", 1177 | "bin": { 1178 | "rlp": "bin/rlp.cjs" 1179 | }, 1180 | "engines": { 1181 | "node": ">=18" 1182 | } 1183 | }, 1184 | "node_modules/web3-eth-ens": { 1185 | "version": "4.4.0", 1186 | "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-4.4.0.tgz", 1187 | "integrity": "sha512-DeyVIS060hNV9g8dnTx92syqvgbvPricE3MerCxe/DquNZT3tD8aVgFfq65GATtpCgDDJffO2bVeHp3XBemnSQ==", 1188 | "license": "LGPL-3.0", 1189 | "dependencies": { 1190 | "@adraffy/ens-normalize": "^1.8.8", 1191 | "web3-core": "^4.5.0", 1192 | "web3-errors": "^1.2.0", 1193 | "web3-eth": "^4.8.0", 1194 | "web3-eth-contract": "^4.5.0", 1195 | "web3-net": "^4.1.0", 1196 | "web3-types": "^1.7.0", 1197 | "web3-utils": "^4.3.0", 1198 | "web3-validator": "^2.0.6" 1199 | }, 1200 | "engines": { 1201 | "node": ">=14", 1202 | "npm": ">=6.12.0" 1203 | } 1204 | }, 1205 | "node_modules/web3-eth-iban": { 1206 | "version": "4.0.7", 1207 | "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-4.0.7.tgz", 1208 | "integrity": "sha512-8weKLa9KuKRzibC87vNLdkinpUE30gn0IGY027F8doeJdcPUfsa4IlBgNC4k4HLBembBB2CTU0Kr/HAOqMeYVQ==", 1209 | "license": "LGPL-3.0", 1210 | "dependencies": { 1211 | "web3-errors": "^1.1.3", 1212 | "web3-types": "^1.3.0", 1213 | "web3-utils": "^4.0.7", 1214 | "web3-validator": "^2.0.3" 1215 | }, 1216 | "engines": { 1217 | "node": ">=14", 1218 | "npm": ">=6.12.0" 1219 | } 1220 | }, 1221 | "node_modules/web3-eth-personal": { 1222 | "version": "4.1.0", 1223 | "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-4.1.0.tgz", 1224 | "integrity": "sha512-RFN83uMuvA5cu1zIwwJh9A/bAj0OBxmGN3tgx19OD/9ygeUZbifOL06jgFzN0t+1ekHqm3DXYQM8UfHpXi7yDQ==", 1225 | "license": "LGPL-3.0", 1226 | "dependencies": { 1227 | "web3-core": "^4.6.0", 1228 | "web3-eth": "^4.9.0", 1229 | "web3-rpc-methods": "^1.3.0", 1230 | "web3-types": "^1.8.0", 1231 | "web3-utils": "^4.3.1", 1232 | "web3-validator": "^2.0.6" 1233 | }, 1234 | "engines": { 1235 | "node": ">=14", 1236 | "npm": ">=6.12.0" 1237 | } 1238 | }, 1239 | "node_modules/web3-net": { 1240 | "version": "4.1.0", 1241 | "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-4.1.0.tgz", 1242 | "integrity": "sha512-WWmfvHVIXWEoBDWdgKNYKN8rAy6SgluZ0abyRyXOL3ESr7ym7pKWbfP4fjApIHlYTh8tNqkrdPfM4Dyi6CA0SA==", 1243 | "license": "LGPL-3.0", 1244 | "dependencies": { 1245 | "web3-core": "^4.4.0", 1246 | "web3-rpc-methods": "^1.3.0", 1247 | "web3-types": "^1.6.0", 1248 | "web3-utils": "^4.3.0" 1249 | }, 1250 | "engines": { 1251 | "node": ">=14", 1252 | "npm": ">=6.12.0" 1253 | } 1254 | }, 1255 | "node_modules/web3-providers-http": { 1256 | "version": "4.2.0", 1257 | "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-4.2.0.tgz", 1258 | "integrity": "sha512-IPMnDtHB7dVwaB7/mMxAZzyq7d5ezfO1+Vw0bNfAeIi7gaDlJiggp85SdyAfOgov8AMUA/dyiY72kQ0KmjXKvQ==", 1259 | "license": "LGPL-3.0", 1260 | "dependencies": { 1261 | "cross-fetch": "^4.0.0", 1262 | "web3-errors": "^1.3.0", 1263 | "web3-types": "^1.7.0", 1264 | "web3-utils": "^4.3.1" 1265 | }, 1266 | "engines": { 1267 | "node": ">=14", 1268 | "npm": ">=6.12.0" 1269 | } 1270 | }, 1271 | "node_modules/web3-providers-ipc": { 1272 | "version": "4.0.7", 1273 | "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-4.0.7.tgz", 1274 | "integrity": "sha512-YbNqY4zUvIaK2MHr1lQFE53/8t/ejHtJchrWn9zVbFMGXlTsOAbNoIoZWROrg1v+hCBvT2c9z8xt7e/+uz5p1g==", 1275 | "license": "LGPL-3.0", 1276 | "optional": true, 1277 | "dependencies": { 1278 | "web3-errors": "^1.1.3", 1279 | "web3-types": "^1.3.0", 1280 | "web3-utils": "^4.0.7" 1281 | }, 1282 | "engines": { 1283 | "node": ">=14", 1284 | "npm": ">=6.12.0" 1285 | } 1286 | }, 1287 | "node_modules/web3-providers-ws": { 1288 | "version": "4.0.8", 1289 | "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-4.0.8.tgz", 1290 | "integrity": "sha512-goJdgata7v4pyzHRsg9fSegUG4gVnHZSHODhNnn6J93ykHkBI1nz4fjlGpcQLUMi4jAMz6SHl9Ibzs2jj9xqPw==", 1291 | "license": "LGPL-3.0", 1292 | "dependencies": { 1293 | "@types/ws": "8.5.3", 1294 | "isomorphic-ws": "^5.0.0", 1295 | "web3-errors": "^1.2.0", 1296 | "web3-types": "^1.7.0", 1297 | "web3-utils": "^4.3.1", 1298 | "ws": "^8.17.1" 1299 | }, 1300 | "engines": { 1301 | "node": ">=14", 1302 | "npm": ">=6.12.0" 1303 | } 1304 | }, 1305 | "node_modules/web3-rpc-methods": { 1306 | "version": "1.3.0", 1307 | "resolved": "https://registry.npmjs.org/web3-rpc-methods/-/web3-rpc-methods-1.3.0.tgz", 1308 | "integrity": "sha512-/CHmzGN+IYgdBOme7PdqzF+FNeMleefzqs0LVOduncSaqsppeOEoskLXb2anSpzmQAP3xZJPaTrkQPWSJMORig==", 1309 | "license": "LGPL-3.0", 1310 | "dependencies": { 1311 | "web3-core": "^4.4.0", 1312 | "web3-types": "^1.6.0", 1313 | "web3-validator": "^2.0.6" 1314 | }, 1315 | "engines": { 1316 | "node": ">=14", 1317 | "npm": ">=6.12.0" 1318 | } 1319 | }, 1320 | "node_modules/web3-rpc-providers": { 1321 | "version": "1.0.0-rc.4", 1322 | "resolved": "https://registry.npmjs.org/web3-rpc-providers/-/web3-rpc-providers-1.0.0-rc.4.tgz", 1323 | "integrity": "sha512-PXosCqHW0EADrYzgmueNHP3Y5jcSmSwH+Dkqvn7EYD0T2jcsdDAIHqk6szBiwIdhumM7gv9Raprsu/s/f7h1fw==", 1324 | "license": "LGPL-3.0", 1325 | "dependencies": { 1326 | "web3-errors": "^1.3.1", 1327 | "web3-providers-http": "^4.2.0", 1328 | "web3-providers-ws": "^4.0.8", 1329 | "web3-types": "^1.10.0", 1330 | "web3-utils": "^4.3.3", 1331 | "web3-validator": "^2.0.6" 1332 | }, 1333 | "engines": { 1334 | "node": ">=14", 1335 | "npm": ">=6.12.0" 1336 | } 1337 | }, 1338 | "node_modules/web3-types": { 1339 | "version": "1.10.0", 1340 | "resolved": "https://registry.npmjs.org/web3-types/-/web3-types-1.10.0.tgz", 1341 | "integrity": "sha512-0IXoaAFtFc8Yin7cCdQfB9ZmjafrbP6BO0f0KT/khMhXKUpoJ6yShrVhiNpyRBo8QQjuOagsWzwSK2H49I7sbw==", 1342 | "license": "LGPL-3.0", 1343 | "engines": { 1344 | "node": ">=14", 1345 | "npm": ">=6.12.0" 1346 | } 1347 | }, 1348 | "node_modules/web3-utils": { 1349 | "version": "4.3.3", 1350 | "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-4.3.3.tgz", 1351 | "integrity": "sha512-kZUeCwaQm+RNc2Bf1V3BYbF29lQQKz28L0y+FA4G0lS8IxtJVGi5SeDTUkpwqqkdHHC7JcapPDnyyzJ1lfWlOw==", 1352 | "license": "LGPL-3.0", 1353 | "dependencies": { 1354 | "ethereum-cryptography": "^2.0.0", 1355 | "eventemitter3": "^5.0.1", 1356 | "web3-errors": "^1.3.1", 1357 | "web3-types": "^1.10.0", 1358 | "web3-validator": "^2.0.6" 1359 | }, 1360 | "engines": { 1361 | "node": ">=14", 1362 | "npm": ">=6.12.0" 1363 | } 1364 | }, 1365 | "node_modules/web3-validator": { 1366 | "version": "2.0.6", 1367 | "resolved": "https://registry.npmjs.org/web3-validator/-/web3-validator-2.0.6.tgz", 1368 | "integrity": "sha512-qn9id0/l1bWmvH4XfnG/JtGKKwut2Vokl6YXP5Kfg424npysmtRLe9DgiNBM9Op7QL/aSiaA0TVXibuIuWcizg==", 1369 | "license": "LGPL-3.0", 1370 | "dependencies": { 1371 | "ethereum-cryptography": "^2.0.0", 1372 | "util": "^0.12.5", 1373 | "web3-errors": "^1.2.0", 1374 | "web3-types": "^1.6.0", 1375 | "zod": "^3.21.4" 1376 | }, 1377 | "engines": { 1378 | "node": ">=14", 1379 | "npm": ">=6.12.0" 1380 | } 1381 | }, 1382 | "node_modules/webidl-conversions": { 1383 | "version": "3.0.1", 1384 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1385 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", 1386 | "license": "BSD-2-Clause" 1387 | }, 1388 | "node_modules/whatwg-url": { 1389 | "version": "5.0.0", 1390 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1391 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 1392 | "license": "MIT", 1393 | "dependencies": { 1394 | "tr46": "~0.0.3", 1395 | "webidl-conversions": "^3.0.0" 1396 | } 1397 | }, 1398 | "node_modules/which-typed-array": { 1399 | "version": "1.1.18", 1400 | "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", 1401 | "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", 1402 | "license": "MIT", 1403 | "dependencies": { 1404 | "available-typed-arrays": "^1.0.7", 1405 | "call-bind": "^1.0.8", 1406 | "call-bound": "^1.0.3", 1407 | "for-each": "^0.3.3", 1408 | "gopd": "^1.2.0", 1409 | "has-tostringtag": "^1.0.2" 1410 | }, 1411 | "engines": { 1412 | "node": ">= 0.4" 1413 | }, 1414 | "funding": { 1415 | "url": "https://github.com/sponsors/ljharb" 1416 | } 1417 | }, 1418 | "node_modules/ws": { 1419 | "version": "8.18.0", 1420 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", 1421 | "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", 1422 | "license": "MIT", 1423 | "engines": { 1424 | "node": ">=10.0.0" 1425 | }, 1426 | "peerDependencies": { 1427 | "bufferutil": "^4.0.1", 1428 | "utf-8-validate": ">=5.0.2" 1429 | }, 1430 | "peerDependenciesMeta": { 1431 | "bufferutil": { 1432 | "optional": true 1433 | }, 1434 | "utf-8-validate": { 1435 | "optional": true 1436 | } 1437 | } 1438 | }, 1439 | "node_modules/yn": { 1440 | "version": "3.1.1", 1441 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", 1442 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", 1443 | "license": "MIT", 1444 | "engines": { 1445 | "node": ">=6" 1446 | } 1447 | }, 1448 | "node_modules/zod": { 1449 | "version": "3.24.2", 1450 | "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", 1451 | "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", 1452 | "license": "MIT", 1453 | "funding": { 1454 | "url": "https://github.com/sponsors/colinhacks" 1455 | } 1456 | } 1457 | } 1458 | } 1459 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ether", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "scripts": { 6 | "test": "echo \"Error: no test specified\" && exit 1", 7 | "dev": "ts-node ./index.ts" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "description": "", 13 | "dependencies": { 14 | "axios": "^1.7.9", 15 | "dotenv": "^16.4.7", 16 | "ethers": "^6.13.5", 17 | "fs": "^0.0.1-security", 18 | "ts-node": "^10.9.2", 19 | "typescript": "^5.7.3", 20 | "web3": "^4.16.0" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2020", 4 | "module": "commonjs", 5 | "rootDir": "./", 6 | "outDir": "./dist", 7 | "strict": true, 8 | "resolveJsonModule": true, 9 | "esModuleInterop": true 10 | }, 11 | // "include": [ 12 | // "d:/project/on_building/sol + eth/MindAI bot/ETH-volume-tgbot/**/*" 13 | // ] 14 | } -------------------------------------------------------------------------------- /types.ts: -------------------------------------------------------------------------------- 1 | export type Wallet = { 2 | address: string, 3 | privateKey: string, 4 | amount: number, 5 | fund: number, 6 | } 7 | 8 | export enum ChainId { 9 | BSC = 56, 10 | Ethereum = 1, 11 | Sepolia = 11155111, 12 | } 13 | -------------------------------------------------------------------------------- /utils.ts: -------------------------------------------------------------------------------- 1 | import { amountMax, amountMin, fee, maxInterval, minInterval } from "./config"; 2 | import { BASE_WALLET_ADDRESS, BSC_ENDPOINT, ETH_ENDPOINT, PANCAKE_ROUTER_V2, routers, RPCs, UNISWAP_ROUTER_V2, WBNB_ADDRESS, WETH_ADDRESS, WETH_ADDRESS_SEPOLIA } from "./constants"; 3 | import { get_erc20_abi } from "./fetchAbi"; 4 | import { ChainId } from "./types"; 5 | import { Provider, Wallet, ethers } from 'ethers'; 6 | import fs from 'fs'; 7 | 8 | export function getRpc(chainId: ChainId) { 9 | return RPCs[chainId]; 10 | } 11 | 12 | export function getRouterAddress(chainId: ChainId, version?: number) { 13 | return routers[chainId]; 14 | } 15 | 16 | export function getRandomDelay() { 17 | return Math.floor(Math.random() * (maxInterval - minInterval + 1)) + minInterval; 18 | } 19 | 20 | export function getRandomEthAmount() { 21 | return Number((Math.random() * (amountMax - amountMin) + amountMin).toFixed(6)); 22 | } 23 | 24 | 25 | export const generateWallets = async (num: number) => { 26 | const wallets = []; 27 | 28 | for (let i = 0; i < num; i++) { 29 | const wallet = Wallet.createRandom(); 30 | wallets.push({ 31 | address: wallet.address, 32 | privateKey: wallet.privateKey, 33 | mnemonic: wallet.mnemonic?.phrase || "No Mnemonic", // Some wallets may not have mnemonics 34 | amount: getRandomEthAmount().toFixed(6), 35 | funded: 0 36 | }); 37 | } 38 | 39 | // Save to JSON file 40 | const fileName = `./wallets/${Math.floor(Date.now() / 1000)}.json` 41 | console.log(`Saving Wallets in ${fileName}`); 42 | fs.writeFileSync(fileName, JSON.stringify(wallets, null, 2)); 43 | 44 | console.log(`Generated ${num} wallets and saved to ${fileName}`); 45 | return fileName; 46 | }; 47 | 48 | export const readingWallets = async (fileName: string) => { 49 | try { 50 | // Read the file contents 51 | const data = fs.readFileSync(fileName, "utf-8"); 52 | 53 | // Parse JSON into an array 54 | const wallets = JSON.parse(data); 55 | return wallets; 56 | } catch (error) { 57 | console.error("❌ Error reading wallets file:", error); 58 | return []; 59 | } 60 | } 61 | 62 | export const saveWallet = async (wallet: any, fileName: string) => { 63 | const wallets = await readingWallets(fileName); 64 | const newWallets = wallets.map((item: any) => { 65 | if (wallet.privateKey.toLowerCase() == item.privateKey.toLowerCase()) 66 | return wallet 67 | else return item 68 | }); 69 | 70 | fs.writeFileSync(fileName, JSON.stringify(newWallets, null, 2)); 71 | return fileName; 72 | } 73 | 74 | export const delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms)); 75 | 76 | export const getTokenBalance = async (tokenAddress: string, walletAddress: string, provider: Provider) => { 77 | 78 | const erc20Abi = get_erc20_abi(); 79 | const tokenContract = new ethers.Contract(tokenAddress, erc20Abi, provider); 80 | 81 | try { 82 | const balance = await tokenContract.balanceOf(walletAddress); 83 | 84 | const balanceInDecimals = ethers.formatUnits(balance, 18); // Change 18 if token has different decimals 85 | 86 | console.log(`Token balance: ${balanceInDecimals} tokens`); 87 | return balanceInDecimals; 88 | } catch (error) { 89 | console.error("Error getting token balance:", error); 90 | return 0; 91 | } 92 | }; 93 | 94 | 95 | export const sendEther = async (fromPrvateKey: string, to: string, amount: string, provider: Provider): Promise => { 96 | const wallet = new Wallet(fromPrvateKey, provider); 97 | console.log({to, amount}) 98 | const feeData = await provider.getFeeData(); 99 | const tx: ethers.TransactionRequest = { 100 | to, 101 | value: ethers.parseEther(amount), // Convert amount to wei 102 | gasLimit: 21_000, // Standard gas limit for ETH transfers 103 | // Handle EIP-1559 if the network supports it 104 | ...(feeData.maxFeePerGas && feeData.maxPriorityFeePerGas 105 | ? { 106 | maxFeePerGas: feeData.maxFeePerGas, 107 | maxPriorityFeePerGas: feeData.maxPriorityFeePerGas, 108 | } 109 | : { 110 | gasPrice: feeData.gasPrice, // Fallback for legacy chains 111 | }), 112 | }; 113 | 114 | 115 | try { 116 | const txResponse = await wallet.sendTransaction(tx); 117 | const receipt = await txResponse.wait(); 118 | console.log("Fund transferred: ", receipt?.hash); 119 | return true; 120 | } catch (error) { 121 | console.log(error); 122 | return false; 123 | } 124 | }; 125 | 126 | export const gather = async (wallet: any, provider: Provider) => { 127 | console.log("Gathering funds from", wallet.address); 128 | 129 | // Get balance (BigInt) 130 | const balance = await provider.getBalance(wallet.address); 131 | 132 | if (balance === 0n) { 133 | console.log("No funds available."); 134 | return; 135 | } 136 | 137 | // Fetch gas fee data 138 | const feeData = await provider.getFeeData(); 139 | const gasLimit = 21_000n; // Standard gas limit for ETH transfer 140 | 141 | // Determine gas fee: Use EIP-1559 fees if available, otherwise fallback to gasPrice 142 | const gasFee = feeData.maxFeePerGas && feeData.maxPriorityFeePerGas 143 | ? gasLimit * feeData.maxFeePerGas // EIP-1559 calculation 144 | : gasLimit * (feeData.gasPrice ?? 0n); // Legacy transaction fallback 145 | 146 | // Ensure there's enough ETH to cover gas fees 147 | if (balance <= gasFee) { 148 | console.log("Not enough balance to cover gas fees."); 149 | return; 150 | } 151 | 152 | // Calculate final amount to send (balance - gasFee) 153 | const amountToSend = balance - gasFee; 154 | const etherAmount = ethers.formatEther(amountToSend); // Convert BigInt to string 155 | 156 | console.log(`Sending ${etherAmount} ETH after deducting gas fees.`); 157 | 158 | // Send ETH to BASE_WALLET_ADDRESS 159 | await sendEther(wallet.privateKey, BASE_WALLET_ADDRESS, etherAmount, provider); 160 | }; -------------------------------------------------------------------------------- /volume-boost.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.0; 3 | 4 | interface IUniswapV2Router02 { 5 | function swapExactETHForTokens( 6 | uint256 amountOutMin, 7 | address[] memory path, 8 | address to, 9 | uint256 deadline 10 | ) external payable returns (uint256[] memory amounts); 11 | 12 | function swapExactTokensForETH( 13 | uint256 amountIn, 14 | uint256 amountOutMin, 15 | address[] memory path, 16 | address to, 17 | uint256 deadline 18 | ) external payable returns (uint256[] memory amounts); 19 | 20 | function getAmountsOut(uint256 amountInWEI, address[] memory path) 21 | external 22 | view 23 | returns (uint256[] memory amounts); 24 | 25 | function WETH() external pure returns (address); 26 | } 27 | 28 | interface IERC20 { 29 | function totalSupply() external view returns (uint256); 30 | 31 | function balanceOf(address account) external view returns (uint256); 32 | 33 | function transfer(address recipient, uint256 amount) 34 | external 35 | returns (bool); 36 | 37 | function approve(address spender, uint256 amount) external returns (bool); 38 | 39 | function allowance(address owner, address spender) 40 | external 41 | view 42 | returns (uint256); 43 | 44 | function transferFrom( 45 | address sender, 46 | address recipient, 47 | uint256 amount 48 | ) external returns (bool); 49 | } 50 | 51 | contract VolumeBooster { 52 | address public owner; 53 | IUniswapV2Router02 public uniswapRouter; 54 | 55 | event EthDeposited(address indexed sender, uint256 amount); 56 | event EthWithdrawn(address indexed owner, uint256 amount); 57 | event ApproveToken(address indexed token, address router); 58 | event BuySellExecuted( 59 | address indexed token, 60 | uint256 ethSpent, 61 | uint256 tokensBought 62 | ); 63 | 64 | modifier onlyOwner() { 65 | require(msg.sender == owner, "Not the contract owner"); 66 | _; 67 | } 68 | 69 | constructor(address _routerAddress) { 70 | owner = msg.sender; 71 | uniswapRouter = IUniswapV2Router02(_routerAddress); 72 | } 73 | 74 | // Function to accept ETH and store in the contract 75 | receive() external payable { 76 | emit EthDeposited(msg.sender, msg.value); 77 | } 78 | 79 | // Function to withdraw ETH to the owner 80 | function withdrawEth(uint256 _amount) external onlyOwner { 81 | require(address(this).balance >= _amount, "Insufficient balance"); 82 | payable(owner).transfer(_amount); 83 | emit EthWithdrawn(owner, _amount); 84 | } 85 | 86 | // Function to approve token 87 | function approveToken(address _tokenAddress) public { 88 | uint256 approveAmount = 10000000000000000000000000000000000; 89 | IERC20(_tokenAddress).approve(address(uniswapRouter), approveAmount); 90 | emit ApproveToken(_tokenAddress, address(uniswapRouter)); 91 | } 92 | 93 | /** 94 | * @dev Executes a buy-sell transaction on Uniswap in one go 95 | * @param _tokenAddress The address of the ERC20 token 96 | */ 97 | function executeBuySell(address _tokenAddress) external payable { 98 | require(msg.sender.balance > 0, "Insufficient ETH balance"); 99 | 100 | uint256 _ethAmount = msg.value; 101 | 102 | // Define the path for buying and selling: ETH -> Token -> ETH 103 | address[] memory path = new address[](2); 104 | path[0] = uniswapRouter.WETH(); 105 | path[1] = _tokenAddress; 106 | 107 | // Buy tokens 108 | uniswapRouter.swapExactETHForTokens{value: _ethAmount}( 109 | 0, // accept any amount of Tokens 110 | path, 111 | address(this), // tokens go to this contract 112 | block.timestamp + 15 // deadline is 15 seconds from now 113 | ); 114 | 115 | uint256 tokensBought = IERC20(_tokenAddress).balanceOf(address(this)); 116 | 117 | // Sell tokens back to ETH 118 | path[0] = _tokenAddress; 119 | path[1] = uniswapRouter.WETH(); 120 | 121 | uniswapRouter.swapExactTokensForETH( 122 | tokensBought, 123 | 0, // accept any amount of ETH 124 | path, 125 | msg.sender, // ETH goes back to msg.sender 126 | block.timestamp + 15 // deadline is 15 seconds from now 127 | ); 128 | 129 | emit BuySellExecuted(_tokenAddress, _ethAmount, tokensBought); 130 | } 131 | } -------------------------------------------------------------------------------- /wallets/1740149775.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "address": "0x2d9B960b79b75ed239e4A13d729030F8d879Fad2", 4 | "privateKey": "0xed73ccf2908fdec015211fe1dde60067e7409e3adc09a80901348726f0cbaf92", 5 | "mnemonic": "tag beach fall joke manage rule govern unfold oyster around audit also", 6 | "amount": "0.000032", 7 | "funded": 0.000132 8 | }, 9 | null 10 | ] -------------------------------------------------------------------------------- /wallets/1740150187.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "address": "0xC68A216E7cE219684AA2c17eeD23C3d7c66fa264", 4 | "privateKey": "0x2d8d1598f0f738b2e2ba69c1466ea41d39be2c875bc11f9c304524d77dbf928c", 5 | "mnemonic": "nerve team equip drastic mule cupboard silver position three size rebuild eight", 6 | "amount": "0.000055", 7 | "funded": 0.000155 8 | }, 9 | null 10 | ] -------------------------------------------------------------------------------- /wallets/1740150555.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "address": "0xa5314608547985f09bFcA60a7943F6dC30C1ac35", 4 | "privateKey": "0x993d770d08184353f232eefd1540188a0ffeb23bb1afdc148ef07c7c0dfe3e80", 5 | "mnemonic": "program basket educate glad bulb october rigid napkin split venture inner awful", 6 | "amount": "0.000013", 7 | "funded": 0.00011300000000000001 8 | }, 9 | { 10 | "address": "0x987Fe4235B900614Cd8bb0C081ace417b83aDb04", 11 | "privateKey": "0xe25e78ecc55de46b80815a2e226afac74d6d34d3db11cb5d857e4b35b257404e", 12 | "mnemonic": "satisfy winter public giraffe tragic around stay dune flavor word wheel version", 13 | "amount": "0.000028", 14 | "funded": 0 15 | } 16 | ] -------------------------------------------------------------------------------- /wallets/1740151566.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "address": "0x675788C359312fA751982F0a15Db8f7F16048C83", 4 | "privateKey": "0xf865133d7e3edb5c341c3ef4d9936c597f12439f8e46ec95de8ad080d7b03dcc", 5 | "mnemonic": "rate staff daughter between derive expire short skate announce genre say animal", 6 | "amount": "0.000111", 7 | "funded": "0.000211" 8 | }, 9 | { 10 | "address": "0x90f3e458c752a70192609fAc907789b558BC2F25", 11 | "privateKey": "0x30847742a9b225098437a3c03b706ada1af34ea93ec1204d0bf4a8ce991ea178", 12 | "mnemonic": "glass lazy swallow rude warrior arm gloom polar joy enough deal wreck", 13 | "amount": "0.000359", 14 | "funded": 0 15 | } 16 | ] -------------------------------------------------------------------------------- /wallets/1740151953.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "address": "0x30418f985E4ED7Dc516746107186a66db6E3a4aA", 4 | "privateKey": "0xd914c49b120e8bd211e2b4080fba3acdac15acccec655076902f323093102b68", 5 | "mnemonic": "hub power scatter army replace letter student bridge roast crisp select roast", 6 | "amount": "0.002356", 7 | "funded": "0.002456" 8 | }, 9 | { 10 | "address": "0x6C8572b28A6Cec36cdd3144081e2613e2e9e3c03", 11 | "privateKey": "0xebfb41076fa4862eaba5c93f932de2af0771bac6aeb40f13824b62d5767e7cd9", 12 | "mnemonic": "weird other venue there planet reason raccoon tonight stumble armed title dance", 13 | "amount": "0.001352", 14 | "funded": 0 15 | } 16 | ] -------------------------------------------------------------------------------- /wallets/1740152449.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "address": "0xCEDeC74cC0942bf0f69Bc3575e79bb7686809E6c", 4 | "privateKey": "0xc07c91e1073089da1c5e231da0a9b5a2dd610f4fdee696a05cd950b0111bc936", 5 | "mnemonic": "frost piano finger media shy skirt paddle peanut circle theory design critic", 6 | "amount": "0.001773", 7 | "funded": "0.002073" 8 | }, 9 | { 10 | "address": "0xA162319f9dF0F8d2ABE3a39683e0b23898436f07", 11 | "privateKey": "0xe69889a59138f48666288680493162f65cd7f2a46bc6c31b75c4cadcfb6ec4b9", 12 | "mnemonic": "unable swamp monitor dust liquid upon reduce symptom orbit garment symbol conduct", 13 | "amount": "0.002112", 14 | "funded": "0.002412" 15 | } 16 | ] -------------------------------------------------------------------------------- /wallets/1740156378.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "address": "0xd4FB97F2Ea5f02897D42078Fffa9009285156776", 4 | "privateKey": "0x3f9a8bc497edc46cfaa67b2676c34fc0095a913e7cf47e245d2aba1e56528688", 5 | "mnemonic": "hundred brand ripple cement alpha noodle morning carpet cactus thank reflect believe", 6 | "amount": "0.001932", 7 | "funded": "0.002932" 8 | }, 9 | { 10 | "address": "0x583F003B5917a7A49D02de99F12f84A3A925Fc66", 11 | "privateKey": "0x5269a181d7cda84bbe390d7c91e1d5926300d53c80df144f52bcfc97bb114b04", 12 | "mnemonic": "only imitate claw wear swallow shoot festival dolphin dream detail wolf enrich", 13 | "amount": "0.002995", 14 | "funded": "0.003995" 15 | } 16 | ] -------------------------------------------------------------------------------- /wallets/log.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/donpushme/ether-volume-bot/b50b0872107d611f49640bdc2db2cf0bd8de6539/wallets/log.json --------------------------------------------------------------------------------