import { Address, GetContractReturnType, Hash, Log } from 'viem';
import { SplitV1CreatedLogType, SplitV1UpdatedLogType } from '../constants';
import { splitMainEthereumAbi } from '../constants/abi/splitMain';
import type { AcceptControlTransferConfig, BatchDistributeAndWithdrawConfig, BatchDistributeAndWithdrawForAllConfig, CallData, CancelControlTransferConfig, CreateSplitConfig, DistributeTokenConfig, FormattedSplitEarnings, GetSplitBalanceConfig, InitiateControlTransferConfig, MakeSplitImmutableConfig, Split, SplitRecipient, SplitsClientConfig, SplitsPublicClient, TransactionConfig, TransactionFormat, UpdateSplitAndDistributeTokenConfig, UpdateSplitConfig, WithdrawFundsConfig } from '../types';
import { BaseClientMixin, BaseGasEstimatesMixin, BaseTransactions } from './base';
type SplitMainEthereumAbiType = typeof splitMainEthereumAbi;
declare class SplitV1Transactions extends BaseTransactions {
    constructor(transactionClientArgs: SplitsClientConfig & TransactionConfig);
    protected _createSplitTransaction({ recipients, distributorFeePercent, controller, chainId, transactionOverrides, }: CreateSplitConfig): Promise<TransactionFormat>;
    protected _updateSplitTransaction({ splitAddress, recipients, distributorFeePercent, chainId, transactionOverrides, }: UpdateSplitConfig): Promise<TransactionFormat>;
    protected _distributeTokenTransaction({ splitAddress, token, distributorAddress, chainId, splitFields, transactionOverrides, }: DistributeTokenConfig): Promise<TransactionFormat>;
    protected _updateSplitAndDistributeTokenTransaction({ splitAddress, token, recipients, distributorFeePercent, distributorAddress, chainId, transactionOverrides, }: UpdateSplitAndDistributeTokenConfig): Promise<TransactionFormat>;
    protected _withdrawFundsTransaction({ address, tokens, chainId, transactionOverrides, }: WithdrawFundsConfig): Promise<TransactionFormat>;
    protected _initiateControlTransferTransaction({ splitAddress, newController, chainId, transactionOverrides, }: InitiateControlTransferConfig): Promise<TransactionFormat>;
    protected _cancelControlTransferTransaction({ splitAddress, chainId, transactionOverrides, }: CancelControlTransferConfig): Promise<TransactionFormat>;
    protected _acceptControlTransferTransaction({ splitAddress, chainId, transactionOverrides, }: AcceptControlTransferConfig): Promise<TransactionFormat>;
    protected _makeSplitImmutableTransaction({ splitAddress, chainId, transactionOverrides, }: MakeSplitImmutableConfig): Promise<TransactionFormat>;
    protected _batchDistributeAndWithdrawTransaction({ splitAddress, tokens, recipientAddresses, distributorAddress, }: BatchDistributeAndWithdrawConfig, distributeFunc: (args: DistributeTokenConfig) => Promise<CallData>, withdrawFunc: (args: WithdrawFundsConfig) => Promise<CallData>): Promise<TransactionFormat>;
    protected _batchDistributeAndWithdrawForAllTransaction({ splitAddress, tokens, distributorAddress, chainId, }: BatchDistributeAndWithdrawForAllConfig, distributeFunc: (args: DistributeTokenConfig) => Promise<CallData>, withdrawFunc: (args: WithdrawFundsConfig) => Promise<CallData>): Promise<TransactionFormat>;
    protected _checkForSplitExistence({ splitAddress, chainId, }: {
        splitAddress: Address;
        chainId: number;
    }): Promise<void>;
    protected _getSplitMetadataViaProvider({ splitAddress, chainId, cachedData, }: {
        splitAddress: Address;
        chainId: number;
        cachedData?: {
            blocks?: {
                createBlock: bigint;
                updateBlock?: bigint;
                latestScannedBlock: bigint;
            };
            blockRange?: bigint;
        };
    }): Promise<{
        split: Split;
        blockRange: bigint;
    }>;
    protected _buildSplitFromLogs({ splitAddress, chainId, createLog, updateLog, }: {
        splitAddress: Address;
        chainId: number;
        createLog: SplitV1CreatedLogType;
        updateLog?: SplitV1UpdatedLogType;
    }): Promise<Split>;
    private _requireController;
    private _requireNewPotentialController;
    protected _getSplitMainContract(chainId: number): GetContractReturnType<SplitMainEthereumAbiType, SplitsPublicClient>;
    protected _getSplitMainAbi(chainId: number): readonly [{
        readonly inputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "constructor";
    }, {
        readonly inputs: readonly [];
        readonly name: "Create2Error";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "CreateError";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "newController";
            readonly type: "address";
        }];
        readonly name: "InvalidNewController";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "accountsLength";
            readonly type: "uint256";
        }, {
            readonly internalType: "uint256";
            readonly name: "allocationsLength";
            readonly type: "uint256";
        }];
        readonly name: "InvalidSplit__AccountsAndAllocationsMismatch";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "index";
            readonly type: "uint256";
        }];
        readonly name: "InvalidSplit__AccountsOutOfOrder";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "index";
            readonly type: "uint256";
        }];
        readonly name: "InvalidSplit__AllocationMustBePositive";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint32";
            readonly name: "allocationsSum";
            readonly type: "uint32";
        }];
        readonly name: "InvalidSplit__InvalidAllocationsSum";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint32";
            readonly name: "distributorFee";
            readonly type: "uint32";
        }];
        readonly name: "InvalidSplit__InvalidDistributorFee";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "bytes32";
            readonly name: "hash";
            readonly type: "bytes32";
        }];
        readonly name: "InvalidSplit__InvalidHash";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "accountsLength";
            readonly type: "uint256";
        }];
        readonly name: "InvalidSplit__TooFewAccounts";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "sender";
            readonly type: "address";
        }];
        readonly name: "Unauthorized";
        readonly type: "error";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }];
        readonly name: "CancelControlTransfer";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "previousController";
            readonly type: "address";
        }, {
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "newController";
            readonly type: "address";
        }];
        readonly name: "ControlTransfer";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }];
        readonly name: "CreateSplit";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly indexed: true;
            readonly internalType: "contract ERC20";
            readonly name: "token";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly internalType: "uint256";
            readonly name: "amount";
            readonly type: "uint256";
        }, {
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "distributorAddress";
            readonly type: "address";
        }];
        readonly name: "DistributeERC20";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly internalType: "uint256";
            readonly name: "amount";
            readonly type: "uint256";
        }, {
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "distributorAddress";
            readonly type: "address";
        }];
        readonly name: "DistributeETH";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "newPotentialController";
            readonly type: "address";
        }];
        readonly name: "InitiateControlTransfer";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }];
        readonly name: "UpdateSplit";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "account";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly internalType: "uint256";
            readonly name: "ethAmount";
            readonly type: "uint256";
        }, {
            readonly indexed: false;
            readonly internalType: "contract ERC20[]";
            readonly name: "tokens";
            readonly type: "address[]";
        }, {
            readonly indexed: false;
            readonly internalType: "uint256[]";
            readonly name: "tokenAmounts";
            readonly type: "uint256[]";
        }];
        readonly name: "Withdrawal";
        readonly type: "event";
    }, {
        readonly inputs: readonly [];
        readonly name: "PERCENTAGE_SCALE";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }];
        readonly name: "acceptControl";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }];
        readonly name: "cancelControlTransfer";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address[]";
            readonly name: "accounts";
            readonly type: "address[]";
        }, {
            readonly internalType: "uint32[]";
            readonly name: "percentAllocations";
            readonly type: "uint32[]";
        }, {
            readonly internalType: "uint32";
            readonly name: "distributorFee";
            readonly type: "uint32";
        }, {
            readonly internalType: "address";
            readonly name: "controller";
            readonly type: "address";
        }];
        readonly name: "createSplit";
        readonly outputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly internalType: "contract ERC20";
            readonly name: "token";
            readonly type: "address";
        }, {
            readonly internalType: "address[]";
            readonly name: "accounts";
            readonly type: "address[]";
        }, {
            readonly internalType: "uint32[]";
            readonly name: "percentAllocations";
            readonly type: "uint32[]";
        }, {
            readonly internalType: "uint32";
            readonly name: "distributorFee";
            readonly type: "uint32";
        }, {
            readonly internalType: "address";
            readonly name: "distributorAddress";
            readonly type: "address";
        }];
        readonly name: "distributeERC20";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly internalType: "address[]";
            readonly name: "accounts";
            readonly type: "address[]";
        }, {
            readonly internalType: "uint32[]";
            readonly name: "percentAllocations";
            readonly type: "uint32[]";
        }, {
            readonly internalType: "uint32";
            readonly name: "distributorFee";
            readonly type: "uint32";
        }, {
            readonly internalType: "address";
            readonly name: "distributorAddress";
            readonly type: "address";
        }];
        readonly name: "distributeETH";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }];
        readonly name: "getController";
        readonly outputs: readonly [{
            readonly internalType: "address";
            readonly name: "";
            readonly type: "address";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "account";
            readonly type: "address";
        }, {
            readonly internalType: "contract ERC20";
            readonly name: "token";
            readonly type: "address";
        }];
        readonly name: "getERC20Balance";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "account";
            readonly type: "address";
        }];
        readonly name: "getETHBalance";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }];
        readonly name: "getHash";
        readonly outputs: readonly [{
            readonly internalType: "bytes32";
            readonly name: "";
            readonly type: "bytes32";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }];
        readonly name: "getNewPotentialController";
        readonly outputs: readonly [{
            readonly internalType: "address";
            readonly name: "";
            readonly type: "address";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }];
        readonly name: "makeSplitImmutable";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address[]";
            readonly name: "accounts";
            readonly type: "address[]";
        }, {
            readonly internalType: "uint32[]";
            readonly name: "percentAllocations";
            readonly type: "uint32[]";
        }, {
            readonly internalType: "uint32";
            readonly name: "distributorFee";
            readonly type: "uint32";
        }];
        readonly name: "predictImmutableSplitAddress";
        readonly outputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly internalType: "address";
            readonly name: "newController";
            readonly type: "address";
        }];
        readonly name: "transferControl";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly internalType: "contract ERC20";
            readonly name: "token";
            readonly type: "address";
        }, {
            readonly internalType: "address[]";
            readonly name: "accounts";
            readonly type: "address[]";
        }, {
            readonly internalType: "uint32[]";
            readonly name: "percentAllocations";
            readonly type: "uint32[]";
        }, {
            readonly internalType: "uint32";
            readonly name: "distributorFee";
            readonly type: "uint32";
        }, {
            readonly internalType: "address";
            readonly name: "distributorAddress";
            readonly type: "address";
        }];
        readonly name: "updateAndDistributeERC20";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly internalType: "address[]";
            readonly name: "accounts";
            readonly type: "address[]";
        }, {
            readonly internalType: "uint32[]";
            readonly name: "percentAllocations";
            readonly type: "uint32[]";
        }, {
            readonly internalType: "uint32";
            readonly name: "distributorFee";
            readonly type: "uint32";
        }, {
            readonly internalType: "address";
            readonly name: "distributorAddress";
            readonly type: "address";
        }];
        readonly name: "updateAndDistributeETH";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly internalType: "address[]";
            readonly name: "accounts";
            readonly type: "address[]";
        }, {
            readonly internalType: "uint32[]";
            readonly name: "percentAllocations";
            readonly type: "uint32[]";
        }, {
            readonly internalType: "uint32";
            readonly name: "distributorFee";
            readonly type: "uint32";
        }];
        readonly name: "updateSplit";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "walletImplementation";
        readonly outputs: readonly [{
            readonly internalType: "address";
            readonly name: "";
            readonly type: "address";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "account";
            readonly type: "address";
        }, {
            readonly internalType: "uint256";
            readonly name: "withdrawETH";
            readonly type: "uint256";
        }, {
            readonly internalType: "contract ERC20[]";
            readonly name: "tokens";
            readonly type: "address[]";
        }];
        readonly name: "withdraw";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }] | readonly [{
        readonly inputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "constructor";
    }, {
        readonly inputs: readonly [];
        readonly name: "Create2Error";
        readonly type: "error";
    }, {
        readonly inputs: readonly [];
        readonly name: "CreateError";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "newController";
            readonly type: "address";
        }];
        readonly name: "InvalidNewController";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "accountsLength";
            readonly type: "uint256";
        }, {
            readonly internalType: "uint256";
            readonly name: "allocationsLength";
            readonly type: "uint256";
        }];
        readonly name: "InvalidSplit__AccountsAndAllocationsMismatch";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "index";
            readonly type: "uint256";
        }];
        readonly name: "InvalidSplit__AccountsOutOfOrder";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "index";
            readonly type: "uint256";
        }];
        readonly name: "InvalidSplit__AllocationMustBePositive";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint32";
            readonly name: "allocationsSum";
            readonly type: "uint32";
        }];
        readonly name: "InvalidSplit__InvalidAllocationsSum";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint32";
            readonly name: "distributorFee";
            readonly type: "uint32";
        }];
        readonly name: "InvalidSplit__InvalidDistributorFee";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "bytes32";
            readonly name: "hash";
            readonly type: "bytes32";
        }];
        readonly name: "InvalidSplit__InvalidHash";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "accountsLength";
            readonly type: "uint256";
        }];
        readonly name: "InvalidSplit__TooFewAccounts";
        readonly type: "error";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "sender";
            readonly type: "address";
        }];
        readonly name: "Unauthorized";
        readonly type: "error";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }];
        readonly name: "CancelControlTransfer";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "previousController";
            readonly type: "address";
        }, {
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "newController";
            readonly type: "address";
        }];
        readonly name: "ControlTransfer";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly internalType: "address[]";
            readonly name: "accounts";
            readonly type: "address[]";
        }, {
            readonly indexed: false;
            readonly internalType: "uint32[]";
            readonly name: "percentAllocations";
            readonly type: "uint32[]";
        }, {
            readonly indexed: false;
            readonly internalType: "uint32";
            readonly name: "distributorFee";
            readonly type: "uint32";
        }, {
            readonly indexed: false;
            readonly internalType: "address";
            readonly name: "controller";
            readonly type: "address";
        }];
        readonly name: "CreateSplit";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly indexed: true;
            readonly internalType: "contract ERC20";
            readonly name: "token";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly internalType: "uint256";
            readonly name: "amount";
            readonly type: "uint256";
        }, {
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "distributorAddress";
            readonly type: "address";
        }];
        readonly name: "DistributeERC20";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly internalType: "uint256";
            readonly name: "amount";
            readonly type: "uint256";
        }, {
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "distributorAddress";
            readonly type: "address";
        }];
        readonly name: "DistributeETH";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "newPotentialController";
            readonly type: "address";
        }];
        readonly name: "InitiateControlTransfer";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly internalType: "address[]";
            readonly name: "accounts";
            readonly type: "address[]";
        }, {
            readonly indexed: false;
            readonly internalType: "uint32[]";
            readonly name: "percentAllocations";
            readonly type: "uint32[]";
        }, {
            readonly indexed: false;
            readonly internalType: "uint32";
            readonly name: "distributorFee";
            readonly type: "uint32";
        }];
        readonly name: "UpdateSplit";
        readonly type: "event";
    }, {
        readonly anonymous: false;
        readonly inputs: readonly [{
            readonly indexed: true;
            readonly internalType: "address";
            readonly name: "account";
            readonly type: "address";
        }, {
            readonly indexed: false;
            readonly internalType: "uint256";
            readonly name: "ethAmount";
            readonly type: "uint256";
        }, {
            readonly indexed: false;
            readonly internalType: "contract ERC20[]";
            readonly name: "tokens";
            readonly type: "address[]";
        }, {
            readonly indexed: false;
            readonly internalType: "uint256[]";
            readonly name: "tokenAmounts";
            readonly type: "uint256[]";
        }];
        readonly name: "Withdrawal";
        readonly type: "event";
    }, {
        readonly inputs: readonly [];
        readonly name: "PERCENTAGE_SCALE";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }];
        readonly name: "acceptControl";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }];
        readonly name: "cancelControlTransfer";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address[]";
            readonly name: "accounts";
            readonly type: "address[]";
        }, {
            readonly internalType: "uint32[]";
            readonly name: "percentAllocations";
            readonly type: "uint32[]";
        }, {
            readonly internalType: "uint32";
            readonly name: "distributorFee";
            readonly type: "uint32";
        }, {
            readonly internalType: "address";
            readonly name: "controller";
            readonly type: "address";
        }];
        readonly name: "createSplit";
        readonly outputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly internalType: "contract ERC20";
            readonly name: "token";
            readonly type: "address";
        }, {
            readonly internalType: "address[]";
            readonly name: "accounts";
            readonly type: "address[]";
        }, {
            readonly internalType: "uint32[]";
            readonly name: "percentAllocations";
            readonly type: "uint32[]";
        }, {
            readonly internalType: "uint32";
            readonly name: "distributorFee";
            readonly type: "uint32";
        }, {
            readonly internalType: "address";
            readonly name: "distributorAddress";
            readonly type: "address";
        }];
        readonly name: "distributeERC20";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly internalType: "address[]";
            readonly name: "accounts";
            readonly type: "address[]";
        }, {
            readonly internalType: "uint32[]";
            readonly name: "percentAllocations";
            readonly type: "uint32[]";
        }, {
            readonly internalType: "uint32";
            readonly name: "distributorFee";
            readonly type: "uint32";
        }, {
            readonly internalType: "address";
            readonly name: "distributorAddress";
            readonly type: "address";
        }];
        readonly name: "distributeETH";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }];
        readonly name: "getController";
        readonly outputs: readonly [{
            readonly internalType: "address";
            readonly name: "";
            readonly type: "address";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "account";
            readonly type: "address";
        }, {
            readonly internalType: "contract ERC20";
            readonly name: "token";
            readonly type: "address";
        }];
        readonly name: "getERC20Balance";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "account";
            readonly type: "address";
        }];
        readonly name: "getETHBalance";
        readonly outputs: readonly [{
            readonly internalType: "uint256";
            readonly name: "";
            readonly type: "uint256";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }];
        readonly name: "getHash";
        readonly outputs: readonly [{
            readonly internalType: "bytes32";
            readonly name: "";
            readonly type: "bytes32";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }];
        readonly name: "getNewPotentialController";
        readonly outputs: readonly [{
            readonly internalType: "address";
            readonly name: "";
            readonly type: "address";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }];
        readonly name: "makeSplitImmutable";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address[]";
            readonly name: "accounts";
            readonly type: "address[]";
        }, {
            readonly internalType: "uint32[]";
            readonly name: "percentAllocations";
            readonly type: "uint32[]";
        }, {
            readonly internalType: "uint32";
            readonly name: "distributorFee";
            readonly type: "uint32";
        }];
        readonly name: "predictImmutableSplitAddress";
        readonly outputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly internalType: "address";
            readonly name: "newController";
            readonly type: "address";
        }];
        readonly name: "transferControl";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly internalType: "contract ERC20";
            readonly name: "token";
            readonly type: "address";
        }, {
            readonly internalType: "address[]";
            readonly name: "accounts";
            readonly type: "address[]";
        }, {
            readonly internalType: "uint32[]";
            readonly name: "percentAllocations";
            readonly type: "uint32[]";
        }, {
            readonly internalType: "uint32";
            readonly name: "distributorFee";
            readonly type: "uint32";
        }, {
            readonly internalType: "address";
            readonly name: "distributorAddress";
            readonly type: "address";
        }];
        readonly name: "updateAndDistributeERC20";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly internalType: "address[]";
            readonly name: "accounts";
            readonly type: "address[]";
        }, {
            readonly internalType: "uint32[]";
            readonly name: "percentAllocations";
            readonly type: "uint32[]";
        }, {
            readonly internalType: "uint32";
            readonly name: "distributorFee";
            readonly type: "uint32";
        }, {
            readonly internalType: "address";
            readonly name: "distributorAddress";
            readonly type: "address";
        }];
        readonly name: "updateAndDistributeETH";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "split";
            readonly type: "address";
        }, {
            readonly internalType: "address[]";
            readonly name: "accounts";
            readonly type: "address[]";
        }, {
            readonly internalType: "uint32[]";
            readonly name: "percentAllocations";
            readonly type: "uint32[]";
        }, {
            readonly internalType: "uint32";
            readonly name: "distributorFee";
            readonly type: "uint32";
        }];
        readonly name: "updateSplit";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }, {
        readonly inputs: readonly [];
        readonly name: "walletImplementation";
        readonly outputs: readonly [{
            readonly internalType: "address";
            readonly name: "";
            readonly type: "address";
        }];
        readonly stateMutability: "view";
        readonly type: "function";
    }, {
        readonly inputs: readonly [{
            readonly internalType: "address";
            readonly name: "account";
            readonly type: "address";
        }, {
            readonly internalType: "uint256";
            readonly name: "withdrawETH";
            readonly type: "uint256";
        }, {
            readonly internalType: "contract ERC20[]";
            readonly name: "tokens";
            readonly type: "address[]";
        }];
        readonly name: "withdraw";
        readonly outputs: readonly [];
        readonly stateMutability: "nonpayable";
        readonly type: "function";
    }];
}
export declare class SplitV1Client extends SplitV1Transactions {
    readonly callData: SplitV1CallData;
    readonly estimateGas: SplitV1GasEstimates;
    constructor(clientArgs: SplitsClientConfig);
    getEventTopics(chainId: number): {
        createSplit: `0x${string}`[];
        updateSplit: `0x${string}`[];
        distributeToken: `0x${string}`[];
        updateSplitAndDistributeToken: `0x${string}`[];
        withdrawFunds: `0x${string}`[];
        initiateControlTransfer: `0x${string}`[];
        cancelControlTransfer: `0x${string}`[];
        acceptControlTransfer: `0x${string}`[];
        makeSplitImmutable: `0x${string}`[];
    };
    _submitCreateSplitTransaction(createSplitArgs: CreateSplitConfig): Promise<{
        txHash: Hash;
    }>;
    createSplit(createSplitArgs: CreateSplitConfig): Promise<{
        splitAddress: Address;
        event: Log;
    }>;
    _submitUpdateSplitTransaction(updateSplitArgs: UpdateSplitConfig): Promise<{
        txHash: Hash;
    }>;
    updateSplit(updateSplitArgs: UpdateSplitConfig): Promise<{
        event: Log;
    }>;
    _submitDistributeTokenTransaction(distributeTokenArgs: DistributeTokenConfig): Promise<{
        txHash: Hash;
    }>;
    distributeToken(distributeTokenArgs: DistributeTokenConfig): Promise<{
        event: Log;
    }>;
    _submitUpdateSplitAndDistributeTokenTransaction(updateAndDistributeArgs: UpdateSplitAndDistributeTokenConfig): Promise<{
        txHash: Hash;
    }>;
    updateSplitAndDistributeToken(updateAndDistributeArgs: UpdateSplitAndDistributeTokenConfig): Promise<{
        event: Log;
    }>;
    _submitWithdrawFundsTransaction(withdrawArgs: WithdrawFundsConfig): Promise<{
        txHash: Hash;
    }>;
    withdrawFunds(withdrawArgs: WithdrawFundsConfig): Promise<{
        event: Log;
    }>;
    _submitInitiateControlTransferTransaction(initiateTransferArgs: InitiateControlTransferConfig): Promise<{
        txHash: Hash;
    }>;
    initiateControlTransfer(initiateTransferArgs: InitiateControlTransferConfig): Promise<{
        event: Log;
    }>;
    _submitCancelControlTransferTransaction(cancelTransferArgs: CancelControlTransferConfig): Promise<{
        txHash: Hash;
    }>;
    cancelControlTransfer(cancelTransferArgs: CancelControlTransferConfig): Promise<{
        event: Log;
    }>;
    _submitAcceptControlTransferTransaction(acceptTransferArgs: AcceptControlTransferConfig): Promise<{
        txHash: Hash;
    }>;
    acceptControlTransfer(acceptTransferArgs: AcceptControlTransferConfig): Promise<{
        event: Log;
    }>;
    _submitMakeSplitImmutableTransaction(makeImmutableArgs: MakeSplitImmutableConfig): Promise<{
        txHash: Hash;
    }>;
    makeSplitImmutable(makeImmutableArgs: MakeSplitImmutableConfig): Promise<{
        event: Log;
    }>;
    batchDistributeAndWithdraw(batchDistributeAndWithdrawArgs: BatchDistributeAndWithdrawConfig): Promise<{
        events: Log[];
    }>;
    batchDistributeAndWithdrawForAll(batchDistributeAndWithdrawForAllArgs: BatchDistributeAndWithdrawForAllConfig): Promise<{
        events: Log[];
    }>;
    getSplitBalance({ splitAddress, token, chainId, }: GetSplitBalanceConfig): Promise<{
        balance: bigint;
    }>;
    predictImmutableSplitAddress({ recipients, distributorFeePercent, chainId, }: {
        recipients: SplitRecipient[];
        distributorFeePercent: number;
        chainId?: number;
    }): Promise<{
        splitAddress: Address;
        splitExists: boolean;
    }>;
    getController({ splitAddress, chainId, }: {
        splitAddress: string;
        chainId?: number;
    }): Promise<{
        controller: Address;
    }>;
    getNewPotentialController({ splitAddress, chainId, }: {
        splitAddress: string;
        chainId?: number;
    }): Promise<{
        newPotentialController: Address;
    }>;
    getHash({ splitAddress, chainId, }: {
        splitAddress: string;
        chainId?: number;
    }): Promise<{
        hash: string;
    }>;
    _doesSplitExist({ splitAddress, chainId, }: {
        splitAddress: Address;
        chainId: number;
    }): Promise<boolean>;
    _getSplitFromLogs({ splitAddress, chainId, createLog, updateLog, }: {
        splitAddress: Address;
        chainId: number;
        createLog: SplitV1CreatedLogType;
        updateLog?: SplitV1UpdatedLogType;
    }): Promise<Split>;
    getSplitMetadataViaProvider({ splitAddress, chainId, cachedData, }: {
        splitAddress: string;
        chainId?: number;
        cachedData?: {
            blocks?: {
                createBlock: bigint;
                updateBlock?: bigint;
                latestScannedBlock: bigint;
            };
            blockRange?: bigint;
        };
    }): Promise<{
        split: Split;
        blockRange: bigint;
    }>;
    getSplitActiveBalances({ splitAddress, chainId, erc20TokenList, }: {
        splitAddress: string;
        chainId?: number;
        erc20TokenList?: string[];
    }): Promise<Pick<FormattedSplitEarnings, 'activeBalances'>>;
}
export interface SplitV1Client extends BaseClientMixin {
}
declare class SplitV1GasEstimates extends SplitV1Transactions {
    constructor(clientArgs: SplitsClientConfig);
    createSplit(createSplitArgs: CreateSplitConfig): Promise<bigint>;
    updateSplit(updateSplitArgs: UpdateSplitConfig): Promise<bigint>;
    distributeToken(distributeTokenArgs: DistributeTokenConfig): Promise<bigint>;
    updateSplitAndDistributeToken(updateAndDistributeArgs: UpdateSplitAndDistributeTokenConfig): Promise<bigint>;
    withdrawFunds(withdrawArgs: WithdrawFundsConfig): Promise<bigint>;
    initiateControlTransfer(initiateTransferArgs: InitiateControlTransferConfig): Promise<bigint>;
    cancelControlTransfer(cancelTransferArgs: CancelControlTransferConfig): Promise<bigint>;
    acceptControlTransfer(acceptTransferArgs: AcceptControlTransferConfig): Promise<bigint>;
    makeSplitImmutable(makeImmutableArgs: MakeSplitImmutableConfig): Promise<bigint>;
}
interface SplitV1GasEstimates extends BaseGasEstimatesMixin {
}
declare class SplitV1CallData extends SplitV1Transactions {
    constructor(clientArgs: SplitsClientConfig);
    createSplit(createSplitArgs: CreateSplitConfig): Promise<CallData>;
    updateSplit(updateSplitArgs: UpdateSplitConfig): Promise<CallData>;
    distributeToken(distributeTokenArgs: DistributeTokenConfig): Promise<CallData>;
    updateSplitAndDistributeToken(updateAndDistributeArgs: UpdateSplitAndDistributeTokenConfig): Promise<CallData>;
    withdrawFunds(withdrawArgs: WithdrawFundsConfig): Promise<CallData>;
    initiateControlTransfer(initiateTransferArgs: InitiateControlTransferConfig): Promise<CallData>;
    cancelControlTransfer(cancelTransferArgs: CancelControlTransferConfig): Promise<CallData>;
    acceptControlTransfer(acceptTransferArgs: AcceptControlTransferConfig): Promise<CallData>;
    makeSplitImmutable(makeImmutableArgs: MakeSplitImmutableConfig): Promise<CallData>;
    batchDistributeAndWithdraw(batchDistributeAndWithdrawArgs: BatchDistributeAndWithdrawConfig): Promise<CallData>;
    batchDistributeAndWithdrawForAll(batchDistributeAndWithdrawForAllArgs: BatchDistributeAndWithdrawForAllConfig): Promise<CallData>;
}
export {};
