import { Address, GetContractReturnType, Hash, Hex, Log } from 'viem'; import { BaseClientMixin, BaseGasEstimatesMixin, BaseTransactions } from './base'; import { waterfallAbi } from '../constants/abi/waterfall'; import type { CallData, CreateWaterfallConfig, ReadContractArgs, RecoverNonWaterfallFundsConfig, SplitsClientConfig, SplitsPublicClient, TransactionConfig, TransactionFormat, WaterfallFundsConfig, WithdrawWaterfallPullFundsConfig } from '../types'; type WaterfallAbi = typeof waterfallAbi; declare class WaterfallTransactions extends BaseTransactions { constructor(transactionClientArgs: SplitsClientConfig & TransactionConfig); protected _createWaterfallModuleTransaction({ token, tranches, nonWaterfallRecipient, chainId, transactionOverrides, }: CreateWaterfallConfig): Promise; protected _waterfallFundsTransaction({ waterfallModuleAddress, usePull, transactionOverrides, }: WaterfallFundsConfig): Promise; protected _recoverNonWaterfallFundsTransaction({ waterfallModuleAddress, token, recipient, chainId, transactionOverrides, }: RecoverNonWaterfallFundsConfig): Promise; protected _withdrawPullFundsTransaction({ waterfallModuleAddress, address, transactionOverrides, }: WithdrawWaterfallPullFundsConfig): Promise; private _validateRecoverTokensWaterfallData; protected _getWaterfallContract(waterfallModule: string, chainId: number): GetContractReturnType; } export declare class WaterfallClient extends WaterfallTransactions { readonly eventTopics: { [key: string]: Hex[]; }; readonly callData: WaterfallCallData; readonly estimateGas: WaterfallGasEstimates; constructor(clientArgs: SplitsClientConfig); _submitCreateWaterfallModuleTransaction(createWaterfallArgs: CreateWaterfallConfig): Promise<{ txHash: Hash; }>; createWaterfallModule(createWaterfallArgs: CreateWaterfallConfig): Promise<{ waterfallModuleAddress: string; event: Log; }>; _submitWaterfallFundsTransaction(waterfallFundsArgs: WaterfallFundsConfig): Promise<{ txHash: Hash; }>; waterfallFunds(waterfallFundsArgs: WaterfallFundsConfig): Promise<{ event: Log; }>; _submitRecoverNonWaterfallFundsTransaction(recoverFundsArgs: RecoverNonWaterfallFundsConfig): Promise<{ txHash: Hash; }>; recoverNonWaterfallFunds(recoverFundsArgs: RecoverNonWaterfallFundsConfig): Promise<{ event: Log; }>; _submitWithdrawPullFundsTransaction(withdrawFundsArgs: WithdrawWaterfallPullFundsConfig): Promise<{ txHash: Hash; }>; withdrawPullFunds(withdrawFundsArgs: WithdrawWaterfallPullFundsConfig): Promise<{ event: Log; }>; getDistributedFunds({ waterfallModuleAddress, chainId, }: ReadContractArgs & { waterfallModuleAddress: string; }): Promise<{ distributedFunds: bigint; }>; getFundsPendingWithdrawal({ waterfallModuleAddress, chainId, }: ReadContractArgs & { waterfallModuleAddress: string; }): Promise<{ fundsPendingWithdrawal: bigint; }>; getTranches({ waterfallModuleAddress, chainId, }: ReadContractArgs & { waterfallModuleAddress: string; }): Promise<{ recipients: Address[]; thresholds: bigint[]; }>; getNonWaterfallRecipient({ waterfallModuleAddress, chainId, }: ReadContractArgs & { waterfallModuleAddress: string; }): Promise<{ nonWaterfallRecipient: Address; }>; getToken({ waterfallModuleAddress, chainId, }: ReadContractArgs & { waterfallModuleAddress: string; }): Promise<{ token: Address; }>; getPullBalance({ waterfallModuleAddress, address, chainId, }: ReadContractArgs & { waterfallModuleAddress: string; address: string; }): Promise<{ pullBalance: bigint; }>; } export interface WaterfallClient extends BaseClientMixin { } declare class WaterfallGasEstimates extends WaterfallTransactions { constructor(clientArgs: SplitsClientConfig); createWaterfallModule(createWaterfallArgs: CreateWaterfallConfig): Promise; waterfallFunds(waterfallFundsArgs: WaterfallFundsConfig): Promise; recoverNonWaterfallFunds(recoverFundsArgs: RecoverNonWaterfallFundsConfig): Promise; withdrawPullFunds(withdrawArgs: WithdrawWaterfallPullFundsConfig): Promise; } interface WaterfallGasEstimates extends BaseGasEstimatesMixin { } declare class WaterfallCallData extends WaterfallTransactions { constructor(clientArgs: SplitsClientConfig); createWaterfallModule(args: CreateWaterfallConfig): Promise; waterfallFunds(args: WaterfallFundsConfig): Promise; recoverNonWaterfallFunds(args: RecoverNonWaterfallFundsConfig): Promise; withdrawPullFunds(args: WithdrawWaterfallPullFundsConfig): Promise; } export {};