@whetstone-research/doppler-sdk 0.0.17 → 0.0.19
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/README.md +66 -1
- package/dist/DopplerSDK.js +19 -19
- package/dist/DopplerSDK.mjs +18 -18
- package/dist/abis/index.d.mts +32 -1
- package/dist/abis/index.d.ts +32 -1
- package/dist/abis/index.js +26 -22
- package/dist/abis/index.mjs +1 -1
- package/dist/addresses.d.mts +1 -0
- package/dist/addresses.d.ts +1 -0
- package/dist/addresses.js +7 -7
- package/dist/addresses.mjs +2 -2
- package/dist/builders/DynamicAuctionBuilder.js +10 -10
- package/dist/builders/DynamicAuctionBuilder.mjs +9 -9
- package/dist/builders/MulticurveBuilder.d.mts +16 -0
- package/dist/builders/MulticurveBuilder.d.ts +16 -0
- package/dist/builders/MulticurveBuilder.js +10 -10
- package/dist/builders/MulticurveBuilder.mjs +9 -9
- package/dist/builders/StaticAuctionBuilder.js +10 -10
- package/dist/builders/StaticAuctionBuilder.mjs +9 -9
- package/dist/builders/index.js +18 -18
- package/dist/builders/index.mjs +11 -11
- package/dist/builders/shared.js +11 -11
- package/dist/builders/shared.mjs +7 -7
- package/dist/{chunk-LOVD3NCN.js → chunk-3MVW6UIW.js} +18 -2
- package/dist/chunk-3MVW6UIW.js.map +1 -0
- package/dist/{chunk-DVAQB7TB.mjs → chunk-3NFSMMBF.mjs} +3 -3
- package/dist/{chunk-DVAQB7TB.mjs.map → chunk-3NFSMMBF.mjs.map} +1 -1
- package/dist/{chunk-PBWOCVDZ.mjs → chunk-4TAAZ6W3.mjs} +248 -51
- package/dist/chunk-4TAAZ6W3.mjs.map +1 -0
- package/dist/{chunk-4DUE547M.js → chunk-6BQY5EPB.js} +4 -2
- package/dist/chunk-6BQY5EPB.js.map +1 -0
- package/dist/{chunk-HVM7KZJM.mjs → chunk-6HFZ6XMV.mjs} +4 -4
- package/dist/{chunk-HVM7KZJM.mjs.map → chunk-6HFZ6XMV.mjs.map} +1 -1
- package/dist/{chunk-EG6O2TUX.js → chunk-7Z2UGWE7.js} +26 -26
- package/dist/{chunk-EG6O2TUX.js.map → chunk-7Z2UGWE7.js.map} +1 -1
- package/dist/{chunk-O2DZH23A.mjs → chunk-CYY5IATT.mjs} +9 -5
- package/dist/chunk-CYY5IATT.mjs.map +1 -0
- package/dist/{chunk-BZKX3J3R.mjs → chunk-E2NF4AQB.mjs} +18 -3
- package/dist/chunk-E2NF4AQB.mjs.map +1 -0
- package/dist/{chunk-B4B7BXLI.js → chunk-E6ACC5S6.js} +24 -24
- package/dist/{chunk-B4B7BXLI.js.map → chunk-E6ACC5S6.js.map} +1 -1
- package/dist/{chunk-K5CV3MIH.mjs → chunk-FQ3PVXZU.mjs} +5 -5
- package/dist/{chunk-K5CV3MIH.mjs.map → chunk-FQ3PVXZU.mjs.map} +1 -1
- package/dist/{chunk-WQKBQRBS.mjs → chunk-GCT3IZ3E.mjs} +12 -12
- package/dist/{chunk-WQKBQRBS.mjs.map → chunk-GCT3IZ3E.mjs.map} +1 -1
- package/dist/{chunk-LDZCTC5Q.mjs → chunk-H5SUGQ2C.mjs} +45 -7
- package/dist/chunk-H5SUGQ2C.mjs.map +1 -0
- package/dist/{chunk-PE47QUJV.mjs → chunk-HH7HQ4HC.mjs} +3 -3
- package/dist/{chunk-PE47QUJV.mjs.map → chunk-HH7HQ4HC.mjs.map} +1 -1
- package/dist/{chunk-LXUF7RNX.mjs → chunk-IWJOPXYN.mjs} +4 -3
- package/dist/chunk-IWJOPXYN.mjs.map +1 -0
- package/dist/{chunk-MBOKYN2Y.js → chunk-K3TEDYUG.js} +20 -20
- package/dist/{chunk-MBOKYN2Y.js.map → chunk-K3TEDYUG.js.map} +1 -1
- package/dist/{chunk-NVVEUALG.mjs → chunk-MH74WYVZ.mjs} +5 -5
- package/dist/{chunk-NVVEUALG.mjs.map → chunk-MH74WYVZ.mjs.map} +1 -1
- package/dist/{chunk-ZVH7VBH5.mjs → chunk-N74ICDSX.mjs} +118 -20
- package/dist/chunk-N74ICDSX.mjs.map +1 -0
- package/dist/{chunk-C7GN6GPG.js → chunk-OROTK4OT.js} +51 -27
- package/dist/chunk-OROTK4OT.js.map +1 -0
- package/dist/{chunk-Z7ZGPSQF.js → chunk-P4BT5GDO.js} +76 -72
- package/dist/chunk-P4BT5GDO.js.map +1 -0
- package/dist/{chunk-YBDWQTUH.mjs → chunk-QFQXHDC7.mjs} +76 -9
- package/dist/chunk-QFQXHDC7.mjs.map +1 -0
- package/dist/{chunk-RKJ2466C.mjs → chunk-QOGBOT2M.mjs} +3 -3
- package/dist/{chunk-RKJ2466C.mjs.map → chunk-QOGBOT2M.mjs.map} +1 -1
- package/dist/{chunk-3ALNQHGL.js → chunk-RLUMYHPI.js} +76 -9
- package/dist/chunk-RLUMYHPI.js.map +1 -0
- package/dist/{chunk-5FJCRKQ6.js → chunk-RXUJ4DUB.js} +28 -28
- package/dist/{chunk-5FJCRKQ6.js.map → chunk-RXUJ4DUB.js.map} +1 -1
- package/dist/{chunk-MGLI4N4B.js → chunk-SAX7P3MH.js} +22 -22
- package/dist/{chunk-MGLI4N4B.js.map → chunk-SAX7P3MH.js.map} +1 -1
- package/dist/{chunk-3ORKVXQL.js → chunk-TJCMFITE.js} +27 -27
- package/dist/{chunk-3ORKVXQL.js.map → chunk-TJCMFITE.js.map} +1 -1
- package/dist/{chunk-TL7U67CX.js → chunk-UIPSHVT4.js} +11 -11
- package/dist/{chunk-TL7U67CX.js.map → chunk-UIPSHVT4.js.map} +1 -1
- package/dist/{chunk-5ZPBKSNS.mjs → chunk-UY4TVYEU.mjs} +3 -3
- package/dist/{chunk-5ZPBKSNS.mjs.map → chunk-UY4TVYEU.mjs.map} +1 -1
- package/dist/{chunk-PQUS2LCD.js → chunk-UZTVXZP3.js} +16 -16
- package/dist/{chunk-PQUS2LCD.js.map → chunk-UZTVXZP3.js.map} +1 -1
- package/dist/{chunk-HMZEYBFO.mjs → chunk-V32Q2S3U.mjs} +4 -4
- package/dist/{chunk-HMZEYBFO.mjs.map → chunk-V32Q2S3U.mjs.map} +1 -1
- package/dist/{chunk-7F4O7NPS.js → chunk-V5GPJ6S2.js} +26 -26
- package/dist/{chunk-7F4O7NPS.js.map → chunk-V5GPJ6S2.js.map} +1 -1
- package/dist/{chunk-DOWDXOTK.mjs → chunk-VGCXJRUV.mjs} +51 -27
- package/dist/chunk-VGCXJRUV.mjs.map +1 -0
- package/dist/{chunk-J32XSN44.js → chunk-WYRM5BAI.js} +344 -147
- package/dist/chunk-WYRM5BAI.js.map +1 -0
- package/dist/{chunk-OUUFER2X.mjs → chunk-X7FRTHUL.mjs} +4 -4
- package/dist/{chunk-OUUFER2X.mjs.map → chunk-X7FRTHUL.mjs.map} +1 -1
- package/dist/{chunk-E54BP2GN.js → chunk-Y6VZD4C6.js} +53 -15
- package/dist/chunk-Y6VZD4C6.js.map +1 -0
- package/dist/{chunk-5MP6AMPB.js → chunk-YFJUIO2A.js} +132 -34
- package/dist/chunk-YFJUIO2A.js.map +1 -0
- package/dist/{chunk-WHQHXYPB.js → chunk-YKRDFXU3.js} +5 -5
- package/dist/{chunk-WHQHXYPB.js.map → chunk-YKRDFXU3.js.map} +1 -1
- package/dist/constants.d.mts +7 -1
- package/dist/constants.d.ts +7 -1
- package/dist/constants.js +51 -47
- package/dist/constants.mjs +1 -1
- package/dist/deployments.generated.d.mts +72 -5
- package/dist/deployments.generated.d.ts +72 -5
- package/dist/deployments.generated.js +2 -2
- package/dist/deployments.generated.mjs +1 -1
- package/dist/entities/DopplerFactory.d.mts +2 -0
- package/dist/entities/DopplerFactory.d.ts +2 -0
- package/dist/entities/DopplerFactory.js +8 -8
- package/dist/entities/DopplerFactory.mjs +7 -7
- package/dist/entities/auction/DynamicAuction.js +5 -5
- package/dist/entities/auction/DynamicAuction.mjs +4 -4
- package/dist/entities/auction/MulticurvePool.d.mts +9 -3
- package/dist/entities/auction/MulticurvePool.d.ts +9 -3
- package/dist/entities/auction/MulticurvePool.js +7 -6
- package/dist/entities/auction/MulticurvePool.mjs +6 -5
- package/dist/entities/auction/StaticAuction.js +5 -5
- package/dist/entities/auction/StaticAuction.mjs +4 -4
- package/dist/entities/auction/index.js +11 -10
- package/dist/entities/auction/index.mjs +8 -7
- package/dist/entities/quoter/Quoter.js +5 -5
- package/dist/entities/quoter/Quoter.mjs +4 -4
- package/dist/entities/quoter/index.js +5 -5
- package/dist/entities/quoter/index.mjs +4 -4
- package/dist/entities/token/derc20/Derc20.js +3 -3
- package/dist/entities/token/derc20/Derc20.mjs +2 -2
- package/dist/entities/token/derc20/index.js +3 -3
- package/dist/entities/token/derc20/index.mjs +2 -2
- package/dist/entities/token/index.js +3 -3
- package/dist/entities/token/index.mjs +2 -2
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +110 -102
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +18 -18
- package/dist/index.mjs.map +1 -1
- package/dist/types.d.mts +32 -1
- package/dist/types.d.ts +32 -1
- package/dist/types.js +8 -8
- package/dist/types.mjs +3 -3
- package/dist/utils/airlock.js +7 -7
- package/dist/utils/airlock.mjs +3 -3
- package/dist/utils/index.js +10 -10
- package/dist/utils/index.mjs +5 -5
- package/dist/utils/tokenAddressMiner.d.mts +7 -0
- package/dist/utils/tokenAddressMiner.d.ts +7 -0
- package/dist/utils/tokenAddressMiner.js +3 -3
- package/dist/utils/tokenAddressMiner.mjs +2 -2
- package/package.json +1 -1
- package/dist/chunk-3ALNQHGL.js.map +0 -1
- package/dist/chunk-4DUE547M.js.map +0 -1
- package/dist/chunk-5MP6AMPB.js.map +0 -1
- package/dist/chunk-BZKX3J3R.mjs.map +0 -1
- package/dist/chunk-C7GN6GPG.js.map +0 -1
- package/dist/chunk-DOWDXOTK.mjs.map +0 -1
- package/dist/chunk-E54BP2GN.js.map +0 -1
- package/dist/chunk-J32XSN44.js.map +0 -1
- package/dist/chunk-LDZCTC5Q.mjs.map +0 -1
- package/dist/chunk-LOVD3NCN.js.map +0 -1
- package/dist/chunk-LXUF7RNX.mjs.map +0 -1
- package/dist/chunk-O2DZH23A.mjs.map +0 -1
- package/dist/chunk-PBWOCVDZ.mjs.map +0 -1
- package/dist/chunk-YBDWQTUH.mjs.map +0 -1
- package/dist/chunk-Z7ZGPSQF.js.map +0 -1
- package/dist/chunk-ZVH7VBH5.mjs.map +0 -1
package/dist/types.d.mts
CHANGED
|
@@ -491,6 +491,27 @@ interface RehypeDopplerHookConfig {
|
|
|
491
491
|
numerairePrice?: number;
|
|
492
492
|
farTick?: number;
|
|
493
493
|
}
|
|
494
|
+
interface MulticurveDecayFeeSchedule {
|
|
495
|
+
startingTime: number;
|
|
496
|
+
startFee: number;
|
|
497
|
+
endFee: number;
|
|
498
|
+
lastFee: number;
|
|
499
|
+
durationSeconds: number;
|
|
500
|
+
}
|
|
501
|
+
type MulticurveInitializerConfig = {
|
|
502
|
+
type: 'standard';
|
|
503
|
+
} | {
|
|
504
|
+
type: 'scheduled';
|
|
505
|
+
startTime: number;
|
|
506
|
+
} | {
|
|
507
|
+
type: 'decay';
|
|
508
|
+
startTime: number;
|
|
509
|
+
startFee: number;
|
|
510
|
+
durationSeconds: number;
|
|
511
|
+
} | {
|
|
512
|
+
type: 'rehype';
|
|
513
|
+
config: RehypeDopplerHookConfig;
|
|
514
|
+
};
|
|
494
515
|
interface CreateMulticurveParams<C extends SupportedChainId = SupportedChainId> {
|
|
495
516
|
token: TokenConfig;
|
|
496
517
|
sale: SaleConfig;
|
|
@@ -500,9 +521,18 @@ interface CreateMulticurveParams<C extends SupportedChainId = SupportedChainId>
|
|
|
500
521
|
curves: MulticurveCurve[];
|
|
501
522
|
beneficiaries?: BeneficiaryData[];
|
|
502
523
|
};
|
|
524
|
+
initializer?: MulticurveInitializerConfig;
|
|
525
|
+
/**
|
|
526
|
+
* @deprecated Use initializer: { type: 'scheduled', startTime } instead.
|
|
527
|
+
* Retained for backwards compatibility.
|
|
528
|
+
*/
|
|
503
529
|
schedule?: {
|
|
504
530
|
startTime: number;
|
|
505
531
|
};
|
|
532
|
+
/**
|
|
533
|
+
* @deprecated Use initializer: { type: 'rehype', config } instead.
|
|
534
|
+
* Retained for backwards compatibility.
|
|
535
|
+
*/
|
|
506
536
|
dopplerHook?: RehypeDopplerHookConfig;
|
|
507
537
|
vesting?: VestingConfig;
|
|
508
538
|
governance: GovernanceOption<C>;
|
|
@@ -535,6 +565,7 @@ interface ModuleAddressOverrides {
|
|
|
535
565
|
v4Initializer?: Address;
|
|
536
566
|
v4MulticurveInitializer?: Address;
|
|
537
567
|
v4ScheduledMulticurveInitializer?: Address;
|
|
568
|
+
v4DecayMulticurveInitializer?: Address;
|
|
538
569
|
dopplerHookInitializer?: Address;
|
|
539
570
|
rehypeDopplerHook?: Address;
|
|
540
571
|
governanceFactory?: Address;
|
|
@@ -545,4 +576,4 @@ interface ModuleAddressOverrides {
|
|
|
545
576
|
noOpMigrator?: Address;
|
|
546
577
|
}
|
|
547
578
|
|
|
548
|
-
export { type BeneficiaryData, type CreateDynamicAuctionParams, type CreateMulticurveParams, type CreateParams, type CreateStaticAuctionParams, type Doppler404TokenConfig, type DopplerSDKConfig, type DynamicAuctionBuildConfig, type DynamicAuctionConfig, type DynamicAuctionMarketCapConfig, type DynamicAuctionTickParams, type DynamicMarketCapRange, type GovernanceCustom, type GovernanceDefault, type GovernanceLaunchpad, type GovernanceNoOp, type GovernanceOption, type HookInfo, LAUNCHPAD_ENABLED_CHAIN_IDS, type LaunchpadEnabledChainId, type LockablePoolState, LockablePoolStatus, type LockableV3InitializerParams, type MarketCapConfig, type MarketCapRange, type MarketCapValidationResult, type MigrationConfig, type ModuleAddressOverrides, type MulticurveBundleExactInResult, type MulticurveBundleExactOutResult, type MulticurveCurve, type MulticurveMarketCapCurvesConfig, type MulticurveMarketCapPreset, type MulticurveMarketCapRangeCurve, type MulticurvePoolState, type MulticurveTickParams, type MulticurveTickRangeParams, NO_OP_ENABLED_CHAIN_IDS, type NoOpEnabledChainId, type PoolInfo, type PriceRange, type QuoteResult, type RehypeDopplerHookConfig, type SaleConfig, type StandardTokenConfig, type StaticAuctionBuildConfig, type StaticAuctionMarketCapConfig, type StaticAuctionTickParams, type StaticPoolConfig, type SupportedChain, SupportedChainId, type SupportedPublicClient, type TickRange, type TickToMarketCapParams, type TokenConfig, type V4PoolKey, type VestingConfig, isLaunchpadEnabledChain, isNoOpEnabledChain };
|
|
579
|
+
export { type BeneficiaryData, type CreateDynamicAuctionParams, type CreateMulticurveParams, type CreateParams, type CreateStaticAuctionParams, type Doppler404TokenConfig, type DopplerSDKConfig, type DynamicAuctionBuildConfig, type DynamicAuctionConfig, type DynamicAuctionMarketCapConfig, type DynamicAuctionTickParams, type DynamicMarketCapRange, type GovernanceCustom, type GovernanceDefault, type GovernanceLaunchpad, type GovernanceNoOp, type GovernanceOption, type HookInfo, LAUNCHPAD_ENABLED_CHAIN_IDS, type LaunchpadEnabledChainId, type LockablePoolState, LockablePoolStatus, type LockableV3InitializerParams, type MarketCapConfig, type MarketCapRange, type MarketCapValidationResult, type MigrationConfig, type ModuleAddressOverrides, type MulticurveBundleExactInResult, type MulticurveBundleExactOutResult, type MulticurveCurve, type MulticurveDecayFeeSchedule, type MulticurveInitializerConfig, type MulticurveMarketCapCurvesConfig, type MulticurveMarketCapPreset, type MulticurveMarketCapRangeCurve, type MulticurvePoolState, type MulticurveTickParams, type MulticurveTickRangeParams, NO_OP_ENABLED_CHAIN_IDS, type NoOpEnabledChainId, type PoolInfo, type PriceRange, type QuoteResult, type RehypeDopplerHookConfig, type SaleConfig, type StandardTokenConfig, type StaticAuctionBuildConfig, type StaticAuctionMarketCapConfig, type StaticAuctionTickParams, type StaticPoolConfig, type SupportedChain, SupportedChainId, type SupportedPublicClient, type TickRange, type TickToMarketCapParams, type TokenConfig, type V4PoolKey, type VestingConfig, isLaunchpadEnabledChain, isNoOpEnabledChain };
|
package/dist/types.d.ts
CHANGED
|
@@ -491,6 +491,27 @@ interface RehypeDopplerHookConfig {
|
|
|
491
491
|
numerairePrice?: number;
|
|
492
492
|
farTick?: number;
|
|
493
493
|
}
|
|
494
|
+
interface MulticurveDecayFeeSchedule {
|
|
495
|
+
startingTime: number;
|
|
496
|
+
startFee: number;
|
|
497
|
+
endFee: number;
|
|
498
|
+
lastFee: number;
|
|
499
|
+
durationSeconds: number;
|
|
500
|
+
}
|
|
501
|
+
type MulticurveInitializerConfig = {
|
|
502
|
+
type: 'standard';
|
|
503
|
+
} | {
|
|
504
|
+
type: 'scheduled';
|
|
505
|
+
startTime: number;
|
|
506
|
+
} | {
|
|
507
|
+
type: 'decay';
|
|
508
|
+
startTime: number;
|
|
509
|
+
startFee: number;
|
|
510
|
+
durationSeconds: number;
|
|
511
|
+
} | {
|
|
512
|
+
type: 'rehype';
|
|
513
|
+
config: RehypeDopplerHookConfig;
|
|
514
|
+
};
|
|
494
515
|
interface CreateMulticurveParams<C extends SupportedChainId = SupportedChainId> {
|
|
495
516
|
token: TokenConfig;
|
|
496
517
|
sale: SaleConfig;
|
|
@@ -500,9 +521,18 @@ interface CreateMulticurveParams<C extends SupportedChainId = SupportedChainId>
|
|
|
500
521
|
curves: MulticurveCurve[];
|
|
501
522
|
beneficiaries?: BeneficiaryData[];
|
|
502
523
|
};
|
|
524
|
+
initializer?: MulticurveInitializerConfig;
|
|
525
|
+
/**
|
|
526
|
+
* @deprecated Use initializer: { type: 'scheduled', startTime } instead.
|
|
527
|
+
* Retained for backwards compatibility.
|
|
528
|
+
*/
|
|
503
529
|
schedule?: {
|
|
504
530
|
startTime: number;
|
|
505
531
|
};
|
|
532
|
+
/**
|
|
533
|
+
* @deprecated Use initializer: { type: 'rehype', config } instead.
|
|
534
|
+
* Retained for backwards compatibility.
|
|
535
|
+
*/
|
|
506
536
|
dopplerHook?: RehypeDopplerHookConfig;
|
|
507
537
|
vesting?: VestingConfig;
|
|
508
538
|
governance: GovernanceOption<C>;
|
|
@@ -535,6 +565,7 @@ interface ModuleAddressOverrides {
|
|
|
535
565
|
v4Initializer?: Address;
|
|
536
566
|
v4MulticurveInitializer?: Address;
|
|
537
567
|
v4ScheduledMulticurveInitializer?: Address;
|
|
568
|
+
v4DecayMulticurveInitializer?: Address;
|
|
538
569
|
dopplerHookInitializer?: Address;
|
|
539
570
|
rehypeDopplerHook?: Address;
|
|
540
571
|
governanceFactory?: Address;
|
|
@@ -545,4 +576,4 @@ interface ModuleAddressOverrides {
|
|
|
545
576
|
noOpMigrator?: Address;
|
|
546
577
|
}
|
|
547
578
|
|
|
548
|
-
export { type BeneficiaryData, type CreateDynamicAuctionParams, type CreateMulticurveParams, type CreateParams, type CreateStaticAuctionParams, type Doppler404TokenConfig, type DopplerSDKConfig, type DynamicAuctionBuildConfig, type DynamicAuctionConfig, type DynamicAuctionMarketCapConfig, type DynamicAuctionTickParams, type DynamicMarketCapRange, type GovernanceCustom, type GovernanceDefault, type GovernanceLaunchpad, type GovernanceNoOp, type GovernanceOption, type HookInfo, LAUNCHPAD_ENABLED_CHAIN_IDS, type LaunchpadEnabledChainId, type LockablePoolState, LockablePoolStatus, type LockableV3InitializerParams, type MarketCapConfig, type MarketCapRange, type MarketCapValidationResult, type MigrationConfig, type ModuleAddressOverrides, type MulticurveBundleExactInResult, type MulticurveBundleExactOutResult, type MulticurveCurve, type MulticurveMarketCapCurvesConfig, type MulticurveMarketCapPreset, type MulticurveMarketCapRangeCurve, type MulticurvePoolState, type MulticurveTickParams, type MulticurveTickRangeParams, NO_OP_ENABLED_CHAIN_IDS, type NoOpEnabledChainId, type PoolInfo, type PriceRange, type QuoteResult, type RehypeDopplerHookConfig, type SaleConfig, type StandardTokenConfig, type StaticAuctionBuildConfig, type StaticAuctionMarketCapConfig, type StaticAuctionTickParams, type StaticPoolConfig, type SupportedChain, SupportedChainId, type SupportedPublicClient, type TickRange, type TickToMarketCapParams, type TokenConfig, type V4PoolKey, type VestingConfig, isLaunchpadEnabledChain, isNoOpEnabledChain };
|
|
579
|
+
export { type BeneficiaryData, type CreateDynamicAuctionParams, type CreateMulticurveParams, type CreateParams, type CreateStaticAuctionParams, type Doppler404TokenConfig, type DopplerSDKConfig, type DynamicAuctionBuildConfig, type DynamicAuctionConfig, type DynamicAuctionMarketCapConfig, type DynamicAuctionTickParams, type DynamicMarketCapRange, type GovernanceCustom, type GovernanceDefault, type GovernanceLaunchpad, type GovernanceNoOp, type GovernanceOption, type HookInfo, LAUNCHPAD_ENABLED_CHAIN_IDS, type LaunchpadEnabledChainId, type LockablePoolState, LockablePoolStatus, type LockableV3InitializerParams, type MarketCapConfig, type MarketCapRange, type MarketCapValidationResult, type MigrationConfig, type ModuleAddressOverrides, type MulticurveBundleExactInResult, type MulticurveBundleExactOutResult, type MulticurveCurve, type MulticurveDecayFeeSchedule, type MulticurveInitializerConfig, type MulticurveMarketCapCurvesConfig, type MulticurveMarketCapPreset, type MulticurveMarketCapRangeCurve, type MulticurvePoolState, type MulticurveTickParams, type MulticurveTickRangeParams, NO_OP_ENABLED_CHAIN_IDS, type NoOpEnabledChainId, type PoolInfo, type PriceRange, type QuoteResult, type RehypeDopplerHookConfig, type SaleConfig, type StandardTokenConfig, type StaticAuctionBuildConfig, type StaticAuctionMarketCapConfig, type StaticAuctionTickParams, type StaticPoolConfig, type SupportedChain, SupportedChainId, type SupportedPublicClient, type TickRange, type TickToMarketCapParams, type TokenConfig, type V4PoolKey, type VestingConfig, isLaunchpadEnabledChain, isNoOpEnabledChain };
|
package/dist/types.js
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('./chunk-
|
|
5
|
-
require('./chunk-
|
|
3
|
+
var chunkUIPSHVT4_js = require('./chunk-UIPSHVT4.js');
|
|
4
|
+
require('./chunk-P4BT5GDO.js');
|
|
5
|
+
require('./chunk-RLUMYHPI.js');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
Object.defineProperty(exports, "LAUNCHPAD_ENABLED_CHAIN_IDS", {
|
|
10
10
|
enumerable: true,
|
|
11
|
-
get: function () { return
|
|
11
|
+
get: function () { return chunkUIPSHVT4_js.LAUNCHPAD_ENABLED_CHAIN_IDS; }
|
|
12
12
|
});
|
|
13
13
|
Object.defineProperty(exports, "LockablePoolStatus", {
|
|
14
14
|
enumerable: true,
|
|
15
|
-
get: function () { return
|
|
15
|
+
get: function () { return chunkUIPSHVT4_js.LockablePoolStatus; }
|
|
16
16
|
});
|
|
17
17
|
Object.defineProperty(exports, "NO_OP_ENABLED_CHAIN_IDS", {
|
|
18
18
|
enumerable: true,
|
|
19
|
-
get: function () { return
|
|
19
|
+
get: function () { return chunkUIPSHVT4_js.NO_OP_ENABLED_CHAIN_IDS; }
|
|
20
20
|
});
|
|
21
21
|
Object.defineProperty(exports, "isLaunchpadEnabledChain", {
|
|
22
22
|
enumerable: true,
|
|
23
|
-
get: function () { return
|
|
23
|
+
get: function () { return chunkUIPSHVT4_js.isLaunchpadEnabledChain; }
|
|
24
24
|
});
|
|
25
25
|
Object.defineProperty(exports, "isNoOpEnabledChain", {
|
|
26
26
|
enumerable: true,
|
|
27
|
-
get: function () { return
|
|
27
|
+
get: function () { return chunkUIPSHVT4_js.isNoOpEnabledChain; }
|
|
28
28
|
});
|
|
29
29
|
//# sourceMappingURL=types.js.map
|
|
30
30
|
//# sourceMappingURL=types.js.map
|
package/dist/types.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { LAUNCHPAD_ENABLED_CHAIN_IDS, LockablePoolStatus, NO_OP_ENABLED_CHAIN_IDS, isLaunchpadEnabledChain, isNoOpEnabledChain } from './chunk-
|
|
2
|
-
import './chunk-
|
|
3
|
-
import './chunk-
|
|
1
|
+
export { LAUNCHPAD_ENABLED_CHAIN_IDS, LockablePoolStatus, NO_OP_ENABLED_CHAIN_IDS, isLaunchpadEnabledChain, isNoOpEnabledChain } from './chunk-3NFSMMBF.mjs';
|
|
2
|
+
import './chunk-CYY5IATT.mjs';
|
|
3
|
+
import './chunk-QFQXHDC7.mjs';
|
|
4
4
|
//# sourceMappingURL=types.mjs.map
|
|
5
5
|
//# sourceMappingURL=types.mjs.map
|
package/dist/utils/airlock.js
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../chunk-
|
|
5
|
-
require('../chunk-
|
|
3
|
+
var chunkYKRDFXU3_js = require('../chunk-YKRDFXU3.js');
|
|
4
|
+
require('../chunk-P4BT5GDO.js');
|
|
5
|
+
require('../chunk-RLUMYHPI.js');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
Object.defineProperty(exports, "DEFAULT_AIRLOCK_BENEFICIARY_SHARES", {
|
|
10
10
|
enumerable: true,
|
|
11
|
-
get: function () { return
|
|
11
|
+
get: function () { return chunkYKRDFXU3_js.DEFAULT_AIRLOCK_BENEFICIARY_SHARES; }
|
|
12
12
|
});
|
|
13
13
|
Object.defineProperty(exports, "createAirlockBeneficiary", {
|
|
14
14
|
enumerable: true,
|
|
15
|
-
get: function () { return
|
|
15
|
+
get: function () { return chunkYKRDFXU3_js.createAirlockBeneficiary; }
|
|
16
16
|
});
|
|
17
17
|
Object.defineProperty(exports, "getAirlockBeneficiary", {
|
|
18
18
|
enumerable: true,
|
|
19
|
-
get: function () { return
|
|
19
|
+
get: function () { return chunkYKRDFXU3_js.getAirlockBeneficiary; }
|
|
20
20
|
});
|
|
21
21
|
Object.defineProperty(exports, "getAirlockOwner", {
|
|
22
22
|
enumerable: true,
|
|
23
|
-
get: function () { return
|
|
23
|
+
get: function () { return chunkYKRDFXU3_js.getAirlockOwner; }
|
|
24
24
|
});
|
|
25
25
|
//# sourceMappingURL=airlock.js.map
|
|
26
26
|
//# sourceMappingURL=airlock.js.map
|
package/dist/utils/airlock.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { DEFAULT_AIRLOCK_BENEFICIARY_SHARES, createAirlockBeneficiary, getAirlockBeneficiary, getAirlockOwner } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { DEFAULT_AIRLOCK_BENEFICIARY_SHARES, createAirlockBeneficiary, getAirlockBeneficiary, getAirlockOwner } from '../chunk-UY4TVYEU.mjs';
|
|
2
|
+
import '../chunk-CYY5IATT.mjs';
|
|
3
|
+
import '../chunk-QFQXHDC7.mjs';
|
|
4
4
|
//# sourceMappingURL=airlock.mjs.map
|
|
5
5
|
//# sourceMappingURL=airlock.mjs.map
|
package/dist/utils/index.js
CHANGED
|
@@ -7,12 +7,12 @@ var chunk6H6X3VTZ_js = require('../chunk-6H6X3VTZ.js');
|
|
|
7
7
|
var chunk7M57PU6V_js = require('../chunk-7M57PU6V.js');
|
|
8
8
|
var chunkKHUE77HC_js = require('../chunk-KHUE77HC.js');
|
|
9
9
|
var chunk4VWQNNNW_js = require('../chunk-4VWQNNNW.js');
|
|
10
|
-
var
|
|
11
|
-
var
|
|
10
|
+
var chunkOROTK4OT_js = require('../chunk-OROTK4OT.js');
|
|
11
|
+
var chunkYKRDFXU3_js = require('../chunk-YKRDFXU3.js');
|
|
12
12
|
var chunkXSJTASPK_js = require('../chunk-XSJTASPK.js');
|
|
13
|
-
require('../chunk-
|
|
14
|
-
require('../chunk-
|
|
15
|
-
require('../chunk-
|
|
13
|
+
require('../chunk-P4BT5GDO.js');
|
|
14
|
+
require('../chunk-RLUMYHPI.js');
|
|
15
|
+
require('../chunk-3MVW6UIW.js');
|
|
16
16
|
require('../chunk-4XN6DQBW.js');
|
|
17
17
|
require('../chunk-OF7BIKXV.js');
|
|
18
18
|
require('../chunk-2ZM4JVFC.js');
|
|
@@ -164,23 +164,23 @@ Object.defineProperty(exports, "tickToPrice", {
|
|
|
164
164
|
});
|
|
165
165
|
Object.defineProperty(exports, "mineTokenAddress", {
|
|
166
166
|
enumerable: true,
|
|
167
|
-
get: function () { return
|
|
167
|
+
get: function () { return chunkOROTK4OT_js.mineTokenAddress; }
|
|
168
168
|
});
|
|
169
169
|
Object.defineProperty(exports, "DEFAULT_AIRLOCK_BENEFICIARY_SHARES", {
|
|
170
170
|
enumerable: true,
|
|
171
|
-
get: function () { return
|
|
171
|
+
get: function () { return chunkYKRDFXU3_js.DEFAULT_AIRLOCK_BENEFICIARY_SHARES; }
|
|
172
172
|
});
|
|
173
173
|
Object.defineProperty(exports, "createAirlockBeneficiary", {
|
|
174
174
|
enumerable: true,
|
|
175
|
-
get: function () { return
|
|
175
|
+
get: function () { return chunkYKRDFXU3_js.createAirlockBeneficiary; }
|
|
176
176
|
});
|
|
177
177
|
Object.defineProperty(exports, "getAirlockBeneficiary", {
|
|
178
178
|
enumerable: true,
|
|
179
|
-
get: function () { return
|
|
179
|
+
get: function () { return chunkYKRDFXU3_js.getAirlockBeneficiary; }
|
|
180
180
|
});
|
|
181
181
|
Object.defineProperty(exports, "getAirlockOwner", {
|
|
182
182
|
enumerable: true,
|
|
183
|
-
get: function () { return
|
|
183
|
+
get: function () { return chunkYKRDFXU3_js.getAirlockOwner; }
|
|
184
184
|
});
|
|
185
185
|
Object.defineProperty(exports, "decodeBalanceDelta", {
|
|
186
186
|
enumerable: true,
|
package/dist/utils/index.mjs
CHANGED
|
@@ -5,12 +5,12 @@ export { isToken0Expected } from '../chunk-ABT6AT7C.mjs';
|
|
|
5
5
|
export { computePoolId } from '../chunk-CFAAYL5M.mjs';
|
|
6
6
|
export { calculateFDV, calculateGamma, calculateMarketCap, calculateTickRange, calculateTokensToSell, estimatePriceAtEpoch, estimateSlippage, formatTickAsPrice } from '../chunk-CWTGQAOG.mjs';
|
|
7
7
|
export { MAX_SQRT_RATIO, MAX_TICK, MIN_SQRT_RATIO, MIN_TICK, Q96, getNearestUsableTick, getSqrtRatioAtTick, getTickAtSqrtRatio, priceToSqrtPriceX96, priceToTick, sqrtPriceX96ToPrice, tickToPrice } from '../chunk-25GEBO3B.mjs';
|
|
8
|
-
export { mineTokenAddress } from '../chunk-
|
|
9
|
-
export { DEFAULT_AIRLOCK_BENEFICIARY_SHARES, createAirlockBeneficiary, getAirlockBeneficiary, getAirlockOwner } from '../chunk-
|
|
8
|
+
export { mineTokenAddress } from '../chunk-VGCXJRUV.mjs';
|
|
9
|
+
export { DEFAULT_AIRLOCK_BENEFICIARY_SHARES, createAirlockBeneficiary, getAirlockBeneficiary, getAirlockOwner } from '../chunk-UY4TVYEU.mjs';
|
|
10
10
|
export { decodeBalanceDelta } from '../chunk-KOAC3BBP.mjs';
|
|
11
|
-
import '../chunk-
|
|
12
|
-
import '../chunk-
|
|
13
|
-
import '../chunk-
|
|
11
|
+
import '../chunk-CYY5IATT.mjs';
|
|
12
|
+
import '../chunk-QFQXHDC7.mjs';
|
|
13
|
+
import '../chunk-E2NF4AQB.mjs';
|
|
14
14
|
import '../chunk-DOUF6NON.mjs';
|
|
15
15
|
import '../chunk-64ZQRKG3.mjs';
|
|
16
16
|
import '../chunk-LPA32BIK.mjs';
|
|
@@ -5,9 +5,16 @@ interface TokenAddressHookConfig {
|
|
|
5
5
|
deployer: Address;
|
|
6
6
|
initCodeHash: Hash;
|
|
7
7
|
prefix?: string;
|
|
8
|
+
suffix?: string;
|
|
8
9
|
}
|
|
9
10
|
interface TokenAddressMiningParams {
|
|
11
|
+
/**
|
|
12
|
+
* Vanity prefix (hex). Keep as `''` (empty string) if you only want to mine a suffix.
|
|
13
|
+
* Note: this is required for backwards compatibility with older SDK versions.
|
|
14
|
+
*/
|
|
10
15
|
prefix: string;
|
|
16
|
+
/** Vanity suffix (hex), useful as an identifier at the end of the address. */
|
|
17
|
+
suffix?: string;
|
|
11
18
|
tokenFactory: Address;
|
|
12
19
|
initialSupply: bigint;
|
|
13
20
|
recipient: Address;
|
|
@@ -5,9 +5,16 @@ interface TokenAddressHookConfig {
|
|
|
5
5
|
deployer: Address;
|
|
6
6
|
initCodeHash: Hash;
|
|
7
7
|
prefix?: string;
|
|
8
|
+
suffix?: string;
|
|
8
9
|
}
|
|
9
10
|
interface TokenAddressMiningParams {
|
|
11
|
+
/**
|
|
12
|
+
* Vanity prefix (hex). Keep as `''` (empty string) if you only want to mine a suffix.
|
|
13
|
+
* Note: this is required for backwards compatibility with older SDK versions.
|
|
14
|
+
*/
|
|
10
15
|
prefix: string;
|
|
16
|
+
/** Vanity suffix (hex), useful as an identifier at the end of the address. */
|
|
17
|
+
suffix?: string;
|
|
11
18
|
tokenFactory: Address;
|
|
12
19
|
initialSupply: bigint;
|
|
13
20
|
recipient: Address;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../chunk-
|
|
3
|
+
var chunkOROTK4OT_js = require('../chunk-OROTK4OT.js');
|
|
4
|
+
require('../chunk-3MVW6UIW.js');
|
|
5
5
|
require('../chunk-4XN6DQBW.js');
|
|
6
6
|
require('../chunk-OF7BIKXV.js');
|
|
7
7
|
require('../chunk-2ZM4JVFC.js');
|
|
@@ -13,7 +13,7 @@ require('../chunk-OGYWNJGI.js');
|
|
|
13
13
|
|
|
14
14
|
Object.defineProperty(exports, "mineTokenAddress", {
|
|
15
15
|
enumerable: true,
|
|
16
|
-
get: function () { return
|
|
16
|
+
get: function () { return chunkOROTK4OT_js.mineTokenAddress; }
|
|
17
17
|
});
|
|
18
18
|
//# sourceMappingURL=tokenAddressMiner.js.map
|
|
19
19
|
//# sourceMappingURL=tokenAddressMiner.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { mineTokenAddress } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { mineTokenAddress } from '../chunk-VGCXJRUV.mjs';
|
|
2
|
+
import '../chunk-E2NF4AQB.mjs';
|
|
3
3
|
import '../chunk-DOUF6NON.mjs';
|
|
4
4
|
import '../chunk-64ZQRKG3.mjs';
|
|
5
5
|
import '../chunk-LPA32BIK.mjs';
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/deployments.generated.ts"],"names":[],"mappings":"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","file":"chunk-3ALNQHGL.js","sourcesContent":["// AUTO-GENERATED FILE. DO NOT EDIT.\n// Generated by scripts/generate-addresses.mjs\n// Source: ../doppler/Deployments.json\n// WARNING: This file is an internal build artifact and is NOT part of the public API.\n// WARNING: Do NOT import from this file directly. It should not appear in IDE IntelliSense/suggestions.\n// WARNING: If you need Doppler addresses, import from @addresses.ts instead (e.g. use ADDRESSES / getAddresses).\n\n/** @internal */\nexport type GeneratedDopplerDeployments = Record<string, Record<string, string>>\n\n/** @internal */\nexport const GENERATED_DOPPLER_DEPLOYMENTS = {\n \"130\": {\n \"Airlock\": \"0x77EbfBAE15AD200758E9E2E61597c0B07d731254\",\n \"Bundler\": \"0x91231cDdD8d6C86Df602070a3081478e074b97b7\",\n \"DopplerDeployer\": \"0x0d2f38d807bfAd5C18e430516e10ab560D300caF\",\n \"DopplerLensQuoter\": \"0x82Ac010C67f70BACf7655cd8948a4AD92A173CAC\",\n \"GovernanceFactory\": \"0x99C94B9Df930E1E21a4E4a2c105dBff21bF5c5aE\",\n \"LockableUniswapV3Initializer\": \"0xA3C847eAb58eAa9cbc215C785c9cfBc19CDABD5f\",\n \"NoOpGovernanceFactory\": \"0x3AD727ee0FBBb8Ee0920933FdB96F23fD56f1299\",\n \"NoOpMigrator\": \"0x917da361072ce968acD810BbfC9B64079426ebf0\",\n \"StreamableFeesLocker\": \"0x6ddfED58D238Ca3195E49d8ac3d4cEa6386E5C33\",\n \"TokenFactory\": \"0x43d0D97EC9241A8F05A264f94B82A1d2E600f2B3\",\n \"TokenFactory80\": \"0xf0B5141dD9096254B2ca624dff26024f46087229\",\n \"UniswapV2Migrator\": \"0xf6023127f6E937091D5B605680056A6D27524bad\",\n \"UniswapV3Initializer\": \"0x9F4e56be80f08ba1A2445645EFa6d231E27b43ec\",\n \"UniswapV4Initializer\": \"0x4B0EC16Eb40318Ca5A4346f20F04A2285C19675B\",\n \"UniswapV4Migrator\": \"0x49F3fBB2dFF7f3d03B622e3b2a6d3F2E6fdB2a5A\",\n \"UniswapV4MigratorHook\": \"0x53C050d3B09C80024138165520Bd7c078D9e2000\"\n },\n \"143\": {\n \"Airlock\": \"0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12\",\n \"Bundler\": \"0xC99b485499f78995C6F1640dbB1413c57f8BA684\",\n \"DopplerDeployer\": \"0xb35469ee64A87Afd19B31615094fE3962d73e421\",\n \"GovernanceFactory\": \"0xFAafdE6a5b658684cC5eb0C5c2c755B00A246F45\",\n \"LaunchpadGovernanceFactory\": \"0x5FBe931dc4B923A7abe4c47aD68d5bF9Eda5B76D\",\n \"LockableUniswapV3Initializer\": \"0x8b4C7DB9121FC885689C0A50D5a1429F15AEc2a0\",\n \"NoOpGovernanceFactory\": \"0xb4deE32EB70A5E55f3D2d861F49Fb3D79f7a14d9\",\n \"NoOpMigrator\": \"0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731\",\n \"StreamableFeesLocker\": \"0x63f8C8F9beFaab2FaCD7Ece0b0242f78B920Ee90\",\n \"TimelockFactory\": \"0x44610355465c1F5914C8B8ea0E7c887CC67459b2\",\n \"TokenFactory\": \"0xaA47D2977d622DBdFD33eeF6a8276727c52EB4e5\",\n \"TokenFactory80\": \"0xf0B5141dD9096254B2ca624dff26024f46087229\",\n \"UniswapV2Locker\": \"0x08Ab3f5D1177511C438a15b3bd5d8b172b6f715F\",\n \"UniswapV2Migrator\": \"0x136191B46478cAB023cbC01a36160C4Aad81677a\",\n \"UniswapV4Initializer\": \"0x53b4c21a6Cb61D64F636ABBfa6E8E90E6558e8ad\",\n \"UniswapV4Migrator\": \"0x44bf742e57cd8cF23ABbc8dab2c44e2a3228356E\",\n \"UniswapV4MigratorHook\": \"0x3E4c689BBf33b37106eBC13Db8aa5BF13a25e500\",\n \"UniswapV4ScheduledMulticurveInitializer\": \"0xCe3099B2F07029b086E5e92a1573C5f5A3071783\",\n \"UniswapV4ScheduledMulticurveInitializerHook\": \"0x580ca49389d83b019d07E17e99454f2F218e2dc0\"\n },\n \"1301\": {\n \"Airlock\": \"0x0d2f38d807bfAd5C18e430516e10ab560D300caF\",\n \"AirlockMultisigTestnet\": \"0x0abCf819FD57C9f0141628410fFC273405E44426\",\n \"Bundler\": \"0xED344444633B965cd148F8fFCE3765938A179094\",\n \"DopplerDeployer\": \"0x77B5F559EE9cf3bfcf2fFf5731a84332D8eECAC9\",\n \"DopplerLensQuoter\": \"0x917da361072ce968acD810BbfC9B64079426ebf0\",\n \"GovernanceFactory\": \"0x4225C632b62622Bd7B0A3eC9745C0a866Ff94F6F\",\n \"LockableUniswapV3Initializer\": \"0x9dFb775dB7b005d9Dc77DA84D8b2e42C281D0344\",\n \"NoOpGovernanceFactory\": \"0x7E5D336A6E9e453c9f02E5102CC039E015Fd8fb8\",\n \"NoOpMigrator\": \"0x193F48A45B6025dDeD10bc4BaeEF65c833696387\",\n \"StreamableFeesLocker\": \"0x1728E8B3282502f275949109331E070b819B38eA\",\n \"TokenFactory\": \"0x82Ac010C67f70BACf7655cd8948a4AD92A173CAC\",\n \"TokenFactory80\": \"0xf0B5141dD9096254B2ca624dff26024f46087229\",\n \"UniswapV2Migrator\": \"0x620e3fec244e913d73f2163623b62d02DB69638B\",\n \"UniswapV3Initializer\": \"0xE0dC4012AC9C868F09c6e4b20d66ED46D6F258d0\",\n \"UniswapV4Initializer\": \"0x70d20cd48791E527036491dc464C8Dc58351Dd93\",\n \"UniswapV4Migrator\": \"0xb6D69eAA98E657bEEFF7ca4452768e6f707aa6b1\",\n \"UniswapV4MigratorHook\": \"0xFB0671Ec46190b09255776d2D77744fa101Ba500\",\n \"UniswapV4MulticurveInitializer\": \"0xac7939F1B4079d55A7fA4DFA314Ac0173A77bA40\",\n \"UniswapV4MulticurveInitializerHook\": \"0x11b55A121a38FDab8FAF16f9f1A4f124E3f42d40\"\n },\n \"4326\": {\n \"Airlock\": \"0xDe3599a2eC440B296373a983C85C365DA55d9dFA\",\n \"NoOpGovernanceFactory\": \"0xddAE8B3eD08184682f7Bc32B74d943cEEfEab638\",\n \"NoOpMigrator\": \"0x233A71A7bB928b1357A1Ebf454298320989Ca5B5\"\n },\n \"4801\": {\n \"Airlock\": \"0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731\",\n \"GovernanceFactory\": \"0x136191B46478cAB023cbC01a36160C4Aad81677a\",\n \"TokenFactory\": \"0x5FBe931dc4B923A7abe4c47aD68d5bF9Eda5B76D\",\n \"UniswapV2Migrator\": \"0x8b4C7DB9121FC885689C0A50D5a1429F15AEc2a0\",\n \"UniswapV3Initializer\": \"0x9916Ec1c1E0462F6F8f7514e414F06bf001Ac82A\",\n \"WETH\": \"0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12\"\n },\n \"6343\": {\n \"Airlock\": \"0xDe3599a2eC440B296373a983C85C365DA55d9dFA\",\n \"NoOpGovernanceFactory\": \"0xddAE8B3eD08184682f7Bc32B74d943cEEfEab638\",\n \"NoOpMigrator\": \"0x233A71A7bB928b1357A1Ebf454298320989Ca5B5\"\n },\n \"8453\": {\n \"Airlock\": \"0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12\",\n \"Bundler\": \"0x136191B46478cAB023cbC01a36160C4Aad81677a\",\n \"DopplerDeployer\": \"0xb35469ee64A87Afd19B31615094fE3962d73e421\",\n \"DopplerLensQuoter\": \"0x43d0D97EC9241A8F05A264f94B82A1d2E600f2B3\",\n \"GovernanceFactory\": \"0xa82c66b6ddEb92089015C3565E05B5c9750b2d4B\",\n \"LaunchpadGovernanceFactory\": \"0x40Bcb4dDA3BcF7dba30C5d10c31EE2791ed9ddCa\",\n \"LockableUniswapV3Initializer\": \"0xE0dC4012AC9C868F09c6e4b20d66ED46D6F258d0\",\n \"NoOpGovernanceFactory\": \"0x3AD727ee0FBBb8Ee0920933FdB96F23fD56f1299\",\n \"NoOpMigrator\": \"0x6ddfED58D238Ca3195E49d8ac3d4cEa6386E5C33\",\n \"StreamableFeesLocker\": \"0x0A00775D71a42cd33D62780003035e7F5b47bD3A\",\n \"TokenFactory\": \"0x4225C632b62622Bd7B0A3eC9745C0a866Ff94F6F\",\n \"TokenFactory80\": \"0xf0B5141dD9096254B2ca624dff26024f46087229\",\n \"UniswapV2Migrator\": \"0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731\",\n \"UniswapV3Initializer\": \"0xaA47D2977d622DBdFD33eeF6a8276727c52EB4e5\",\n \"UniswapV4Initializer\": \"0x53b4c21a6Cb61D64F636ABBfa6E8E90E6558e8ad\",\n \"UniswapV4Migrator\": \"0xd3B4cF7FD24381e90A4F012fC6c5976b87B9B3cE\",\n \"UniswapV4MigratorHook\": \"0xD6FECFF347c6203A41874e8D77dE669B54e7A500\",\n \"UniswapV4MulticurveInitializer\": \"0x65dE470Da664A5be139A5D812bE5FDa0d76CC951\",\n \"UniswapV4MulticurveInitializerHook\": \"0x892D3C2B4ABEAAF67d52A7B29783E2161B7CaD40\",\n \"UniswapV4ScheduledMulticurveInitializer\": \"0xA36715dA46Ddf4A769f3290f49AF58bF8132ED8E\",\n \"UniswapV4ScheduledMulticurveInitializerHook\": \"0x3e342a06f9592459D75721d6956B570F02eF2Dc0\"\n },\n \"10143\": {\n \"Airlock\": \"0xDe3599a2eC440B296373a983C85C365DA55d9dFA\",\n \"AirlockMultisigTestnet\": \"0x0abCf819FD57C9f0141628410fFC273405E44426\",\n \"Bundler\": \"0xf6023127f6E937091D5B605680056A6D27524bad\",\n \"DopplerDeployer\": \"0xb35469ee64A87Afd19B31615094fE3962d73e421\",\n \"DopplerLensQuoter\": \"0x2F2BAcd46d3F5c9EE052Ab392b73711dB89129DB\",\n \"GovernanceFactory\": \"0x014E1c0bd34f3B10546E554CB33B3293fECDD056\",\n \"LockableUniswapV3Initializer\": \"0x99C94B9Df930E1E21a4E4a2c105dBff21bF5c5aE\",\n \"NoOpGovernanceFactory\": \"0x094D926A969B3024ca46D2186BF13FD5CDBA9CE2\",\n \"NoOpMigrator\": \"0x5CadB034267751a364dDD4d321C99E07A307f915\",\n \"StreamableFeesLocker\": \"0x0d2f38d807bfAd5C18e430516e10ab560D300caF\",\n \"TimelockFactory\": \"0xB544F6fFF61F601F638C3930F6Aec4bbD7DA42b9\",\n \"TokenFactory\": \"0x8AF018e28c273826e6b2d5a99e81c8fB63729b07\",\n \"TokenFactory80\": \"0xf0B5141dD9096254B2ca624dff26024f46087229\",\n \"UniswapV2Locker\": \"0xfF3e891F2C1389eF638F9b0576003590aeEe1844\",\n \"UniswapV2Migrator\": \"0x43d0D97EC9241A8F05A264f94B82A1d2E600f2B3\",\n \"UniswapV3Initializer\": \"0x9F4e56be80f08ba1A2445645EFa6d231E27b43ec\",\n \"UniswapV4Initializer\": \"0x53b4c21a6Cb61D64F636ABBfa6E8E90E6558e8ad\",\n \"UniswapV4Migrator\": \"0x4B0EC16Eb40318Ca5A4346f20F04A2285C19675B\",\n \"UniswapV4MigratorHook\": \"0x76E1f507592d9856B48482c599732d129eD6a500\",\n \"UniswapV4MulticurveInitializer\": \"0xA3C847eAb58eAa9cbc215C785c9cfBc19CDABD5f\",\n \"UniswapV4MulticurveInitializerHook\": \"0xFaF16d11737E6552156DD328cD26C530e1da2D40\",\n \"WETH\": \"0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12\"\n },\n \"57073\": {\n \"Airlock\": \"0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12\",\n \"Bundler\": \"0x136191B46478cAB023cbC01a36160C4Aad81677a\",\n \"DopplerDeployer\": \"0xa82c66b6ddEb92089015C3565E05B5c9750b2d4B\",\n \"DopplerLensQuoter\": \"0x8AF018e28c273826e6b2d5a99e81c8fB63729b07\",\n \"GovernanceFactory\": \"0xb4deE32EB70A5E55f3D2d861F49Fb3D79f7a14d9\",\n \"TokenFactory\": \"0xFAafdE6a5b658684cC5eb0C5c2c755B00A246F45\",\n \"UniswapV2Migrator\": \"0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731\",\n \"UniswapV3Initializer\": \"0xaA47D2977d622DBdFD33eeF6a8276727c52EB4e5\",\n \"UniswapV4Initializer\": \"0x014E1c0bd34f3B10546E554CB33B3293fECDD056\"\n },\n \"84532\": {\n \"Airlock\": \"0x3411306Ce66c9469BFF1535BA955503c4Bde1C6e\",\n \"AirlockMultisigTestnet\": \"0x0abCf819FD57C9f0141628410fFC273405E44426\",\n \"BasicMultisig\": \"0x6f645FA08B7eadAD620CEC85634204b1d7A46DC2\",\n \"Bundler\": \"0xab7BACB0d5C2C10152f92D34e07F530EB3CB0Fb1\",\n \"CloneERC20\": \"0xE7F1Cc50CCa68975eD6E56Ee4b0Aaf171D02732A\",\n \"CloneERC20Factory\": \"0xbf4Ca4D527c9760A884df31292f72E9AcA503045\",\n \"CloneERC20Votes\": \"0x52831E40151a79FE2e74549b0974d44A10Ac30aD\",\n \"CloneERC20VotesFactory\": \"0x9a497a9fB78e49984B9d260abA1F4AD6321D4D92\",\n \"DopplerDeployer\": \"0xb35469ee64A87Afd19B31615094fE3962d73e421\",\n \"DopplerHookInitializer\": \"0x98CD6478DeBe443069dB863Abb9626d94de9A544\",\n \"DopplerLensQuoter\": \"0x4a8d81Db741248a36D9eb3bc6eF648Bf798B47a7\",\n \"GovernanceFactory\": \"0x9dBFaaDC8c0cB2c34bA698DD9426555336992e20\",\n \"LockableUniswapV3Initializer\": \"0x16AdA5Be50C3c2D94Af5fEae6b539C40A78Ad53c\",\n \"MulticurveLibrary\": \"0x32238a39ba5aF060EFbfAda59979B639E0945fE0\",\n \"NoOpGovernanceFactory\": \"0x7bD798fafC99A3b17E261F8308A8C11B56935ea1\",\n \"NoOpMigrator\": \"0xF11066abbd329ac4bBA39455340539322C222eb0\",\n \"Quoter\": \"0x884BBC38F35119756fdCbbEDd785668a91445BD3\",\n \"RehypeDopplerHook\": \"0x636A756CeE08775CC18780F52dd90B634F18ad37\",\n \"StreamableFeesLocker\": \"0x3345E557c5C0b474bE1eb4693264008B8562Aa9c\",\n \"TeamGovernanceFactory\": \"0x8aF3001ED75F86f4Dd910577ECa9C5dB7CEa765c\",\n \"TokenFactory\": \"0x9D8fd79B2a59c5d91ccBd79c3AEb4de56451Bb02\",\n \"TokenFactory80\": \"0xf0B5141dD9096254B2ca624dff26024f46087229\",\n \"UniswapV2Migrator\": \"0x04a898f3722c38F9Def707bD17DC78920EFA977C\",\n \"UniswapV3Initializer\": \"0x4C3062B9ccFdbCB10353F57C1B59a29d4c5CFa47\",\n \"UniswapV4Initializer\": \"0x53b4c21a6Cb61D64F636ABBfa6E8E90E6558e8ad\",\n \"UniswapV4Migrator\": \"0xEEe0eCCb54398ce371CAACBCEf076d3Ed597DDb3\",\n \"UniswapV4MigratorHook\": \"0x127cAAAd598Ffa97577940b0a5c3b6150019E500\",\n \"UniswapV4MulticurveInitializer\": \"0x1718405E58c61425cDc0083262bC9f72198F5232\",\n \"UniswapV4MulticurveInitializerHook\": \"0x6a1061FC558dDe1E6fD0eFd641b370d435b56d40\",\n \"UniswapV4ScheduledMulticurveInitializer\": \"0x5C10D3e14Aae2Ef95619B25E907E013260E832E4\",\n \"UniswapV4ScheduledMulticurveInitializerHook\": \"0x5D663F9C993deFf2D17ce4232D75f347df7DADc0\",\n \"WETH\": \"0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12\"\n },\n \"11155111\": {\n \"AirlockMultisigTestnet\": \"0x0abCf819FD57C9f0141628410fFC273405E44426\"\n }\n} as const\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts"],"names":["parseEther"],"mappings":";;;;;AAGO,IAAM,MAAM,GAAA,IAAO;AACnB,IAAM,YAAA,GACX;AACK,IAAM,YAAA,GACX;AAaK,IAAM,SAAA,GAAY;AAAA,EACvB,MAAA,EAAQ,GAAA;AAAA;AAAA,EACR,GAAA,EAAK,GAAA;AAAA;AAAA,EACL,MAAA,EAAQ,GAAA;AAAA;AAAA,EACR,IAAA,EAAM;AAAA;AACR;AASO,IAAM,eAAA,GAAsC;AAAA,EACjD,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAM;AAClB;AAMO,IAAM,YAAA,GAAe;AAOrB,IAAM,UAAA,GAAa;AAInB,IAAM,aAAA,GAAgB;AAAA,EAC3B,GAAA,EAAK,CAAA;AAAA,EACL,GAAA,EAAK,EAAA;AAAA,EACL,GAAA,EAAM,EAAA;AAAA,EACN,GAAA,EAAO;AACT;AAMO,IAAM,wBAAA,GAA2B;AAGjC,IAAM,eAAA,GAAkB;AACxB,IAAM,mBAAmB,GAAA,GAAM;AAG/B,IAAM,oBAAA,GAAuB;AAC7B,IAAM,2BAA2B,CAAA,GAAI;AACrC,IAAM,qBAAA,GAAwB;AAC9B,IAAM,gBAAA,GAAmB;AACzB,IAAM,WAAA,GAAc;AAGpB,IAAM,wBAAA,GAA2B;AAGjC,IAAM,qBAAA,GAAwB;AAC9B,IAAM,mBAAA,GAAsB;AAC5B,IAAM,wBAAA,GAA2B;AACjC,IAAM,cAAA,GAAiB;AACvB,IAAM,+BAAA,GAAkC;AACxC,IAAM,gCAAA,GAAmC;AACzC,IAAM,qCAAA,GAAwC;AAC9C,IAAM,2BAAA,GAA8B,OAAO,gBAAgB;AAC3D,IAAM,yBAAA,GAA4BA,gBAAW,YAAY;AACzD,IAAM,6BAAA,GAAgCA,gBAAW,WAAW;AAC5D,IAAM,2BAAA,GAA8BA,gBAAW,MAAM;AACrD,IAAM,mBAAA,GAAsBA,gBAAW,SAAS;AAChD,IAAM,+BAAA,GAAkCA,gBAAW,MAAM;AAGzD,IAAM,+BAAA,GAAkC;AACxC,IAAM,gCAAA,GAAmC;AACzC,IAAM,qCAAA,GAAwC;AAC9C,IAAM,2BAAA,GAA8BA,gBAAW,MAAM;AAKrD,IAAM,8BAAA,GAAiC;AAAA,EAC5C,OAAA;AAAA,EAAU,OAAA;AAAA,EAAU;AACtB;AACO,IAAM,8BAAA,GAAiC;AAAA,EAC5C,OAAA;AAAA,EAAU,OAAA;AAAA,EAAU;AACtB;AACO,IAAM,gCAAA,GAAmC,CAAC,EAAA,EAAI,EAAA,EAAI,EAAE;AACpD,IAAM,oCAAA,GAAuC;AAAA,EAClDA,gBAAW,MAAM,CAAA;AAAA;AAAA,EACjBA,gBAAW,OAAO,CAAA;AAAA;AAAA,EAClBA,gBAAW,KAAK;AAAA;AAClB;AAGO,IAAM,cAAA,GAAiB;AACvB,IAAM,cAAA,GACX;AAGK,IAAM,YAAA,GAAe;AAGrB,IAAM,SAAA,GAAY,OAAO,KAAM;AAC/B,IAAM,aAAA,GAAgB,MAAA;AAAA,EAC1B,CAAA,IAAK,EAAA;AAAA,EACH,CAAA,IAAK,EAAA;AAAA,EACL,CAAA,IAAK,EAAA;AAAA,EACL,CAAA,IAAK,CAAA;AAAA,EACL,CAAA,IAAK,CAAA;AAAA,EACL,CAAA,IAAK;AAAA;AACV;AAGO,IAAM,gBAAA,GAAmB;AACzB,IAAM,eAAA,GAAkB;AAOxB,IAAM,0BAAA,GAA6B,CAAC,GAAA,EAAK,GAAA,EAAK,KAAM,GAAK","file":"chunk-4DUE547M.js","sourcesContent":["import { Address, parseEther } from 'viem';\n\n// Common constants\nexport const WAD = 10n ** 18n;\nexport const DEAD_ADDRESS =\n '0x000000000000000000000000000000000000dEaD' as Address;\nexport const ZERO_ADDRESS =\n '0x0000000000000000000000000000000000000000' as Address;\n\n// =============================================================================\n// Fee Tiers - V3 vs V4 Distinction\n// =============================================================================\n//\n// Uniswap V3 (Static Auctions): Fees are COUPLED to tick spacings. Only 4 tiers allowed.\n// Uniswap V4 (Dynamic/Multicurve): Fees are DECOUPLED. Any fee 0-100,000 is valid.\n//\n// The standard fee tiers below are recognized by both V3 and V4, but V4 pools\n// can use ANY fee value as long as you provide an explicit tickSpacing.\n\n/** Standard fee tiers recognized by both Uniswap V3 and V4 */\nexport const FEE_TIERS = {\n LOWEST: 100, // 0.01%\n LOW: 500, // 0.05%\n MEDIUM: 3000, // 0.30%\n HIGH: 10000, // 1.00%\n} as const;\n\n/** Valid fee tier values (100, 500, 3000, 10000) */\nexport type FeeTier = (typeof FEE_TIERS)[keyof typeof FEE_TIERS];\n\n/**\n * Standard fee tiers - REQUIRED for V3 (Static Auctions).\n * V4 pools can use custom fees but these are the recommended defaults.\n */\nexport const VALID_FEE_TIERS: readonly FeeTier[] = [\n 100, 500, 3000, 10000,\n] as const;\n\n/**\n * V3 fee tiers - These are the ONLY valid fees for Uniswap V3 pools.\n * Static Auctions use V3 and must use one of these tiers.\n */\nexport const V3_FEE_TIERS = VALID_FEE_TIERS;\n\n/**\n * Maximum LP fee for V4 pools (from DopplerHookInitializer.sol).\n * V4 pools can use any fee from 0 to this value.\n * @see DopplerHookInitializer.sol line 171: `uint24 constant MAX_LP_FEE = 100_000`\n */\nexport const V4_MAX_FEE = 100_000; // 10%\n\n// Tick spacings for different fee tiers (standard Uniswap V3 mapping)\n// In V4, tickSpacing is independent of fee - you can use any combination\nexport const TICK_SPACINGS = {\n 100: 1,\n 500: 10,\n 3000: 60,\n 10000: 200,\n} as const;\n\n/**\n * Maximum tick spacing allowed by Doppler.sol for dynamic (Dutch) auctions.\n * @see Doppler.sol line 159: `int24 constant MAX_TICK_SPACING = 30`\n */\nexport const DOPPLER_MAX_TICK_SPACING = 30;\n\n// Time constants\nexport const SECONDS_PER_DAY = 86400;\nexport const SECONDS_PER_YEAR = 365 * SECONDS_PER_DAY;\n\n// Default values\nexport const DEFAULT_EPOCH_LENGTH = 43200; // 12 hours in seconds (matching V4 SDK)\nexport const DEFAULT_AUCTION_DURATION = 7 * SECONDS_PER_DAY; // 7 days\nexport const DEFAULT_LOCK_DURATION = SECONDS_PER_YEAR; // 1 year\nexport const DEFAULT_PD_SLUGS = 5; // Default price discovery slugs\nexport const DAY_SECONDS = SECONDS_PER_DAY; // Alias for consistency\n\n// Default gas limit to fall back on when create() simulations do not return a value\nexport const DEFAULT_CREATE_GAS_LIMIT = 13_500_000n;\n\n// V3 Default parameters\nexport const DEFAULT_V3_START_TICK = 175000;\nexport const DEFAULT_V3_END_TICK = 225000;\nexport const DEFAULT_V3_NUM_POSITIONS = 15;\nexport const DEFAULT_V3_FEE = 10000; // 1% fee tier\nexport const DEFAULT_V3_INITIAL_VOTING_DELAY = 172800; // 2 days\nexport const DEFAULT_V3_INITIAL_VOTING_PERIOD = 1209600; // 14 days\nexport const DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD = 0n;\nexport const DEFAULT_V3_VESTING_DURATION = BigInt(SECONDS_PER_YEAR);\nexport const DEFAULT_V3_INITIAL_SUPPLY = parseEther('1000000000'); // 1 billion tokens\nexport const DEFAULT_V3_NUM_TOKENS_TO_SELL = parseEther('900000000'); // 900 million tokens\nexport const DEFAULT_V3_YEARLY_MINT_RATE = parseEther('0.02'); // 2% yearly mint rate\nexport const DEFAULT_V3_PRE_MINT = parseEther('9000000'); // 9 million tokens (0.9%)\nexport const DEFAULT_V3_MAX_SHARE_TO_BE_SOLD = parseEther('0.35'); // 35%\n\n// V4 Default parameters\nexport const DEFAULT_V4_INITIAL_VOTING_DELAY = 7200; // 2 hours\nexport const DEFAULT_V4_INITIAL_VOTING_PERIOD = 50400; // 14 hours\nexport const DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD = 0n;\nexport const DEFAULT_V4_YEARLY_MINT_RATE = parseEther('0.02'); // 2% yearly mint rate\n\n// V4 Multicurve Default Tick Ranges\n// Based on market cap tiers: LOW ($7.5k -> $30k), MEDIUM ($50k -> $150k), HIGH ($250k -> $750k)\n// Calculated for 1B token supply, $4500 numeraire (e.g., WETH on Base)\nexport const DEFAULT_MULTICURVE_LOWER_TICKS = [\n -202_100, -183_100, -167_000,\n] as const;\nexport const DEFAULT_MULTICURVE_UPPER_TICKS = [\n -188_200, -172_100, -156_000,\n] as const;\nexport const DEFAULT_MULTICURVE_NUM_POSITIONS = [11, 11, 11] as const;\nexport const DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES = [\n parseEther('0.05'), // 5% for LOW tier\n parseEther('0.125'), // 12.5% for MEDIUM tier\n parseEther('0.2'), // 20% for HIGH tier\n] as const;\n\n// Price bounds\nexport const MIN_SQRT_RATIO = 4295128739n;\nexport const MAX_SQRT_RATIO =\n 1461446703485210103287273052203988822378723970342n;\n\n// Basis points\nexport const BASIS_POINTS = 10000;\n\n// V4 Hook Flags for Doppler\nexport const FLAG_MASK = BigInt(0x3fff);\nexport const DOPPLER_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// V4 Dynamic Fee Flag\nexport const DYNAMIC_FEE_FLAG = 0x800000; // 8388608 in decimal\nexport const FEE_AMOUNT_MASK = 0xffffff; // Mask to extract actual fee from dynamic fee\n\n/**\n * @deprecated Dynamic auctions (V4) support ANY fee 0-100,000 with explicit tickSpacing.\n * This constant is kept for backwards compatibility but is no longer enforced.\n * Standard fee tiers still auto-derive tickSpacing; custom fees require explicit tickSpacing.\n */\nexport const DYNAMIC_AUCTION_VALID_FEES = [100, 500, 3000, 10000] as const;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/builders/MulticurveBuilder.ts"],"names":["DEFAULT_V3_YEARLY_MINT_RATE","buildCurvesFromPresets","WAD","V4_MAX_FEE","ZERO_ADDRESS","FEE_TIERS","TICK_SPACINGS","validateMarketCapParameters","marketCapToTicksForMulticurve","marketCapToTickForMulticurve","isNoOpEnabledChain","isLaunchpadEnabledChain"],"mappings":";;;;;;;;AAmCO,IAAM,iBAAA,GAAN,MAAM,kBAAA,CAEsB;AAAA,EAkCjC,YAAY,OAAA,EAAY;AACtB,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,EACjB;AAAA,EAEA,OAAO,SACL,OAAA,EACsB;AACtB,IAAA,OAAO,IAAI,mBAAkB,OAAO,CAAA;AAAA,EACtC;AAAA,EAEA,YACE,MAAA,EAeM;AACN,IAAA,IAAI,MAAA,IAAU,MAAA,IAAU,MAAA,IAAU,MAAA,CAAO,SAAS,YAAA,EAAc;AAC9D,MAAA,IAAA,CAAK,KAAA,GAAQ;AAAA,QACX,IAAA,EAAM,YAAA;AAAA,QACN,MAAM,MAAA,CAAO,IAAA;AAAA,QACb,QAAQ,MAAA,CAAO,MAAA;AAAA,QACf,SAAS,MAAA,CAAO,OAAA;AAAA,QAChB,MAAM,MAAA,CAAO;AAAA,OACf;AAAA,IACF,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,KAAA,GAAQ;AAAA,QACX,IAAA,EAAM,UAAA;AAAA,QACN,MAAM,MAAA,CAAO,IAAA;AAAA,QACb,QAAQ,MAAA,CAAO,MAAA;AAAA,QACf,UAAU,MAAA,CAAO,QAAA;AAAA,QACjB,cAAA,EAAgB,OAAO,cAAA,IAAkBA;AAAA,OAC3C;AAAA,IACF;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,WAAW,MAAA,EAIF;AACP,IAAA,IAAA,CAAK,IAAA,GAAO;AAAA,MACV,eAAe,MAAA,CAAO,aAAA;AAAA,MACtB,iBAAiB,MAAA,CAAO,eAAA;AAAA,MACxB,WAAW,MAAA,CAAO;AAAA,KACpB;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,WAAW,MAAA,EAUF;AAEP,IAAA,IAAI,KAAK,YAAA,EAAc;AACrB,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OAGF;AAAA,IACF;AAEA,IAAA,MAAM,mBAAA,GAAsB,MAAA,CAAO,aAAA,GAC/B,CAAC,GAAG,MAAA,CAAO,aAAa,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM;AACvC,MAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,WAAA,CAAY,WAAA,EAAY;AACxC,MAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,WAAA,CAAY,WAAA,EAAY;AACxC,MAAA,OAAO,KAAA,GAAQ,KAAA,GAAQ,EAAA,GAAK,KAAA,GAAQ,QAAQ,CAAA,GAAI,CAAA;AAAA,IAClD,CAAC,CAAA,GACD,MAAA;AAEJ,IAAA,IAAA,CAAK,IAAA,GAAO;AAAA,MACV,KAAK,MAAA,CAAO,GAAA;AAAA,MACZ,aAAa,MAAA,CAAO,WAAA;AAAA,MACpB,QAAQ,MAAA,CAAO,MAAA;AAAA,MACf,aAAA,EAAe;AAAA,KACjB;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,qBAAqB,MAAA,EAMZ;AAEP,IAAA,IAAI,KAAK,YAAA,EAAc;AACrB,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OAGF;AAAA,IACF;AAEA,IAAA,MAAM,EAAE,GAAA,EAAK,WAAA,EAAa,MAAA,KAAWC,uCAAA,CAAuB;AAAA,MAC1D,KAAK,MAAA,EAAQ,GAAA;AAAA,MACb,aAAa,MAAA,EAAQ,WAAA;AAAA,MACrB,SAAS,MAAA,EAAQ,OAAA;AAAA,MACjB,WAAW,MAAA,EAAQ;AAAA,KACpB,CAAA;AAED,IAAA,OAAO,KAAK,UAAA,CAAW;AAAA,MACrB,GAAA;AAAA,MACA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,eAAe,MAAA,EAAQ;AAAA,KACxB,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAyCA,WAAW,MAAA,EAA+C;AAExD,IAAA,IAAI,KAAK,IAAA,EAAM;AACb,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OAGF;AAAA,IACF;AAGA,IAAA,IAAI,MAAA,CAAO,kBAAkB,CAAA,EAAG;AAC9B,MAAA,MAAM,IAAI,MAAM,uCAAuC,CAAA;AAAA,IACzD;AAGA,IAAA,IAAI,CAAC,MAAA,CAAO,MAAA,IAAU,MAAA,CAAO,MAAA,CAAO,WAAW,CAAA,EAAG;AAChD,MAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAAA,IAChE;AAGA,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AAC7C,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA;AAC7B,MAAA,IAAA,CAAK,kBAAA;AAAA,QACH,MAAM,SAAA,CAAU,KAAA;AAAA,QAChB,MAAM,SAAA,CAAU,GAAA;AAAA,QAChB,KAAA,CAAM,YAAA;AAAA,QACN,KAAA,CAAM,MAAA;AAAA,QACN,UAAU,CAAC,CAAA,CAAA;AAAA,OACb;AAAA,IACF;AAGA,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,qBAAA,CAAsB,MAAA,CAAO,MAAM,CAAA;AAG7D,IAAA,IAAA,CAAK,wBAAwB,YAAY,CAAA;AAGzC,IAAA,MAAM,WAAA,GAAc,aAAa,MAAA,CAAO,CAAC,KAAK,CAAA,KAAM,GAAA,GAAM,CAAA,CAAE,MAAA,EAAQ,EAAE,CAAA;AACtE,IAAA,IAAI,gBAAgBC,oBAAA,EAAK;AACvB,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,oCAAA,EAAuCA,oBAAG,CAAA,OAAA,EAAU,WAAW,CAAA,EAAA,EAAK,OAAQ,WAAA,GAAc,MAAA,GAAUA,oBAAG,CAAA,GAAI,GAAG,CAAA,EAAA;AAAA,OAChH;AAAA,IACF;AAGA,IAAA,IAAI,MAAA,CAAO,GAAA,KAAQ,MAAA,IAAa,MAAA,CAAO,MAAMC,2BAAA,EAAY;AACvD,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,OAAO,MAAA,CAAO,GAAG,CAAA,uCAAA,EAA0CA,2BAAU,oCACxCA,2BAAU,CAAA,CAAA;AAAA,OACzC;AAAA,IACF;AAGA,IAAA,IAAA,CAAK,iBAAiB,MAAA,CAAO,cAAA;AAC7B,IAAA,IAAA,CAAK,gBAAgB,MAAA,CAAO,aAAA;AAC5B,IAAA,IAAA,CAAK,oBAAoB,MAAA,CAAO,iBAAA;AAGhC,IAAA,IAAA,CAAK,YAAA,GAAe;AAAA,MAClB,gBAAgB,MAAA,CAAO,cAAA;AAAA,MACvB,MAAA,EAAQ,YAAA;AAAA,MACR,aAAa,MAAA,CAAO,WAAA;AAAA,MACpB,eAAe,MAAA,CAAO,aAAA;AAAA,MACtB,mBAAmB,MAAA,CAAO,iBAAA;AAAA,MAC1B,KAAK,MAAA,CAAO,GAAA;AAAA,MACZ,aAAa,MAAA,CAAO,WAAA;AAAA,MACpB,eAAe,MAAA,CAAO;AAAA,KACxB;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKQ,sBAEN,MAAA,EAAkB;AAClB,IAAA,OAAO,CAAC,GAAG,MAAM,EAAE,IAAA,CAAK,CAAC,GAAG,CAAA,KAAM;AAChC,MAAA,MAAM,SAAA,GAAY,CAAA,CAAE,SAAA,CAAU,KAAA,GAAQ,EAAE,SAAA,CAAU,KAAA;AAClD,MAAA,IAAI,SAAA,KAAc,GAAG,OAAO,SAAA;AAC5B,MAAA,MAAM,OAAO,CAAA,CAAE,SAAA,CAAU,QAAQ,KAAA,GAAQ,QAAA,GAAW,EAAE,SAAA,CAAU,GAAA;AAChE,MAAA,MAAM,OAAO,CAAA,CAAE,SAAA,CAAU,QAAQ,KAAA,GAAQ,QAAA,GAAW,EAAE,SAAA,CAAU,GAAA;AAChE,MAAA,OAAO,IAAA,GAAO,IAAA;AAAA,IAChB,CAAC,CAAA;AAAA,EACH;AAAA,EAEQ,kBAAA,CACN,cAAA,EACA,YAAA,EACA,YAAA,EACA,QACA,KAAA,EACM;AACN,IAAA,IAAI,kBAAkB,CAAA,EAAG;AACvB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,EAAG,KAAK,CAAA,wCAAA,CAA0C,CAAA;AAAA,IACpE;AACA,IAAA,IAAI,YAAA,KAAiB,KAAA,IAAS,YAAA,IAAgB,CAAA,EAAG;AAC/C,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,EAAG,KAAK,CAAA,sCAAA,CAAwC,CAAA;AAAA,IAClE;AACA,IAAA,IAAI,YAAA,KAAiB,KAAA,IAAS,cAAA,IAAkB,YAAA,EAAc;AAC5D,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,EAAG,KAAK,CAAA,mBAAA,EAAsB,cAAA,CAAe,gBAAgB,CAAA,mCAAA,EAAsC,YAAA,CAAa,cAAA,EAAgB,CAAA,CAAA;AAAA,OAClI;AAAA,IACF;AACA,IAAA,IAAI,gBAAgB,CAAA,EAAG;AACrB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,EAAG,KAAK,CAAA,qCAAA,CAAuC,CAAA;AAAA,IACjE;AACA,IAAA,IAAI,UAAU,EAAA,EAAI;AAChB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,EAAG,KAAK,CAAA,+BAAA,CAAiC,CAAA;AAAA,IAC3D;AAAA,EACF;AAAA,EAEQ,wBACN,YAAA,EACM;AACN,IAAA,IAAI,YAAA,CAAa,UAAU,CAAA,EAAG;AAC5B,MAAA;AAAA,IACF;AAEA,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,YAAA,CAAa,QAAQ,CAAA,EAAA,EAAK;AAC5C,MAAA,MAAM,SAAA,GAAY,YAAA,CAAa,CAAA,GAAI,CAAC,CAAA;AACpC,MAAA,MAAM,SAAA,GAAY,aAAa,CAAC,CAAA;AAChC,MAAA,MAAM,UACJ,SAAA,CAAU,SAAA,CAAU,QAAQ,KAAA,GACxB,QAAA,GACA,UAAU,SAAA,CAAU,GAAA;AAC1B,MAAA,MAAM,YAAA,GACJ,SAAA,CAAU,SAAA,CAAU,GAAA,KAAQ,KAAA,GACxB,KAAA,GACA,CAAA,CAAA,EAAI,SAAA,CAAU,SAAA,CAAU,GAAA,CAAI,cAAA,EAAgB,CAAA,CAAA;AAClD,MAAA,MAAM,YAAA,GACJ,SAAA,CAAU,SAAA,CAAU,GAAA,KAAQ,KAAA,GACxB,KAAA,GACA,CAAA,CAAA,EAAI,SAAA,CAAU,SAAA,CAAU,GAAA,CAAI,cAAA,EAAgB,CAAA,CAAA;AAElD,MAAA,IAAI,SAAA,CAAU,SAAA,CAAU,KAAA,GAAQ,OAAA,EAAS;AACvC,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,CAAA,yCAAA,EACM,SAAA,CAAU,SAAA,CAAU,KAAA,CAAM,gBAAgB,CAAA,CAAA,EAAI,YAAY,CAAA,MAAA,EACtD,UAAU,SAAA,CAAU,KAAA,CAAM,cAAA,EAAgB,IAAI,YAAY,CAAA,2CAAA;AAAA,SAEtE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA0BA,sBAAsB,MAAA,EAAuC;AAC3D,IAAA,MAAM,oBACJ,MAAA,CAAO,sBAAA,GACP,OAAO,0BAAA,GACP,MAAA,CAAO,wBACP,MAAA,CAAO,YAAA;AACT,IAAA,IAAI,sBAAsBD,oBAAA,EAAK;AAC7B,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,yCAAA,EAA4CA,oBAAG,CAAA,iBAAA,EAAoB,iBAAiB,CAAA;AAAA,OACtF;AAAA,IACF;AAGA,IAAA,IAAI,MAAA,CAAO,mBAAA,KAAwB,MAAA,IAAa,MAAA,CAAO,YAAY,MAAA,EAAW;AAC5E,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AAEA,IAAA,IAAA,CAAK,WAAA,GAAc,MAAA;AACnB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,YAAY,MAAA,EAKH;AACP,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,IAAA,CAAK,OAAA,GAAU,MAAA;AACf,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,IAAA,CAAK,OAAA,GAAU;AAAA,MACb,QAAA,EAAU,MAAA,CAAO,MAAA,CAAO,QAAA,IAAY,EAAE,CAAA;AAAA,MACtC,aAAA,EAAe,OAAO,aAAA,IAAiB,CAAA;AAAA,MACvC,YAAY,MAAA,CAAO,UAAA;AAAA,MACnB,SAAS,MAAA,CAAO;AAAA,KAClB;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,aAAa,MAAA,EAAsD;AACjE,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,IAAA,CAAK,QAAA,GAAW,MAAA;AAChB,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,IAAI,gBAAA;AACJ,IAAA,MAAM,EAAE,WAAU,GAAI,MAAA;AAEtB,IAAA,IAAI,qBAAqB,IAAA,EAAM;AAC7B,MAAA,gBAAA,GAAmB,IAAA,CAAK,KAAA,CAAM,SAAA,CAAU,OAAA,KAAY,GAAI,CAAA;AAAA,IAC1D,CAAA,MAAA,IAAW,OAAO,SAAA,KAAc,QAAA,EAAU;AACxC,MAAA,gBAAA,GAAmB,OAAO,SAAS,CAAA;AAAA,IACrC,CAAA,MAAO;AACL,MAAA,gBAAA,GAAmB,OAAO,SAAS,CAAA;AAAA,IACrC;AAEA,IAAA,IACE,CAAC,OAAO,QAAA,CAAS,gBAAgB,KACjC,CAAC,MAAA,CAAO,SAAA,CAAU,gBAAgB,CAAA,EAClC;AACA,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AAEA,IAAA,IAAI,mBAAmB,CAAA,EAAG;AACxB,MAAA,MAAM,IAAI,MAAM,uCAAuC,CAAA;AAAA,IACzD;AAEA,IAAA,MAAM,UAAA,GAAa,UAAA;AACnB,IAAA,IAAI,mBAAmB,UAAA,EAAY;AACjC,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AAEA,IAAA,IAAA,CAAK,QAAA,GAAW,EAAE,SAAA,EAAW,gBAAA,EAAiB;AAC9C,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,eAAe,MAAA,EAAmC;AAChD,IAAA,IAAA,CAAK,UAAA,GAAa,MAAA;AAClB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,cAAc,SAAA,EAAkC;AAC9C,IAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AACjB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,gBAAgB,OAAA,EAAwB;AACtC,IAAA,IAAA,CAAK,WAAA,GAAc,OAAA;AACnB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,eAAe,OAAA,EAAyB;AACtC,IAAA,IAAA,CAAK,aAAa,OAAA,IAAWE,6BAAA;AAC7B,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,aAAa,GAAA,EAAoB;AAC/B,IAAA,IAAA,CAAK,QAAA,GAAW,GAAA;AAChB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEQ,cAAA,CACN,KACA,OAAA,EACM;AACN,IAAA,IAAA,CAAK,eAAA,GAAkB;AAAA,MACrB,GAAG,IAAA,CAAK,eAAA;AAAA,MACR,CAAC,GAAG,GAAG;AAAA,KACT;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,iBAAiB,OAAA,EAAwB;AACvC,IAAA,OAAO,IAAA,CAAK,cAAA,CAAe,cAAA,EAAgB,OAAO,CAAA;AAAA,EACpD;AAAA,EACA,YAAY,OAAA,EAAwB;AAClC,IAAA,OAAO,IAAA,CAAK,cAAA,CAAe,SAAA,EAAW,OAAO,CAAA;AAAA,EAC/C;AAAA,EACA,4BAA4B,OAAA,EAAwB;AAClD,IAAA,OAAO,IAAA,CAAK,cAAA,CAAe,yBAAA,EAA2B,OAAO,CAAA;AAAA,EAC/D;AAAA,EACA,qCAAqC,OAAA,EAAwB;AAC3D,IAAA,OAAO,IAAA,CAAK,cAAA,CAAe,kCAAA,EAAoC,OAAO,CAAA;AAAA,EACxE;AAAA,EACA,sBAAsB,OAAA,EAAwB;AAC5C,IAAA,OAAO,IAAA,CAAK,cAAA,CAAe,mBAAA,EAAqB,OAAO,CAAA;AAAA,EACzD;AAAA,EACA,eAAe,OAAA,EAAwB;AACrC,IAAA,OAAO,IAAA,CAAK,cAAA,CAAe,YAAA,EAAc,OAAO,CAAA;AAAA,EAClD;AAAA,EAEA,eAAe,OAAA,EAAwB;AACrC,IAAA,OAAO,IAAA,CAAK,cAAA,CAAe,YAAA,EAAc,OAAO,CAAA;AAAA,EAClD;AAAA,EACA,iBAAiB,OAAA,EAAwB;AACvC,IAAA,OAAO,IAAA,CAAK,cAAA,CAAe,cAAA,EAAgB,OAAO,CAAA;AAAA,EACpD;AAAA,EACA,2BAA2B,OAAA,EAAwB;AACjD,IAAA,OAAO,IAAA,CAAK,cAAA,CAAe,wBAAA,EAA0B,OAAO,CAAA;AAAA,EAC9D;AAAA,EAEA,KAAA,GAAmC;AACjC,IAAA,IAAI,CAAC,IAAA,CAAK,KAAA,EAAO,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAC1D,IAAA,IAAI,CAAC,IAAA,CAAK,IAAA,EAAM,MAAM,IAAI,MAAM,wBAAwB,CAAA;AACxD,IAAA,IAAI,CAAC,IAAA,CAAK,SAAA,EAAW,MAAM,IAAI,MAAM,qCAAqC,CAAA;AAC1E,IAAA,IAAI,CAAC,IAAA,CAAK,WAAA,EAAa,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAGhE,IAAA,IAAI,IAAA,CAAK,YAAA,IAAgB,CAAC,IAAA,CAAK,IAAA,EAAM;AACnC,MAAA,MAAM,SAAS,IAAA,CAAK,YAAA;AAGpB,MAAA,MAAM,WAAA,GAAc,MAAA,CAAO,WAAA,IAAe,IAAA,CAAK,IAAA,CAAK,aAAA;AACpD,MAAA,IAAI,CAAC,WAAA,EAAa;AAChB,QAAA,MAAM,IAAI,KAAA;AAAA,UACR;AAAA,SACF;AAAA,MACF;AAGA,MAAA,MAAM,GAAA,GAAM,MAAA,CAAO,GAAA,IAAOC,0BAAA,CAAU,MAAA;AACpC,MAAA,MAAM,WAAA,GACJ,MAAA,CAAO,WAAA,IAAgBC,8BAAA,CAAyC,GAAG,CAAA;AAErE,MAAA,IAAI,gBAAgB,MAAA,EAAW;AAC7B,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,cAAc,GAAG,CAAA,8FAAA;AAAA,SAEnB;AAAA,MACF;AAGA,MAAA,MAAM,UAAA,GAAa,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA;AAClC,MAAA,MAAM,eAAA,GAAkBC,4CAAA;AAAA,QACtB,WAAW,SAAA,CAAU,KAAA;AAAA,QACrB,WAAA;AAAA,QACA,MAAA,CAAO;AAAA,OACT;AACA,MAAA,MAAM,aAAA,GACJ,UAAA,CAAW,SAAA,CAAU,GAAA,KAAQ,KAAA,GACzB,EAAe,QAAA,EAAU,EAAC,EAAE,GAC5BA,4CAAA;AAAA,QACE,WAAW,SAAA,CAAU,GAAA;AAAA,QACrB,WAAA;AAAA,QACA,MAAA,CAAO;AAAA,OACT;AACN,MAAA,MAAM,WAAA,GAAc;AAAA,QAClB,GAAG,eAAA,CAAgB,QAAA;AAAA,QACnB,GAAG,aAAA,CAAc;AAAA,OACnB;AACA,MAAA,IAAI,WAAA,CAAY,SAAS,CAAA,EAAG;AAC1B,QAAA,OAAA,CAAQ,KAAK,6CAA6C,CAAA;AAC1D,QAAA,WAAA,CAAY,OAAA,CAAQ,CAAC,CAAA,KAAM,OAAA,CAAQ,KAAK,CAAA,IAAA,EAAO,CAAC,EAAE,CAAC,CAAA;AAAA,MACrD;AAGA,MAAA,MAAM,SAKA,EAAC;AAEP,MAAA,KAAA,MAAW,KAAA,IAAS,OAAO,MAAA,EAAQ;AACjC,QAAA,MAAM,aAAaC,8CAAA,CAA8B;AAAA,UAC/C,cAAA,EAAgB,MAAM,SAAA,CAAU,KAAA;AAAA,UAChC,cAAA,EAAgB,MAAM,SAAA,CAAU,GAAA;AAAA,UAChC,WAAA;AAAA,UACA,mBAAmB,MAAA,CAAO,cAAA;AAAA,UAC1B,WAAA;AAAA,UACA,aAAA,EAAe,OAAO,aAAA,IAAiB,EAAA;AAAA,UACvC,iBAAA,EAAmB,OAAO,iBAAA,IAAqB;AAAA,SAChD,CAAA;AAED,QAAA,MAAA,CAAO,IAAA,CAAK;AAAA,UACV,WAAW,UAAA,CAAW,SAAA;AAAA,UACtB,WAAW,UAAA,CAAW,SAAA;AAAA,UACtB,cAAc,KAAA,CAAM,YAAA;AAAA,UACpB,QAAQ,KAAA,CAAM;AAAA,SACf,CAAA;AAAA,MACH;AAGA,MAAA,MAAM,mBAAA,GAAsB,MAAA,CAAO,aAAA,GAC/B,CAAC,GAAG,MAAA,CAAO,aAAa,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM;AACvC,QAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,WAAA,CAAY,WAAA,EAAY;AACxC,QAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,WAAA,CAAY,WAAA,EAAY;AACxC,QAAA,OAAO,KAAA,GAAQ,KAAA,GAAQ,EAAA,GAAK,KAAA,GAAQ,QAAQ,CAAA,GAAI,CAAA;AAAA,MAClD,CAAC,CAAA,GACD,MAAA;AAGJ,MAAA,IAAA,CAAK,IAAA,GAAO;AAAA,QACV,GAAA;AAAA,QACA,WAAA;AAAA,QACA,MAAA;AAAA,QACA,aAAA,EAAe;AAAA,OACjB;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,IAAA,CAAK,IAAA,EAAM,MAAM,IAAI,MAAM,wBAAwB,CAAA;AAOxD,IAAA,IAAI,IAAA,CAAK,SAAA,CAAU,IAAA,KAAS,MAAA,EAAQ;AAClC,MAAA,MAAM,mBACJ,IAAA,CAAK,IAAA,CAAK,iBAAiB,IAAA,CAAK,IAAA,CAAK,cAAc,MAAA,GAAS,CAAA;AAC9D,MAAA,IAAI,CAAC,gBAAA,EAAkB;AACrB,QAAA,MAAM,IAAI,KAAA;AAAA,UACR;AAAA,SAGF;AAAA,MACF;AAAA,IACF;AAGA,IAAA,IAAI,cAAc,IAAA,CAAK,WAAA;AACvB,IAAA,IAAI,WAAA,EAAa,wBAAwB,MAAA,EAAW;AAElD,MAAA,MAAM,cAAA,GAAiB,WAAA,CAAY,cAAA,IAAkB,IAAA,CAAK,cAAA;AAE1D,MAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,QAAA,MAAM,IAAI,KAAA;AAAA,UACR;AAAA,SAGF;AAAA,MACF;AAEA,MAAA,IAAI,WAAA,CAAY,uBAAuB,CAAA,EAAG;AACxC,QAAA,MAAM,IAAI,MAAM,4CAA4C,CAAA;AAAA,MAC9D;AAEA,MAAA,MAAM,UAAUC,6CAAA,CAA6B;AAAA,QAC3C,cAAc,WAAA,CAAY,mBAAA;AAAA,QAC1B,WAAA,EAAa,KAAK,IAAA,CAAK,aAAA;AAAA,QACvB,iBAAA,EAAmB,cAAA;AAAA,QACnB,WAAA,EAAa,KAAK,IAAA,CAAK,WAAA;AAAA,QACvB,aAAA,EAAe,KAAK,aAAA,IAAiB,EAAA;AAAA,QACrC,iBAAA,EAAmB,KAAK,iBAAA,IAAqB;AAAA,OAC9C,CAAA;AAGD,MAAA,MAAM,aAAA,GAAgB,KAAK,IAAA,CAAK,MAAA,CAAO,IAAI,CAAC,CAAA,KAAM,EAAE,SAAS,CAAA;AAC7D,MAAA,MAAM,aAAA,GAAgB,KAAK,IAAA,CAAK,MAAA,CAAO,IAAI,CAAC,CAAA,KAAM,EAAE,SAAS,CAAA;AAC7D,MAAA,MAAM,YAAA,GAAe,IAAA,CAAK,GAAA,CAAI,GAAG,aAAa,CAAA;AAC9C,MAAA,MAAM,YAAA,GAAe,IAAA,CAAK,GAAA,CAAI,GAAG,aAAa,CAAA;AAE9C,MAAA,IAAI,UAAU,YAAA,EAAc;AAC1B,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,CAAA,qCAAA,EAAwC,OAAO,CAAA,wCAAA,EAA2C,YAAY,CAAA,CAAA;AAAA,SACxG;AAAA,MACF;AACA,MAAA,IAAI,UAAU,YAAA,EAAc;AAC1B,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,CAAA,qCAAA,EAAwC,OAAO,CAAA,yCAAA,EAA4C,YAAY,CAAA,CAAA;AAAA,SACzG;AAAA,MACF;AAGA,MAAA,WAAA,GAAc,EAAE,GAAG,WAAA,EAAa,OAAA,EAAQ;AAAA,IAC1C;AAGA,IAAA,MAAM,UAAA,GACJ,IAAA,CAAK,UAAA,KACJC,mCAAA,CAAmB,IAAA,CAAK,OAAO,CAAA,GAC5B,EAAE,IAAA,EAAM,MAAA,EAAgB,GACxB,EAAE,MAAM,SAAA,EAAmB,CAAA;AAEjC,IAAA,IACE,WAAW,IAAA,KAAS,WAAA,IACpB,CAACC,wCAAA,CAAwB,IAAA,CAAK,OAAO,CAAA,EACrC;AACA,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,+CAAA,EAAkD,KAAK,OAAO,CAAA,uDAAA;AAAA,OAChE;AAAA,IACF;AAEA,IAAA,OAAO;AAAA,MACL,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,UAAU,IAAA,CAAK,QAAA;AAAA,MACf,WAAA;AAAA,MACA,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,UAAA;AAAA,MACA,WAAW,IAAA,CAAK,SAAA;AAAA,MAChB,UAAA,EAAY,KAAK,UAAA,IAAcP,6BAAA;AAAA,MAC/B,aAAa,IAAA,CAAK,WAAA;AAAA,MAClB,SAAS,IAAA,CAAK,eAAA;AAAA,MACd,KAAK,IAAA,CAAK;AAAA,KACZ;AAAA,EACF;AACF","file":"chunk-5MP6AMPB.js","sourcesContent":["import type { Address } from 'viem';\nimport {\n DEFAULT_V3_YEARLY_MINT_RATE,\n FEE_TIERS,\n TICK_SPACINGS,\n V4_MAX_FEE,\n WAD,\n ZERO_ADDRESS,\n} from '../constants';\n\nimport {\n marketCapToTicksForMulticurve,\n marketCapToTickForMulticurve,\n validateMarketCapParameters,\n} from '../utils';\nimport {\n isNoOpEnabledChain,\n isLaunchpadEnabledChain,\n type CreateMulticurveParams,\n type GovernanceOption,\n type MigrationConfig,\n type VestingConfig,\n type TokenConfig,\n type MulticurveMarketCapCurvesConfig,\n type MulticurveMarketCapPreset,\n type ModuleAddressOverrides,\n type RehypeDopplerHookConfig,\n} from '../types';\nimport { type SupportedChainId } from '../addresses';\nimport {\n type BaseAuctionBuilder,\n type MarketCapPresetOverrides,\n buildCurvesFromPresets,\n} from './shared';\n\nexport class MulticurveBuilder<\n C extends SupportedChainId,\n> implements BaseAuctionBuilder<C> {\n private token?: TokenConfig;\n private sale?: CreateMulticurveParams<C>['sale'];\n private pool?: CreateMulticurveParams<C>['pool'];\n private schedule?: CreateMulticurveParams<C>['schedule'];\n private dopplerHook?: RehypeDopplerHookConfig;\n private vesting?: VestingConfig;\n private governance?: GovernanceOption<C>;\n private migration?: MigrationConfig;\n private integrator?: Address;\n private userAddress?: Address;\n private moduleAddresses?: ModuleAddressOverrides;\n private gasLimit?: bigint;\n // Stored from withCurves() for graduationMarketCap conversion in build()\n private numerairePrice?: number;\n private tokenDecimals?: number;\n private numeraireDecimals?: number;\n // Deferred curves config - converted to pool in build()\n private curvesConfig?: {\n numerairePrice: number;\n curves: Array<{\n marketCap: { start: number; end: number | 'max' };\n numPositions: number;\n shares: bigint;\n }>;\n tokenSupply?: bigint;\n tokenDecimals?: number;\n numeraireDecimals?: number;\n fee?: number;\n tickSpacing?: number;\n beneficiaries?: { beneficiary: Address; shares: bigint }[];\n };\n public chainId: C;\n\n constructor(chainId: C) {\n this.chainId = chainId;\n }\n\n static forChain<C extends SupportedChainId>(\n chainId: C,\n ): MulticurveBuilder<C> {\n return new MulticurveBuilder(chainId);\n }\n\n tokenConfig(\n params:\n | {\n type?: 'standard';\n name: string;\n symbol: string;\n tokenURI: string;\n yearlyMintRate?: bigint;\n }\n | {\n type: 'doppler404';\n name: string;\n symbol: string;\n baseURI: string;\n unit?: bigint;\n },\n ): this {\n if (params && 'type' in params && params.type === 'doppler404') {\n this.token = {\n type: 'doppler404',\n name: params.name,\n symbol: params.symbol,\n baseURI: params.baseURI,\n unit: params.unit,\n };\n } else {\n this.token = {\n type: 'standard',\n name: params.name,\n symbol: params.symbol,\n tokenURI: params.tokenURI,\n yearlyMintRate: params.yearlyMintRate ?? DEFAULT_V3_YEARLY_MINT_RATE,\n };\n }\n return this;\n }\n\n saleConfig(params: {\n initialSupply: bigint;\n numTokensToSell: bigint;\n numeraire: Address;\n }): this {\n this.sale = {\n initialSupply: params.initialSupply,\n numTokensToSell: params.numTokensToSell,\n numeraire: params.numeraire,\n };\n return this;\n }\n\n poolConfig(params: {\n fee: number;\n tickSpacing: number;\n curves: {\n tickLower: number;\n tickUpper: number;\n numPositions: number;\n shares: bigint;\n }[];\n beneficiaries?: { beneficiary: Address; shares: bigint }[];\n }): this {\n // Mutual exclusion: cannot use poolConfig() after withCurves()\n if (this.curvesConfig) {\n throw new Error(\n 'Cannot use poolConfig() after withCurves(). ' +\n 'Use withCurves() for market cap-based configuration, ' +\n 'or poolConfig() for manual tick configuration.',\n );\n }\n\n const sortedBeneficiaries = params.beneficiaries\n ? [...params.beneficiaries].sort((a, b) => {\n const aAddr = a.beneficiary.toLowerCase();\n const bAddr = b.beneficiary.toLowerCase();\n return aAddr < bAddr ? -1 : aAddr > bAddr ? 1 : 0;\n })\n : undefined;\n\n this.pool = {\n fee: params.fee,\n tickSpacing: params.tickSpacing,\n curves: params.curves,\n beneficiaries: sortedBeneficiaries,\n };\n return this;\n }\n\n withMarketCapPresets(params?: {\n fee?: number;\n tickSpacing?: number;\n presets?: MulticurveMarketCapPreset[];\n overrides?: MarketCapPresetOverrides;\n beneficiaries?: { beneficiary: Address; shares: bigint }[];\n }): this {\n // Mutual exclusion: cannot use withMarketCapPresets() after withCurves()\n if (this.curvesConfig) {\n throw new Error(\n 'Cannot use withMarketCapPresets() after withCurves(). ' +\n 'Use withCurves() for market cap-based configuration, ' +\n 'or withMarketCapPresets() for preset-based configuration.',\n );\n }\n\n const { fee, tickSpacing, curves } = buildCurvesFromPresets({\n fee: params?.fee,\n tickSpacing: params?.tickSpacing,\n presets: params?.presets,\n overrides: params?.overrides,\n });\n\n return this.poolConfig({\n fee,\n tickSpacing,\n curves,\n beneficiaries: params?.beneficiaries,\n });\n }\n\n /**\n * Configure multicurve using market cap ranges (no tick math required).\n *\n * This is the recommended way to configure multicurve pools. Simply specify\n * market cap ranges in USD for each curve.\n *\n * Curves can be provided in any order - they will be automatically sorted\n * by market cap (ascending) before validation and processing. Curves must\n * be contiguous or overlapping (no gaps allowed).\n *\n * V4 pools support custom fees (0-100,000). Standard fee tiers auto-derive\n * tickSpacing; custom fees require explicit tickSpacing parameter.\n *\n * @param params - Market cap configuration with curves defined by market cap ranges\n * @returns Builder instance for chaining\n *\n * @example Standard fee tier\n * ```ts\n * builder\n * .saleConfig({ initialSupply, numTokensToSell, numeraire: WETH })\n * .withCurves({\n * numerairePrice: 3000,\n * curves: [...],\n * fee: 500, // Standard tier, tickSpacing auto-derived\n * })\n * ```\n *\n * @example Custom fee\n * ```ts\n * builder\n * .saleConfig({ initialSupply, numTokensToSell, numeraire: WETH })\n * .withCurves({\n * numerairePrice: 3000,\n * curves: [...],\n * fee: 2500, // Custom 0.25% fee\n * tickSpacing: 10, // Required for custom fees\n * })\n * ```\n */\n withCurves(params: MulticurveMarketCapCurvesConfig): this {\n // Mutual exclusion: cannot use withCurves() after poolConfig()/withMarketCapPresets()\n if (this.pool) {\n throw new Error(\n 'Cannot use withCurves() after poolConfig()/withMarketCapPresets(). ' +\n 'Use withCurves() for market cap-based configuration, ' +\n 'or poolConfig() for manual tick configuration.',\n );\n }\n\n // Validate numerairePrice\n if (params.numerairePrice <= 0) {\n throw new Error('numerairePrice must be greater than 0');\n }\n\n // Validate curves array\n if (!params.curves || params.curves.length === 0) {\n throw new Error('curves array must contain at least one curve');\n }\n\n // Validate each curve (basic validation that doesn't require saleConfig)\n for (let i = 0; i < params.curves.length; i++) {\n const curve = params.curves[i];\n this.validateCurveRange(\n curve.marketCap.start,\n curve.marketCap.end,\n curve.numPositions,\n curve.shares,\n `curves[${i}]`,\n );\n }\n\n // Sort curves by market cap (start, then end) for deterministic ordering\n const sortedCurves = this.sortCurvesByMarketCap(params.curves);\n\n // Validate curve contiguity (no gaps allowed, overlaps OK)\n this.validateCurveContiguity(sortedCurves);\n\n // Validate total shares sum to exactly WAD\n const totalShares = sortedCurves.reduce((sum, c) => sum + c.shares, 0n);\n if (totalShares !== WAD) {\n throw new Error(\n `Total curve shares must equal 100% (${WAD}). Got ${totalShares} (${Number((totalShares * 10000n) / WAD) / 100}%)`,\n );\n }\n\n // Validate fee if provided\n if (params.fee !== undefined && params.fee > V4_MAX_FEE) {\n throw new Error(\n `Fee ${params.fee} exceeds maximum allowed for V4 pools (${V4_MAX_FEE} = 10%). ` +\n `Use a fee between 0 and ${V4_MAX_FEE}.`,\n );\n }\n\n // Store for later use in build() (graduationMarketCap conversion)\n this.numerairePrice = params.numerairePrice;\n this.tokenDecimals = params.tokenDecimals;\n this.numeraireDecimals = params.numeraireDecimals;\n\n // Store config for deferred conversion in build()\n this.curvesConfig = {\n numerairePrice: params.numerairePrice,\n curves: sortedCurves,\n tokenSupply: params.tokenSupply,\n tokenDecimals: params.tokenDecimals,\n numeraireDecimals: params.numeraireDecimals,\n fee: params.fee,\n tickSpacing: params.tickSpacing,\n beneficiaries: params.beneficiaries,\n };\n\n return this;\n }\n\n /**\n * Sort curves by market cap (start, then end) for deterministic ordering\n */\n private sortCurvesByMarketCap<\n T extends { marketCap: { start: number; end: number | 'max' } },\n >(curves: T[]): T[] {\n return [...curves].sort((a, b) => {\n const startDiff = a.marketCap.start - b.marketCap.start;\n if (startDiff !== 0) return startDiff;\n const aEnd = a.marketCap.end === 'max' ? Infinity : a.marketCap.end;\n const bEnd = b.marketCap.end === 'max' ? Infinity : b.marketCap.end;\n return aEnd - bEnd;\n });\n }\n\n private validateCurveRange(\n startMarketCap: number,\n endMarketCap: number | 'max',\n numPositions: number,\n shares: bigint,\n label: string,\n ): void {\n if (startMarketCap <= 0) {\n throw new Error(`${label}: marketCap.start must be greater than 0`);\n }\n if (endMarketCap !== 'max' && endMarketCap <= 0) {\n throw new Error(`${label}: marketCap.end must be greater than 0`);\n }\n if (endMarketCap !== 'max' && startMarketCap >= endMarketCap) {\n throw new Error(\n `${label}: startMarketCap ($${startMarketCap.toLocaleString()}) must be less than endMarketCap ($${endMarketCap.toLocaleString()})`,\n );\n }\n if (numPositions <= 0) {\n throw new Error(`${label}: numPositions must be greater than 0`);\n }\n if (shares <= 0n) {\n throw new Error(`${label}: shares must be greater than 0`);\n }\n }\n\n private validateCurveContiguity(\n sortedCurves: { marketCap: { start: number; end: number | 'max' } }[],\n ): void {\n if (sortedCurves.length <= 1) {\n return;\n }\n\n for (let i = 1; i < sortedCurves.length; i++) {\n const prevCurve = sortedCurves[i - 1];\n const currCurve = sortedCurves[i];\n const prevEnd =\n prevCurve.marketCap.end === 'max'\n ? Infinity\n : prevCurve.marketCap.end;\n const prevEndLabel =\n prevCurve.marketCap.end === 'max'\n ? 'max'\n : `$${prevCurve.marketCap.end.toLocaleString()}`;\n const currEndLabel =\n currCurve.marketCap.end === 'max'\n ? 'max'\n : `$${currCurve.marketCap.end.toLocaleString()}`;\n\n if (currCurve.marketCap.start > prevEnd) {\n throw new Error(\n `Gap detected between market cap ranges: ` +\n `$${prevCurve.marketCap.start.toLocaleString()}-${prevEndLabel} ` +\n `and $${currCurve.marketCap.start.toLocaleString()}-${currEndLabel}. ` +\n `Curves must be contiguous or overlapping.`,\n );\n }\n }\n }\n\n /**\n * Configure a RehypeDopplerHook for the pool.\n *\n * When configured, the hook will be initialized with the pool and will handle:\n * - Custom swap fees\n * - Fee distribution to beneficiaries, LPs, and buyback destinations\n *\n * IMPORTANT:\n * - The hook address must be whitelisted in the DopplerHookInitializer\n * - Fee distribution percentages must sum to exactly WAD (1e18 = 100%)\n *\n * @example\n * ```typescript\n * builder.withRehypeDopplerHook({\n * hookAddress: '0x...',\n * buybackDestination: '0x...',\n * customFee: 3000, // 0.3%\n * assetBuybackPercentWad: parseEther('0.2'), // 20%\n * numeraireBuybackPercentWad: parseEther('0.2'), // 20%\n * beneficiaryPercentWad: parseEther('0.3'), // 30%\n * lpPercentWad: parseEther('0.3'), // 30%\n * })\n * ```\n */\n withRehypeDopplerHook(params: RehypeDopplerHookConfig): this {\n const totalDistribution =\n params.assetBuybackPercentWad +\n params.numeraireBuybackPercentWad +\n params.beneficiaryPercentWad +\n params.lpPercentWad;\n if (totalDistribution !== WAD) {\n throw new Error(\n `DopplerHook fee distribution must sum to ${WAD} (100%), but got ${totalDistribution}`,\n );\n }\n\n // Validate mutual exclusivity of graduation threshold options\n if (params.graduationMarketCap !== undefined && params.farTick !== undefined) {\n throw new Error(\n 'Cannot specify both graduationMarketCap and farTick. Use one or the other.',\n );\n }\n\n this.dopplerHook = params;\n return this;\n }\n\n withVesting(params?: {\n duration?: bigint;\n cliffDuration?: number;\n recipients?: Address[];\n amounts?: bigint[];\n }): this {\n if (!params) {\n this.vesting = undefined;\n return this;\n }\n this.vesting = {\n duration: Number(params.duration ?? 0n),\n cliffDuration: params.cliffDuration ?? 0,\n recipients: params.recipients,\n amounts: params.amounts,\n };\n return this;\n }\n\n withSchedule(params?: { startTime: number | bigint | Date }): this {\n if (!params) {\n this.schedule = undefined;\n return this;\n }\n\n let startTimeSeconds: number;\n const { startTime } = params;\n\n if (startTime instanceof Date) {\n startTimeSeconds = Math.floor(startTime.getTime() / 1000);\n } else if (typeof startTime === 'bigint') {\n startTimeSeconds = Number(startTime);\n } else {\n startTimeSeconds = Number(startTime);\n }\n\n if (\n !Number.isFinite(startTimeSeconds) ||\n !Number.isInteger(startTimeSeconds)\n ) {\n throw new Error(\n 'Schedule startTime must be an integer number of seconds since Unix epoch',\n );\n }\n\n if (startTimeSeconds < 0) {\n throw new Error('Schedule startTime cannot be negative');\n }\n\n const UINT32_MAX = 0xffffffff;\n if (startTimeSeconds > UINT32_MAX) {\n throw new Error(\n 'Schedule startTime must fit within uint32 (seconds since Unix epoch up to year 2106)',\n );\n }\n\n this.schedule = { startTime: startTimeSeconds };\n return this;\n }\n\n withGovernance(params: GovernanceOption<C>): this {\n this.governance = params;\n return this;\n }\n\n withMigration(migration: MigrationConfig): this {\n this.migration = migration;\n return this;\n }\n\n withUserAddress(address: Address): this {\n this.userAddress = address;\n return this;\n }\n\n withIntegrator(address?: Address): this {\n this.integrator = address ?? ZERO_ADDRESS;\n return this;\n }\n\n withGasLimit(gas?: bigint): this {\n this.gasLimit = gas;\n return this;\n }\n\n private overrideModule<K extends keyof ModuleAddressOverrides>(\n key: K,\n address: NonNullable<ModuleAddressOverrides[K]>,\n ): this {\n this.moduleAddresses = {\n ...this.moduleAddresses,\n [key]: address,\n } as ModuleAddressOverrides;\n return this;\n }\n\n withTokenFactory(address: Address): this {\n return this.overrideModule('tokenFactory', address);\n }\n withAirlock(address: Address): this {\n return this.overrideModule('airlock', address);\n }\n withV4MulticurveInitializer(address: Address): this {\n return this.overrideModule('v4MulticurveInitializer', address);\n }\n withV4ScheduledMulticurveInitializer(address: Address): this {\n return this.overrideModule('v4ScheduledMulticurveInitializer', address);\n }\n withGovernanceFactory(address: Address): this {\n return this.overrideModule('governanceFactory', address);\n }\n withV2Migrator(address: Address): this {\n return this.overrideModule('v2Migrator', address);\n }\n\n withV4Migrator(address: Address): this {\n return this.overrideModule('v4Migrator', address);\n }\n withNoOpMigrator(address: Address): this {\n return this.overrideModule('noOpMigrator', address);\n }\n withDopplerHookInitializer(address: Address): this {\n return this.overrideModule('dopplerHookInitializer', address);\n }\n\n build(): CreateMulticurveParams<C> {\n if (!this.token) throw new Error('tokenConfig is required');\n if (!this.sale) throw new Error('saleConfig is required');\n if (!this.migration) throw new Error('migration configuration is required');\n if (!this.userAddress) throw new Error('userAddress is required');\n\n // Convert deferred curves config to pool if set\n if (this.curvesConfig && !this.pool) {\n const config = this.curvesConfig;\n\n // Get token supply from config or saleConfig\n const tokenSupply = config.tokenSupply ?? this.sale.initialSupply;\n if (!tokenSupply) {\n throw new Error(\n 'tokenSupply must be provided (either via saleConfig() or withCurves() params)',\n );\n }\n\n // Get fee and tick spacing\n const fee = config.fee ?? FEE_TIERS.MEDIUM;\n const tickSpacing =\n config.tickSpacing ?? (TICK_SPACINGS as Record<number, number>)[fee];\n\n if (tickSpacing === undefined) {\n throw new Error(\n `Custom fee ${fee} requires explicit tickSpacing. ` +\n `Standard fees (100, 500, 3000, 10000) auto-derive tickSpacing.`,\n );\n }\n\n // Validate first curve market caps (the launch price)\n const firstCurve = config.curves[0];\n const startValidation = validateMarketCapParameters(\n firstCurve.marketCap.start,\n tokenSupply,\n config.tokenDecimals,\n );\n const endValidation =\n firstCurve.marketCap.end === 'max'\n ? { valid: true, warnings: [] }\n : validateMarketCapParameters(\n firstCurve.marketCap.end,\n tokenSupply,\n config.tokenDecimals,\n );\n const allWarnings = [\n ...startValidation.warnings,\n ...endValidation.warnings,\n ];\n if (allWarnings.length > 0) {\n console.warn('First curve market cap validation warnings:');\n allWarnings.forEach((w) => console.warn(` - ${w}`));\n }\n\n // Convert all curves to ticks\n const curves: {\n tickLower: number;\n tickUpper: number;\n numPositions: number;\n shares: bigint;\n }[] = [];\n\n for (const curve of config.curves) {\n const curveTicks = marketCapToTicksForMulticurve({\n marketCapLower: curve.marketCap.start,\n marketCapUpper: curve.marketCap.end,\n tokenSupply,\n numerairePriceUSD: config.numerairePrice,\n tickSpacing,\n tokenDecimals: config.tokenDecimals ?? 18,\n numeraireDecimals: config.numeraireDecimals ?? 18,\n });\n\n curves.push({\n tickLower: curveTicks.tickLower,\n tickUpper: curveTicks.tickUpper,\n numPositions: curve.numPositions,\n shares: curve.shares,\n });\n }\n\n // Sort beneficiaries by address if provided\n const sortedBeneficiaries = config.beneficiaries\n ? [...config.beneficiaries].sort((a, b) => {\n const aAddr = a.beneficiary.toLowerCase();\n const bAddr = b.beneficiary.toLowerCase();\n return aAddr < bAddr ? -1 : aAddr > bAddr ? 1 : 0;\n })\n : undefined;\n\n // Set pool config\n this.pool = {\n fee,\n tickSpacing,\n curves,\n beneficiaries: sortedBeneficiaries,\n };\n }\n\n if (!this.pool) throw new Error('poolConfig is required');\n\n // Validate noOp migration requires beneficiaries\n // NoOpMigrator is designed for locked pools with beneficiaries. Without beneficiaries,\n // the pool status is \"Initialized\" (not \"Locked\"), meaning exitLiquidity() can be called.\n // But NoOpMigrator.migrate() always reverts, so the entire graduation transaction fails\n // and liquidity becomes trapped.\n if (this.migration.type === 'noOp') {\n const hasBeneficiaries =\n this.pool.beneficiaries && this.pool.beneficiaries.length > 0;\n if (!hasBeneficiaries) {\n throw new Error(\n 'noOp migration requires beneficiaries. Without beneficiaries, the pool would be stuck after reaching ' +\n 'graduation - exitLiquidity() succeeds but NoOpMigrator.migrate() always reverts, causing the entire ' +\n 'transaction to fail. Either add beneficiaries or use a different migration type (uniswapV2, uniswapV4).',\n );\n }\n }\n\n // Convert graduationMarketCap to farTick if using rehype\n let dopplerHook = this.dopplerHook;\n if (dopplerHook?.graduationMarketCap !== undefined) {\n // Use numerairePrice from: 1) explicit in dopplerHook, 2) stored from withCurves()\n const numerairePrice = dopplerHook.numerairePrice ?? this.numerairePrice;\n\n if (!numerairePrice) {\n throw new Error(\n 'graduationMarketCap requires numerairePrice. ' +\n 'Either use withCurves() (which provides numerairePrice), ' +\n 'or pass numerairePrice explicitly in withRehypeDopplerHook().',\n );\n }\n\n if (dopplerHook.graduationMarketCap <= 0) {\n throw new Error('graduationMarketCap must be greater than 0');\n }\n\n const farTick = marketCapToTickForMulticurve({\n marketCapUSD: dopplerHook.graduationMarketCap,\n tokenSupply: this.sale.initialSupply,\n numerairePriceUSD: numerairePrice,\n tickSpacing: this.pool.tickSpacing,\n tokenDecimals: this.tokenDecimals ?? 18,\n numeraireDecimals: this.numeraireDecimals ?? 18,\n });\n\n // Validate farTick is within curve boundaries\n const allTickUppers = this.pool.curves.map((c) => c.tickUpper);\n const allTickLowers = this.pool.curves.map((c) => c.tickLower);\n const maxTickUpper = Math.max(...allTickUppers);\n const minTickLower = Math.min(...allTickLowers);\n\n if (farTick < minTickLower) {\n throw new Error(\n `graduationMarketCap converts to tick ${farTick}, which is below the lowest curve tick (${minTickLower})`,\n );\n }\n if (farTick > maxTickUpper) {\n throw new Error(\n `graduationMarketCap converts to tick ${farTick}, which is above the highest curve tick (${maxTickUpper})`,\n );\n }\n\n // Store computed farTick on dopplerHook for encoding\n dopplerHook = { ...dopplerHook, farTick };\n }\n\n // Default governance: noOp on supported chains, default on others (e.g., Ink)\n const governance =\n this.governance ??\n (isNoOpEnabledChain(this.chainId)\n ? { type: 'noOp' as const }\n : { type: 'default' as const });\n\n if (\n governance.type === 'launchpad' &&\n !isLaunchpadEnabledChain(this.chainId)\n ) {\n throw new Error(\n `Launchpad governance is not supported on chain ${this.chainId}. Use a supported chain or a different governance type.`,\n );\n }\n\n return {\n token: this.token,\n sale: this.sale,\n pool: this.pool,\n schedule: this.schedule,\n dopplerHook,\n vesting: this.vesting,\n governance: governance as GovernanceOption<C>,\n migration: this.migration,\n integrator: this.integrator ?? ZERO_ADDRESS,\n userAddress: this.userAddress,\n modules: this.moduleAddresses,\n gas: this.gasLimit,\n };\n }\n}\n"]}
|