import { Address, GetContractReturnType, Hash, Hex, Log } from 'viem';
import { BaseClientMixin, BaseGasEstimatesMixin, BaseTransactions } from './base';
import { ls1155CloneAbi } from '../constants/abi/ls1155Clone';
import type { SplitsClientConfig, CreateLiquidSplitConfig, DistributeLiquidSplitTokenConfig, TransferLiquidSplitOwnershipConfig, CallData, TransactionConfig, TransactionFormat, ReadContractArgs, SplitsPublicClient } from '../types';
type LS1155Abi = typeof ls1155CloneAbi;
declare class LiquidSplitTransactions extends BaseTransactions {
    constructor(transactionClientArgs: SplitsClientConfig & TransactionConfig);
    protected _createLiquidSplitTransaction({ recipients, distributorFeePercent, owner, chainId, transactionOverrides, }: CreateLiquidSplitConfig): Promise<TransactionFormat>;
    protected _distributeTokenTransaction({ liquidSplitAddress, token, distributorAddress, chainId, transactionOverrides, }: DistributeLiquidSplitTokenConfig): Promise<TransactionFormat>;
    protected _transferOwnershipTransaction({ liquidSplitAddress, newOwner, transactionOverrides, }: TransferLiquidSplitOwnershipConfig): Promise<TransactionFormat>;
    private _requireOwner;
    protected _getLiquidSplitContract(liquidSplit: string, chainId: number): GetContractReturnType<LS1155Abi, SplitsPublicClient>;
}
export declare class LiquidSplitClient extends LiquidSplitTransactions {
    readonly eventTopics: {
        [key: string]: Hex[];
    };
    readonly callData: LiquidSplitCallData;
    readonly estimateGas: LiquidSplitGasEstimates;
    constructor(clientArgs: SplitsClientConfig);
    _submitCreateLiquidSplitTransaction(createLiquidSplitArgs: CreateLiquidSplitConfig): Promise<{
        txHash: Hash;
    }>;
    createLiquidSplit(createLiquidSplitArgs: CreateLiquidSplitConfig): Promise<{
        liquidSplitAddress: Address;
        event: Log;
    }>;
    _submitDistributeTokenTransaction(distributeTokenArgs: DistributeLiquidSplitTokenConfig): Promise<{
        txHash: Hash;
    }>;
    distributeToken(distributeTokenArgs: DistributeLiquidSplitTokenConfig): Promise<{
        event: Log;
    }>;
    _submitTransferOwnershipTransaction(transferOwnershipArgs: TransferLiquidSplitOwnershipConfig): Promise<{
        txHash: Hash;
    }>;
    transferOwnership(transferOwnershipArgs: TransferLiquidSplitOwnershipConfig): Promise<{
        event: Log;
    }>;
    getDistributorFee({ liquidSplitAddress, chainId, }: ReadContractArgs & {
        liquidSplitAddress: string;
    }): Promise<{
        distributorFee: number;
    }>;
    getPayoutSplit({ liquidSplitAddress, chainId, }: ReadContractArgs & {
        liquidSplitAddress: string;
    }): Promise<{
        payoutSplitAddress: Address;
    }>;
    getOwner({ liquidSplitAddress, chainId, }: ReadContractArgs & {
        liquidSplitAddress: string;
    }): Promise<{
        owner: Address;
    }>;
    getUri({ liquidSplitAddress, chainId, }: ReadContractArgs & {
        liquidSplitAddress: string;
    }): Promise<{
        uri: string;
    }>;
    getScaledPercentBalanceOf({ liquidSplitAddress, address, chainId, }: ReadContractArgs & {
        liquidSplitAddress: string;
        address: string;
    }): Promise<{
        scaledPercentBalance: number;
    }>;
    getNftImage({ liquidSplitAddress, }: {
        liquidSplitAddress: string;
    }): Promise<{
        image: string;
    }>;
}
export interface LiquidSplitClient extends BaseClientMixin {
}
declare class LiquidSplitGasEstimates extends LiquidSplitTransactions {
    constructor(clientArgs: SplitsClientConfig);
    createLiquidSplit(createLiquidSplitArgs: CreateLiquidSplitConfig): Promise<bigint>;
    distributeToken(distributeTokenArgs: DistributeLiquidSplitTokenConfig): Promise<bigint>;
    transferOwnership(transferOwnershipArgs: TransferLiquidSplitOwnershipConfig): Promise<bigint>;
}
interface LiquidSplitGasEstimates extends BaseGasEstimatesMixin {
}
declare class LiquidSplitCallData extends LiquidSplitTransactions {
    constructor(clientArgs: SplitsClientConfig);
    createLiquidSplit(createLiquidSplitArgs: CreateLiquidSplitConfig): Promise<CallData>;
    distributeToken(distributeTokenArgs: DistributeLiquidSplitTokenConfig): Promise<CallData>;
    transferOwnership(transferOwnershipArgs: TransferLiquidSplitOwnershipConfig): Promise<CallData>;
}
export {};
