@whetstone-research/doppler-sdk 0.0.1-alpha.13 → 0.0.1-alpha.14
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/DopplerSDK.js +8 -8
- package/dist/DopplerSDK.mjs +7 -7
- package/dist/addresses.js +4 -4
- package/dist/addresses.mjs +1 -1
- package/dist/{chunk-EO7INTQ7.mjs → chunk-3T2BYOOB.mjs} +3 -3
- package/dist/{chunk-EO7INTQ7.mjs.map → chunk-3T2BYOOB.mjs.map} +1 -1
- package/dist/{chunk-Z73AEDBE.mjs → chunk-5AJOUEVM.mjs} +3 -3
- package/dist/{chunk-Z73AEDBE.mjs.map → chunk-5AJOUEVM.mjs.map} +1 -1
- package/dist/{chunk-VDTWZWY6.mjs → chunk-BIZYT3GP.mjs} +3 -3
- package/dist/{chunk-VDTWZWY6.mjs.map → chunk-BIZYT3GP.mjs.map} +1 -1
- package/dist/{chunk-4J7NCWYK.js → chunk-D6STWX6U.js} +5 -5
- package/dist/{chunk-4J7NCWYK.js.map → chunk-D6STWX6U.js.map} +1 -1
- package/dist/{chunk-BHYYCQ3Q.mjs → chunk-DW3EG5EC.mjs} +3 -3
- package/dist/{chunk-BHYYCQ3Q.mjs.map → chunk-DW3EG5EC.mjs.map} +1 -1
- package/dist/{chunk-JMR5HBX7.js → chunk-E4QGPFGS.js} +8 -8
- package/dist/{chunk-JMR5HBX7.js.map → chunk-E4QGPFGS.js.map} +1 -1
- package/dist/{chunk-Y3KBSG4Y.mjs → chunk-HGTHVJ7T.mjs} +3 -3
- package/dist/{chunk-Y3KBSG4Y.mjs.map → chunk-HGTHVJ7T.mjs.map} +1 -1
- package/dist/{chunk-B4HLWPBT.js → chunk-HTLHR2NI.js} +12 -12
- package/dist/{chunk-B4HLWPBT.js.map → chunk-HTLHR2NI.js.map} +1 -1
- package/dist/{chunk-KRSEBXPW.mjs → chunk-LTIQCDPH.mjs} +6 -6
- package/dist/{chunk-KRSEBXPW.mjs.map → chunk-LTIQCDPH.mjs.map} +1 -1
- package/dist/{chunk-PL2AZ24Y.js → chunk-RRSW6CUO.js} +4 -4
- package/dist/{chunk-PL2AZ24Y.js.map → chunk-RRSW6CUO.js.map} +1 -1
- package/dist/{chunk-Z2CEHD7C.js → chunk-VVR7QPAL.js} +9 -9
- package/dist/{chunk-Z2CEHD7C.js.map → chunk-VVR7QPAL.js.map} +1 -1
- package/dist/{chunk-5YF2QN6D.mjs → chunk-W7TUVZ45.mjs} +3 -3
- package/dist/{chunk-5YF2QN6D.mjs.map → chunk-W7TUVZ45.mjs.map} +1 -1
- package/dist/{chunk-45FNFE5D.js → chunk-XHCKKUP2.js} +4 -4
- package/dist/{chunk-45FNFE5D.js.map → chunk-XHCKKUP2.js.map} +1 -1
- package/dist/{chunk-KDUEFQXG.js → chunk-ZZYGKQJM.js} +3 -3
- package/dist/{chunk-KDUEFQXG.js.map → chunk-ZZYGKQJM.js.map} +1 -1
- package/dist/entities/DopplerFactory.js +3 -3
- package/dist/entities/DopplerFactory.mjs +2 -2
- package/dist/entities/auction/DynamicAuction.js +3 -3
- package/dist/entities/auction/DynamicAuction.mjs +2 -2
- package/dist/entities/auction/StaticAuction.js +3 -3
- package/dist/entities/auction/StaticAuction.mjs +2 -2
- package/dist/entities/auction/index.js +7 -7
- package/dist/entities/auction/index.mjs +3 -3
- package/dist/entities/quoter/Quoter.js +3 -3
- package/dist/entities/quoter/Quoter.mjs +2 -2
- package/dist/entities/quoter/index.js +3 -3
- package/dist/entities/quoter/index.mjs +2 -2
- package/dist/entities/token/index.js +6 -6
- package/dist/entities/token/index.mjs +2 -2
- package/dist/index.js +26 -26
- package/dist/index.mjs +10 -10
- package/dist/types.js +1 -1
- package/dist/types.mjs +1 -1
- package/dist/utils/airlock.js +3 -3
- package/dist/utils/airlock.mjs +2 -2
- package/dist/utils/index.js +3 -3
- package/dist/utils/index.mjs +2 -2
- package/package.json +1 -1
package/dist/DopplerSDK.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('./chunk-KRN3ROUE.js');
|
|
5
|
-
require('./chunk-4J7NCWYK.js');
|
|
6
|
-
require('./chunk-JMR5HBX7.js');
|
|
3
|
+
var chunkHTLHR2NI_js = require('./chunk-HTLHR2NI.js');
|
|
7
4
|
require('./chunk-P7CHGWY7.js');
|
|
8
|
-
require('./chunk-
|
|
9
|
-
require('./chunk-
|
|
5
|
+
require('./chunk-VVR7QPAL.js');
|
|
6
|
+
require('./chunk-E4QGPFGS.js');
|
|
7
|
+
require('./chunk-KRN3ROUE.js');
|
|
8
|
+
require('./chunk-RRSW6CUO.js');
|
|
9
|
+
require('./chunk-D6STWX6U.js');
|
|
10
10
|
require('./chunk-5OFMFSTQ.js');
|
|
11
11
|
require('./chunk-ER42VG7H.js');
|
|
12
|
-
require('./chunk-
|
|
12
|
+
require('./chunk-ZZYGKQJM.js');
|
|
13
13
|
require('./chunk-EFAPDN4J.js');
|
|
14
14
|
require('./chunk-CIRZKWLL.js');
|
|
15
15
|
|
|
@@ -17,7 +17,7 @@ require('./chunk-CIRZKWLL.js');
|
|
|
17
17
|
|
|
18
18
|
Object.defineProperty(exports, "DopplerSDK", {
|
|
19
19
|
enumerable: true,
|
|
20
|
-
get: function () { return
|
|
20
|
+
get: function () { return chunkHTLHR2NI_js.DopplerSDK; }
|
|
21
21
|
});
|
|
22
22
|
//# sourceMappingURL=DopplerSDK.js.map
|
|
23
23
|
//# sourceMappingURL=DopplerSDK.js.map
|
package/dist/DopplerSDK.mjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export { DopplerSDK } from './chunk-
|
|
2
|
-
import './chunk-AZLFJNTG.mjs';
|
|
3
|
-
import './chunk-Y3KBSG4Y.mjs';
|
|
4
|
-
import './chunk-EO7INTQ7.mjs';
|
|
1
|
+
export { DopplerSDK } from './chunk-LTIQCDPH.mjs';
|
|
5
2
|
import './chunk-QSQGLWNY.mjs';
|
|
6
|
-
import './chunk-
|
|
7
|
-
import './chunk-
|
|
3
|
+
import './chunk-DW3EG5EC.mjs';
|
|
4
|
+
import './chunk-3T2BYOOB.mjs';
|
|
5
|
+
import './chunk-AZLFJNTG.mjs';
|
|
6
|
+
import './chunk-W7TUVZ45.mjs';
|
|
7
|
+
import './chunk-HGTHVJ7T.mjs';
|
|
8
8
|
import './chunk-GUF66EFF.mjs';
|
|
9
9
|
import './chunk-T644D54P.mjs';
|
|
10
|
-
import './chunk-
|
|
10
|
+
import './chunk-BIZYT3GP.mjs';
|
|
11
11
|
import './chunk-DCFHANLR.mjs';
|
|
12
12
|
import './chunk-7W72MFJO.mjs';
|
|
13
13
|
//# sourceMappingURL=DopplerSDK.mjs.map
|
package/dist/addresses.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkZZYGKQJM_js = require('./chunk-ZZYGKQJM.js');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
Object.defineProperty(exports, "ADDRESSES", {
|
|
8
8
|
enumerable: true,
|
|
9
|
-
get: function () { return
|
|
9
|
+
get: function () { return chunkZZYGKQJM_js.ADDRESSES; }
|
|
10
10
|
});
|
|
11
11
|
Object.defineProperty(exports, "CHAIN_IDS", {
|
|
12
12
|
enumerable: true,
|
|
13
|
-
get: function () { return
|
|
13
|
+
get: function () { return chunkZZYGKQJM_js.CHAIN_IDS; }
|
|
14
14
|
});
|
|
15
15
|
Object.defineProperty(exports, "getAddresses", {
|
|
16
16
|
enumerable: true,
|
|
17
|
-
get: function () { return
|
|
17
|
+
get: function () { return chunkZZYGKQJM_js.getAddresses; }
|
|
18
18
|
});
|
|
19
19
|
//# sourceMappingURL=addresses.js.map
|
|
20
20
|
//# sourceMappingURL=addresses.js.map
|
package/dist/addresses.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DEFAULT_V3_MAX_SHARE_TO_BE_SOLD, DEFAULT_V3_NUM_POSITIONS, ZERO_ADDRESS, DEFAULT_V3_YEARLY_MINT_RATE, DEFAULT_V3_INITIAL_VOTING_DELAY, DEFAULT_V3_INITIAL_VOTING_PERIOD, DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD, DAY_SECONDS, DEFAULT_PD_SLUGS, DEFAULT_V4_YEARLY_MINT_RATE, DEFAULT_V4_INITIAL_VOTING_DELAY, DEFAULT_V4_INITIAL_VOTING_PERIOD, DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD, BASIS_POINTS, FLAG_MASK } from './chunk-T644D54P.mjs';
|
|
2
|
-
import { getAddresses } from './chunk-
|
|
2
|
+
import { getAddresses } from './chunk-BIZYT3GP.mjs';
|
|
3
3
|
import { airlockAbi } from './chunk-DCFHANLR.mjs';
|
|
4
4
|
import { DopplerBytecode, DopplerDN404Bytecode, DERC20Bytecode } from './chunk-7W72MFJO.mjs';
|
|
5
5
|
import { encodeAbiParameters, decodeEventLog, zeroAddress, keccak256, encodePacked, getAddress } from 'viem';
|
|
@@ -873,5 +873,5 @@ var DopplerFactory = class {
|
|
|
873
873
|
};
|
|
874
874
|
|
|
875
875
|
export { DopplerFactory };
|
|
876
|
-
//# sourceMappingURL=chunk-
|
|
877
|
-
//# sourceMappingURL=chunk-
|
|
876
|
+
//# sourceMappingURL=chunk-3T2BYOOB.mjs.map
|
|
877
|
+
//# sourceMappingURL=chunk-3T2BYOOB.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/entities/DopplerFactory.ts"],"names":["airlock","initialSupply"],"mappings":"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","file":"chunk-EO7INTQ7.mjs","sourcesContent":["import { \n type Address, \n type Hex, \n type Hash,\n type PublicClient, \n type WalletClient,\n encodeAbiParameters, \n encodePacked,\n keccak256,\n getAddress,\n decodeEventLog\n} from 'viem'\nimport type { \n CreateStaticAuctionParams, \n CreateDynamicAuctionParams,\n MigrationConfig,\n SupportedPublicClient,\n TokenConfig,\n Doppler404TokenConfig,\n StandardTokenConfig,\n SupportedChainId\n} from '../types'\nimport { getAddresses } from '../addresses'\nimport { zeroAddress } from 'viem'\nimport { \n ZERO_ADDRESS,\n BASIS_POINTS,\n DEFAULT_PD_SLUGS,\n DAY_SECONDS,\n FLAG_MASK,\n DEFAULT_V3_NUM_POSITIONS,\n DEFAULT_V3_YEARLY_MINT_RATE,\n DEFAULT_V3_MAX_SHARE_TO_BE_SOLD,\n DEFAULT_V4_YEARLY_MINT_RATE,\n DEFAULT_V3_INITIAL_VOTING_DELAY,\n DEFAULT_V3_INITIAL_VOTING_PERIOD,\n DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD,\n DEFAULT_V4_INITIAL_VOTING_DELAY,\n DEFAULT_V4_INITIAL_VOTING_PERIOD,\n DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD\n} from '../constants'\nimport { airlockAbi, DERC20Bytecode, DopplerBytecode, DopplerDN404Bytecode } from '../abis'\n\nexport class DopplerFactory<C extends SupportedChainId = SupportedChainId> {\n private publicClient: SupportedPublicClient\n private walletClient?: WalletClient\n private chainId: C\n \n constructor(publicClient: SupportedPublicClient, walletClient: WalletClient | undefined, chainId: C) {\n this.publicClient = publicClient\n this.walletClient = walletClient\n this.chainId = chainId\n }\n\n // Note: The legacy buildDynamicAuctionConfig and buildStaticAuctionConfig helper methods\n // have been removed in favor of dedicated builders that construct\n // CreateDynamicAuctionParams and CreateStaticAuctionParams.\n\n /**\n * Create a new static auction (using Uniswap V3 for initial liquidity)\n * @param params Configuration for the static auction\n * @returns The address of the created pool and token\n */\n async createStaticAuction(params: CreateStaticAuctionParams<C>): Promise<{\n poolAddress: Address\n tokenAddress: Address\n transactionHash: string\n }> {\n // Validate parameters\n this.validateStaticAuctionParams(params)\n \n const addresses = getAddresses(this.chainId)\n \n // 1. Encode pool initializer data\n // V3 initializer expects InitData struct with specific field order\n const poolInitializerData = encodeAbiParameters(\n [\n { \n type: 'tuple',\n components: [\n { type: 'uint24', name: 'fee' },\n { type: 'int24', name: 'tickLower' },\n { type: 'int24', name: 'tickUpper' },\n { type: 'uint16', name: 'numPositions' },\n { type: 'uint256', name: 'maxShareToBeSold' }\n ]\n }\n ],\n [{\n fee: params.pool.fee,\n tickLower: params.pool.startTick,\n tickUpper: params.pool.endTick,\n numPositions: params.pool.numPositions ?? DEFAULT_V3_NUM_POSITIONS,\n maxShareToBeSold: params.pool.maxShareToBeSold ?? DEFAULT_V3_MAX_SHARE_TO_BE_SOLD\n }]\n )\n \n // 2. Encode migration data based on MigrationConfig\n const liquidityMigratorData = this.encodeMigrationData(params.migration)\n \n // 3. Encode token parameters (standard vs Doppler404)\n let tokenFactoryData: Hex\n if (this.isDoppler404Token(params.token)) {\n const token404 = params.token\n // Doppler404 expects: name, symbol, baseURI, unit\n const baseURI = token404.baseURI\n const unit = token404.unit !== undefined ? BigInt(token404.unit) : 1000n\n if (!addresses.doppler404Factory || addresses.doppler404Factory === ZERO_ADDRESS) {\n throw new Error('Doppler404 factory address not configured for this chain')\n }\n tokenFactoryData = encodeAbiParameters(\n [\n { type: 'string' },\n { type: 'string' },\n { type: 'string' },\n { type: 'uint256' },\n ],\n [\n params.token.name,\n params.token.symbol,\n baseURI,\n unit,\n ]\n )\n } else {\n const tokenStd = params.token as StandardTokenConfig\n const vestingDuration = params.vesting?.duration ?? BigInt(0)\n const yearlyMintRate = tokenStd.yearlyMintRate ?? DEFAULT_V3_YEARLY_MINT_RATE\n tokenFactoryData = encodeAbiParameters(\n [\n { type: 'string' },\n { type: 'string' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'address[]' },\n { type: 'uint256[]' },\n { type: 'string' },\n ],\n [\n tokenStd.name,\n tokenStd.symbol,\n yearlyMintRate,\n BigInt(vestingDuration),\n params.vesting ? [params.userAddress] : [],\n params.vesting ? [params.sale.initialSupply - params.sale.numTokensToSell] : [],\n tokenStd.tokenURI,\n ]\n )\n }\n \n // 4. Encode governance factory data\n const governanceFactoryData = encodeAbiParameters(\n [\n { type: 'string' },\n { type: 'uint48' },\n { type: 'uint32' },\n { type: 'uint256' },\n ],\n [\n params.token.name,\n params.governance.type === 'custom' ? params.governance.initialVotingDelay : DEFAULT_V3_INITIAL_VOTING_DELAY,\n params.governance.type === 'custom' ? params.governance.initialVotingPeriod : DEFAULT_V3_INITIAL_VOTING_PERIOD,\n params.governance.type === 'custom' ? params.governance.initialProposalThreshold : DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD\n ]\n )\n \n // 4.1 Choose governance factory\n const useNoOpGovernance = params.governance.type === 'noOp'\n\n const governanceFactoryAddress: Address = (() => {\n if (useNoOpGovernance) {\n const noOpGovernanceFactoryAddress = (addresses.noOpGovernanceFactory ?? ZERO_ADDRESS)\n if (!noOpGovernanceFactoryAddress || noOpGovernanceFactoryAddress === ZERO_ADDRESS) {\n throw new Error('No-op governance requested, but noOpGovernanceFactory is not deployed on this chain. Provide standard governance via withGovernance() or use a supported chain.')\n }\n return noOpGovernanceFactoryAddress\n }\n const standardGovernanceFactoryAddress = addresses.governanceFactory\n if (!standardGovernanceFactoryAddress || standardGovernanceFactoryAddress === ZERO_ADDRESS) {\n throw new Error('Standard governance requested but governanceFactory is not deployed on this chain.')\n }\n return standardGovernanceFactoryAddress\n })()\n\n // 5. Generate a unique salt\n const salt = this.generateRandomSalt(params.userAddress)\n \n // Build the complete CreateParams for the V4-style ABI\n const createParams = {\n initialSupply: params.sale.initialSupply,\n numTokensToSell: params.sale.numTokensToSell,\n numeraire: params.sale.numeraire,\n tokenFactory: this.isDoppler404Token(params.token) ? (addresses.doppler404Factory as Address) : addresses.tokenFactory,\n tokenFactoryData: tokenFactoryData,\n governanceFactory: governanceFactoryAddress,\n governanceFactoryData: governanceFactoryData,\n poolInitializer: addresses.v3Initializer,\n poolInitializerData: poolInitializerData,\n liquidityMigrator: this.getMigratorAddress(params.migration),\n liquidityMigratorData: liquidityMigratorData,\n integrator: params.integrator ?? ZERO_ADDRESS,\n salt: salt,\n }\n \n // Call the airlock contract to create the pool\n if (!this.walletClient) {\n throw new Error('Wallet client required for write operations')\n }\n \n const { request, result } = await this.publicClient.simulateContract({\n address: addresses.airlock,\n abi: airlockAbi,\n functionName: 'create',\n args: [{...createParams}],\n account: this.walletClient.account,\n })\n \n const hash = await this.walletClient.writeContract(request)\n \n // Wait for transaction and get the receipt\n const receipt = await this.publicClient.waitForTransactionReceipt({ hash, confirmations: 2 })\n \n // The create function returns [asset, pool, governance, timelock, migrationPool]\n // We can get these from the simulation result or parse from logs\n if (result && Array.isArray(result) && result.length >= 2) {\n return {\n poolAddress: result[1] as Address, // pool is the second element\n tokenAddress: result[0] as Address, // asset (token) is the first element\n transactionHash: hash\n }\n }\n \n // Fallback: Parse the Create event from logs\n const createEvent = receipt.logs.find(log => {\n try {\n const decoded = decodeEventLog({\n abi: airlockAbi,\n data: log.data,\n topics: log.topics as [`0x${string}`, ...`0x${string}`[]],\n })\n return decoded.eventName === 'Create'\n } catch {\n return false\n }\n })\n \n if (createEvent) {\n const decoded = decodeEventLog({\n abi: airlockAbi,\n data: createEvent.data,\n topics: createEvent.topics as [`0x${string}`, ...`0x${string}`[]],\n })\n \n if (decoded.eventName === 'Create') {\n return {\n poolAddress: (decoded.args as any).poolOrHook as Address,\n tokenAddress: (decoded.args as any).asset as Address,\n transactionHash: hash\n }\n }\n }\n \n throw new Error('Failed to get pool and token addresses from transaction')\n }\n \n /**\n * Generate a random salt based on user address\n */\n private generateRandomSalt(account: Address): Hex {\n // Use crypto.getRandomValues for secure random generation\n const array = new Uint8Array(32)\n \n // Try to use crypto API if available (Node.js or browser)\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n crypto.getRandomValues(array)\n } else {\n // Fallback: use timestamp and account for deterministic generation\n const timestamp = Date.now()\n const timestampBytes = new Uint8Array(8)\n for (let i = 0; i < 8; i++) {\n timestampBytes[i] = (timestamp >> (i * 8)) & 0xff\n }\n \n // Fill array with timestamp and account-based entropy\n for (let i = 0; i < 32; i++) {\n if (i < 8) {\n array[i] = timestampBytes[i]\n } else {\n array[i] = i\n }\n }\n }\n \n // XOR with address bytes for additional entropy\n if (account) {\n const addressBytes = account.slice(2).padStart(40, '0')\n for (let i = 0; i < 20; i++) {\n const addressByte = parseInt(\n addressBytes.slice(i * 2, (i + 1) * 2),\n 16\n )\n array[i] ^= addressByte\n }\n }\n \n return `0x${Array.from(array)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('')}` as Hex\n }\n\n /**\n * Create a new dynamic auction (using Uniswap V4 hook for gradual Dutch auction)\n * @param params Configuration for the dynamic auction\n * @returns The address of the created hook and token\n */\n async createDynamicAuction(params: CreateDynamicAuctionParams<C>): Promise<{\n hookAddress: Address\n tokenAddress: Address\n poolId: string\n transactionHash: string\n }> {\n // Validate parameters\n this.validateDynamicAuctionParams(params)\n \n const addresses = getAddresses(this.chainId)\n \n // 1. Calculate gamma if not provided\n const gamma = params.auction.gamma ?? this.computeOptimalGamma(\n params.auction.startTick,\n params.auction.endTick,\n params.auction.duration,\n params.auction.epochLength,\n params.pool.tickSpacing\n )\n \n // 2. Prepare time parameters\n // Use provided block timestamp or fetch the latest\n let blockTimestamp: number\n if (params.blockTimestamp !== undefined) {\n blockTimestamp = params.blockTimestamp\n } else {\n const latestBlock = await this.publicClient.getBlock({ blockTag: 'latest' })\n blockTimestamp = Number(latestBlock.timestamp)\n }\n \n // Use startTimeOffset if provided, otherwise default to 30 seconds\n const startTimeOffset = params.startTimeOffset ?? 30\n const startTime = blockTimestamp + startTimeOffset\n const endTime = blockTimestamp + params.auction.duration * DAY_SECONDS + startTimeOffset\n \n // 3. Prepare hook initialization data\n const dopplerData = {\n minimumProceeds: params.auction.minProceeds,\n maximumProceeds: params.auction.maxProceeds,\n startingTime: BigInt(startTime),\n endingTime: BigInt(endTime),\n startingTick: params.auction.startTick,\n endingTick: params.auction.endTick,\n epochLength: BigInt(params.auction.epochLength),\n gamma,\n isToken0: false, // Will be determined during mining\n numPDSlugs: BigInt(params.auction.numPdSlugs ?? DEFAULT_PD_SLUGS),\n fee: params.pool.fee,\n tickSpacing: params.pool.tickSpacing\n }\n \n // 4. Prepare token parameters (standard vs Doppler404)\n if (this.isDoppler404Token(params.token)) {\n if (!addresses.doppler404Factory || addresses.doppler404Factory === ZERO_ADDRESS) {\n throw new Error('Doppler404 factory address not configured for this chain')\n }\n }\n\n const vestingDuration = params.vesting?.duration ?? BigInt(0)\n const tokenFactoryData = this.isDoppler404Token(params.token)\n ? (() => {\n const t = params.token as Doppler404TokenConfig\n return {\n name: t.name,\n symbol: t.symbol,\n baseURI: t.baseURI,\n unit: t.unit !== undefined ? BigInt(t.unit) : 1000n,\n }\n })()\n : (() => {\n const t = params.token as StandardTokenConfig\n return {\n name: t.name,\n symbol: t.symbol,\n initialSupply: params.sale.initialSupply,\n airlock: addresses.airlock,\n yearlyMintRate: t.yearlyMintRate ?? DEFAULT_V4_YEARLY_MINT_RATE,\n vestingDuration: BigInt(vestingDuration),\n recipients: params.vesting ? [params.userAddress] : [],\n amounts: params.vesting ? [params.sale.initialSupply - params.sale.numTokensToSell] : [],\n tokenURI: t.tokenURI,\n }\n })()\n \n // 5. Mine hook address with appropriate flags\n const [salt, hookAddress, tokenAddress, poolInitializerData, encodedTokenFactoryData] = this.mineHookAddress({\n airlock: addresses.airlock,\n poolManager: addresses.poolManager,\n deployer: addresses.dopplerDeployer,\n initialSupply: params.sale.initialSupply,\n numTokensToSell: params.sale.numTokensToSell,\n numeraire: params.sale.numeraire,\n tokenFactory: this.isDoppler404Token(params.token) ? (addresses.doppler404Factory as Address) : addresses.tokenFactory,\n tokenFactoryData: tokenFactoryData,\n poolInitializer: addresses.v4Initializer,\n poolInitializerData: dopplerData,\n tokenVariant: this.isDoppler404Token(params.token) ? 'doppler404' : 'standard'\n })\n \n // 6. Encode migration data\n const liquidityMigratorData = this.encodeMigrationData(params.migration)\n \n // 7. Encode governance factory data\n const governanceFactoryData = encodeAbiParameters(\n [\n { type: 'string' },\n { type: 'uint48' },\n { type: 'uint32' },\n { type: 'uint256' },\n ],\n [\n params.token.name,\n params.governance.type === 'custom' ? params.governance.initialVotingDelay : DEFAULT_V4_INITIAL_VOTING_DELAY,\n params.governance.type === 'custom' ? params.governance.initialVotingPeriod : DEFAULT_V4_INITIAL_VOTING_PERIOD,\n params.governance.type === 'custom' ? params.governance.initialProposalThreshold : DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD\n ]\n )\n \n // 7.1 Choose governance factory\n const useNoOpGovernance = params.governance.type === 'noOp'\n\n const governanceFactoryAddress: Address = (() => {\n if (useNoOpGovernance) {\n const noOpGovernanceFactoryAddress = (addresses.noOpGovernanceFactory ?? ZERO_ADDRESS)\n if (!noOpGovernanceFactoryAddress || noOpGovernanceFactoryAddress === ZERO_ADDRESS) {\n throw new Error('No-op governance requested, but noOpGovernanceFactory is not deployed on this chain. Provide standard governance via withGovernance() or use a supported chain.')\n }\n return noOpGovernanceFactoryAddress\n }\n const standardGovernanceFactoryAddress = addresses.governanceFactory\n if (!standardGovernanceFactoryAddress || standardGovernanceFactoryAddress === ZERO_ADDRESS) {\n throw new Error('Standard governance requested but governanceFactory is not deployed on this chain.')\n }\n return standardGovernanceFactoryAddress\n })()\n\n // 8. Build the complete CreateParams for the V4-style ABI\n const createParams = {\n initialSupply: params.sale.initialSupply,\n numTokensToSell: params.sale.numTokensToSell,\n numeraire: params.sale.numeraire,\n tokenFactory: this.isDoppler404Token(params.token) ? (addresses.doppler404Factory as Address) : addresses.tokenFactory,\n tokenFactoryData: encodedTokenFactoryData,\n governanceFactory: governanceFactoryAddress,\n governanceFactoryData: governanceFactoryData,\n poolInitializer: addresses.v4Initializer,\n poolInitializerData: poolInitializerData,\n liquidityMigrator: this.getMigratorAddress(params.migration),\n liquidityMigratorData: liquidityMigratorData,\n integrator: params.integrator ?? ZERO_ADDRESS,\n salt: salt,\n }\n \n // Call the airlock contract to create the pool\n if (!this.walletClient) {\n throw new Error('Wallet client required for write operations')\n }\n \n const { request, result } = await this.publicClient.simulateContract({\n address: addresses.airlock,\n abi: airlockAbi,\n functionName: 'create',\n args: [{...createParams}],\n account: this.walletClient.account,\n })\n \n const hash = await this.walletClient.writeContract(request)\n \n // Wait for transaction and get the receipt\n const receipt = await this.publicClient.waitForTransactionReceipt({ hash })\n \n // Get actual addresses from the return value or event logs\n let actualHookAddress: Address = hookAddress\n let actualTokenAddress: Address = tokenAddress\n \n if (result && Array.isArray(result) && result.length >= 2) {\n // The create function returns [asset, pool, governance, timelock, migrationPool]\n actualTokenAddress = result[0] as Address\n actualHookAddress = result[1] as Address // For V4, pool is the hook address\n } else {\n // Fallback: Parse the Create event from logs\n const createEvent = receipt.logs.find(log => {\n try {\n const decoded = decodeEventLog({\n abi: airlockAbi,\n data: log.data,\n topics: log.topics as [`0x${string}`, ...`0x${string}`[]],\n })\n return decoded.eventName === 'Create'\n } catch {\n return false\n }\n })\n \n if (createEvent) {\n const decoded = decodeEventLog({\n abi: airlockAbi,\n data: createEvent.data,\n topics: createEvent.topics as [`0x${string}`, ...`0x${string}`[]],\n })\n \n if (decoded.eventName === 'Create') {\n actualHookAddress = (decoded.args as any).poolOrHook as Address\n actualTokenAddress = (decoded.args as any).asset as Address\n }\n }\n }\n \n // Calculate pool ID for V4 using actual addresses\n const poolId = this.computePoolId({\n currency0: actualTokenAddress < params.sale.numeraire ? actualTokenAddress : params.sale.numeraire,\n currency1: actualTokenAddress < params.sale.numeraire ? params.sale.numeraire : actualTokenAddress,\n fee: params.pool.fee,\n tickSpacing: params.pool.tickSpacing,\n hooks: actualHookAddress\n })\n \n return {\n hookAddress: actualHookAddress,\n tokenAddress: actualTokenAddress,\n poolId,\n transactionHash: hash\n }\n }\n\n private isDoppler404Token(token: TokenConfig): token is Doppler404TokenConfig {\n return (token as Doppler404TokenConfig).type === 'doppler404'\n }\n\n /**\n * Encode migration data based on the MigrationConfig\n * This replaces the manual encoding methods from the old SDKs\n */\n private encodeMigrationData(config: MigrationConfig): Hex {\n switch (config.type) {\n case 'uniswapV2':\n // V2 migrator expects empty data\n return '0x' as Hex\n \n case 'uniswapV3':\n // Encode V3 migration data: fee and tick spacing\n return encodeAbiParameters(\n [\n { type: 'uint24' }, // fee\n { type: 'int24' } // tickSpacing\n ],\n [config.fee, config.tickSpacing]\n )\n \n case 'uniswapV4':\n // Encode V4 migration data with streamable fees config\n // The V4 migrator expects beneficiaries with shares in WAD (1e18) format\n const WAD = BigInt(1e18)\n const beneficiaryData: { beneficiary: Address; shares: bigint }[] = []\n \n // Convert percentage-based beneficiaries to shares-based\n for (const b of config.streamableFees.beneficiaries) {\n beneficiaryData.push({\n beneficiary: b.address,\n shares: (BigInt(b.percentage) * WAD) / BigInt(BASIS_POINTS)\n })\n }\n \n // Sort beneficiaries by address in ascending order (required by contract)\n beneficiaryData.sort((a, b) => {\n const addrA = a.beneficiary.toLowerCase()\n const addrB = b.beneficiary.toLowerCase()\n return addrA < addrB ? -1 : addrA > addrB ? 1 : 0\n })\n \n // Note: The contract will validate that the airlock owner gets at least 5%\n // If not present, the SDK user should add it manually\n \n return encodeAbiParameters(\n [\n { type: 'uint24' }, // fee\n { type: 'int24' }, // tickSpacing\n { type: 'uint32' }, // lockDuration\n {\n type: 'tuple[]', \n components: [\n { type: 'address', name: 'beneficiary' },\n { type: 'uint96', name: 'shares' }\n ]\n }\n ],\n [\n config.fee,\n config.tickSpacing,\n config.streamableFees.lockDuration,\n beneficiaryData.map(b => ({\n beneficiary: b.beneficiary,\n shares: b.shares\n }))\n ]\n )\n \n default:\n throw new Error(`Unknown migration type: ${(config as any).type}`)\n }\n }\n\n /**\n * Validate static auction parameters\n */\n private validateStaticAuctionParams(params: CreateStaticAuctionParams): void {\n // Validate token parameters\n if (!params.token.name || params.token.name.trim().length === 0) {\n throw new Error('Token name is required')\n }\n if (!params.token.symbol || params.token.symbol.trim().length === 0) {\n throw new Error('Token symbol is required')\n }\n \n // Validate tick range\n if (params.pool.startTick >= params.pool.endTick) {\n throw new Error('Start tick must be less than end tick')\n }\n \n // Validate sale config\n if (params.sale.initialSupply <= BigInt(0)) {\n throw new Error('Initial supply must be positive')\n }\n if (params.sale.numTokensToSell <= BigInt(0)) {\n throw new Error('Number of tokens to sell must be positive')\n }\n if (params.sale.numTokensToSell > params.sale.initialSupply) {\n throw new Error('Cannot sell more tokens than initial supply')\n }\n \n // Validate vesting if provided\n if (params.vesting) {\n const vestedAmount = params.sale.initialSupply - params.sale.numTokensToSell\n if (vestedAmount <= BigInt(0)) {\n throw new Error('No tokens available for vesting')\n }\n }\n \n // Validate migration config\n if (params.migration.type === 'uniswapV4' && params.migration.streamableFees) {\n const beneficiaries = params.migration.streamableFees.beneficiaries\n if (beneficiaries.length === 0) {\n throw new Error('At least one beneficiary is required for V4 migration')\n }\n \n // Check that percentages sum to 100%\n const totalPercentage = beneficiaries.reduce((sum, b) => sum + b.percentage, 0)\n if (totalPercentage !== BASIS_POINTS) {\n throw new Error(`Beneficiary percentages must sum to ${BASIS_POINTS} (100%), but got ${totalPercentage}`)\n }\n }\n }\n\n /**\n * Validate dynamic auction parameters\n */\n private validateDynamicAuctionParams(params: CreateDynamicAuctionParams): void {\n // Validate token parameters\n if (!params.token.name || params.token.name.trim().length === 0) {\n throw new Error('Token name is required')\n }\n if (!params.token.symbol || params.token.symbol.trim().length === 0) {\n throw new Error('Token symbol is required')\n }\n \n // Validate tick range\n if (params.auction.startTick >= params.auction.endTick) {\n throw new Error('Start tick must be less than end tick')\n }\n \n // Validate sale config\n if (params.sale.initialSupply <= BigInt(0)) {\n throw new Error('Initial supply must be positive')\n }\n if (params.sale.numTokensToSell <= BigInt(0)) {\n throw new Error('Number of tokens to sell must be positive')\n }\n if (params.sale.numTokensToSell > params.sale.initialSupply) {\n throw new Error('Cannot sell more tokens than initial supply')\n }\n \n // Validate auction parameters\n if (params.auction.duration <= 0) {\n throw new Error('Auction duration must be positive')\n }\n if (params.auction.epochLength <= 0) {\n throw new Error('Epoch length must be positive')\n }\n if (params.pool.tickSpacing <= 0) {\n throw new Error('Tick spacing must be positive')\n }\n \n // Validate that total duration is divisible by epoch length\n const totalDuration = params.auction.duration * DAY_SECONDS\n if (totalDuration % params.auction.epochLength !== 0) {\n throw new Error('Epoch length must divide total duration evenly')\n }\n \n // Validate gamma if provided\n if (params.auction.gamma !== undefined) {\n if (params.auction.gamma % params.pool.tickSpacing !== 0) {\n throw new Error('Gamma must be divisible by tick spacing')\n }\n }\n \n // Validate migration config\n if (params.migration.type === 'uniswapV4' && params.migration.streamableFees) {\n const beneficiaries = params.migration.streamableFees.beneficiaries\n if (beneficiaries.length === 0) {\n throw new Error('At least one beneficiary is required for V4 migration')\n }\n \n // Check that percentages sum to 100%\n const totalPercentage = beneficiaries.reduce((sum, b) => sum + b.percentage, 0)\n if (totalPercentage !== BASIS_POINTS) {\n throw new Error(`Beneficiary percentages must sum to ${BASIS_POINTS} (100%), but got ${totalPercentage}`)\n }\n }\n }\n\n /**\n * Get the airlock contract address for the current chain\n */\n private getAirlockAddress(): Address {\n const addresses = getAddresses(this.chainId)\n return addresses.airlock\n }\n\n /**\n * Get the appropriate initializer address based on auction type\n */\n private getInitializerAddress(isStatic: boolean): Address {\n const addresses = getAddresses(this.chainId)\n return isStatic ? addresses.v3Initializer : addresses.v4Initializer\n }\n\n /**\n * Get the appropriate migrator address based on migration config\n */\n private getMigratorAddress(config: MigrationConfig): Address {\n const addresses = getAddresses(this.chainId)\n \n switch (config.type) {\n case 'uniswapV2':\n return addresses.v2Migrator\n case 'uniswapV3':\n return addresses.v3Migrator\n case 'uniswapV4':\n return addresses.v4Migrator\n default:\n throw new Error(`Unknown migration type: ${(config as any).type}`)\n }\n }\n\n // computeTicks moved to builders. No longer needed here.\n\n /**\n * Compute optimal gamma parameter based on price range and time parameters\n * Gamma determines how much the price can move per epoch during the sale.\n */\n private computeOptimalGamma(\n startTick: number,\n endTick: number,\n durationDays: number,\n epochLength: number,\n tickSpacing: number\n ): number {\n // Calculate total number of epochs\n const totalEpochs = (durationDays * DAY_SECONDS) / epochLength\n\n // Calculate required tick movement per epoch to cover the range\n const tickDelta = Math.abs(endTick - startTick)\n // Round up to nearest multiple of tick spacing\n let gamma = Math.ceil(tickDelta / totalEpochs) * tickSpacing\n // Ensure gamma is at least 1 tick spacing\n gamma = Math.max(tickSpacing, gamma)\n\n if (gamma % tickSpacing !== 0) {\n throw new Error('Computed gamma must be divisible by tick spacing')\n }\n\n return gamma\n }\n\n /**\n * Mines a salt and hook address with the appropriate flags\n * \n * This method iterates through possible salt values to find a combination that:\n * - Produces a hook address with required Doppler flags\n * - Maintains proper token ordering relative to numeraire\n * - Ensures deterministic deployment addresses\n * \n * @param params - Parameters for hook address mining\n * @returns Tuple of [salt, hook address, token address, pool data, token data]\n * @throws {Error} If no valid salt can be found within the search limit\n * @private\n */\n private mineHookAddress(params: {\n airlock: Address\n poolManager: Address\n deployer: Address\n initialSupply: bigint\n numTokensToSell: bigint\n numeraire: Address\n tokenFactory: Address\n tokenFactoryData: any\n poolInitializer: Address\n poolInitializerData: any\n customDerc20Bytecode?: `0x${string}`\n tokenVariant?: 'standard' | 'doppler404'\n }): [Hash, Address, Address, Hex, Hex] {\n const isToken0 = params.numeraire !== zeroAddress\n\n const {\n minimumProceeds,\n maximumProceeds,\n startingTime,\n endingTime,\n startingTick,\n endingTick,\n epochLength,\n gamma,\n numPDSlugs,\n fee,\n tickSpacing,\n } = params.poolInitializerData\n\n const poolInitializerData = encodeAbiParameters(\n [\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'int24' },\n { type: 'int24' },\n { type: 'uint256' },\n { type: 'int24' },\n { type: 'bool' },\n { type: 'uint256' },\n { type: 'uint24' },\n { type: 'int24' },\n ],\n [\n minimumProceeds,\n maximumProceeds,\n startingTime,\n endingTime,\n startingTick,\n endingTick,\n epochLength,\n gamma,\n isToken0,\n numPDSlugs,\n fee,\n tickSpacing,\n ]\n )\n\n const { poolManager, numTokensToSell, poolInitializer } = params\n\n const hookInitHashData = encodeAbiParameters(\n [\n { type: 'address' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'int24' },\n { type: 'int24' },\n { type: 'uint256' },\n { type: 'int24' },\n { type: 'bool' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'uint24' },\n ],\n [\n poolManager,\n numTokensToSell,\n minimumProceeds,\n maximumProceeds,\n startingTime,\n endingTime,\n startingTick,\n endingTick,\n epochLength,\n gamma,\n isToken0,\n numPDSlugs,\n poolInitializer,\n fee,\n ]\n )\n\n const hookInitHash = keccak256(\n encodePacked(\n ['bytes', 'bytes'],\n [DopplerBytecode as Hex, hookInitHashData]\n )\n )\n\n const tokenFactoryData = (params.tokenVariant === 'doppler404')\n ? encodeAbiParameters(\n [\n { type: 'string' },\n { type: 'string' },\n { type: 'string' },\n { type: 'uint256' },\n ],\n [\n params.tokenFactoryData.name,\n params.tokenFactoryData.symbol,\n params.tokenFactoryData.baseURI,\n params.tokenFactoryData.unit ?? 1000n,\n ]\n )\n : (() => {\n const {\n name,\n symbol,\n yearlyMintRate,\n vestingDuration,\n recipients,\n amounts,\n tokenURI,\n } = params.tokenFactoryData\n return encodeAbiParameters(\n [\n { type: 'string' },\n { type: 'string' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'address[]' },\n { type: 'uint256[]' },\n { type: 'string' },\n ],\n [\n name,\n symbol,\n yearlyMintRate,\n vestingDuration,\n recipients,\n amounts,\n tokenURI,\n ]\n )\n })()\n\n const { airlock, initialSupply } = params\n\n // Compute token init hash; use DN404 bytecode if tokenVariant is doppler404\n let tokenInitHash: Hash | undefined\n if (params.tokenVariant === 'doppler404') {\n const { name, symbol, baseURI } = params.tokenFactoryData\n const { airlock, initialSupply } = params\n // DN404 constructor: (name, symbol, initialSupply, recipient, owner, baseURI)\n const initHashData = encodeAbiParameters(\n [\n { type: 'string' },\n { type: 'string' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'address' },\n { type: 'string' },\n ],\n [\n name,\n symbol,\n initialSupply,\n airlock,\n airlock,\n baseURI,\n ]\n )\n tokenInitHash = keccak256(\n encodePacked(['bytes', 'bytes'], [DopplerDN404Bytecode as Hex, initHashData])\n )\n } else {\n const { name, symbol, yearlyMintRate, vestingDuration, recipients, amounts, tokenURI } = params.tokenFactoryData\n const { airlock, initialSupply } = params\n const initHashData = encodeAbiParameters(\n [\n { type: 'string' },\n { type: 'string' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'address' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'address[]' },\n { type: 'uint256[]' },\n { type: 'string' },\n ],\n [\n name,\n symbol,\n initialSupply,\n airlock,\n airlock,\n yearlyMintRate,\n vestingDuration,\n recipients,\n amounts,\n tokenURI,\n ]\n )\n tokenInitHash = keccak256(\n encodePacked(['bytes', 'bytes'], [params.customDerc20Bytecode as Hex ?? DERC20Bytecode as Hex, initHashData])\n )\n }\n\n // Use the exact flags from V4 SDK\n const flags = BigInt(\n (1 << 13) | // BEFORE_INITIALIZE_FLAG\n (1 << 12) | // AFTER_INITIALIZE_FLAG\n (1 << 11) | // BEFORE_ADD_LIQUIDITY_FLAG\n (1 << 7) | // BEFORE_SWAP_FLAG\n (1 << 6) | // AFTER_SWAP_FLAG\n (1 << 5) // BEFORE_DONATE_FLAG\n )\n\n for (let salt = BigInt(0); salt < BigInt(1_000_000); salt++) {\n const saltBytes = `0x${salt.toString(16).padStart(64, '0')}` as Hash\n const hook = this.computeCreate2Address(\n saltBytes,\n hookInitHash,\n params.deployer\n )\n const hookBigInt = BigInt(hook)\n if (tokenInitHash) {\n const token = this.computeCreate2Address(\n saltBytes,\n tokenInitHash,\n params.tokenFactory\n )\n const tokenBigInt = BigInt(token)\n const numeraireBigInt = BigInt(params.numeraire)\n if (\n (hookBigInt & FLAG_MASK) === flags &&\n ((isToken0 && tokenBigInt < numeraireBigInt) ||\n (!isToken0 && tokenBigInt > numeraireBigInt))\n ) {\n return [saltBytes, hook, token, poolInitializerData, tokenFactoryData]\n }\n }\n }\n\n throw new Error('AirlockMiner: could not find salt')\n }\n\n /**\n * Computes the CREATE2 address for a contract deployment\n * @param salt - The salt used for deployment\n * @param initCodeHash - Hash of the initialization code\n * @param deployer - Address of the deploying contract\n * @returns The computed contract address\n * @private\n */\n private computeCreate2Address(\n salt: Hash,\n initCodeHash: Hash,\n deployer: Address\n ): Address {\n const encoded = encodePacked(\n ['bytes1', 'address', 'bytes32', 'bytes32'],\n ['0xff', deployer, salt, initCodeHash]\n )\n return getAddress(`0x${keccak256(encoded).slice(-40)}`)\n }\n\n /**\n * Compute V4 pool ID from pool key components\n */\n private computePoolId(poolKey: {\n currency0: Address\n currency1: Address \n fee: number\n tickSpacing: number\n hooks: Address\n }): string {\n // V4 pools are identified by the hash of their PoolKey\n const encoded = encodeAbiParameters(\n [\n { type: 'address' },\n { type: 'address' },\n { type: 'uint24' },\n { type: 'int24' },\n { type: 'address' }\n ],\n [\n poolKey.currency0,\n poolKey.currency1,\n poolKey.fee,\n poolKey.tickSpacing,\n poolKey.hooks\n ]\n )\n return keccak256(encoded)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/entities/DopplerFactory.ts"],"names":["airlock","initialSupply"],"mappings":"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","file":"chunk-3T2BYOOB.mjs","sourcesContent":["import { \n type Address, \n type Hex, \n type Hash,\n type PublicClient, \n type WalletClient,\n encodeAbiParameters, \n encodePacked,\n keccak256,\n getAddress,\n decodeEventLog\n} from 'viem'\nimport type { \n CreateStaticAuctionParams, \n CreateDynamicAuctionParams,\n MigrationConfig,\n SupportedPublicClient,\n TokenConfig,\n Doppler404TokenConfig,\n StandardTokenConfig,\n SupportedChainId\n} from '../types'\nimport { getAddresses } from '../addresses'\nimport { zeroAddress } from 'viem'\nimport { \n ZERO_ADDRESS,\n BASIS_POINTS,\n DEFAULT_PD_SLUGS,\n DAY_SECONDS,\n FLAG_MASK,\n DEFAULT_V3_NUM_POSITIONS,\n DEFAULT_V3_YEARLY_MINT_RATE,\n DEFAULT_V3_MAX_SHARE_TO_BE_SOLD,\n DEFAULT_V4_YEARLY_MINT_RATE,\n DEFAULT_V3_INITIAL_VOTING_DELAY,\n DEFAULT_V3_INITIAL_VOTING_PERIOD,\n DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD,\n DEFAULT_V4_INITIAL_VOTING_DELAY,\n DEFAULT_V4_INITIAL_VOTING_PERIOD,\n DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD\n} from '../constants'\nimport { airlockAbi, DERC20Bytecode, DopplerBytecode, DopplerDN404Bytecode } from '../abis'\n\nexport class DopplerFactory<C extends SupportedChainId = SupportedChainId> {\n private publicClient: SupportedPublicClient\n private walletClient?: WalletClient\n private chainId: C\n \n constructor(publicClient: SupportedPublicClient, walletClient: WalletClient | undefined, chainId: C) {\n this.publicClient = publicClient\n this.walletClient = walletClient\n this.chainId = chainId\n }\n\n // Note: The legacy buildDynamicAuctionConfig and buildStaticAuctionConfig helper methods\n // have been removed in favor of dedicated builders that construct\n // CreateDynamicAuctionParams and CreateStaticAuctionParams.\n\n /**\n * Create a new static auction (using Uniswap V3 for initial liquidity)\n * @param params Configuration for the static auction\n * @returns The address of the created pool and token\n */\n async createStaticAuction(params: CreateStaticAuctionParams<C>): Promise<{\n poolAddress: Address\n tokenAddress: Address\n transactionHash: string\n }> {\n // Validate parameters\n this.validateStaticAuctionParams(params)\n \n const addresses = getAddresses(this.chainId)\n \n // 1. Encode pool initializer data\n // V3 initializer expects InitData struct with specific field order\n const poolInitializerData = encodeAbiParameters(\n [\n { \n type: 'tuple',\n components: [\n { type: 'uint24', name: 'fee' },\n { type: 'int24', name: 'tickLower' },\n { type: 'int24', name: 'tickUpper' },\n { type: 'uint16', name: 'numPositions' },\n { type: 'uint256', name: 'maxShareToBeSold' }\n ]\n }\n ],\n [{\n fee: params.pool.fee,\n tickLower: params.pool.startTick,\n tickUpper: params.pool.endTick,\n numPositions: params.pool.numPositions ?? DEFAULT_V3_NUM_POSITIONS,\n maxShareToBeSold: params.pool.maxShareToBeSold ?? DEFAULT_V3_MAX_SHARE_TO_BE_SOLD\n }]\n )\n \n // 2. Encode migration data based on MigrationConfig\n const liquidityMigratorData = this.encodeMigrationData(params.migration)\n \n // 3. Encode token parameters (standard vs Doppler404)\n let tokenFactoryData: Hex\n if (this.isDoppler404Token(params.token)) {\n const token404 = params.token\n // Doppler404 expects: name, symbol, baseURI, unit\n const baseURI = token404.baseURI\n const unit = token404.unit !== undefined ? BigInt(token404.unit) : 1000n\n if (!addresses.doppler404Factory || addresses.doppler404Factory === ZERO_ADDRESS) {\n throw new Error('Doppler404 factory address not configured for this chain')\n }\n tokenFactoryData = encodeAbiParameters(\n [\n { type: 'string' },\n { type: 'string' },\n { type: 'string' },\n { type: 'uint256' },\n ],\n [\n params.token.name,\n params.token.symbol,\n baseURI,\n unit,\n ]\n )\n } else {\n const tokenStd = params.token as StandardTokenConfig\n const vestingDuration = params.vesting?.duration ?? BigInt(0)\n const yearlyMintRate = tokenStd.yearlyMintRate ?? DEFAULT_V3_YEARLY_MINT_RATE\n tokenFactoryData = encodeAbiParameters(\n [\n { type: 'string' },\n { type: 'string' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'address[]' },\n { type: 'uint256[]' },\n { type: 'string' },\n ],\n [\n tokenStd.name,\n tokenStd.symbol,\n yearlyMintRate,\n BigInt(vestingDuration),\n params.vesting ? [params.userAddress] : [],\n params.vesting ? [params.sale.initialSupply - params.sale.numTokensToSell] : [],\n tokenStd.tokenURI,\n ]\n )\n }\n \n // 4. Encode governance factory data\n const governanceFactoryData = encodeAbiParameters(\n [\n { type: 'string' },\n { type: 'uint48' },\n { type: 'uint32' },\n { type: 'uint256' },\n ],\n [\n params.token.name,\n params.governance.type === 'custom' ? params.governance.initialVotingDelay : DEFAULT_V3_INITIAL_VOTING_DELAY,\n params.governance.type === 'custom' ? params.governance.initialVotingPeriod : DEFAULT_V3_INITIAL_VOTING_PERIOD,\n params.governance.type === 'custom' ? params.governance.initialProposalThreshold : DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD\n ]\n )\n \n // 4.1 Choose governance factory\n const useNoOpGovernance = params.governance.type === 'noOp'\n\n const governanceFactoryAddress: Address = (() => {\n if (useNoOpGovernance) {\n const noOpGovernanceFactoryAddress = (addresses.noOpGovernanceFactory ?? ZERO_ADDRESS)\n if (!noOpGovernanceFactoryAddress || noOpGovernanceFactoryAddress === ZERO_ADDRESS) {\n throw new Error('No-op governance requested, but noOpGovernanceFactory is not deployed on this chain. Provide standard governance via withGovernance() or use a supported chain.')\n }\n return noOpGovernanceFactoryAddress\n }\n const standardGovernanceFactoryAddress = addresses.governanceFactory\n if (!standardGovernanceFactoryAddress || standardGovernanceFactoryAddress === ZERO_ADDRESS) {\n throw new Error('Standard governance requested but governanceFactory is not deployed on this chain.')\n }\n return standardGovernanceFactoryAddress\n })()\n\n // 5. Generate a unique salt\n const salt = this.generateRandomSalt(params.userAddress)\n \n // Build the complete CreateParams for the V4-style ABI\n const createParams = {\n initialSupply: params.sale.initialSupply,\n numTokensToSell: params.sale.numTokensToSell,\n numeraire: params.sale.numeraire,\n tokenFactory: this.isDoppler404Token(params.token) ? (addresses.doppler404Factory as Address) : addresses.tokenFactory,\n tokenFactoryData: tokenFactoryData,\n governanceFactory: governanceFactoryAddress,\n governanceFactoryData: governanceFactoryData,\n poolInitializer: addresses.v3Initializer,\n poolInitializerData: poolInitializerData,\n liquidityMigrator: this.getMigratorAddress(params.migration),\n liquidityMigratorData: liquidityMigratorData,\n integrator: params.integrator ?? ZERO_ADDRESS,\n salt: salt,\n }\n \n // Call the airlock contract to create the pool\n if (!this.walletClient) {\n throw new Error('Wallet client required for write operations')\n }\n \n const { request, result } = await this.publicClient.simulateContract({\n address: addresses.airlock,\n abi: airlockAbi,\n functionName: 'create',\n args: [{...createParams}],\n account: this.walletClient.account,\n })\n \n const hash = await this.walletClient.writeContract(request)\n \n // Wait for transaction and get the receipt\n const receipt = await this.publicClient.waitForTransactionReceipt({ hash, confirmations: 2 })\n \n // The create function returns [asset, pool, governance, timelock, migrationPool]\n // We can get these from the simulation result or parse from logs\n if (result && Array.isArray(result) && result.length >= 2) {\n return {\n poolAddress: result[1] as Address, // pool is the second element\n tokenAddress: result[0] as Address, // asset (token) is the first element\n transactionHash: hash\n }\n }\n \n // Fallback: Parse the Create event from logs\n const createEvent = receipt.logs.find(log => {\n try {\n const decoded = decodeEventLog({\n abi: airlockAbi,\n data: log.data,\n topics: log.topics as [`0x${string}`, ...`0x${string}`[]],\n })\n return decoded.eventName === 'Create'\n } catch {\n return false\n }\n })\n \n if (createEvent) {\n const decoded = decodeEventLog({\n abi: airlockAbi,\n data: createEvent.data,\n topics: createEvent.topics as [`0x${string}`, ...`0x${string}`[]],\n })\n \n if (decoded.eventName === 'Create') {\n return {\n poolAddress: (decoded.args as any).poolOrHook as Address,\n tokenAddress: (decoded.args as any).asset as Address,\n transactionHash: hash\n }\n }\n }\n \n throw new Error('Failed to get pool and token addresses from transaction')\n }\n \n /**\n * Generate a random salt based on user address\n */\n private generateRandomSalt(account: Address): Hex {\n // Use crypto.getRandomValues for secure random generation\n const array = new Uint8Array(32)\n \n // Try to use crypto API if available (Node.js or browser)\n if (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n crypto.getRandomValues(array)\n } else {\n // Fallback: use timestamp and account for deterministic generation\n const timestamp = Date.now()\n const timestampBytes = new Uint8Array(8)\n for (let i = 0; i < 8; i++) {\n timestampBytes[i] = (timestamp >> (i * 8)) & 0xff\n }\n \n // Fill array with timestamp and account-based entropy\n for (let i = 0; i < 32; i++) {\n if (i < 8) {\n array[i] = timestampBytes[i]\n } else {\n array[i] = i\n }\n }\n }\n \n // XOR with address bytes for additional entropy\n if (account) {\n const addressBytes = account.slice(2).padStart(40, '0')\n for (let i = 0; i < 20; i++) {\n const addressByte = parseInt(\n addressBytes.slice(i * 2, (i + 1) * 2),\n 16\n )\n array[i] ^= addressByte\n }\n }\n \n return `0x${Array.from(array)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('')}` as Hex\n }\n\n /**\n * Create a new dynamic auction (using Uniswap V4 hook for gradual Dutch auction)\n * @param params Configuration for the dynamic auction\n * @returns The address of the created hook and token\n */\n async createDynamicAuction(params: CreateDynamicAuctionParams<C>): Promise<{\n hookAddress: Address\n tokenAddress: Address\n poolId: string\n transactionHash: string\n }> {\n // Validate parameters\n this.validateDynamicAuctionParams(params)\n \n const addresses = getAddresses(this.chainId)\n \n // 1. Calculate gamma if not provided\n const gamma = params.auction.gamma ?? this.computeOptimalGamma(\n params.auction.startTick,\n params.auction.endTick,\n params.auction.duration,\n params.auction.epochLength,\n params.pool.tickSpacing\n )\n \n // 2. Prepare time parameters\n // Use provided block timestamp or fetch the latest\n let blockTimestamp: number\n if (params.blockTimestamp !== undefined) {\n blockTimestamp = params.blockTimestamp\n } else {\n const latestBlock = await this.publicClient.getBlock({ blockTag: 'latest' })\n blockTimestamp = Number(latestBlock.timestamp)\n }\n \n // Use startTimeOffset if provided, otherwise default to 30 seconds\n const startTimeOffset = params.startTimeOffset ?? 30\n const startTime = blockTimestamp + startTimeOffset\n const endTime = blockTimestamp + params.auction.duration * DAY_SECONDS + startTimeOffset\n \n // 3. Prepare hook initialization data\n const dopplerData = {\n minimumProceeds: params.auction.minProceeds,\n maximumProceeds: params.auction.maxProceeds,\n startingTime: BigInt(startTime),\n endingTime: BigInt(endTime),\n startingTick: params.auction.startTick,\n endingTick: params.auction.endTick,\n epochLength: BigInt(params.auction.epochLength),\n gamma,\n isToken0: false, // Will be determined during mining\n numPDSlugs: BigInt(params.auction.numPdSlugs ?? DEFAULT_PD_SLUGS),\n fee: params.pool.fee,\n tickSpacing: params.pool.tickSpacing\n }\n \n // 4. Prepare token parameters (standard vs Doppler404)\n if (this.isDoppler404Token(params.token)) {\n if (!addresses.doppler404Factory || addresses.doppler404Factory === ZERO_ADDRESS) {\n throw new Error('Doppler404 factory address not configured for this chain')\n }\n }\n\n const vestingDuration = params.vesting?.duration ?? BigInt(0)\n const tokenFactoryData = this.isDoppler404Token(params.token)\n ? (() => {\n const t = params.token as Doppler404TokenConfig\n return {\n name: t.name,\n symbol: t.symbol,\n baseURI: t.baseURI,\n unit: t.unit !== undefined ? BigInt(t.unit) : 1000n,\n }\n })()\n : (() => {\n const t = params.token as StandardTokenConfig\n return {\n name: t.name,\n symbol: t.symbol,\n initialSupply: params.sale.initialSupply,\n airlock: addresses.airlock,\n yearlyMintRate: t.yearlyMintRate ?? DEFAULT_V4_YEARLY_MINT_RATE,\n vestingDuration: BigInt(vestingDuration),\n recipients: params.vesting ? [params.userAddress] : [],\n amounts: params.vesting ? [params.sale.initialSupply - params.sale.numTokensToSell] : [],\n tokenURI: t.tokenURI,\n }\n })()\n \n // 5. Mine hook address with appropriate flags\n const [salt, hookAddress, tokenAddress, poolInitializerData, encodedTokenFactoryData] = this.mineHookAddress({\n airlock: addresses.airlock,\n poolManager: addresses.poolManager,\n deployer: addresses.dopplerDeployer,\n initialSupply: params.sale.initialSupply,\n numTokensToSell: params.sale.numTokensToSell,\n numeraire: params.sale.numeraire,\n tokenFactory: this.isDoppler404Token(params.token) ? (addresses.doppler404Factory as Address) : addresses.tokenFactory,\n tokenFactoryData: tokenFactoryData,\n poolInitializer: addresses.v4Initializer,\n poolInitializerData: dopplerData,\n tokenVariant: this.isDoppler404Token(params.token) ? 'doppler404' : 'standard'\n })\n \n // 6. Encode migration data\n const liquidityMigratorData = this.encodeMigrationData(params.migration)\n \n // 7. Encode governance factory data\n const governanceFactoryData = encodeAbiParameters(\n [\n { type: 'string' },\n { type: 'uint48' },\n { type: 'uint32' },\n { type: 'uint256' },\n ],\n [\n params.token.name,\n params.governance.type === 'custom' ? params.governance.initialVotingDelay : DEFAULT_V4_INITIAL_VOTING_DELAY,\n params.governance.type === 'custom' ? params.governance.initialVotingPeriod : DEFAULT_V4_INITIAL_VOTING_PERIOD,\n params.governance.type === 'custom' ? params.governance.initialProposalThreshold : DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD\n ]\n )\n \n // 7.1 Choose governance factory\n const useNoOpGovernance = params.governance.type === 'noOp'\n\n const governanceFactoryAddress: Address = (() => {\n if (useNoOpGovernance) {\n const noOpGovernanceFactoryAddress = (addresses.noOpGovernanceFactory ?? ZERO_ADDRESS)\n if (!noOpGovernanceFactoryAddress || noOpGovernanceFactoryAddress === ZERO_ADDRESS) {\n throw new Error('No-op governance requested, but noOpGovernanceFactory is not deployed on this chain. Provide standard governance via withGovernance() or use a supported chain.')\n }\n return noOpGovernanceFactoryAddress\n }\n const standardGovernanceFactoryAddress = addresses.governanceFactory\n if (!standardGovernanceFactoryAddress || standardGovernanceFactoryAddress === ZERO_ADDRESS) {\n throw new Error('Standard governance requested but governanceFactory is not deployed on this chain.')\n }\n return standardGovernanceFactoryAddress\n })()\n\n // 8. Build the complete CreateParams for the V4-style ABI\n const createParams = {\n initialSupply: params.sale.initialSupply,\n numTokensToSell: params.sale.numTokensToSell,\n numeraire: params.sale.numeraire,\n tokenFactory: this.isDoppler404Token(params.token) ? (addresses.doppler404Factory as Address) : addresses.tokenFactory,\n tokenFactoryData: encodedTokenFactoryData,\n governanceFactory: governanceFactoryAddress,\n governanceFactoryData: governanceFactoryData,\n poolInitializer: addresses.v4Initializer,\n poolInitializerData: poolInitializerData,\n liquidityMigrator: this.getMigratorAddress(params.migration),\n liquidityMigratorData: liquidityMigratorData,\n integrator: params.integrator ?? ZERO_ADDRESS,\n salt: salt,\n }\n \n // Call the airlock contract to create the pool\n if (!this.walletClient) {\n throw new Error('Wallet client required for write operations')\n }\n \n const { request, result } = await this.publicClient.simulateContract({\n address: addresses.airlock,\n abi: airlockAbi,\n functionName: 'create',\n args: [{...createParams}],\n account: this.walletClient.account,\n })\n \n const hash = await this.walletClient.writeContract(request)\n \n // Wait for transaction and get the receipt\n const receipt = await this.publicClient.waitForTransactionReceipt({ hash })\n \n // Get actual addresses from the return value or event logs\n let actualHookAddress: Address = hookAddress\n let actualTokenAddress: Address = tokenAddress\n \n if (result && Array.isArray(result) && result.length >= 2) {\n // The create function returns [asset, pool, governance, timelock, migrationPool]\n actualTokenAddress = result[0] as Address\n actualHookAddress = result[1] as Address // For V4, pool is the hook address\n } else {\n // Fallback: Parse the Create event from logs\n const createEvent = receipt.logs.find(log => {\n try {\n const decoded = decodeEventLog({\n abi: airlockAbi,\n data: log.data,\n topics: log.topics as [`0x${string}`, ...`0x${string}`[]],\n })\n return decoded.eventName === 'Create'\n } catch {\n return false\n }\n })\n \n if (createEvent) {\n const decoded = decodeEventLog({\n abi: airlockAbi,\n data: createEvent.data,\n topics: createEvent.topics as [`0x${string}`, ...`0x${string}`[]],\n })\n \n if (decoded.eventName === 'Create') {\n actualHookAddress = (decoded.args as any).poolOrHook as Address\n actualTokenAddress = (decoded.args as any).asset as Address\n }\n }\n }\n \n // Calculate pool ID for V4 using actual addresses\n const poolId = this.computePoolId({\n currency0: actualTokenAddress < params.sale.numeraire ? actualTokenAddress : params.sale.numeraire,\n currency1: actualTokenAddress < params.sale.numeraire ? params.sale.numeraire : actualTokenAddress,\n fee: params.pool.fee,\n tickSpacing: params.pool.tickSpacing,\n hooks: actualHookAddress\n })\n \n return {\n hookAddress: actualHookAddress,\n tokenAddress: actualTokenAddress,\n poolId,\n transactionHash: hash\n }\n }\n\n private isDoppler404Token(token: TokenConfig): token is Doppler404TokenConfig {\n return (token as Doppler404TokenConfig).type === 'doppler404'\n }\n\n /**\n * Encode migration data based on the MigrationConfig\n * This replaces the manual encoding methods from the old SDKs\n */\n private encodeMigrationData(config: MigrationConfig): Hex {\n switch (config.type) {\n case 'uniswapV2':\n // V2 migrator expects empty data\n return '0x' as Hex\n \n case 'uniswapV3':\n // Encode V3 migration data: fee and tick spacing\n return encodeAbiParameters(\n [\n { type: 'uint24' }, // fee\n { type: 'int24' } // tickSpacing\n ],\n [config.fee, config.tickSpacing]\n )\n \n case 'uniswapV4':\n // Encode V4 migration data with streamable fees config\n // The V4 migrator expects beneficiaries with shares in WAD (1e18) format\n const WAD = BigInt(1e18)\n const beneficiaryData: { beneficiary: Address; shares: bigint }[] = []\n \n // Convert percentage-based beneficiaries to shares-based\n for (const b of config.streamableFees.beneficiaries) {\n beneficiaryData.push({\n beneficiary: b.address,\n shares: (BigInt(b.percentage) * WAD) / BigInt(BASIS_POINTS)\n })\n }\n \n // Sort beneficiaries by address in ascending order (required by contract)\n beneficiaryData.sort((a, b) => {\n const addrA = a.beneficiary.toLowerCase()\n const addrB = b.beneficiary.toLowerCase()\n return addrA < addrB ? -1 : addrA > addrB ? 1 : 0\n })\n \n // Note: The contract will validate that the airlock owner gets at least 5%\n // If not present, the SDK user should add it manually\n \n return encodeAbiParameters(\n [\n { type: 'uint24' }, // fee\n { type: 'int24' }, // tickSpacing\n { type: 'uint32' }, // lockDuration\n {\n type: 'tuple[]', \n components: [\n { type: 'address', name: 'beneficiary' },\n { type: 'uint96', name: 'shares' }\n ]\n }\n ],\n [\n config.fee,\n config.tickSpacing,\n config.streamableFees.lockDuration,\n beneficiaryData.map(b => ({\n beneficiary: b.beneficiary,\n shares: b.shares\n }))\n ]\n )\n \n default:\n throw new Error(`Unknown migration type: ${(config as any).type}`)\n }\n }\n\n /**\n * Validate static auction parameters\n */\n private validateStaticAuctionParams(params: CreateStaticAuctionParams): void {\n // Validate token parameters\n if (!params.token.name || params.token.name.trim().length === 0) {\n throw new Error('Token name is required')\n }\n if (!params.token.symbol || params.token.symbol.trim().length === 0) {\n throw new Error('Token symbol is required')\n }\n \n // Validate tick range\n if (params.pool.startTick >= params.pool.endTick) {\n throw new Error('Start tick must be less than end tick')\n }\n \n // Validate sale config\n if (params.sale.initialSupply <= BigInt(0)) {\n throw new Error('Initial supply must be positive')\n }\n if (params.sale.numTokensToSell <= BigInt(0)) {\n throw new Error('Number of tokens to sell must be positive')\n }\n if (params.sale.numTokensToSell > params.sale.initialSupply) {\n throw new Error('Cannot sell more tokens than initial supply')\n }\n \n // Validate vesting if provided\n if (params.vesting) {\n const vestedAmount = params.sale.initialSupply - params.sale.numTokensToSell\n if (vestedAmount <= BigInt(0)) {\n throw new Error('No tokens available for vesting')\n }\n }\n \n // Validate migration config\n if (params.migration.type === 'uniswapV4' && params.migration.streamableFees) {\n const beneficiaries = params.migration.streamableFees.beneficiaries\n if (beneficiaries.length === 0) {\n throw new Error('At least one beneficiary is required for V4 migration')\n }\n \n // Check that percentages sum to 100%\n const totalPercentage = beneficiaries.reduce((sum, b) => sum + b.percentage, 0)\n if (totalPercentage !== BASIS_POINTS) {\n throw new Error(`Beneficiary percentages must sum to ${BASIS_POINTS} (100%), but got ${totalPercentage}`)\n }\n }\n }\n\n /**\n * Validate dynamic auction parameters\n */\n private validateDynamicAuctionParams(params: CreateDynamicAuctionParams): void {\n // Validate token parameters\n if (!params.token.name || params.token.name.trim().length === 0) {\n throw new Error('Token name is required')\n }\n if (!params.token.symbol || params.token.symbol.trim().length === 0) {\n throw new Error('Token symbol is required')\n }\n \n // Validate tick range\n if (params.auction.startTick >= params.auction.endTick) {\n throw new Error('Start tick must be less than end tick')\n }\n \n // Validate sale config\n if (params.sale.initialSupply <= BigInt(0)) {\n throw new Error('Initial supply must be positive')\n }\n if (params.sale.numTokensToSell <= BigInt(0)) {\n throw new Error('Number of tokens to sell must be positive')\n }\n if (params.sale.numTokensToSell > params.sale.initialSupply) {\n throw new Error('Cannot sell more tokens than initial supply')\n }\n \n // Validate auction parameters\n if (params.auction.duration <= 0) {\n throw new Error('Auction duration must be positive')\n }\n if (params.auction.epochLength <= 0) {\n throw new Error('Epoch length must be positive')\n }\n if (params.pool.tickSpacing <= 0) {\n throw new Error('Tick spacing must be positive')\n }\n \n // Validate that total duration is divisible by epoch length\n const totalDuration = params.auction.duration * DAY_SECONDS\n if (totalDuration % params.auction.epochLength !== 0) {\n throw new Error('Epoch length must divide total duration evenly')\n }\n \n // Validate gamma if provided\n if (params.auction.gamma !== undefined) {\n if (params.auction.gamma % params.pool.tickSpacing !== 0) {\n throw new Error('Gamma must be divisible by tick spacing')\n }\n }\n \n // Validate migration config\n if (params.migration.type === 'uniswapV4' && params.migration.streamableFees) {\n const beneficiaries = params.migration.streamableFees.beneficiaries\n if (beneficiaries.length === 0) {\n throw new Error('At least one beneficiary is required for V4 migration')\n }\n \n // Check that percentages sum to 100%\n const totalPercentage = beneficiaries.reduce((sum, b) => sum + b.percentage, 0)\n if (totalPercentage !== BASIS_POINTS) {\n throw new Error(`Beneficiary percentages must sum to ${BASIS_POINTS} (100%), but got ${totalPercentage}`)\n }\n }\n }\n\n /**\n * Get the airlock contract address for the current chain\n */\n private getAirlockAddress(): Address {\n const addresses = getAddresses(this.chainId)\n return addresses.airlock\n }\n\n /**\n * Get the appropriate initializer address based on auction type\n */\n private getInitializerAddress(isStatic: boolean): Address {\n const addresses = getAddresses(this.chainId)\n return isStatic ? addresses.v3Initializer : addresses.v4Initializer\n }\n\n /**\n * Get the appropriate migrator address based on migration config\n */\n private getMigratorAddress(config: MigrationConfig): Address {\n const addresses = getAddresses(this.chainId)\n \n switch (config.type) {\n case 'uniswapV2':\n return addresses.v2Migrator\n case 'uniswapV3':\n return addresses.v3Migrator\n case 'uniswapV4':\n return addresses.v4Migrator\n default:\n throw new Error(`Unknown migration type: ${(config as any).type}`)\n }\n }\n\n // computeTicks moved to builders. No longer needed here.\n\n /**\n * Compute optimal gamma parameter based on price range and time parameters\n * Gamma determines how much the price can move per epoch during the sale.\n */\n private computeOptimalGamma(\n startTick: number,\n endTick: number,\n durationDays: number,\n epochLength: number,\n tickSpacing: number\n ): number {\n // Calculate total number of epochs\n const totalEpochs = (durationDays * DAY_SECONDS) / epochLength\n\n // Calculate required tick movement per epoch to cover the range\n const tickDelta = Math.abs(endTick - startTick)\n // Round up to nearest multiple of tick spacing\n let gamma = Math.ceil(tickDelta / totalEpochs) * tickSpacing\n // Ensure gamma is at least 1 tick spacing\n gamma = Math.max(tickSpacing, gamma)\n\n if (gamma % tickSpacing !== 0) {\n throw new Error('Computed gamma must be divisible by tick spacing')\n }\n\n return gamma\n }\n\n /**\n * Mines a salt and hook address with the appropriate flags\n * \n * This method iterates through possible salt values to find a combination that:\n * - Produces a hook address with required Doppler flags\n * - Maintains proper token ordering relative to numeraire\n * - Ensures deterministic deployment addresses\n * \n * @param params - Parameters for hook address mining\n * @returns Tuple of [salt, hook address, token address, pool data, token data]\n * @throws {Error} If no valid salt can be found within the search limit\n * @private\n */\n private mineHookAddress(params: {\n airlock: Address\n poolManager: Address\n deployer: Address\n initialSupply: bigint\n numTokensToSell: bigint\n numeraire: Address\n tokenFactory: Address\n tokenFactoryData: any\n poolInitializer: Address\n poolInitializerData: any\n customDerc20Bytecode?: `0x${string}`\n tokenVariant?: 'standard' | 'doppler404'\n }): [Hash, Address, Address, Hex, Hex] {\n const isToken0 = params.numeraire !== zeroAddress\n\n const {\n minimumProceeds,\n maximumProceeds,\n startingTime,\n endingTime,\n startingTick,\n endingTick,\n epochLength,\n gamma,\n numPDSlugs,\n fee,\n tickSpacing,\n } = params.poolInitializerData\n\n const poolInitializerData = encodeAbiParameters(\n [\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'int24' },\n { type: 'int24' },\n { type: 'uint256' },\n { type: 'int24' },\n { type: 'bool' },\n { type: 'uint256' },\n { type: 'uint24' },\n { type: 'int24' },\n ],\n [\n minimumProceeds,\n maximumProceeds,\n startingTime,\n endingTime,\n startingTick,\n endingTick,\n epochLength,\n gamma,\n isToken0,\n numPDSlugs,\n fee,\n tickSpacing,\n ]\n )\n\n const { poolManager, numTokensToSell, poolInitializer } = params\n\n const hookInitHashData = encodeAbiParameters(\n [\n { type: 'address' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'int24' },\n { type: 'int24' },\n { type: 'uint256' },\n { type: 'int24' },\n { type: 'bool' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'uint24' },\n ],\n [\n poolManager,\n numTokensToSell,\n minimumProceeds,\n maximumProceeds,\n startingTime,\n endingTime,\n startingTick,\n endingTick,\n epochLength,\n gamma,\n isToken0,\n numPDSlugs,\n poolInitializer,\n fee,\n ]\n )\n\n const hookInitHash = keccak256(\n encodePacked(\n ['bytes', 'bytes'],\n [DopplerBytecode as Hex, hookInitHashData]\n )\n )\n\n const tokenFactoryData = (params.tokenVariant === 'doppler404')\n ? encodeAbiParameters(\n [\n { type: 'string' },\n { type: 'string' },\n { type: 'string' },\n { type: 'uint256' },\n ],\n [\n params.tokenFactoryData.name,\n params.tokenFactoryData.symbol,\n params.tokenFactoryData.baseURI,\n params.tokenFactoryData.unit ?? 1000n,\n ]\n )\n : (() => {\n const {\n name,\n symbol,\n yearlyMintRate,\n vestingDuration,\n recipients,\n amounts,\n tokenURI,\n } = params.tokenFactoryData\n return encodeAbiParameters(\n [\n { type: 'string' },\n { type: 'string' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'address[]' },\n { type: 'uint256[]' },\n { type: 'string' },\n ],\n [\n name,\n symbol,\n yearlyMintRate,\n vestingDuration,\n recipients,\n amounts,\n tokenURI,\n ]\n )\n })()\n\n const { airlock, initialSupply } = params\n\n // Compute token init hash; use DN404 bytecode if tokenVariant is doppler404\n let tokenInitHash: Hash | undefined\n if (params.tokenVariant === 'doppler404') {\n const { name, symbol, baseURI } = params.tokenFactoryData\n const { airlock, initialSupply } = params\n // DN404 constructor: (name, symbol, initialSupply, recipient, owner, baseURI)\n const initHashData = encodeAbiParameters(\n [\n { type: 'string' },\n { type: 'string' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'address' },\n { type: 'string' },\n ],\n [\n name,\n symbol,\n initialSupply,\n airlock,\n airlock,\n baseURI,\n ]\n )\n tokenInitHash = keccak256(\n encodePacked(['bytes', 'bytes'], [DopplerDN404Bytecode as Hex, initHashData])\n )\n } else {\n const { name, symbol, yearlyMintRate, vestingDuration, recipients, amounts, tokenURI } = params.tokenFactoryData\n const { airlock, initialSupply } = params\n const initHashData = encodeAbiParameters(\n [\n { type: 'string' },\n { type: 'string' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'address' },\n { type: 'uint256' },\n { type: 'uint256' },\n { type: 'address[]' },\n { type: 'uint256[]' },\n { type: 'string' },\n ],\n [\n name,\n symbol,\n initialSupply,\n airlock,\n airlock,\n yearlyMintRate,\n vestingDuration,\n recipients,\n amounts,\n tokenURI,\n ]\n )\n tokenInitHash = keccak256(\n encodePacked(['bytes', 'bytes'], [params.customDerc20Bytecode as Hex ?? DERC20Bytecode as Hex, initHashData])\n )\n }\n\n // Use the exact flags from V4 SDK\n const flags = BigInt(\n (1 << 13) | // BEFORE_INITIALIZE_FLAG\n (1 << 12) | // AFTER_INITIALIZE_FLAG\n (1 << 11) | // BEFORE_ADD_LIQUIDITY_FLAG\n (1 << 7) | // BEFORE_SWAP_FLAG\n (1 << 6) | // AFTER_SWAP_FLAG\n (1 << 5) // BEFORE_DONATE_FLAG\n )\n\n for (let salt = BigInt(0); salt < BigInt(1_000_000); salt++) {\n const saltBytes = `0x${salt.toString(16).padStart(64, '0')}` as Hash\n const hook = this.computeCreate2Address(\n saltBytes,\n hookInitHash,\n params.deployer\n )\n const hookBigInt = BigInt(hook)\n if (tokenInitHash) {\n const token = this.computeCreate2Address(\n saltBytes,\n tokenInitHash,\n params.tokenFactory\n )\n const tokenBigInt = BigInt(token)\n const numeraireBigInt = BigInt(params.numeraire)\n if (\n (hookBigInt & FLAG_MASK) === flags &&\n ((isToken0 && tokenBigInt < numeraireBigInt) ||\n (!isToken0 && tokenBigInt > numeraireBigInt))\n ) {\n return [saltBytes, hook, token, poolInitializerData, tokenFactoryData]\n }\n }\n }\n\n throw new Error('AirlockMiner: could not find salt')\n }\n\n /**\n * Computes the CREATE2 address for a contract deployment\n * @param salt - The salt used for deployment\n * @param initCodeHash - Hash of the initialization code\n * @param deployer - Address of the deploying contract\n * @returns The computed contract address\n * @private\n */\n private computeCreate2Address(\n salt: Hash,\n initCodeHash: Hash,\n deployer: Address\n ): Address {\n const encoded = encodePacked(\n ['bytes1', 'address', 'bytes32', 'bytes32'],\n ['0xff', deployer, salt, initCodeHash]\n )\n return getAddress(`0x${keccak256(encoded).slice(-40)}`)\n }\n\n /**\n * Compute V4 pool ID from pool key components\n */\n private computePoolId(poolKey: {\n currency0: Address\n currency1: Address \n fee: number\n tickSpacing: number\n hooks: Address\n }): string {\n // V4 pools are identified by the hash of their PoolKey\n const encoded = encodeAbiParameters(\n [\n { type: 'address' },\n { type: 'address' },\n { type: 'uint24' },\n { type: 'int24' },\n { type: 'address' }\n ],\n [\n poolKey.currency0,\n poolKey.currency1,\n poolKey.fee,\n poolKey.tickSpacing,\n poolKey.hooks\n ]\n )\n return keccak256(encoded)\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ADDRESSES } from './chunk-
|
|
1
|
+
import { ADDRESSES } from './chunk-BIZYT3GP.mjs';
|
|
2
2
|
|
|
3
3
|
// src/utils/airlock.ts
|
|
4
4
|
var airlockAbi = [
|
|
@@ -24,5 +24,5 @@ var getAirlockOwner = async (publicClient) => {
|
|
|
24
24
|
};
|
|
25
25
|
|
|
26
26
|
export { getAirlockOwner };
|
|
27
|
-
//# sourceMappingURL=chunk-
|
|
28
|
-
//# sourceMappingURL=chunk-
|
|
27
|
+
//# sourceMappingURL=chunk-5AJOUEVM.mjs.map
|
|
28
|
+
//# sourceMappingURL=chunk-5AJOUEVM.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/airlock.ts"],"names":[],"mappings":";;;AAGA,IAAM,UAAA,GAAa;AAAA,EACjB;AAAA,IACE,IAAA,EAAM,UAAA;AAAA,IACN,IAAA,EAAM,OAAA;AAAA,IACN,QAAQ,EAAC;AAAA,IACT,OAAA,EAAS,CAAC,EAAE,IAAA,EAAM,IAAI,IAAA,EAAM,SAAA,EAAW,YAAA,EAAc,SAAA,EAAW,CAAA;AAAA,IAChE,eAAA,EAAiB;AAAA;AAErB,CAAA;AAEO,IAAM,eAAA,GAAkB,OAC3B,YAAA,KACC;AACD,EAAA,MAAM,KAAA,GAAQ,aAAa,KAAA,CAAM,EAAA;AACjC,EAAA,MAAM,cAAA,GAAiB,SAAA,CAAU,KAAK,CAAA,CAAE,OAAA;AAExC,EAAA,MAAM,KAAA,GAAQ,MAAM,YAAA,CAAa,YAAA,CAAa;AAAA,IAC1C,OAAA,EAAS,cAAA;AAAA,IACT,GAAA,EAAK,UAAA;AAAA,IACL,YAAA,EAAc;AAAA,GACjB,CAAA;AAED,EAAA,IAAI,CAAC,KAAA,EAAO,MAAM,IAAI,MAAM,yBAAyB,CAAA;AACrD,EAAA,OAAA,CAAQ,GAAA,CAAI,kBAAkB,KAAK,CAAA;AAEnC,EAAA,OAAO,KAAA;AACX","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/utils/airlock.ts"],"names":[],"mappings":";;;AAGA,IAAM,UAAA,GAAa;AAAA,EACjB;AAAA,IACE,IAAA,EAAM,UAAA;AAAA,IACN,IAAA,EAAM,OAAA;AAAA,IACN,QAAQ,EAAC;AAAA,IACT,OAAA,EAAS,CAAC,EAAE,IAAA,EAAM,IAAI,IAAA,EAAM,SAAA,EAAW,YAAA,EAAc,SAAA,EAAW,CAAA;AAAA,IAChE,eAAA,EAAiB;AAAA;AAErB,CAAA;AAEO,IAAM,eAAA,GAAkB,OAC3B,YAAA,KACC;AACD,EAAA,MAAM,KAAA,GAAQ,aAAa,KAAA,CAAM,EAAA;AACjC,EAAA,MAAM,cAAA,GAAiB,SAAA,CAAU,KAAK,CAAA,CAAE,OAAA;AAExC,EAAA,MAAM,KAAA,GAAQ,MAAM,YAAA,CAAa,YAAA,CAAa;AAAA,IAC1C,OAAA,EAAS,cAAA;AAAA,IACT,GAAA,EAAK,UAAA;AAAA,IACL,YAAA,EAAc;AAAA,GACjB,CAAA;AAED,EAAA,IAAI,CAAC,KAAA,EAAO,MAAM,IAAI,MAAM,yBAAyB,CAAA;AACrD,EAAA,OAAA,CAAQ,GAAA,CAAI,kBAAkB,KAAK,CAAA;AAEnC,EAAA,OAAO,KAAA;AACX","file":"chunk-5AJOUEVM.mjs","sourcesContent":["import { SupportedPublicClient } from '@/types';\nimport { ADDRESSES } from '@/addresses';\n\nconst airlockAbi = [\n {\n type: 'function',\n name: 'owner',\n inputs: [],\n outputs: [{ name: '', type: 'address', internalType: 'address' }],\n stateMutability: 'view',\n },\n] as const;\n\nexport const getAirlockOwner = async (\n publicClient: SupportedPublicClient\n) => {\n const chain = publicClient.chain.id;\n const airlockAddress = ADDRESSES[chain].airlock;\n\n const owner = await publicClient.readContract({\n address: airlockAddress,\n abi: airlockAbi,\n functionName: 'owner',\n });\n\n if (!owner) throw new Error('Airlock owner not found');\n console.log('Airlock owner:', owner);\n\n return owner as `0x${string}`;\n};\n"]}
|
|
@@ -58,7 +58,7 @@ var ADDRESSES = {
|
|
|
58
58
|
[CHAIN_IDS.BASE_SEPOLIA]: {
|
|
59
59
|
airlock: "0x3411306ce66c9469bff1535ba955503c4bde1c6e",
|
|
60
60
|
tokenFactory: "0xc69ba223c617f7d936b3cf2012aa644815dbe9ff",
|
|
61
|
-
doppler404Factory: "
|
|
61
|
+
doppler404Factory: "0xdd8cea2890f1b3498436f19ec8da8fecc2cb7af7",
|
|
62
62
|
v3Initializer: "0x4c3062b9ccfdbcb10353f57c1b59a29d4c5cfa47",
|
|
63
63
|
v3Quoter: "0xC5290058841028F1614F3A6F0F5816cAd0df5E27",
|
|
64
64
|
lockableV3Initializer: "0x16ada5be50c3c2d94af5feae6b539c40a78ad53c",
|
|
@@ -172,5 +172,5 @@ function getAddresses(chainId) {
|
|
|
172
172
|
}
|
|
173
173
|
|
|
174
174
|
export { ADDRESSES, CHAIN_IDS, getAddresses };
|
|
175
|
-
//# sourceMappingURL=chunk-
|
|
176
|
-
//# sourceMappingURL=chunk-
|
|
175
|
+
//# sourceMappingURL=chunk-BIZYT3GP.mjs.map
|
|
176
|
+
//# sourceMappingURL=chunk-BIZYT3GP.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/addresses.ts"],"names":[],"mappings":";AAGO,IAAM,SAAA,GAAY;AAAA,EACvB,OAAA,EAAS,CAAA;AAAA,EACT,IAAA,EAAM,IAAA;AAAA,EACN,YAAA,EAAc,KAAA;AAAA,EACd,GAAA,EAAK,KAAA;AAAA,EACL,QAAA,EAAU,GAAA;AAAA,EACV,gBAAA,EAAkB;AACpB;AAoDA,IAAM,YAAA,GAAe,4CAAA;AAEd,IAAM,SAAA,GAAsD;AAAA,EACjE,CAAC,SAAA,CAAU,OAAO,GAAG;AAAA;AAAA,IAEnB,OAAA,EAAS,YAAA;AAAA,IACT,YAAA,EAAc,YAAA;AAAA,IACd,aAAA,EAAe,YAAA;AAAA,IACf,QAAA,EAAU,YAAA;AAAA,IACV,aAAA,EAAe,YAAA;AAAA,IACf,OAAA,EAAS,YAAA;AAAA,IACT,WAAA,EAAa,YAAA;AAAA,IACb,eAAA,EAAiB,YAAA;AAAA,IACjB,UAAA,EAAY,YAAA;AAAA,IACZ,UAAA,EAAY,YAAA;AAAA,IACZ,UAAA,EAAY,YAAA;AAAA,IACZ,WAAA,EAAa,YAAA;AAAA,IACb,SAAA,EAAW,YAAA;AAAA,IACX,iBAAA,EAAmB,YAAA;AAAA,IACnB,eAAA,EAAiB,YAAA;AAAA,IACjB,OAAA,EAAS,4CAAA;AAAA,IACT,IAAA,EAAM,4CAAA;AAAA,IACN,gBAAA,EAAkB,4CAAA;AAAA,IAClB,gBAAA,EAAkB;AAAA,GACpB;AAAA,EACA,CAAC,SAAA,CAAU,IAAI,GAAG;AAAA,IAChB,OAAA,EAAS,4CAAA;AAAA,IACT,YAAA,EAAc,4CAAA;AAAA,IACd,aAAA,EAAe,4CAAA;AAAA,IACf,QAAA,EAAU,4CAAA;AAAA,IACV,qBAAA,EAAuB,4CAAA;AAAA,IACvB,aAAA,EAAe,4CAAA;AAAA,IACf,OAAA,EAAS,4CAAA;AAAA,IACT,WAAA,EAAa,4CAAA;AAAA,IACb,eAAA,EAAiB,4CAAA;AAAA,IACjB,WAAA,EAAa,4CAAA;AAAA,IACb,SAAA,EAAW,4CAAA;AAAA,IACX,UAAA,EAAY,4CAAA;AAAA,IACZ,UAAA,EAAY,4CAAA;AAAA,IACZ,UAAA,EAAY,4CAAA;AAAA,IACZ,iBAAA,EAAmB,4CAAA;AAAA,IACnB,qBAAA,EAAuB,4CAAA;AAAA,IACvB,oBAAA,EAAsB,4CAAA;AAAA,IACtB,eAAA,EAAiB,4CAAA;AAAA,IACjB,aAAA,EAAe,4CAAA;AAAA,IACf,OAAA,EAAS,4CAAA;AAAA,IACT,OAAA,EAAS,4CAAA;AAAA,IACT,IAAA,EAAM;AAAA,GACR;AAAA,EACA,CAAC,SAAA,CAAU,YAAY,GAAG;AAAA,IACxB,OAAA,EAAS,4CAAA;AAAA,IACT,YAAA,EAAc,4CAAA;AAAA,IACd,iBAAA,EAAmB,4CAAA;AAAA,IACnB,aAAA,EAAe,4CAAA;AAAA,IACf,QAAA,EAAU,4CAAA;AAAA,IACV,qBAAA,EAAuB,4CAAA;AAAA,IACvB,aAAA,EAAe,4CAAA;AAAA,IACf,OAAA,EAAS,4CAAA;AAAA,IACT,WAAA,EAAa,4CAAA;AAAA,IACb,eAAA,EAAiB,4CAAA;AAAA,IACjB,WAAA,EAAa,4CAAA;AAAA,IACb,SAAA,EAAW,4CAAA;AAAA,IACX,UAAA,EAAY,4CAAA;AAAA,IACZ,UAAA,EAAY,4CAAA;AAAA,IACZ,UAAA,EAAY,4CAAA;AAAA,IACZ,cAAA,EAAgB,4CAAA;AAAA,IAChB,iBAAA,EAAmB,4CAAA;AAAA,IACnB,qBAAA,EAAuB,4CAAA;AAAA,IACvB,oBAAA,EAAsB,4CAAA;AAAA,IACtB,eAAA,EAAiB,4CAAA;AAAA,IACjB,aAAA,EAAe,4CAAA;AAAA,IACf,OAAA,EAAS,4CAAA;AAAA,IACT,OAAA,EAAS,4CAAA;AAAA,IACT,IAAA,EAAM;AAAA,GACR;AAAA,EACA,CAAC,SAAA,CAAU,GAAG,GAAG;AAAA,IACf,OAAA,EAAS,4CAAA;AAAA,IACT,YAAA,EAAc,4CAAA;AAAA,IACd,aAAA,EAAe,4CAAA;AAAA,IACf,QAAA,EAAU,4CAAA;AAAA,IACV,aAAA,EAAe,4CAAA;AAAA,IACf,OAAA,EAAS,4CAAA;AAAA,IACT,WAAA,EAAa,4CAAA;AAAA,IACb,eAAA,EAAiB,4CAAA;AAAA,IACjB,WAAA,EAAa,4CAAA;AAAA,IACb,SAAA,EAAW,4CAAA;AAAA,IACX,UAAA,EAAY,4CAAA;AAAA,IACZ,UAAA,EAAY,4CAAA;AAAA,IACZ,UAAA,EAAY,4CAAA;AAAA;AAAA,IACZ,iBAAA,EAAmB,4CAAA;AAAA,IACnB,qBAAA,EAAuB,YAAA;AAAA;AAAA,IACvB,oBAAA,EAAsB,YAAA;AAAA;AAAA,IACtB,eAAA,EAAiB,4CAAA;AAAA,IACjB,aAAA,EAAe,4CAAA;AAAA,IACf,OAAA,EAAS,4CAAA;AAAA,IACT,OAAA,EAAS,4CAAA;AAAA,IACT,IAAA,EAAM;AAAA;AAAA,GACR;AAAA,EACA,CAAC,SAAA,CAAU,QAAQ,GAAG;AAAA,IACpB,OAAA,EAAS,4CAAA;AAAA,IACT,YAAA,EAAc,4CAAA;AAAA,IACd,aAAA,EAAe,4CAAA;AAAA,IACf,QAAA,EAAU,4CAAA;AAAA,IACV,aAAA,EAAe,4CAAA;AAAA,IACf,OAAA,EAAS,4CAAA;AAAA,IACT,WAAA,EAAa,4CAAA;AAAA,IACb,eAAA,EAAiB,4CAAA;AAAA,IACjB,WAAA,EAAa,4CAAA;AAAA,IACb,SAAA,EAAW,4CAAA;AAAA,IACX,UAAA,EAAY,4CAAA;AAAA,IACZ,UAAA,EAAY,4CAAA;AAAA,IACZ,UAAA,EAAY,4CAAA;AAAA;AAAA,IACZ,iBAAA,EAAmB,4CAAA;AAAA,IACnB,qBAAA,EAAuB,YAAA;AAAA;AAAA,IACvB,oBAAA,EAAsB,YAAA;AAAA;AAAA,IACtB,eAAA,EAAiB,4CAAA;AAAA,IACjB,aAAA,EAAe,4CAAA;AAAA,IACf,OAAA,EAAS,4CAAA;AAAA,IACT,OAAA,EAAS,4CAAA;AAAA,IACT,IAAA,EAAM;AAAA;AAAA,GACR;AAAA,EACA,CAAC,SAAA,CAAU,gBAAgB,GAAG;AAAA,IAC5B,OAAA,EAAS,4CAAA;AAAA,IACT,YAAA,EAAc,4CAAA;AAAA,IACd,aAAA,EAAe,4CAAA;AAAA,IACf,QAAA,EAAU,4CAAA;AAAA,IACV,aAAA,EAAe,4CAAA;AAAA,IACf,OAAA,EAAS,4CAAA;AAAA,IACT,WAAA,EAAa,4CAAA;AAAA,IACb,eAAA,EAAiB,4CAAA;AAAA,IACjB,WAAA,EAAa,4CAAA;AAAA,IACb,SAAA,EAAW,4CAAA;AAAA,IACX,UAAA,EAAY,4CAAA;AAAA,IACZ,UAAA,EAAY,4CAAA;AAAA,IACZ,UAAA,EAAY,4CAAA;AAAA;AAAA,IACZ,iBAAA,EAAmB,4CAAA;AAAA,IACnB,qBAAA,EAAuB,YAAA;AAAA;AAAA,IACvB,oBAAA,EAAsB,YAAA;AAAA;AAAA,IACtB,eAAA,EAAiB,4CAAA;AAAA,IACjB,aAAA,EAAe,4CAAA;AAAA,IACf,OAAA,EAAS,4CAAA;AAAA,IACT,OAAA,EAAS,4CAAA;AAAA,IACT,IAAA,EAAM;AAAA;AAAA;AAEV;AAKO,SAAS,aAAa,OAAA,EAAiC;AAC5D,EAAA,MAAM,SAAA,GAAY,UAAU,OAA2B,CAAA;AACvD,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,sBAAA,EAAyB,OAAO,CAAA,CAAE,CAAA;AAAA,EACpD;AACA,EAAA,OAAO,SAAA;AACT","file":"chunk-VDTWZWY6.mjs","sourcesContent":["import { Address } from 'viem'\n\n// Chain IDs\nexport const CHAIN_IDS = {\n MAINNET: 1,\n BASE: 8453,\n BASE_SEPOLIA: 84532,\n INK: 57073,\n UNICHAIN: 130,\n UNICHAIN_SEPOLIA: 1301,\n} as const\n\nexport type SupportedChainId = typeof CHAIN_IDS[keyof typeof CHAIN_IDS]\n\n// Contract addresses per chain\nexport interface ChainAddresses {\n // Core contracts\n airlock: Address\n tokenFactory: Address\n\n // Static auction contracts (V3)\n v3Initializer: Address\n v3Quoter: Address\n lockableV3Initializer?: Address\n \n // Dynamic auction contracts (V4)\n v4Initializer: Address\n doppler: Address\n dopplerLens: Address\n dopplerDeployer: Address\n poolManager: Address\n stateView: Address\n\n // Doppler404 contracts\n doppler404Factory?: Address\n \n // Migration contracts\n v2Migrator: Address\n v3Migrator: Address\n v4Migrator: Address\n v4MigratorHook?: Address\n \n // Governance contracts\n governanceFactory: Address\n noOpGovernanceFactory?: Address\n streamableFeesLocker?: Address\n \n // Router contracts\n universalRouter: Address\n univ2Router02?: Address\n permit2: Address\n \n // Other contracts\n bundler?: Address\n \n // Uniswap contracts\n weth: Address\n uniswapV2Factory?: Address\n uniswapV3Factory?: Address\n}\n\n// Not yet deployed placeholder\nconst ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' as Address\n\nexport const ADDRESSES: Record<SupportedChainId, ChainAddresses> = {\n [CHAIN_IDS.MAINNET]: {\n // Mainnet addresses not yet deployed\n airlock: ZERO_ADDRESS,\n tokenFactory: ZERO_ADDRESS,\n v3Initializer: ZERO_ADDRESS,\n v3Quoter: ZERO_ADDRESS,\n v4Initializer: ZERO_ADDRESS,\n doppler: ZERO_ADDRESS,\n dopplerLens: ZERO_ADDRESS,\n dopplerDeployer: ZERO_ADDRESS,\n v2Migrator: ZERO_ADDRESS,\n v3Migrator: ZERO_ADDRESS,\n v4Migrator: ZERO_ADDRESS,\n poolManager: ZERO_ADDRESS,\n stateView: ZERO_ADDRESS,\n governanceFactory: ZERO_ADDRESS,\n universalRouter: ZERO_ADDRESS,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n weth: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2' as Address,\n uniswapV2Factory: '0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f' as Address,\n uniswapV3Factory: '0x1F98431c8aD98523631AE4a59f267346ea31F984' as Address,\n },\n [CHAIN_IDS.BASE]: {\n airlock: '0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12' as Address,\n tokenFactory: '0xFAafdE6a5b658684cC5eb0C5c2c755B00A246F45' as Address,\n v3Initializer: '0xaA47D2977d622DBdFD33eeF6a8276727c52EB4e5' as Address,\n v3Quoter: '0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a' as Address,\n lockableV3Initializer: '0xe0dc4012ac9c868f09c6e4b20d66ed46d6f258d0' as Address,\n v4Initializer: '0x82ac010c67f70bacf7655cd8948a4ad92a173cac' as Address,\n doppler: '0x2f2bacd46d3f5c9ee052ab392b73711db89129db' as Address,\n dopplerLens: '0x43d0d97ec9241a8f05a264f94b82a1d2e600f2b3' as Address,\n dopplerDeployer: '0x8350cAd81149A9944c2fb4276955FaAA7D61e836' as Address,\n poolManager: '0x498581ff718922c3f8e6a244956af099b2652b2b' as Address,\n stateView: '0xa3c0c9b65bad0b08107aa264b0f3db444b867a71' as Address,\n v2Migrator: '0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731' as Address,\n v3Migrator: '0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731' as Address,\n v4Migrator: '0xa24e35a5d71d02a59b41e7c93567626302da1958' as Address,\n governanceFactory: '0xb4deE32EB70A5E55f3D2d861F49Fb3D79f7a14d9' as Address,\n noOpGovernanceFactory: '0xe7dfbd5b0a2c3b4464653a9becdc489229ef090e' as Address,\n streamableFeesLocker: '0x0a00775d71a42cd33d62780003035e7f5b47bd3a' as Address,\n universalRouter: '0x6ff5693b99212da76ad316178a184ab56d299b43' as Address,\n univ2Router02: '0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: '0x136191B46478cAB023cbC01a36160C4Aad81677a' as Address,\n weth: '0x4200000000000000000000000000000000000006' as Address,\n },\n [CHAIN_IDS.BASE_SEPOLIA]: {\n airlock: '0x3411306ce66c9469bff1535ba955503c4bde1c6e' as Address,\n tokenFactory: '0xc69ba223c617f7d936b3cf2012aa644815dbe9ff' as Address,\n doppler404Factory: '0x35c1ced35876f733f327da69e8efb83d453f3a31' as Address,\n v3Initializer: '0x4c3062b9ccfdbcb10353f57c1b59a29d4c5cfa47' as Address,\n v3Quoter: '0xC5290058841028F1614F3A6F0F5816cAd0df5E27' as Address,\n lockableV3Initializer: '0x16ada5be50c3c2d94af5feae6b539c40a78ad53c' as Address,\n v4Initializer: '0x8e891d249f1ecbffa6143c03eb1b12843aef09d3' as Address,\n doppler: '0x60a039e4add40ca95e0475c11e8a4182d06c9aa0' as Address,\n dopplerLens: '0x4a8d81db741248a36d9eb3bc6ef648bf798b47a7' as Address,\n dopplerDeployer: '0x60a039e4add40ca95e0475c11e8a4182d06c9aa0' as Address,\n poolManager: '0x05E73354cFDd6745C338b50BcFDfA3Aa6fA03408' as Address,\n stateView: '0x571291b572ed32ce6751a2cb2486ebee8defb9b4' as Address,\n v2Migrator: '0x04a898f3722c38f9def707bd17dc78920efa977c' as Address,\n v3Migrator: '0xb2ec6559704467306d04322a5dc082b2af4562dd' as Address,\n v4Migrator: '0xb2ec6559704467306d04322a5dc082b2af4562dd' as Address,\n v4MigratorHook: '0x508812fcdd4972a59b66eb2cad3772279c052000' as Address,\n governanceFactory: '0x9dbfaadc8c0cb2c34ba698dd9426555336992e20' as Address,\n noOpGovernanceFactory: '0x916b8987e4ad325c10d58ed8dc2036a6ff5eb228' as Address,\n streamableFeesLocker: '0x4da7d7a8034510c0ffd38a9252237ae8dba3cb61' as Address,\n universalRouter: '0x492E6456D9528771018DeB9E87ef7750EF184104' as Address,\n univ2Router02: '0x1689E7B1F10000AE47eBfE339a4f69dECd19F602' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: '0xab7bacb0d5c2c10152f92d34e07f530eb3cb0fb1' as Address,\n weth: '0x4200000000000000000000000000000000000006' as Address,\n },\n [CHAIN_IDS.INK]: {\n airlock: '0x014E1c0bd34f3B10546E554CB33B3293fECDD056' as Address,\n tokenFactory: '0xFAafdE6a5b658684cC5eb0C5c2c755B00A246F45' as Address,\n v3Initializer: '0xaA47D2977d622DBdFD33eeF6a8276727c52EB4e5' as Address,\n v3Quoter: '0x96b572D2d880cf2Fa2563651BD23ADE6f5516652' as Address,\n v4Initializer: '0xC99b485499f78995C6F1640dbB1413c57f8BA684' as Address,\n doppler: '0xa82c66b6ddEb92089015C3565E05B5c9750b2d4B' as Address,\n dopplerLens: '0x3972c00f7ed4885e145823eb7c655375d275a1c5' as Address,\n dopplerDeployer: '0xa82c66b6ddEb92089015C3565E05B5c9750b2d4B' as Address,\n poolManager: '0x360e68faccca8ca495c1b759fd9eee466db9fb32' as Address,\n stateView: '0x76fd297e2d437cd7f76d50f01afe6160f86e9990' as Address,\n v2Migrator: '0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731' as Address,\n v3Migrator: '0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731' as Address,\n v4Migrator: '0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731' as Address, // Same as v2/v3 migrator\n governanceFactory: '0xb4deE32EB70A5E55f3D2d861F49Fb3D79f7a14d9' as Address,\n noOpGovernanceFactory: ZERO_ADDRESS, // Not yet deployed\n streamableFeesLocker: ZERO_ADDRESS, // Not yet deployed\n universalRouter: '0x112908dac86e20e7241b0927479ea3bf935d1fa0' as Address,\n univ2Router02: '0xB3FB126ACDd5AdCA2f50Ac644a7a2303745f18b4' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: '0x136191B46478cAB023cbC01a36160C4Aad81677a' as Address,\n weth: ZERO_ADDRESS, // TODO: Get INK WETH address\n },\n [CHAIN_IDS.UNICHAIN]: {\n airlock: '0x77EbfBAE15AD200758E9E2E61597c0B07d731254' as Address,\n tokenFactory: '0x43d0D97EC9241A8F05A264f94B82A1d2E600f2B3' as Address,\n v3Initializer: '0x9F4e56be80f08ba1A2445645EFa6d231E27b43ec' as Address,\n v3Quoter: '0x385A5cf5F83e99f7BB2852b6A19C3538b9FA7658' as Address,\n v4Initializer: '0x2F2BAcd46d3F5c9EE052Ab392b73711dB89129DB' as Address,\n doppler: '0x06FEFD02F0b6d9f57F52cfacFc113665Dfa20F0f' as Address,\n dopplerLens: '0x333e3c607b141b18ff6de9f258db6e77fe7491e0' as Address,\n dopplerDeployer: '0x06FEFD02F0b6d9f57F52cfacFc113665Dfa20F0f' as Address,\n poolManager: '0x1f98400000000000000000000000000000000004' as Address,\n stateView: '0x86e8631a016f9068c3f085faf484ee3f5fdee8f2' as Address,\n v2Migrator: '0xf6023127f6E937091D5B605680056A6D27524bad' as Address,\n v3Migrator: '0xf6023127f6E937091D5B605680056A6D27524bad' as Address,\n v4Migrator: '0xf6023127f6E937091D5B605680056A6D27524bad' as Address, // Same as v2/v3 migrator\n governanceFactory: '0x99C94B9Df930E1E21a4E4a2c105dBff21bF5c5aE' as Address,\n noOpGovernanceFactory: ZERO_ADDRESS, // Not yet deployed\n streamableFeesLocker: ZERO_ADDRESS, // Not yet deployed\n universalRouter: '0xef740bf23acae26f6492b10de645d6b98dc8eaf3' as Address,\n univ2Router02: '0x284f11109359a7e1306c3e447ef14d38400063ff' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: '0x91231cDdD8d6C86Df602070a3081478e074b97b7' as Address,\n weth: ZERO_ADDRESS, // TODO: Get Unichain WETH address\n },\n [CHAIN_IDS.UNICHAIN_SEPOLIA]: {\n airlock: '0x651ab94B4777e2e4cdf96082d90C65bd947b73A4' as Address,\n tokenFactory: '0xC5E5a19a2ee32831Fcb8a81546979AF43936EbaA' as Address,\n v3Initializer: '0x7Fb9a622186B4660A5988C223ebb9d3690dD5007' as Address,\n v3Quoter: '0x6Dd37329A1A225a6Fca658265D460423DCafBF89' as Address,\n v4Initializer: '0x992375478626E67F4e639d3298EbCAaE51C3dF0b' as Address,\n doppler: '0x8350cAd81149A9944c2fb4276955FaAA7D61e836' as Address,\n dopplerLens: '0x56dcd40a3f2d466f48e7f48bdbe5cc9b92ae4472' as Address,\n dopplerDeployer: '0x2f2bacd46d3f5c9ee052ab392b73711db89129db' as Address,\n poolManager: '0x00B036B58a818B1BC34d502D3fE730Db729e62AC' as Address,\n stateView: '0xc199F1072a74D4e905ABa1A84d9a45E2546B6222' as Address,\n v2Migrator: '0x44C448E38A2C3D206c9132E7f645510dFbBC946b' as Address,\n v3Migrator: '0x44C448E38A2C3D206c9132E7f645510dFbBC946b' as Address,\n v4Migrator: '0x44C448E38A2C3D206c9132E7f645510dFbBC946b' as Address, // Same as v2/v3 migrator\n governanceFactory: '0x1E4332EEfAE9e4967C2D186f7b2d439D778e81cC' as Address,\n noOpGovernanceFactory: ZERO_ADDRESS, // Not yet deployed\n streamableFeesLocker: ZERO_ADDRESS, // Not yet deployed\n universalRouter: '0xf70536B3bcC1bD1a972dc186A2cf84cC6da6Be5D' as Address,\n univ2Router02: '0x284f11109359a7e1306c3e447ef14d38400063ff' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: '0x63f8C8F9beFaab2FaCD7Ece0b0242f78B920Ee90' as Address,\n weth: ZERO_ADDRESS, // TODO: Get Unichain Sepolia WETH address\n },\n}\n\n/**\n * Get addresses for a specific chain\n */\nexport function getAddresses(chainId: number): ChainAddresses {\n const addresses = ADDRESSES[chainId as SupportedChainId]\n if (!addresses) {\n throw new Error(`Unsupported chain ID: ${chainId}`)\n }\n return addresses\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/addresses.ts"],"names":[],"mappings":"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","file":"chunk-BIZYT3GP.mjs","sourcesContent":["import { Address } from 'viem'\n\n// Chain IDs\nexport const CHAIN_IDS = {\n MAINNET: 1,\n BASE: 8453,\n BASE_SEPOLIA: 84532,\n INK: 57073,\n UNICHAIN: 130,\n UNICHAIN_SEPOLIA: 1301,\n} as const\n\nexport type SupportedChainId = typeof CHAIN_IDS[keyof typeof CHAIN_IDS]\n\n// Contract addresses per chain\nexport interface ChainAddresses {\n // Core contracts\n airlock: Address\n tokenFactory: Address\n\n // Static auction contracts (V3)\n v3Initializer: Address\n v3Quoter: Address\n lockableV3Initializer?: Address\n \n // Dynamic auction contracts (V4)\n v4Initializer: Address\n doppler: Address\n dopplerLens: Address\n dopplerDeployer: Address\n poolManager: Address\n stateView: Address\n\n // Doppler404 contracts\n doppler404Factory?: Address\n \n // Migration contracts\n v2Migrator: Address\n v3Migrator: Address\n v4Migrator: Address\n v4MigratorHook?: Address\n \n // Governance contracts\n governanceFactory: Address\n noOpGovernanceFactory?: Address\n streamableFeesLocker?: Address\n \n // Router contracts\n universalRouter: Address\n univ2Router02?: Address\n permit2: Address\n \n // Other contracts\n bundler?: Address\n \n // Uniswap contracts\n weth: Address\n uniswapV2Factory?: Address\n uniswapV3Factory?: Address\n}\n\n// Not yet deployed placeholder\nconst ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' as Address\n\nexport const ADDRESSES: Record<SupportedChainId, ChainAddresses> = {\n [CHAIN_IDS.MAINNET]: {\n // Mainnet addresses not yet deployed\n airlock: ZERO_ADDRESS,\n tokenFactory: ZERO_ADDRESS,\n v3Initializer: ZERO_ADDRESS,\n v3Quoter: ZERO_ADDRESS,\n v4Initializer: ZERO_ADDRESS,\n doppler: ZERO_ADDRESS,\n dopplerLens: ZERO_ADDRESS,\n dopplerDeployer: ZERO_ADDRESS,\n v2Migrator: ZERO_ADDRESS,\n v3Migrator: ZERO_ADDRESS,\n v4Migrator: ZERO_ADDRESS,\n poolManager: ZERO_ADDRESS,\n stateView: ZERO_ADDRESS,\n governanceFactory: ZERO_ADDRESS,\n universalRouter: ZERO_ADDRESS,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n weth: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2' as Address,\n uniswapV2Factory: '0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f' as Address,\n uniswapV3Factory: '0x1F98431c8aD98523631AE4a59f267346ea31F984' as Address,\n },\n [CHAIN_IDS.BASE]: {\n airlock: '0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12' as Address,\n tokenFactory: '0xFAafdE6a5b658684cC5eb0C5c2c755B00A246F45' as Address,\n v3Initializer: '0xaA47D2977d622DBdFD33eeF6a8276727c52EB4e5' as Address,\n v3Quoter: '0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a' as Address,\n lockableV3Initializer: '0xe0dc4012ac9c868f09c6e4b20d66ed46d6f258d0' as Address,\n v4Initializer: '0x82ac010c67f70bacf7655cd8948a4ad92a173cac' as Address,\n doppler: '0x2f2bacd46d3f5c9ee052ab392b73711db89129db' as Address,\n dopplerLens: '0x43d0d97ec9241a8f05a264f94b82a1d2e600f2b3' as Address,\n dopplerDeployer: '0x8350cAd81149A9944c2fb4276955FaAA7D61e836' as Address,\n poolManager: '0x498581ff718922c3f8e6a244956af099b2652b2b' as Address,\n stateView: '0xa3c0c9b65bad0b08107aa264b0f3db444b867a71' as Address,\n v2Migrator: '0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731' as Address,\n v3Migrator: '0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731' as Address,\n v4Migrator: '0xa24e35a5d71d02a59b41e7c93567626302da1958' as Address,\n governanceFactory: '0xb4deE32EB70A5E55f3D2d861F49Fb3D79f7a14d9' as Address,\n noOpGovernanceFactory: '0xe7dfbd5b0a2c3b4464653a9becdc489229ef090e' as Address,\n streamableFeesLocker: '0x0a00775d71a42cd33d62780003035e7f5b47bd3a' as Address,\n universalRouter: '0x6ff5693b99212da76ad316178a184ab56d299b43' as Address,\n univ2Router02: '0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: '0x136191B46478cAB023cbC01a36160C4Aad81677a' as Address,\n weth: '0x4200000000000000000000000000000000000006' as Address,\n },\n [CHAIN_IDS.BASE_SEPOLIA]: {\n airlock: '0x3411306ce66c9469bff1535ba955503c4bde1c6e' as Address,\n tokenFactory: '0xc69ba223c617f7d936b3cf2012aa644815dbe9ff' as Address,\n doppler404Factory: '0xdd8cea2890f1b3498436f19ec8da8fecc2cb7af7' as Address,\n v3Initializer: '0x4c3062b9ccfdbcb10353f57c1b59a29d4c5cfa47' as Address,\n v3Quoter: '0xC5290058841028F1614F3A6F0F5816cAd0df5E27' as Address,\n lockableV3Initializer: '0x16ada5be50c3c2d94af5feae6b539c40a78ad53c' as Address,\n v4Initializer: '0x8e891d249f1ecbffa6143c03eb1b12843aef09d3' as Address,\n doppler: '0x60a039e4add40ca95e0475c11e8a4182d06c9aa0' as Address,\n dopplerLens: '0x4a8d81db741248a36d9eb3bc6ef648bf798b47a7' as Address,\n dopplerDeployer: '0x60a039e4add40ca95e0475c11e8a4182d06c9aa0' as Address,\n poolManager: '0x05E73354cFDd6745C338b50BcFDfA3Aa6fA03408' as Address,\n stateView: '0x571291b572ed32ce6751a2cb2486ebee8defb9b4' as Address,\n v2Migrator: '0x04a898f3722c38f9def707bd17dc78920efa977c' as Address,\n v3Migrator: '0xb2ec6559704467306d04322a5dc082b2af4562dd' as Address,\n v4Migrator: '0xb2ec6559704467306d04322a5dc082b2af4562dd' as Address,\n v4MigratorHook: '0x508812fcdd4972a59b66eb2cad3772279c052000' as Address,\n governanceFactory: '0x9dbfaadc8c0cb2c34ba698dd9426555336992e20' as Address,\n noOpGovernanceFactory: '0x916b8987e4ad325c10d58ed8dc2036a6ff5eb228' as Address,\n streamableFeesLocker: '0x4da7d7a8034510c0ffd38a9252237ae8dba3cb61' as Address,\n universalRouter: '0x492E6456D9528771018DeB9E87ef7750EF184104' as Address,\n univ2Router02: '0x1689E7B1F10000AE47eBfE339a4f69dECd19F602' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: '0xab7bacb0d5c2c10152f92d34e07f530eb3cb0fb1' as Address,\n weth: '0x4200000000000000000000000000000000000006' as Address,\n },\n [CHAIN_IDS.INK]: {\n airlock: '0x014E1c0bd34f3B10546E554CB33B3293fECDD056' as Address,\n tokenFactory: '0xFAafdE6a5b658684cC5eb0C5c2c755B00A246F45' as Address,\n v3Initializer: '0xaA47D2977d622DBdFD33eeF6a8276727c52EB4e5' as Address,\n v3Quoter: '0x96b572D2d880cf2Fa2563651BD23ADE6f5516652' as Address,\n v4Initializer: '0xC99b485499f78995C6F1640dbB1413c57f8BA684' as Address,\n doppler: '0xa82c66b6ddEb92089015C3565E05B5c9750b2d4B' as Address,\n dopplerLens: '0x3972c00f7ed4885e145823eb7c655375d275a1c5' as Address,\n dopplerDeployer: '0xa82c66b6ddEb92089015C3565E05B5c9750b2d4B' as Address,\n poolManager: '0x360e68faccca8ca495c1b759fd9eee466db9fb32' as Address,\n stateView: '0x76fd297e2d437cd7f76d50f01afe6160f86e9990' as Address,\n v2Migrator: '0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731' as Address,\n v3Migrator: '0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731' as Address,\n v4Migrator: '0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731' as Address, // Same as v2/v3 migrator\n governanceFactory: '0xb4deE32EB70A5E55f3D2d861F49Fb3D79f7a14d9' as Address,\n noOpGovernanceFactory: ZERO_ADDRESS, // Not yet deployed\n streamableFeesLocker: ZERO_ADDRESS, // Not yet deployed\n universalRouter: '0x112908dac86e20e7241b0927479ea3bf935d1fa0' as Address,\n univ2Router02: '0xB3FB126ACDd5AdCA2f50Ac644a7a2303745f18b4' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: '0x136191B46478cAB023cbC01a36160C4Aad81677a' as Address,\n weth: ZERO_ADDRESS, // TODO: Get INK WETH address\n },\n [CHAIN_IDS.UNICHAIN]: {\n airlock: '0x77EbfBAE15AD200758E9E2E61597c0B07d731254' as Address,\n tokenFactory: '0x43d0D97EC9241A8F05A264f94B82A1d2E600f2B3' as Address,\n v3Initializer: '0x9F4e56be80f08ba1A2445645EFa6d231E27b43ec' as Address,\n v3Quoter: '0x385A5cf5F83e99f7BB2852b6A19C3538b9FA7658' as Address,\n v4Initializer: '0x2F2BAcd46d3F5c9EE052Ab392b73711dB89129DB' as Address,\n doppler: '0x06FEFD02F0b6d9f57F52cfacFc113665Dfa20F0f' as Address,\n dopplerLens: '0x333e3c607b141b18ff6de9f258db6e77fe7491e0' as Address,\n dopplerDeployer: '0x06FEFD02F0b6d9f57F52cfacFc113665Dfa20F0f' as Address,\n poolManager: '0x1f98400000000000000000000000000000000004' as Address,\n stateView: '0x86e8631a016f9068c3f085faf484ee3f5fdee8f2' as Address,\n v2Migrator: '0xf6023127f6E937091D5B605680056A6D27524bad' as Address,\n v3Migrator: '0xf6023127f6E937091D5B605680056A6D27524bad' as Address,\n v4Migrator: '0xf6023127f6E937091D5B605680056A6D27524bad' as Address, // Same as v2/v3 migrator\n governanceFactory: '0x99C94B9Df930E1E21a4E4a2c105dBff21bF5c5aE' as Address,\n noOpGovernanceFactory: ZERO_ADDRESS, // Not yet deployed\n streamableFeesLocker: ZERO_ADDRESS, // Not yet deployed\n universalRouter: '0xef740bf23acae26f6492b10de645d6b98dc8eaf3' as Address,\n univ2Router02: '0x284f11109359a7e1306c3e447ef14d38400063ff' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: '0x91231cDdD8d6C86Df602070a3081478e074b97b7' as Address,\n weth: ZERO_ADDRESS, // TODO: Get Unichain WETH address\n },\n [CHAIN_IDS.UNICHAIN_SEPOLIA]: {\n airlock: '0x651ab94B4777e2e4cdf96082d90C65bd947b73A4' as Address,\n tokenFactory: '0xC5E5a19a2ee32831Fcb8a81546979AF43936EbaA' as Address,\n v3Initializer: '0x7Fb9a622186B4660A5988C223ebb9d3690dD5007' as Address,\n v3Quoter: '0x6Dd37329A1A225a6Fca658265D460423DCafBF89' as Address,\n v4Initializer: '0x992375478626E67F4e639d3298EbCAaE51C3dF0b' as Address,\n doppler: '0x8350cAd81149A9944c2fb4276955FaAA7D61e836' as Address,\n dopplerLens: '0x56dcd40a3f2d466f48e7f48bdbe5cc9b92ae4472' as Address,\n dopplerDeployer: '0x2f2bacd46d3f5c9ee052ab392b73711db89129db' as Address,\n poolManager: '0x00B036B58a818B1BC34d502D3fE730Db729e62AC' as Address,\n stateView: '0xc199F1072a74D4e905ABa1A84d9a45E2546B6222' as Address,\n v2Migrator: '0x44C448E38A2C3D206c9132E7f645510dFbBC946b' as Address,\n v3Migrator: '0x44C448E38A2C3D206c9132E7f645510dFbBC946b' as Address,\n v4Migrator: '0x44C448E38A2C3D206c9132E7f645510dFbBC946b' as Address, // Same as v2/v3 migrator\n governanceFactory: '0x1E4332EEfAE9e4967C2D186f7b2d439D778e81cC' as Address,\n noOpGovernanceFactory: ZERO_ADDRESS, // Not yet deployed\n streamableFeesLocker: ZERO_ADDRESS, // Not yet deployed\n universalRouter: '0xf70536B3bcC1bD1a972dc186A2cf84cC6da6Be5D' as Address,\n univ2Router02: '0x284f11109359a7e1306c3e447ef14d38400063ff' as Address,\n permit2: '0x000000000022D473030F116dDEE9F6B43aC78BA3' as Address,\n bundler: '0x63f8C8F9beFaab2FaCD7Ece0b0242f78B920Ee90' as Address,\n weth: ZERO_ADDRESS, // TODO: Get Unichain Sepolia WETH address\n },\n}\n\n/**\n * Get addresses for a specific chain\n */\nexport function getAddresses(chainId: number): ChainAddresses {\n const addresses = ADDRESSES[chainId as SupportedChainId]\n if (!addresses) {\n throw new Error(`Unsupported chain ID: ${chainId}`)\n }\n return addresses\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkZZYGKQJM_js = require('./chunk-ZZYGKQJM.js');
|
|
4
4
|
var chunkEFAPDN4J_js = require('./chunk-EFAPDN4J.js');
|
|
5
5
|
var viem = require('viem');
|
|
6
6
|
|
|
@@ -47,7 +47,7 @@ var StaticAuction = class {
|
|
|
47
47
|
})
|
|
48
48
|
]);
|
|
49
49
|
const chainId = await this.client.getChainId();
|
|
50
|
-
const addresses =
|
|
50
|
+
const addresses = chunkZZYGKQJM_js.getAddresses(chainId);
|
|
51
51
|
const assetData = await this.client.readContract({
|
|
52
52
|
address: addresses.airlock,
|
|
53
53
|
abi: chunkEFAPDN4J_js.airlockAbi,
|
|
@@ -78,7 +78,7 @@ var StaticAuction = class {
|
|
|
78
78
|
async hasGraduated() {
|
|
79
79
|
const tokenAddress = await this.getTokenAddress();
|
|
80
80
|
const chainId = await this.client.getChainId();
|
|
81
|
-
const addresses =
|
|
81
|
+
const addresses = chunkZZYGKQJM_js.getAddresses(chainId);
|
|
82
82
|
const assetData = await this.client.readContract({
|
|
83
83
|
address: addresses.airlock,
|
|
84
84
|
abi: chunkEFAPDN4J_js.airlockAbi,
|
|
@@ -129,5 +129,5 @@ var StaticAuction = class {
|
|
|
129
129
|
};
|
|
130
130
|
|
|
131
131
|
exports.StaticAuction = StaticAuction;
|
|
132
|
-
//# sourceMappingURL=chunk-
|
|
133
|
-
//# sourceMappingURL=chunk-
|
|
132
|
+
//# sourceMappingURL=chunk-D6STWX6U.js.map
|
|
133
|
+
//# sourceMappingURL=chunk-D6STWX6U.js.map
|