UNPKG

@anton-seriesfi/doppler-v3-sdk

Version:

SDK for interacting with Doppler v3 protocol

256 lines 9.28 kB
import { ReadWriteContract, ReadWriteAdapter, Drift, ContractWriteOptions, OnMinedParam, FunctionReturn } from "@delvtech/drift"; import { ReadFactory, AirlockABI } from "./ReadFactory"; import { Address, Hex } from "viem"; /** * Parameters required for creating a new Doppler V3 pool * @property initialSupply Initial token supply * @property numTokensToSell Number of tokens to sell * @property numeraire Address of the numeraire token * @property tokenFactory Address of token factory contract * @property tokenFactoryData Encoded token factory initialization data * @property governanceFactory Address of governance factory contract * @property governanceFactoryData Encoded governance factory initialization data * @property poolInitializer Address of pool initializer contract * @property poolInitializerData Encoded pool initialization data * @property liquidityMigrator Address of liquidity migrator contract * @property liquidityMigratorData Encoded liquidity migration data * @property integrator Integrator address * @property salt Unique salt for deployment */ export interface CreateParams { initialSupply: bigint; numTokensToSell: bigint; numeraire: Address; tokenFactory: Address; tokenFactoryData: Hex; governanceFactory: Address; governanceFactoryData: Hex; poolInitializer: Address; poolInitializerData: Hex; liquidityMigrator: Address; liquidityMigratorData: Hex; integrator: Address; salt: Hex; } /** * Configuration for a Doppler V3 liquidity pool * @property startTick Initial tick position * @property endTick Final tick position * @property numPositions Number of positions * @property maxShareToBeSold Maximum percentage of shares to sell * @property maxShareToBond Maximum percentage of shares to bond * @property fee Pool fee percentage (in basis points) */ export interface V3PoolConfig { startTick: number; endTick: number; numPositions: number; maxShareToBeSold: bigint; fee: number; } /** * Token sale configuration parameters * @property initialSupply Initial token supply * @property numTokensToSell Number of tokens available for sale */ export interface SaleConfig { initialSupply: bigint; numTokensToSell: bigint; } /** * Vesting schedule configuration * @property yearlyMintCap Annual minting cap * @property vestingDuration Duration of vesting period * @property recipients Array of recipient addresses * @property amounts Corresponding vesting amounts */ export interface VestingConfig { yearlyMintRate: bigint; vestingDuration: bigint; recipients: Address[]; amounts: bigint[]; } /** * Basic token metadata configuration * @property name Token name * @property symbol Token symbol * @property tokenURI URI for token metadata */ export interface TokenConfig { name: string; symbol: string; tokenURI: string; } /** * Governance configuration parameters * @property initialVotingDelay Initial voting delay in seconds * @property initialVotingPeriod Initial voting period in seconds * @property initialProposalThreshold Initial proposal threshold */ export interface GovernanceConfig { initialVotingDelay: number; initialVotingPeriod: number; initialProposalThreshold: bigint; } /** * Contract dependencies for pool initialization * @property tokenFactory Address of token factory * @property governanceFactory Address of governance factory * @property v3Initializer Address of V3 initializer * @property liquidityMigrator Address of liquidity migrator */ export interface InitializerContractDependencies { tokenFactory: Address; governanceFactory: Address; v3Initializer: Address; liquidityMigrator: Address; } /** * Parameters for creating a Doppler V3 pool * @property integrator Integrator address * @property userAddress User address for salt generation * @property numeraire Address of numeraire token * @property contracts Contract dependencies * @property tokenConfig Token metadata configuration * @property saleConfig Optional sale configuration overrides * @property v3PoolConfig Optional pool configuration overrides * @property vestingConfig Vesting configuration or "default" preset */ export interface CreateV3PoolParams { integrator: Address; userAddress: Address; numeraire: Address; contracts: InitializerContractDependencies; tokenConfig: TokenConfig; saleConfig?: Partial<SaleConfig>; v3PoolConfig?: Partial<V3PoolConfig>; vestingConfig: VestingConfig | "default"; governanceConfig?: Partial<GovernanceConfig>; } /** * Default configuration presets * @property defaultV3PoolConfig Default pool configuration * @property defaultVestingConfig Default vesting schedule * @property defaultSaleConfig Default sale parameters * @property defaultGovernanceConfig Default governance parameters */ export interface DefaultConfigs { defaultV3PoolConfig?: V3PoolConfig; defaultVestingConfig?: VestingConfig; defaultSaleConfig?: SaleConfig; defaultGovernanceConfig?: GovernanceConfig; } /** * Factory class for creating and managing Doppler V3 pools with read/write capabilities */ export declare class ReadWriteFactory extends ReadFactory { airlock: ReadWriteContract<AirlockABI>; defaultV3PoolConfig: V3PoolConfig; defaultVestingConfig: VestingConfig; defaultSaleConfig: SaleConfig; defaultGovernanceConfig: GovernanceConfig; /** * Create a new ReadWriteFactory instance * @param address Contract address * @param drift Drift instance for blockchain interaction * @param defaultConfigs Optional default configurations */ constructor(address: Address, drift?: Drift<ReadWriteAdapter>, defaultConfigs?: DefaultConfigs); /** * Merge user configuration with defaults * @param config User-provided partial configuration * @param defaults Full default configuration * @returns Merged configuration object */ private mergeWithDefaults; /** * Get merged sale configuration * @param saleConfig Optional partial sale config * @returns Complete SaleConfig */ private getMergedSaleConfig; /** * Get merged pool configuration * @param v3PoolConfig Optional partial pool config * @returns Complete V3PoolConfig */ private getMergedV3PoolConfig; /** * Get merged governance configuration * @param governanceConfig Optional partial governance config * @returns Complete GovernanceConfig */ private getMergedGovernanceConfig; /** * Get merged vesting configuration * @param config Vesting config or "default" preset * @param userAddress User address for default recipient * @returns Complete VestingConfig */ private getMergedVestingConfig; /** * Generate a random salt using cryptographic random values * @param account User address to incorporate into salt * @returns Hex string of generated salt */ private generateRandomSalt; /** * Encode pool initialization data for contract calls * @param v3PoolConfig Complete pool configuration * @returns ABI-encoded initialization data */ private encodePoolInitializerData; /** * Encode token factory initialization data * @param tokenConfig Token metadata * @param vestingConfig Vesting schedule * @returns ABI-encoded token factory data */ private encodeTokenFactoryData; /** * Encode governance factory initialization data * @param tokenConfig Token metadata * @returns ABI-encoded governance data */ private encodeGovernanceFactoryData; /** * Encode all parameters for pool creation * @param params CreateV3PoolParams input parameters * @returns Object containing create parameters and final pool config * @throws Error if user address is missing or invalid tick range */ encode(params: CreateV3PoolParams): { createParams: CreateParams; v3PoolConfig: V3PoolConfig; }; /** * Encode creation data with token order validation * @param params CreateV3PoolParams input parameters * @returns Finalized create parameters with adjusted ticks if needed */ encodeCreateData(params: CreateV3PoolParams): Promise<CreateParams>; /** * Execute pool creation transaction * @param params Finalized create parameters * @param options Write options and mined handlers * @returns Transaction hash */ create(params: CreateParams, options?: ContractWriteOptions & OnMinedParam): Promise<Hex>; /** * Simulate pool creation transaction * @param params Create parameters * @returns Simulation results */ simulateCreate(params: CreateParams): Promise<FunctionReturn<AirlockABI, "create">>; /** * Update default configurations * @param configs Partial configuration overrides */ updateDefaultConfigs(configs: { defaultV3PoolConfig?: Partial<V3PoolConfig>; defaultVestingConfig?: Partial<VestingConfig>; defaultSaleConfig?: Partial<SaleConfig>; defaultGovernanceConfig?: Partial<GovernanceConfig>; }): void; } //# sourceMappingURL=ReadWriteFactory.d.ts.map