clanker-sdk 4.2.16 → 4.2.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli/cli.js CHANGED
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  // src/cli/cli.ts
4
- import { readFileSync as readFileSync3 } from "node:fs";
5
- import { dirname, join as join2 } from "node:path";
6
- import { fileURLToPath } from "node:url";
4
+ import { readFileSync as readFileSync3 } from "fs";
5
+ import { dirname, join as join2 } from "path";
6
+ import { fileURLToPath } from "url";
7
7
  import { Command } from "commander";
8
8
 
9
9
  // src/cli/commands/airdrop.ts
10
- import * as fs from "node:fs";
10
+ import * as fs from "fs";
11
11
 
12
12
  // src/utils/merkleTree.ts
13
13
  import { StandardMerkleTree } from "@openzeppelin/merkle-tree";
@@ -5548,6 +5548,33 @@ var monad = /* @__PURE__ */ defineChain({
5548
5548
  testnet: false
5549
5549
  });
5550
5550
 
5551
+ // src/utils/chains/robinhood.ts
5552
+ import { defineChain as defineChain2 } from "viem";
5553
+ var robinhood = /* @__PURE__ */ defineChain2({
5554
+ id: 4663,
5555
+ name: "Robinhood Chain",
5556
+ blockTime: 100,
5557
+ nativeCurrency: {
5558
+ name: "Ether",
5559
+ symbol: "ETH",
5560
+ decimals: 18
5561
+ },
5562
+ rpcUrls: {
5563
+ default: {
5564
+ http: ["https://rpc.mainnet.chain.robinhood.com"]
5565
+ }
5566
+ },
5567
+ blockExplorers: {
5568
+ default: {
5569
+ name: "Robinhood Chain Blockscout Explorer",
5570
+ url: "https://robinhoodchain.blockscout.com"
5571
+ }
5572
+ },
5573
+ contracts: {},
5574
+ testnet: false
5575
+ });
5576
+ var ROBINHOOD_WETH_ADDRESS = "0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73";
5577
+
5551
5578
  // src/utils/clankers.ts
5552
5579
  var CLANKERS = {
5553
5580
  clanker_v0: {
@@ -5796,6 +5823,30 @@ var CLANKERS = {
5796
5823
  feeDynamicHook: "0x0000000000000000000000000000000000000000",
5797
5824
  feeDynamicHookV2: "0x011a8ed40095F2D7E9c19125B8254b19678D68Cc"
5798
5825
  }
5826
+ },
5827
+ clanker_v4_robinhood: {
5828
+ abi: Clanker_v4_abi,
5829
+ token: {
5830
+ abi: ClankerToken_v4_abi,
5831
+ // Robinhood mainnet deploys the same ClankerToken creation bytecode as BSC v4.1.
5832
+ bytecode: ClankerToken_v4_bsc_bytecode
5833
+ },
5834
+ chainId: robinhood.id,
5835
+ type: "clanker_v4",
5836
+ address: "0xD3f2cC1731b7Fd17f28798835C2E02f0a1839A94",
5837
+ related: {
5838
+ locker: "0x290F735F63824BB5836cDe24a35F5103A5B5Bc99",
5839
+ vault: "0x99B2a80ed21c7af1F5cc1A97383DADeEC7DD1427",
5840
+ airdrop: "0x6f27372FF493A3855E6746b9a4fe6Ed2Cc3034B5",
5841
+ devbuy: "0xa27b1986e5c7e5371Cb6507f87918fBD0302fF5a",
5842
+ mevModule: "0xEA1Fe197dF140e5d88fC6B49f2d21Ea05092299e",
5843
+ mevDescendingFees: true,
5844
+ feeLocker: "0x88db2340bE5991B2b5Fca2Baee39B5CE048Cd70c",
5845
+ feeStaticHook: "0x0000000000000000000000000000000000000000",
5846
+ feeStaticHookV2: "0x48B8F6AD3A1b4aA477314c9a23035b8F84dDe8cc",
5847
+ feeDynamicHook: "0x0000000000000000000000000000000000000000",
5848
+ feeDynamicHookV2: "0x65efDF8Cce99b53C925DF878Df275Df21cB6E8Cc"
5849
+ }
5799
5850
  }
5800
5851
  };
5801
5852
  var Chains = [...new Set(Object.values(CLANKERS).map(({ chainId }) => chainId))];
@@ -5822,6 +5873,8 @@ var ClankerError = class _ClankerError extends Error {
5822
5873
  this.error = error;
5823
5874
  this.data = data;
5824
5875
  }
5876
+ error;
5877
+ data;
5825
5878
  static unknown(e, name) {
5826
5879
  return new _ClankerError(e, {
5827
5880
  type: "unknown",
@@ -6987,7 +7040,8 @@ var WETH_ADDRESSES = {
6987
7040
  [abstract2.id]: "0x3439153EB7AF838Ad19d56E1571FBD09333C2809",
6988
7041
  [monadTestnet2.id]: "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701",
6989
7042
  // WMON
6990
- [monad.id]: "0x3bd359c1119da7da1d913d1c4d2b7c461115433a"
7043
+ [monad.id]: "0x3bd359c1119da7da1d913d1c4d2b7c461115433a",
7044
+ [robinhood.id]: ROBINHOOD_WETH_ADDRESS
6991
7045
  };
6992
7046
  var DEFAULT_SUPPLY = 100000000000000000000000000000n;
6993
7047
  var POOL_POSITIONS = {
@@ -7491,7 +7545,7 @@ var clankerTokenV4Converter = async (config) => {
7491
7545
  },
7492
7546
  mevModuleConfig: {
7493
7547
  mevModule: clankerConfig.related?.mevModuleV2 || clankerConfig.related?.mevModule,
7494
- mevModuleData: clankerConfig.related?.mevModuleV2 ? encodeAbiParameters3(Clanker_MevSniperAuction_InitData_v4_1_abi, [
7548
+ mevModuleData: clankerConfig.related?.mevModuleV2 || clankerConfig.related?.mevDescendingFees ? encodeAbiParameters3(Clanker_MevSniperAuction_InitData_v4_1_abi, [
7495
7549
  {
7496
7550
  startingFee: cfg.sniperFees.startingFee,
7497
7551
  endingFee: cfg.sniperFees.endingFee,
@@ -8439,7 +8493,8 @@ var CHAIN_MAP = {
8439
8493
  ethereum: mainnet3,
8440
8494
  bsc: bsc3,
8441
8495
  unichain: unichain3,
8442
- monad
8496
+ monad,
8497
+ robinhood
8443
8498
  };
8444
8499
  var CHAIN_NAMES = Object.keys(CHAIN_MAP);
8445
8500
  function resolveChain(name) {
@@ -8451,9 +8506,9 @@ function resolveChain(name) {
8451
8506
  }
8452
8507
 
8453
8508
  // src/cli/utils/config.ts
8454
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
8455
- import { homedir } from "node:os";
8456
- import { join } from "node:path";
8509
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
8510
+ import { homedir } from "os";
8511
+ import { join } from "path";
8457
8512
  var CONFIG_DIR = join(homedir(), ".clanker");
8458
8513
  var CONFIG_PATH = join(CONFIG_DIR, "config.json");
8459
8514
  function ensureDir() {
@@ -10191,21 +10246,16 @@ function buildV4Config(f) {
10191
10246
  };
10192
10247
  return token;
10193
10248
  }
10194
- var CHAIN_ID_MAP = {
10195
- base: 8453,
10196
- "base-sepolia": 84532,
10197
- arbitrum: 42161,
10198
- ethereum: 1,
10199
- bsc: 56,
10200
- unichain: 130,
10201
- monad: 143
10202
- };
10203
10249
  function resolveChainId(name) {
10204
- return CHAIN_ID_MAP[name] || 8453;
10250
+ try {
10251
+ return resolveChain(name).id;
10252
+ } catch {
10253
+ return 8453;
10254
+ }
10205
10255
  }
10206
10256
  function resolveChainName(chainId) {
10207
- for (const [name, id] of Object.entries(CHAIN_ID_MAP)) {
10208
- if (id === chainId) return name;
10257
+ for (const name of CHAIN_NAMES) {
10258
+ if (resolveChain(name).id === chainId) return name;
10209
10259
  }
10210
10260
  return "base";
10211
10261
  }
@@ -10596,7 +10646,8 @@ var PUBLIC_RPCS = {
10596
10646
  arbitrum: "https://arb1.arbitrum.io/rpc",
10597
10647
  ethereum: "https://eth.llamarpc.com",
10598
10648
  bsc: "https://bsc-dataseed.binance.org",
10599
- unichain: "https://mainnet.unichain.org"
10649
+ unichain: "https://mainnet.unichain.org",
10650
+ robinhood: "https://rpc.mainnet.chain.robinhood.com"
10600
10651
  };
10601
10652
  function registerSetupCommand(program2) {
10602
10653
  program2.command("setup").description("Configure wallet and RPC settings").action(async (_opts, command) => {
@@ -1,5 +1,5 @@
1
1
  // src/cli/commands/airdrop.ts
2
- import * as fs from "node:fs";
2
+ import * as fs from "fs";
3
3
 
4
4
  // src/utils/merkleTree.ts
5
5
  import { StandardMerkleTree } from "@openzeppelin/merkle-tree";
@@ -5540,6 +5540,33 @@ var monad = /* @__PURE__ */ defineChain({
5540
5540
  testnet: false
5541
5541
  });
5542
5542
 
5543
+ // src/utils/chains/robinhood.ts
5544
+ import { defineChain as defineChain2 } from "viem";
5545
+ var robinhood = /* @__PURE__ */ defineChain2({
5546
+ id: 4663,
5547
+ name: "Robinhood Chain",
5548
+ blockTime: 100,
5549
+ nativeCurrency: {
5550
+ name: "Ether",
5551
+ symbol: "ETH",
5552
+ decimals: 18
5553
+ },
5554
+ rpcUrls: {
5555
+ default: {
5556
+ http: ["https://rpc.mainnet.chain.robinhood.com"]
5557
+ }
5558
+ },
5559
+ blockExplorers: {
5560
+ default: {
5561
+ name: "Robinhood Chain Blockscout Explorer",
5562
+ url: "https://robinhoodchain.blockscout.com"
5563
+ }
5564
+ },
5565
+ contracts: {},
5566
+ testnet: false
5567
+ });
5568
+ var ROBINHOOD_WETH_ADDRESS = "0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73";
5569
+
5543
5570
  // src/utils/clankers.ts
5544
5571
  var CLANKERS = {
5545
5572
  clanker_v0: {
@@ -5788,6 +5815,30 @@ var CLANKERS = {
5788
5815
  feeDynamicHook: "0x0000000000000000000000000000000000000000",
5789
5816
  feeDynamicHookV2: "0x011a8ed40095F2D7E9c19125B8254b19678D68Cc"
5790
5817
  }
5818
+ },
5819
+ clanker_v4_robinhood: {
5820
+ abi: Clanker_v4_abi,
5821
+ token: {
5822
+ abi: ClankerToken_v4_abi,
5823
+ // Robinhood mainnet deploys the same ClankerToken creation bytecode as BSC v4.1.
5824
+ bytecode: ClankerToken_v4_bsc_bytecode
5825
+ },
5826
+ chainId: robinhood.id,
5827
+ type: "clanker_v4",
5828
+ address: "0xD3f2cC1731b7Fd17f28798835C2E02f0a1839A94",
5829
+ related: {
5830
+ locker: "0x290F735F63824BB5836cDe24a35F5103A5B5Bc99",
5831
+ vault: "0x99B2a80ed21c7af1F5cc1A97383DADeEC7DD1427",
5832
+ airdrop: "0x6f27372FF493A3855E6746b9a4fe6Ed2Cc3034B5",
5833
+ devbuy: "0xa27b1986e5c7e5371Cb6507f87918fBD0302fF5a",
5834
+ mevModule: "0xEA1Fe197dF140e5d88fC6B49f2d21Ea05092299e",
5835
+ mevDescendingFees: true,
5836
+ feeLocker: "0x88db2340bE5991B2b5Fca2Baee39B5CE048Cd70c",
5837
+ feeStaticHook: "0x0000000000000000000000000000000000000000",
5838
+ feeStaticHookV2: "0x48B8F6AD3A1b4aA477314c9a23035b8F84dDe8cc",
5839
+ feeDynamicHook: "0x0000000000000000000000000000000000000000",
5840
+ feeDynamicHookV2: "0x65efDF8Cce99b53C925DF878Df275Df21cB6E8Cc"
5841
+ }
5791
5842
  }
5792
5843
  };
5793
5844
  var Chains = [...new Set(Object.values(CLANKERS).map(({ chainId }) => chainId))];
@@ -5814,6 +5865,8 @@ var ClankerError = class _ClankerError extends Error {
5814
5865
  this.error = error;
5815
5866
  this.data = data;
5816
5867
  }
5868
+ error;
5869
+ data;
5817
5870
  static unknown(e, name) {
5818
5871
  return new _ClankerError(e, {
5819
5872
  type: "unknown",
@@ -6971,7 +7024,8 @@ var WETH_ADDRESSES = {
6971
7024
  [abstract2.id]: "0x3439153EB7AF838Ad19d56E1571FBD09333C2809",
6972
7025
  [monadTestnet2.id]: "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701",
6973
7026
  // WMON
6974
- [monad.id]: "0x3bd359c1119da7da1d913d1c4d2b7c461115433a"
7027
+ [monad.id]: "0x3bd359c1119da7da1d913d1c4d2b7c461115433a",
7028
+ [robinhood.id]: ROBINHOOD_WETH_ADDRESS
6975
7029
  };
6976
7030
  var DEFAULT_SUPPLY = 100000000000000000000000000000n;
6977
7031
  var POOL_POSITIONS = {
@@ -7421,7 +7475,7 @@ var clankerTokenV4Converter = async (config) => {
7421
7475
  },
7422
7476
  mevModuleConfig: {
7423
7477
  mevModule: clankerConfig.related?.mevModuleV2 || clankerConfig.related?.mevModule,
7424
- mevModuleData: clankerConfig.related?.mevModuleV2 ? encodeAbiParameters3(Clanker_MevSniperAuction_InitData_v4_1_abi, [
7478
+ mevModuleData: clankerConfig.related?.mevModuleV2 || clankerConfig.related?.mevDescendingFees ? encodeAbiParameters3(Clanker_MevSniperAuction_InitData_v4_1_abi, [
7425
7479
  {
7426
7480
  startingFee: cfg.sniperFees.startingFee,
7427
7481
  endingFee: cfg.sniperFees.endingFee,
@@ -8306,7 +8360,8 @@ var CHAIN_MAP = {
8306
8360
  ethereum: mainnet3,
8307
8361
  bsc: bsc3,
8308
8362
  unichain: unichain3,
8309
- monad
8363
+ monad,
8364
+ robinhood
8310
8365
  };
8311
8366
  var CHAIN_NAMES = Object.keys(CHAIN_MAP);
8312
8367
  function resolveChain(name) {
@@ -8318,9 +8373,9 @@ function resolveChain(name) {
8318
8373
  }
8319
8374
 
8320
8375
  // src/cli/utils/config.ts
8321
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
8322
- import { homedir } from "node:os";
8323
- import { join } from "node:path";
8376
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
8377
+ import { homedir } from "os";
8378
+ import { join } from "path";
8324
8379
  var CONFIG_DIR = join(homedir(), ".clanker");
8325
8380
  var CONFIG_PATH = join(CONFIG_DIR, "config.json");
8326
8381
  function loadConfig() {
@@ -1,5 +1,5 @@
1
1
  import { Command } from 'commander';
2
- import { C as ClankerTokenV4 } from '../../clankerTokenV4-NqiH_j7p.js';
2
+ import { C as ClankerTokenV4 } from '../../clankerTokenV4-BCVJqN5H.js';
3
3
  import 'viem';
4
4
  import 'zod/v4';
5
5
 
@@ -39,6 +39,33 @@ var monad = /* @__PURE__ */ defineChain({
39
39
  testnet: false
40
40
  });
41
41
 
42
+ // src/utils/chains/robinhood.ts
43
+ import { defineChain as defineChain2 } from "viem";
44
+ var robinhood = /* @__PURE__ */ defineChain2({
45
+ id: 4663,
46
+ name: "Robinhood Chain",
47
+ blockTime: 100,
48
+ nativeCurrency: {
49
+ name: "Ether",
50
+ symbol: "ETH",
51
+ decimals: 18
52
+ },
53
+ rpcUrls: {
54
+ default: {
55
+ http: ["https://rpc.mainnet.chain.robinhood.com"]
56
+ }
57
+ },
58
+ blockExplorers: {
59
+ default: {
60
+ name: "Robinhood Chain Blockscout Explorer",
61
+ url: "https://robinhoodchain.blockscout.com"
62
+ }
63
+ },
64
+ contracts: {},
65
+ testnet: false
66
+ });
67
+ var ROBINHOOD_WETH_ADDRESS = "0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73";
68
+
42
69
  // src/constants.ts
43
70
  var DEGEN_ADDRESS = "0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed";
44
71
  var NATIVE_ADDRESS = "0x20DD04c17AFD5c9a8b3f2cdacaa8Ee7907385BEF";
@@ -59,7 +86,8 @@ var WETH_ADDRESSES = {
59
86
  [abstract.id]: "0x3439153EB7AF838Ad19d56E1571FBD09333C2809",
60
87
  [monadTestnet.id]: "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701",
61
88
  // WMON
62
- [monad.id]: "0x3bd359c1119da7da1d913d1c4d2b7c461115433a"
89
+ [monad.id]: "0x3bd359c1119da7da1d913d1c4d2b7c461115433a",
90
+ [robinhood.id]: ROBINHOOD_WETH_ADDRESS
63
91
  };
64
92
  var DEFAULT_SUPPLY = 100000000000000000000000000000n;
65
93
  var POOL_POSITIONS = {
@@ -208,6 +236,8 @@ var ClankerError = class _ClankerError extends Error {
208
236
  this.error = error;
209
237
  this.data = data;
210
238
  }
239
+ error;
240
+ data;
211
241
  static unknown(e, name) {
212
242
  return new _ClankerError(e, {
213
243
  type: "unknown",
@@ -6411,6 +6441,30 @@ var CLANKERS = {
6411
6441
  feeDynamicHook: "0x0000000000000000000000000000000000000000",
6412
6442
  feeDynamicHookV2: "0x011a8ed40095F2D7E9c19125B8254b19678D68Cc"
6413
6443
  }
6444
+ },
6445
+ clanker_v4_robinhood: {
6446
+ abi: Clanker_v4_abi,
6447
+ token: {
6448
+ abi: ClankerToken_v4_abi,
6449
+ // Robinhood mainnet deploys the same ClankerToken creation bytecode as BSC v4.1.
6450
+ bytecode: ClankerToken_v4_bsc_bytecode
6451
+ },
6452
+ chainId: robinhood.id,
6453
+ type: "clanker_v4",
6454
+ address: "0xD3f2cC1731b7Fd17f28798835C2E02f0a1839A94",
6455
+ related: {
6456
+ locker: "0x290F735F63824BB5836cDe24a35F5103A5B5Bc99",
6457
+ vault: "0x99B2a80ed21c7af1F5cc1A97383DADeEC7DD1427",
6458
+ airdrop: "0x6f27372FF493A3855E6746b9a4fe6Ed2Cc3034B5",
6459
+ devbuy: "0xa27b1986e5c7e5371Cb6507f87918fBD0302fF5a",
6460
+ mevModule: "0xEA1Fe197dF140e5d88fC6B49f2d21Ea05092299e",
6461
+ mevDescendingFees: true,
6462
+ feeLocker: "0x88db2340bE5991B2b5Fca2Baee39B5CE048Cd70c",
6463
+ feeStaticHook: "0x0000000000000000000000000000000000000000",
6464
+ feeStaticHookV2: "0x48B8F6AD3A1b4aA477314c9a23035b8F84dDe8cc",
6465
+ feeDynamicHook: "0x0000000000000000000000000000000000000000",
6466
+ feeDynamicHookV2: "0x65efDF8Cce99b53C925DF878Df275Df21cB6E8Cc"
6467
+ }
6414
6468
  }
6415
6469
  };
6416
6470
  var Chains = [...new Set(Object.values(CLANKERS).map(({ chainId }) => chainId))];
@@ -8423,7 +8477,7 @@ var clankerTokenV4Converter = async (config) => {
8423
8477
  },
8424
8478
  mevModuleConfig: {
8425
8479
  mevModule: clankerConfig.related?.mevModuleV2 || clankerConfig.related?.mevModule,
8426
- mevModuleData: clankerConfig.related?.mevModuleV2 ? encodeAbiParameters2(Clanker_MevSniperAuction_InitData_v4_1_abi, [
8480
+ mevModuleData: clankerConfig.related?.mevModuleV2 || clankerConfig.related?.mevDescendingFees ? encodeAbiParameters2(Clanker_MevSniperAuction_InitData_v4_1_abi, [
8427
8481
  {
8428
8482
  startingFee: cfg.sniperFees.startingFee,
8429
8483
  endingFee: cfg.sniperFees.endingFee,
@@ -9112,7 +9166,8 @@ var CHAIN_MAP = {
9112
9166
  ethereum: mainnet3,
9113
9167
  bsc: bsc3,
9114
9168
  unichain: unichain3,
9115
- monad
9169
+ monad,
9170
+ robinhood
9116
9171
  };
9117
9172
  var CHAIN_NAMES = Object.keys(CHAIN_MAP);
9118
9173
  function resolveChain(name) {
@@ -9268,9 +9323,9 @@ import {
9268
9323
  import { privateKeyToAccount } from "viem/accounts";
9269
9324
 
9270
9325
  // src/cli/utils/config.ts
9271
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
9272
- import { homedir } from "node:os";
9273
- import { join } from "node:path";
9326
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
9327
+ import { homedir } from "os";
9328
+ import { join } from "path";
9274
9329
  var CONFIG_DIR = join(homedir(), ".clanker");
9275
9330
  var CONFIG_PATH = join(CONFIG_DIR, "config.json");
9276
9331
  function loadConfig() {
@@ -9309,7 +9364,7 @@ function resolveClients(opts) {
9309
9364
  }
9310
9365
 
9311
9366
  // src/cli/commands/airdrop.ts
9312
- import * as fs from "node:fs";
9367
+ import * as fs from "fs";
9313
9368
 
9314
9369
  // src/utils/merkleTree.ts
9315
9370
  import { StandardMerkleTree as StandardMerkleTree2 } from "@openzeppelin/merkle-tree";
@@ -9709,21 +9764,16 @@ function buildV4Config(f) {
9709
9764
  };
9710
9765
  return token;
9711
9766
  }
9712
- var CHAIN_ID_MAP = {
9713
- base: 8453,
9714
- "base-sepolia": 84532,
9715
- arbitrum: 42161,
9716
- ethereum: 1,
9717
- bsc: 56,
9718
- unichain: 130,
9719
- monad: 143
9720
- };
9721
9767
  function resolveChainId(name) {
9722
- return CHAIN_ID_MAP[name] || 8453;
9768
+ try {
9769
+ return resolveChain(name).id;
9770
+ } catch {
9771
+ return 8453;
9772
+ }
9723
9773
  }
9724
9774
  function resolveChainName(chainId) {
9725
- for (const [name, id] of Object.entries(CHAIN_ID_MAP)) {
9726
- if (id === chainId) return name;
9775
+ for (const name of CHAIN_NAMES) {
9776
+ if (resolveChain(name).id === chainId) return name;
9727
9777
  }
9728
9778
  return "base";
9729
9779
  }
@@ -9,6 +9,8 @@ var ClankerError = class _ClankerError extends Error {
9
9
  this.error = error;
10
10
  this.data = data;
11
11
  }
12
+ error;
13
+ data;
12
14
  static unknown(e, name) {
13
15
  return new _ClankerError(e, {
14
16
  type: "unknown",
@@ -2233,6 +2235,33 @@ var monad = /* @__PURE__ */ defineChain({
2233
2235
  testnet: false
2234
2236
  });
2235
2237
 
2238
+ // src/utils/chains/robinhood.ts
2239
+ import { defineChain as defineChain2 } from "viem";
2240
+ var robinhood = /* @__PURE__ */ defineChain2({
2241
+ id: 4663,
2242
+ name: "Robinhood Chain",
2243
+ blockTime: 100,
2244
+ nativeCurrency: {
2245
+ name: "Ether",
2246
+ symbol: "ETH",
2247
+ decimals: 18
2248
+ },
2249
+ rpcUrls: {
2250
+ default: {
2251
+ http: ["https://rpc.mainnet.chain.robinhood.com"]
2252
+ }
2253
+ },
2254
+ blockExplorers: {
2255
+ default: {
2256
+ name: "Robinhood Chain Blockscout Explorer",
2257
+ url: "https://robinhoodchain.blockscout.com"
2258
+ }
2259
+ },
2260
+ contracts: {},
2261
+ testnet: false
2262
+ });
2263
+ var ROBINHOOD_WETH_ADDRESS = "0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73";
2264
+
2236
2265
  // src/constants.ts
2237
2266
  var WBNB_ADDRESS = "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c";
2238
2267
  var WETH_ADDRESSES = {
@@ -2245,7 +2274,8 @@ var WETH_ADDRESSES = {
2245
2274
  [abstract.id]: "0x3439153EB7AF838Ad19d56E1571FBD09333C2809",
2246
2275
  [monadTestnet.id]: "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701",
2247
2276
  // WMON
2248
- [monad.id]: "0x3bd359c1119da7da1d913d1c4d2b7c461115433a"
2277
+ [monad.id]: "0x3bd359c1119da7da1d913d1c4d2b7c461115433a",
2278
+ [robinhood.id]: ROBINHOOD_WETH_ADDRESS
2249
2279
  };
2250
2280
  var DEFAULT_SUPPLY = 100000000000000000000000000000n;
2251
2281
  var POOL_POSITIONS = {
@@ -7451,6 +7481,30 @@ var CLANKERS = {
7451
7481
  feeDynamicHook: "0x0000000000000000000000000000000000000000",
7452
7482
  feeDynamicHookV2: "0x011a8ed40095F2D7E9c19125B8254b19678D68Cc"
7453
7483
  }
7484
+ },
7485
+ clanker_v4_robinhood: {
7486
+ abi: Clanker_v4_abi,
7487
+ token: {
7488
+ abi: ClankerToken_v4_abi,
7489
+ // Robinhood mainnet deploys the same ClankerToken creation bytecode as BSC v4.1.
7490
+ bytecode: ClankerToken_v4_bsc_bytecode
7491
+ },
7492
+ chainId: robinhood.id,
7493
+ type: "clanker_v4",
7494
+ address: "0xD3f2cC1731b7Fd17f28798835C2E02f0a1839A94",
7495
+ related: {
7496
+ locker: "0x290F735F63824BB5836cDe24a35F5103A5B5Bc99",
7497
+ vault: "0x99B2a80ed21c7af1F5cc1A97383DADeEC7DD1427",
7498
+ airdrop: "0x6f27372FF493A3855E6746b9a4fe6Ed2Cc3034B5",
7499
+ devbuy: "0xa27b1986e5c7e5371Cb6507f87918fBD0302fF5a",
7500
+ mevModule: "0xEA1Fe197dF140e5d88fC6B49f2d21Ea05092299e",
7501
+ mevDescendingFees: true,
7502
+ feeLocker: "0x88db2340bE5991B2b5Fca2Baee39B5CE048Cd70c",
7503
+ feeStaticHook: "0x0000000000000000000000000000000000000000",
7504
+ feeStaticHookV2: "0x48B8F6AD3A1b4aA477314c9a23035b8F84dDe8cc",
7505
+ feeDynamicHook: "0x0000000000000000000000000000000000000000",
7506
+ feeDynamicHookV2: "0x65efDF8Cce99b53C925DF878Df275Df21cB6E8Cc"
7507
+ }
7454
7508
  }
7455
7509
  };
7456
7510
  var Chains = [...new Set(Object.values(CLANKERS).map(({ chainId }) => chainId))];
@@ -7841,7 +7895,7 @@ var clankerTokenV4Converter = async (config) => {
7841
7895
  },
7842
7896
  mevModuleConfig: {
7843
7897
  mevModule: clankerConfig.related?.mevModuleV2 || clankerConfig.related?.mevModule,
7844
- mevModuleData: clankerConfig.related?.mevModuleV2 ? encodeAbiParameters2(Clanker_MevSniperAuction_InitData_v4_1_abi, [
7898
+ mevModuleData: clankerConfig.related?.mevModuleV2 || clankerConfig.related?.mevDescendingFees ? encodeAbiParameters2(Clanker_MevSniperAuction_InitData_v4_1_abi, [
7845
7899
  {
7846
7900
  startingFee: cfg.sniperFees.startingFee,
7847
7901
  endingFee: cfg.sniperFees.endingFee,
@@ -9078,7 +9132,8 @@ var CHAIN_MAP = {
9078
9132
  ethereum: mainnet3,
9079
9133
  bsc: bsc3,
9080
9134
  unichain: unichain3,
9081
- monad
9135
+ monad,
9136
+ robinhood
9082
9137
  };
9083
9138
  var CHAIN_NAMES = Object.keys(CHAIN_MAP);
9084
9139
  function resolveChain(name) {
@@ -9090,9 +9145,9 @@ function resolveChain(name) {
9090
9145
  }
9091
9146
 
9092
9147
  // src/cli/utils/config.ts
9093
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
9094
- import { homedir } from "node:os";
9095
- import { join } from "node:path";
9148
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
9149
+ import { homedir } from "os";
9150
+ import { join } from "path";
9096
9151
  var CONFIG_DIR = join(homedir(), ".clanker");
9097
9152
  var CONFIG_PATH = join(CONFIG_DIR, "config.json");
9098
9153
  function loadConfig() {
@@ -1950,6 +1950,33 @@ var monad = /* @__PURE__ */ defineChain({
1950
1950
  testnet: false
1951
1951
  });
1952
1952
 
1953
+ // src/utils/chains/robinhood.ts
1954
+ import { defineChain as defineChain2 } from "viem";
1955
+ var robinhood = /* @__PURE__ */ defineChain2({
1956
+ id: 4663,
1957
+ name: "Robinhood Chain",
1958
+ blockTime: 100,
1959
+ nativeCurrency: {
1960
+ name: "Ether",
1961
+ symbol: "ETH",
1962
+ decimals: 18
1963
+ },
1964
+ rpcUrls: {
1965
+ default: {
1966
+ http: ["https://rpc.mainnet.chain.robinhood.com"]
1967
+ }
1968
+ },
1969
+ blockExplorers: {
1970
+ default: {
1971
+ name: "Robinhood Chain Blockscout Explorer",
1972
+ url: "https://robinhoodchain.blockscout.com"
1973
+ }
1974
+ },
1975
+ contracts: {},
1976
+ testnet: false
1977
+ });
1978
+ var ROBINHOOD_WETH_ADDRESS = "0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73";
1979
+
1953
1980
  // src/constants.ts
1954
1981
  var WBNB_ADDRESS = "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c";
1955
1982
  var WETH_ADDRESSES = {
@@ -1962,7 +1989,8 @@ var WETH_ADDRESSES = {
1962
1989
  [abstract.id]: "0x3439153EB7AF838Ad19d56E1571FBD09333C2809",
1963
1990
  [monadTestnet.id]: "0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701",
1964
1991
  // WMON
1965
- [monad.id]: "0x3bd359c1119da7da1d913d1c4d2b7c461115433a"
1992
+ [monad.id]: "0x3bd359c1119da7da1d913d1c4d2b7c461115433a",
1993
+ [robinhood.id]: ROBINHOOD_WETH_ADDRESS
1966
1994
  };
1967
1995
  var DEFAULT_SUPPLY = 100000000000000000000000000000n;
1968
1996
  var POOL_POSITIONS = {
@@ -6613,6 +6641,30 @@ var CLANKERS = {
6613
6641
  feeDynamicHook: "0x0000000000000000000000000000000000000000",
6614
6642
  feeDynamicHookV2: "0x011a8ed40095F2D7E9c19125B8254b19678D68Cc"
6615
6643
  }
6644
+ },
6645
+ clanker_v4_robinhood: {
6646
+ abi: Clanker_v4_abi,
6647
+ token: {
6648
+ abi: ClankerToken_v4_abi,
6649
+ // Robinhood mainnet deploys the same ClankerToken creation bytecode as BSC v4.1.
6650
+ bytecode: ClankerToken_v4_bsc_bytecode
6651
+ },
6652
+ chainId: robinhood.id,
6653
+ type: "clanker_v4",
6654
+ address: "0xD3f2cC1731b7Fd17f28798835C2E02f0a1839A94",
6655
+ related: {
6656
+ locker: "0x290F735F63824BB5836cDe24a35F5103A5B5Bc99",
6657
+ vault: "0x99B2a80ed21c7af1F5cc1A97383DADeEC7DD1427",
6658
+ airdrop: "0x6f27372FF493A3855E6746b9a4fe6Ed2Cc3034B5",
6659
+ devbuy: "0xa27b1986e5c7e5371Cb6507f87918fBD0302fF5a",
6660
+ mevModule: "0xEA1Fe197dF140e5d88fC6B49f2d21Ea05092299e",
6661
+ mevDescendingFees: true,
6662
+ feeLocker: "0x88db2340bE5991B2b5Fca2Baee39B5CE048Cd70c",
6663
+ feeStaticHook: "0x0000000000000000000000000000000000000000",
6664
+ feeStaticHookV2: "0x48B8F6AD3A1b4aA477314c9a23035b8F84dDe8cc",
6665
+ feeDynamicHook: "0x0000000000000000000000000000000000000000",
6666
+ feeDynamicHookV2: "0x65efDF8Cce99b53C925DF878Df275Df21cB6E8Cc"
6667
+ }
6616
6668
  }
6617
6669
  };
6618
6670
  var Chains = [...new Set(Object.values(CLANKERS).map(({ chainId }) => chainId))];
@@ -7003,7 +7055,7 @@ var clankerTokenV4Converter = async (config) => {
7003
7055
  },
7004
7056
  mevModuleConfig: {
7005
7057
  mevModule: clankerConfig.related?.mevModuleV2 || clankerConfig.related?.mevModule,
7006
- mevModuleData: clankerConfig.related?.mevModuleV2 ? encodeAbiParameters2(Clanker_MevSniperAuction_InitData_v4_1_abi, [
7058
+ mevModuleData: clankerConfig.related?.mevModuleV2 || clankerConfig.related?.mevDescendingFees ? encodeAbiParameters2(Clanker_MevSniperAuction_InitData_v4_1_abi, [
7007
7059
  {
7008
7060
  startingFee: cfg.sniperFees.startingFee,
7009
7061
  endingFee: cfg.sniperFees.endingFee,
@@ -7144,6 +7196,8 @@ var ClankerError = class _ClankerError extends Error {
7144
7196
  this.error = error;
7145
7197
  this.data = data;
7146
7198
  }
7199
+ error;
7200
+ data;
7147
7201
  static unknown(e, name) {
7148
7202
  return new _ClankerError(e, {
7149
7203
  type: "unknown",
@@ -8022,7 +8076,8 @@ var CHAIN_MAP = {
8022
8076
  ethereum: mainnet3,
8023
8077
  bsc: bsc3,
8024
8078
  unichain: unichain3,
8025
- monad
8079
+ monad,
8080
+ robinhood
8026
8081
  };
8027
8082
  var CHAIN_NAMES = Object.keys(CHAIN_MAP);
8028
8083
  function resolveChain(name) {
@@ -8034,9 +8089,9 @@ function resolveChain(name) {
8034
8089
  }
8035
8090
 
8036
8091
  // src/cli/utils/config.ts
8037
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
8038
- import { homedir } from "node:os";
8039
- import { join } from "node:path";
8092
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
8093
+ import { homedir } from "os";
8094
+ import { join } from "path";
8040
8095
  var CONFIG_DIR = join(homedir(), ".clanker");
8041
8096
  var CONFIG_PATH = join(CONFIG_DIR, "config.json");
8042
8097
  function loadConfig() {