liquid-sdk 1.3.2 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -197,6 +197,23 @@ interface LiquidSDKConfig {
197
197
  publicClient?: any;
198
198
  walletClient?: any;
199
199
  }
200
+ interface BidInAuctionParams {
201
+ /** The pool key identifying the token's Uniswap V4 pool */
202
+ poolKey: PoolKey;
203
+ /** True if swapping token0 → token1 (typically ETH → token) */
204
+ zeroForOne: boolean;
205
+ /** Amount of input token (in wei) */
206
+ amountIn: bigint;
207
+ /** Minimum output tokens to receive (slippage protection) */
208
+ amountOutMinimum: bigint;
209
+ /** The auction round to bid in (must match current round on-chain) */
210
+ round: bigint;
211
+ /** ETH bid amount — sent as msg.value, must equal (gasPrice - gasPeg) × paymentPerGasUnit */
212
+ bidAmount: bigint;
213
+ }
214
+ interface BidInAuctionResult {
215
+ txHash: Hash;
216
+ }
200
217
  interface DeployTokenResult {
201
218
  tokenAddress: Address;
202
219
  txHash: Hash;
@@ -244,6 +261,35 @@ declare class LiquidSDK {
244
261
  getAuctionDecayStartTime(poolId: Hex): Promise<bigint>;
245
262
  getAuctionMaxRounds(): Promise<bigint>;
246
263
  getAuctionGasPriceForBid(auctionGasPeg: bigint, desiredBidAmount: bigint): Promise<bigint>;
264
+ /**
265
+ * Bid in a sniper auction for early access to a newly launched token.
266
+ *
267
+ * The auction lets bidders compete via gas price — the bid amount is
268
+ * determined by how much your tx.gasprice exceeds the pool's gasPeg.
269
+ *
270
+ * @example
271
+ * ```typescript
272
+ * // 1. Get auction state
273
+ * const state = await sdk.getAuctionState(poolId);
274
+ *
275
+ * // 2. Calculate gas price for desired bid
276
+ * const gasPrice = await sdk.getAuctionGasPriceForBid(state.gasPeg, bidAmount);
277
+ *
278
+ * // 3. Get pool key from token rewards
279
+ * const rewards = await sdk.getTokenRewards(tokenAddress);
280
+ *
281
+ * // 4. Bid
282
+ * const result = await sdk.bidInAuction({
283
+ * poolKey: rewards.poolKey,
284
+ * zeroForOne: true, // ETH → token
285
+ * amountIn: parseEther("0.1"), // swap 0.1 ETH
286
+ * amountOutMinimum: 0n, // set slippage
287
+ * round: state.round,
288
+ * bidAmount: parseEther("0.01"),
289
+ * }, gasPrice);
290
+ * ```
291
+ */
292
+ bidInAuction(params: BidInAuctionParams, maxFeePerGas: bigint): Promise<BidInAuctionResult>;
247
293
  getAirdropInfo(tokenAddress: Address): Promise<AirdropInfo>;
248
294
  getAirdropClaimable(tokenAddress: Address, recipient: Address, allocatedAmount: bigint): Promise<bigint>;
249
295
  claimAirdrop(tokenAddress: Address, recipient: Address, allocatedAmount: bigint, proof: Hex[]): Promise<Hash>;
@@ -304,17 +350,18 @@ declare const ADDRESSES: {
304
350
  readonly FACTORY: Address;
305
351
  readonly POOL_EXTENSION_ALLOWLIST: Address;
306
352
  readonly FEE_LOCKER: Address;
307
- readonly LP_LOCKER: Address;
308
353
  readonly LP_LOCKER_FEE_CONVERSION: Address;
309
354
  readonly VAULT: Address;
310
355
  readonly HOOK_DYNAMIC_FEE_V2: Address;
311
356
  readonly HOOK_STATIC_FEE_V2: Address;
312
357
  readonly SNIPER_AUCTION_V2: Address;
313
358
  readonly SNIPER_UTIL_V2: Address;
314
- readonly MEV_BLOCK_DELAY: Address;
359
+ readonly MEV_DESCENDING_FEES: Address;
315
360
  readonly AIRDROP_V2: Address;
316
361
  readonly UNIV4_ETH_DEV_BUY: Address;
317
- readonly LIQUID_DEPLOYER_LIB: Address;
362
+ readonly UNIV3_ETH_DEV_BUY: Address;
363
+ readonly PRESALE_ETH_TO_CREATOR: Address;
364
+ readonly PRESALE_ALLOWLIST: Address;
318
365
  };
319
366
  declare const EXTERNAL: {
320
367
  readonly POOL_MANAGER: Address;
@@ -361,7 +408,7 @@ interface PoolPosition {
361
408
  declare const POOL_POSITIONS: {
362
409
  /** Single position, 100% of liquidity in one range */
363
410
  readonly Standard: PoolPosition[];
364
- /** 3-tranche Liquid default (hardcoded for ~10 ETH start, ~$2070/ETH) */
411
+ /** 5-position layout with concentrated mid-range liquidity */
365
412
  readonly Liquid: PoolPosition[];
366
413
  };
367
414
  /**
@@ -469,7 +516,31 @@ declare const DEFAULT_CHAIN: {
469
516
  formatters: {
470
517
  readonly block: {
471
518
  exclude: [] | undefined;
472
- format: (args: viem_chains.OpStackRpcBlock, action?: string | undefined) => {
519
+ format: (args: viem_chains.OpStackRpcBlock, action
520
+ /**
521
+ * Pre-built position configurations.
522
+ *
523
+ * - **Standard**: Single position covering full range (~$20K → $1.5B).
524
+ * Default starting tick -230400 (≈10 ETH market cap).
525
+ *
526
+ * - **Liquid**: 3-tranche default for Liquid Protocol.
527
+ * Hardcoded for ≈10 ETH start at ~$2070/ETH.
528
+ * For dynamic market cap targets, use `createPositionsUSD()` instead.
529
+ *
530
+ * Note: positionBps must sum to 10,000 (100%).
531
+ */
532
+ ? /**
533
+ * Pre-built position configurations.
534
+ *
535
+ * - **Standard**: Single position covering full range (~$20K → $1.5B).
536
+ * Default starting tick -230400 (≈10 ETH market cap).
537
+ *
538
+ * - **Liquid**: 3-tranche default for Liquid Protocol.
539
+ * Hardcoded for ≈10 ETH start at ~$2070/ETH.
540
+ * For dynamic market cap targets, use `createPositionsUSD()` instead.
541
+ *
542
+ * Note: positionBps must sum to 10,000 (100%).
543
+ */: string | undefined) => {
473
544
  baseFeePerGas: bigint | null;
474
545
  blobGasUsed: bigint;
475
546
  difficulty: bigint;
@@ -2396,4 +2467,4 @@ declare function parseContext(contextString: string): LiquidContext | null;
2396
2467
  */
2397
2468
  declare function parseMetadata(metadataString: string): LiquidMetadata | null;
2398
2469
 
2399
- export { ADDRESSES, type AirdropInfo, DEFAULTS, DEFAULT_CHAIN, DEFAULT_CHAIN_ID, DEFAULT_RPC_URL, DEFAULT_TRANCHES_USD, type DeployTokenParams, type DeployTokenResult, type DeploymentConfig, type DeploymentInfo, type DevBuyParams, type DynamicFeeConfig, ERC20Abi, EXTERNAL, type ExtensionConfig, FEE, FeePreference, type GetTokensOptions, LiquidAirdropV2Abi, type LiquidContext, LiquidFactoryAbi, LiquidFeeLockerAbi, LiquidHookDynamicFeeV2Abi, LiquidLpLockerAbi, type LiquidMetadata, LiquidMevBlockDelayAbi, LiquidPoolExtensionAllowlistAbi, LiquidSDK, type LiquidSDKConfig, LiquidSniperAuctionV2Abi, LiquidSniperUtilV2Abi, LiquidTokenAbi, LiquidUniv4EthDevBuyAbi, LiquidVaultAbi, type LockerConfig, type MarketCapTranche, type MarketCapTrancheUSD, type MevModuleConfig, POOL_POSITIONS, type PoolConfig, type PoolDynamicConfigVars, type PoolDynamicFeeVars, type PoolKey, type PoolPosition, type PositionArrays, type PositionConfig, type SniperAuctionConfig, type SniperAuctionFeeConfig, type SniperAuctionState, type SocialMediaUrl, TOKEN, type TokenConfig, type TokenCreatedEvent, type TokenRewardInfo, type VaultAllocation, buildContext, buildMetadata, createDefaultPositions, createPositions, createPositionsUSD, describePositions, encodeDynamicFeePoolData, encodeFeeConversionLockerData, encodeSniperAuctionData, encodeStaticFeePoolData, getTickFromMarketCapETH, getTickFromMarketCapStable, getTickFromMarketCapUSD, marketCapFromTickETH, marketCapFromTickUSD, parseContext, parseMetadata };
2470
+ export { ADDRESSES, type AirdropInfo, type BidInAuctionParams, type BidInAuctionResult, DEFAULTS, DEFAULT_CHAIN, DEFAULT_CHAIN_ID, DEFAULT_RPC_URL, DEFAULT_TRANCHES_USD, type DeployTokenParams, type DeployTokenResult, type DeploymentConfig, type DeploymentInfo, type DevBuyParams, type DynamicFeeConfig, ERC20Abi, EXTERNAL, type ExtensionConfig, FEE, FeePreference, type GetTokensOptions, LiquidAirdropV2Abi, type LiquidContext, LiquidFactoryAbi, LiquidFeeLockerAbi, LiquidHookDynamicFeeV2Abi, LiquidLpLockerAbi, type LiquidMetadata, LiquidMevBlockDelayAbi, LiquidPoolExtensionAllowlistAbi, LiquidSDK, type LiquidSDKConfig, LiquidSniperAuctionV2Abi, LiquidSniperUtilV2Abi, LiquidTokenAbi, LiquidUniv4EthDevBuyAbi, LiquidVaultAbi, type LockerConfig, type MarketCapTranche, type MarketCapTrancheUSD, type MevModuleConfig, POOL_POSITIONS, type PoolConfig, type PoolDynamicConfigVars, type PoolDynamicFeeVars, type PoolKey, type PoolPosition, type PositionArrays, type PositionConfig, type SniperAuctionConfig, type SniperAuctionFeeConfig, type SniperAuctionState, type SocialMediaUrl, TOKEN, type TokenConfig, type TokenCreatedEvent, type TokenRewardInfo, type VaultAllocation, buildContext, buildMetadata, createDefaultPositions, createPositions, createPositionsUSD, describePositions, encodeDynamicFeePoolData, encodeFeeConversionLockerData, encodeSniperAuctionData, encodeStaticFeePoolData, getTickFromMarketCapETH, getTickFromMarketCapStable, getTickFromMarketCapUSD, marketCapFromTickETH, marketCapFromTickUSD, parseContext, parseMetadata };
package/dist/index.d.ts CHANGED
@@ -197,6 +197,23 @@ interface LiquidSDKConfig {
197
197
  publicClient?: any;
198
198
  walletClient?: any;
199
199
  }
200
+ interface BidInAuctionParams {
201
+ /** The pool key identifying the token's Uniswap V4 pool */
202
+ poolKey: PoolKey;
203
+ /** True if swapping token0 → token1 (typically ETH → token) */
204
+ zeroForOne: boolean;
205
+ /** Amount of input token (in wei) */
206
+ amountIn: bigint;
207
+ /** Minimum output tokens to receive (slippage protection) */
208
+ amountOutMinimum: bigint;
209
+ /** The auction round to bid in (must match current round on-chain) */
210
+ round: bigint;
211
+ /** ETH bid amount — sent as msg.value, must equal (gasPrice - gasPeg) × paymentPerGasUnit */
212
+ bidAmount: bigint;
213
+ }
214
+ interface BidInAuctionResult {
215
+ txHash: Hash;
216
+ }
200
217
  interface DeployTokenResult {
201
218
  tokenAddress: Address;
202
219
  txHash: Hash;
@@ -244,6 +261,35 @@ declare class LiquidSDK {
244
261
  getAuctionDecayStartTime(poolId: Hex): Promise<bigint>;
245
262
  getAuctionMaxRounds(): Promise<bigint>;
246
263
  getAuctionGasPriceForBid(auctionGasPeg: bigint, desiredBidAmount: bigint): Promise<bigint>;
264
+ /**
265
+ * Bid in a sniper auction for early access to a newly launched token.
266
+ *
267
+ * The auction lets bidders compete via gas price — the bid amount is
268
+ * determined by how much your tx.gasprice exceeds the pool's gasPeg.
269
+ *
270
+ * @example
271
+ * ```typescript
272
+ * // 1. Get auction state
273
+ * const state = await sdk.getAuctionState(poolId);
274
+ *
275
+ * // 2. Calculate gas price for desired bid
276
+ * const gasPrice = await sdk.getAuctionGasPriceForBid(state.gasPeg, bidAmount);
277
+ *
278
+ * // 3. Get pool key from token rewards
279
+ * const rewards = await sdk.getTokenRewards(tokenAddress);
280
+ *
281
+ * // 4. Bid
282
+ * const result = await sdk.bidInAuction({
283
+ * poolKey: rewards.poolKey,
284
+ * zeroForOne: true, // ETH → token
285
+ * amountIn: parseEther("0.1"), // swap 0.1 ETH
286
+ * amountOutMinimum: 0n, // set slippage
287
+ * round: state.round,
288
+ * bidAmount: parseEther("0.01"),
289
+ * }, gasPrice);
290
+ * ```
291
+ */
292
+ bidInAuction(params: BidInAuctionParams, maxFeePerGas: bigint): Promise<BidInAuctionResult>;
247
293
  getAirdropInfo(tokenAddress: Address): Promise<AirdropInfo>;
248
294
  getAirdropClaimable(tokenAddress: Address, recipient: Address, allocatedAmount: bigint): Promise<bigint>;
249
295
  claimAirdrop(tokenAddress: Address, recipient: Address, allocatedAmount: bigint, proof: Hex[]): Promise<Hash>;
@@ -304,17 +350,18 @@ declare const ADDRESSES: {
304
350
  readonly FACTORY: Address;
305
351
  readonly POOL_EXTENSION_ALLOWLIST: Address;
306
352
  readonly FEE_LOCKER: Address;
307
- readonly LP_LOCKER: Address;
308
353
  readonly LP_LOCKER_FEE_CONVERSION: Address;
309
354
  readonly VAULT: Address;
310
355
  readonly HOOK_DYNAMIC_FEE_V2: Address;
311
356
  readonly HOOK_STATIC_FEE_V2: Address;
312
357
  readonly SNIPER_AUCTION_V2: Address;
313
358
  readonly SNIPER_UTIL_V2: Address;
314
- readonly MEV_BLOCK_DELAY: Address;
359
+ readonly MEV_DESCENDING_FEES: Address;
315
360
  readonly AIRDROP_V2: Address;
316
361
  readonly UNIV4_ETH_DEV_BUY: Address;
317
- readonly LIQUID_DEPLOYER_LIB: Address;
362
+ readonly UNIV3_ETH_DEV_BUY: Address;
363
+ readonly PRESALE_ETH_TO_CREATOR: Address;
364
+ readonly PRESALE_ALLOWLIST: Address;
318
365
  };
319
366
  declare const EXTERNAL: {
320
367
  readonly POOL_MANAGER: Address;
@@ -361,7 +408,7 @@ interface PoolPosition {
361
408
  declare const POOL_POSITIONS: {
362
409
  /** Single position, 100% of liquidity in one range */
363
410
  readonly Standard: PoolPosition[];
364
- /** 3-tranche Liquid default (hardcoded for ~10 ETH start, ~$2070/ETH) */
411
+ /** 5-position layout with concentrated mid-range liquidity */
365
412
  readonly Liquid: PoolPosition[];
366
413
  };
367
414
  /**
@@ -469,7 +516,31 @@ declare const DEFAULT_CHAIN: {
469
516
  formatters: {
470
517
  readonly block: {
471
518
  exclude: [] | undefined;
472
- format: (args: viem_chains.OpStackRpcBlock, action?: string | undefined) => {
519
+ format: (args: viem_chains.OpStackRpcBlock, action
520
+ /**
521
+ * Pre-built position configurations.
522
+ *
523
+ * - **Standard**: Single position covering full range (~$20K → $1.5B).
524
+ * Default starting tick -230400 (≈10 ETH market cap).
525
+ *
526
+ * - **Liquid**: 3-tranche default for Liquid Protocol.
527
+ * Hardcoded for ≈10 ETH start at ~$2070/ETH.
528
+ * For dynamic market cap targets, use `createPositionsUSD()` instead.
529
+ *
530
+ * Note: positionBps must sum to 10,000 (100%).
531
+ */
532
+ ? /**
533
+ * Pre-built position configurations.
534
+ *
535
+ * - **Standard**: Single position covering full range (~$20K → $1.5B).
536
+ * Default starting tick -230400 (≈10 ETH market cap).
537
+ *
538
+ * - **Liquid**: 3-tranche default for Liquid Protocol.
539
+ * Hardcoded for ≈10 ETH start at ~$2070/ETH.
540
+ * For dynamic market cap targets, use `createPositionsUSD()` instead.
541
+ *
542
+ * Note: positionBps must sum to 10,000 (100%).
543
+ */: string | undefined) => {
473
544
  baseFeePerGas: bigint | null;
474
545
  blobGasUsed: bigint;
475
546
  difficulty: bigint;
@@ -2396,4 +2467,4 @@ declare function parseContext(contextString: string): LiquidContext | null;
2396
2467
  */
2397
2468
  declare function parseMetadata(metadataString: string): LiquidMetadata | null;
2398
2469
 
2399
- export { ADDRESSES, type AirdropInfo, DEFAULTS, DEFAULT_CHAIN, DEFAULT_CHAIN_ID, DEFAULT_RPC_URL, DEFAULT_TRANCHES_USD, type DeployTokenParams, type DeployTokenResult, type DeploymentConfig, type DeploymentInfo, type DevBuyParams, type DynamicFeeConfig, ERC20Abi, EXTERNAL, type ExtensionConfig, FEE, FeePreference, type GetTokensOptions, LiquidAirdropV2Abi, type LiquidContext, LiquidFactoryAbi, LiquidFeeLockerAbi, LiquidHookDynamicFeeV2Abi, LiquidLpLockerAbi, type LiquidMetadata, LiquidMevBlockDelayAbi, LiquidPoolExtensionAllowlistAbi, LiquidSDK, type LiquidSDKConfig, LiquidSniperAuctionV2Abi, LiquidSniperUtilV2Abi, LiquidTokenAbi, LiquidUniv4EthDevBuyAbi, LiquidVaultAbi, type LockerConfig, type MarketCapTranche, type MarketCapTrancheUSD, type MevModuleConfig, POOL_POSITIONS, type PoolConfig, type PoolDynamicConfigVars, type PoolDynamicFeeVars, type PoolKey, type PoolPosition, type PositionArrays, type PositionConfig, type SniperAuctionConfig, type SniperAuctionFeeConfig, type SniperAuctionState, type SocialMediaUrl, TOKEN, type TokenConfig, type TokenCreatedEvent, type TokenRewardInfo, type VaultAllocation, buildContext, buildMetadata, createDefaultPositions, createPositions, createPositionsUSD, describePositions, encodeDynamicFeePoolData, encodeFeeConversionLockerData, encodeSniperAuctionData, encodeStaticFeePoolData, getTickFromMarketCapETH, getTickFromMarketCapStable, getTickFromMarketCapUSD, marketCapFromTickETH, marketCapFromTickUSD, parseContext, parseMetadata };
2470
+ export { ADDRESSES, type AirdropInfo, type BidInAuctionParams, type BidInAuctionResult, DEFAULTS, DEFAULT_CHAIN, DEFAULT_CHAIN_ID, DEFAULT_RPC_URL, DEFAULT_TRANCHES_USD, type DeployTokenParams, type DeployTokenResult, type DeploymentConfig, type DeploymentInfo, type DevBuyParams, type DynamicFeeConfig, ERC20Abi, EXTERNAL, type ExtensionConfig, FEE, FeePreference, type GetTokensOptions, LiquidAirdropV2Abi, type LiquidContext, LiquidFactoryAbi, LiquidFeeLockerAbi, LiquidHookDynamicFeeV2Abi, LiquidLpLockerAbi, type LiquidMetadata, LiquidMevBlockDelayAbi, LiquidPoolExtensionAllowlistAbi, LiquidSDK, type LiquidSDKConfig, LiquidSniperAuctionV2Abi, LiquidSniperUtilV2Abi, LiquidTokenAbi, LiquidUniv4EthDevBuyAbi, LiquidVaultAbi, type LockerConfig, type MarketCapTranche, type MarketCapTrancheUSD, type MevModuleConfig, POOL_POSITIONS, type PoolConfig, type PoolDynamicConfigVars, type PoolDynamicFeeVars, type PoolKey, type PoolPosition, type PositionArrays, type PositionConfig, type SniperAuctionConfig, type SniperAuctionFeeConfig, type SniperAuctionState, type SocialMediaUrl, TOKEN, type TokenConfig, type TokenCreatedEvent, type TokenRewardInfo, type VaultAllocation, buildContext, buildMetadata, createDefaultPositions, createPositions, createPositionsUSD, describePositions, encodeDynamicFeePoolData, encodeFeeConversionLockerData, encodeSniperAuctionData, encodeStaticFeePoolData, getTickFromMarketCapETH, getTickFromMarketCapStable, getTickFromMarketCapUSD, marketCapFromTickETH, marketCapFromTickUSD, parseContext, parseMetadata };
package/dist/index.js CHANGED
@@ -72,20 +72,21 @@ var import_chains2 = require("viem/chains");
72
72
  // src/constants.ts
73
73
  var import_chains = require("viem/chains");
74
74
  var ADDRESSES = {
75
- FACTORY: "0x0000003482fe299E72d4908368044A8A173BE576",
76
- POOL_EXTENSION_ALLOWLIST: "0x000003Afb1b070F037D2871eE0A6b8c8f53F7B77",
77
- FEE_LOCKER: "0x000008B9242b7e4432f6c4b1EeAD93562f9Cc94d",
78
- LP_LOCKER: "0x00000548732DfA56Be1257cE44D0CFc3B46dDb2A",
79
- LP_LOCKER_FEE_CONVERSION: "0x00000547518784420CEeF761fb18D884bb908102",
80
- VAULT: "0x000001c5263F4d64CdC343cDA9C8bF961CF8376c",
81
- HOOK_DYNAMIC_FEE_V2: "0x2A2F73CDDa098d639bd8Bbcd7dF2bf24E06728cC",
82
- HOOK_STATIC_FEE_V2: "0xb2401c5369AaCF62F8d615623C7F68F84da428Cc",
83
- SNIPER_AUCTION_V2: "0x000007b64003ee07a69576F98859a0a36b854260",
84
- SNIPER_UTIL_V2: "0x000003Ee0cb9B0C82C6C7FCB7b81a9883F285270",
85
- MEV_BLOCK_DELAY: "0x0000035D83588954F3c581c3A66251b3F06AD5e4",
86
- AIRDROP_V2: "0x00000C222442512b08446D33dd9754a7F260BE79",
87
- UNIV4_ETH_DEV_BUY: "0x00000d7DE1f0A3FA7957F5d8A2b97B0E24e5783D",
88
- LIQUID_DEPLOYER_LIB: "0x00000f88b2d37A2006F2F0C8552d22E0b8945202"
75
+ FACTORY: "0x04F1a284168743759BE6554f607a10CEBdB77760",
76
+ POOL_EXTENSION_ALLOWLIST: "0xb614167d79aDBaA9BA35d05fE1d5542d7316Ccaa",
77
+ FEE_LOCKER: "0xF7d3BE3FC0de76fA5550C29A8F6fa53667B876FF",
78
+ LP_LOCKER_FEE_CONVERSION: "0x77247fCD1d5e34A3703AcA898A591Dc7422435f3",
79
+ VAULT: "0xdFCCC93257c20519A9005A2281CFBdF84836d50E",
80
+ HOOK_DYNAMIC_FEE_V2: "0x80E2F7dC8C2C880BbC4BDF80A5Fb0eB8B1DB68CC",
81
+ HOOK_STATIC_FEE_V2: "0x9811f10Cd549c754Fa9E5785989c422A762c28cc",
82
+ SNIPER_AUCTION_V2: "0x187e8627c02c58F31831953C1268e157d3BfCefd",
83
+ SNIPER_UTIL_V2: "0x2B6cd5Be183c388Dd0074d53c52317df1414cd9f",
84
+ MEV_DESCENDING_FEES: "0x8D6B080e48756A99F3893491D556B5d6907b6910",
85
+ AIRDROP_V2: "0x1423974d48f525462f1c087cBFdCC20BDBc33CdD",
86
+ UNIV4_ETH_DEV_BUY: "0x5934097864dC487D21A7B4e4EEe201A39ceF728D",
87
+ UNIV3_ETH_DEV_BUY: "0x376028cfb6b9A120E24Aa14c3FAc4205179c0025",
88
+ PRESALE_ETH_TO_CREATOR: "0x3bca63EcB49d5f917092d10fA879Fdb422740163",
89
+ PRESALE_ALLOWLIST: "0xCBb4ccC4B94E23233c14759f4F9629F7dD01f10B"
89
90
  };
90
91
  var EXTERNAL = {
91
92
  POOL_MANAGER: "0x498581fF718922c3f8e6A244956aF099B2652b2b",
@@ -123,31 +124,37 @@ var POOL_POSITIONS = {
123
124
  positionBps: 1e4
124
125
  }
125
126
  ],
126
- /** 3-tranche Liquid default (hardcoded for ~10 ETH start, ~$2070/ETH) */
127
+ /** 5-position layout with concentrated mid-range liquidity */
127
128
  Liquid: [
128
129
  {
129
130
  tickLower: -230400,
130
- // ~$20K starting
131
- tickUpper: -198600,
132
- // ~$500K
133
- positionBps: 4e3
134
- // 40%
131
+ tickUpper: -216e3,
132
+ positionBps: 1e3
133
+ // 10%
135
134
  },
136
135
  {
137
- tickLower: -198600,
138
- // ~$500K
139
- tickUpper: -168600,
140
- // ~$10M
136
+ tickLower: -216e3,
137
+ tickUpper: -155e3,
141
138
  positionBps: 5e3
142
139
  // 50%
143
140
  },
144
141
  {
145
- tickLower: -168600,
146
- // ~$10M
147
- tickUpper: -122600,
148
- // ~$1B
149
- positionBps: 1e3
150
- // 10%
142
+ tickLower: -202e3,
143
+ tickUpper: -155e3,
144
+ positionBps: 1500
145
+ // 15%
146
+ },
147
+ {
148
+ tickLower: -155e3,
149
+ tickUpper: -12e4,
150
+ positionBps: 2e3
151
+ // 20%
152
+ },
153
+ {
154
+ tickLower: -141e3,
155
+ tickUpper: -12e4,
156
+ positionBps: 500
157
+ // 5%
151
158
  }
152
159
  ]
153
160
  };
@@ -1618,6 +1625,79 @@ var LiquidSDK = class {
1618
1625
  args: [auctionGasPeg, desiredBidAmount]
1619
1626
  });
1620
1627
  }
1628
+ /**
1629
+ * Bid in a sniper auction for early access to a newly launched token.
1630
+ *
1631
+ * The auction lets bidders compete via gas price — the bid amount is
1632
+ * determined by how much your tx.gasprice exceeds the pool's gasPeg.
1633
+ *
1634
+ * @example
1635
+ * ```typescript
1636
+ * // 1. Get auction state
1637
+ * const state = await sdk.getAuctionState(poolId);
1638
+ *
1639
+ * // 2. Calculate gas price for desired bid
1640
+ * const gasPrice = await sdk.getAuctionGasPriceForBid(state.gasPeg, bidAmount);
1641
+ *
1642
+ * // 3. Get pool key from token rewards
1643
+ * const rewards = await sdk.getTokenRewards(tokenAddress);
1644
+ *
1645
+ * // 4. Bid
1646
+ * const result = await sdk.bidInAuction({
1647
+ * poolKey: rewards.poolKey,
1648
+ * zeroForOne: true, // ETH → token
1649
+ * amountIn: parseEther("0.1"), // swap 0.1 ETH
1650
+ * amountOutMinimum: 0n, // set slippage
1651
+ * round: state.round,
1652
+ * bidAmount: parseEther("0.01"),
1653
+ * }, gasPrice);
1654
+ * ```
1655
+ */
1656
+ async bidInAuction(params, maxFeePerGas) {
1657
+ if (!this.walletClient?.account) {
1658
+ throw new Error("walletClient with account required for bidInAuction");
1659
+ }
1660
+ const hookData = (0, import_viem2.encodeAbiParameters)(
1661
+ [
1662
+ {
1663
+ type: "tuple",
1664
+ components: [
1665
+ { type: "bytes", name: "mevModuleSwapData" },
1666
+ { type: "bytes", name: "poolExtensionSwapData" }
1667
+ ]
1668
+ }
1669
+ ],
1670
+ [
1671
+ {
1672
+ mevModuleSwapData: (0, import_viem2.encodeAbiParameters)(
1673
+ [{ type: "address" }],
1674
+ [ADDRESSES.SNIPER_UTIL_V2]
1675
+ ),
1676
+ poolExtensionSwapData: "0x"
1677
+ }
1678
+ ]
1679
+ );
1680
+ const txHash = await this.walletClient.writeContract({
1681
+ address: ADDRESSES.SNIPER_UTIL_V2,
1682
+ abi: LiquidSniperUtilV2Abi,
1683
+ functionName: "bidInAuction",
1684
+ args: [
1685
+ {
1686
+ poolKey: params.poolKey,
1687
+ zeroForOne: params.zeroForOne,
1688
+ amountIn: params.amountIn,
1689
+ amountOutMinimum: params.amountOutMinimum,
1690
+ hookData
1691
+ },
1692
+ params.round
1693
+ ],
1694
+ value: params.bidAmount,
1695
+ chain: import_chains2.base,
1696
+ account: this.walletClient.account,
1697
+ maxFeePerGas
1698
+ });
1699
+ return { txHash };
1700
+ }
1621
1701
  // ── Airdrop ─────────────────────────────────────────────────────────
1622
1702
  async getAirdropInfo(tokenAddress) {
1623
1703
  const result = await this.publicClient.readContract({
@@ -1737,14 +1817,14 @@ var LiquidSDK = class {
1737
1817
  // ── MEV Block Delay ─────────────────────────────────────────────────
1738
1818
  async getMevBlockDelay() {
1739
1819
  return await this.publicClient.readContract({
1740
- address: ADDRESSES.MEV_BLOCK_DELAY,
1820
+ address: ADDRESSES.MEV_DESCENDING_FEES,
1741
1821
  abi: LiquidMevBlockDelayAbi,
1742
1822
  functionName: "blockDelay"
1743
1823
  });
1744
1824
  }
1745
1825
  async getPoolUnlockTime(poolId) {
1746
1826
  return await this.publicClient.readContract({
1747
- address: ADDRESSES.MEV_BLOCK_DELAY,
1827
+ address: ADDRESSES.MEV_DESCENDING_FEES,
1748
1828
  abi: LiquidMevBlockDelayAbi,
1749
1829
  functionName: "poolUnlockTime",
1750
1830
  args: [poolId]