import { Account, Address, Chain, ParseAccount, SimulateContractReturnType, Transport, WalletClient } from 'viem';
import { ContractAddresses } from '../abis';
import { Erc20Service, NitroliteService } from './services';
import { ChallengeChannelParams, CheckpointChannelParams, CloseChannelParams, CreateChannelParams, ResizeChannelParams } from './types';
import { StateSigner } from './signer';
export type PreparedTransaction = SimulateContractReturnType['request'];
export interface PreparerDependencies {
    nitroliteService: NitroliteService;
    erc20Service: Erc20Service;
    addresses: ContractAddresses;
    account: ParseAccount<Account>;
    walletClient: WalletClient<Transport, Chain, ParseAccount<Account>>;
    stateSigner: StateSigner;
    challengeDuration: bigint;
    chainId: number;
}
export declare class NitroliteTransactionPreparer {
    private readonly deps;
    constructor(dependencies: PreparerDependencies);
    prepareDepositTransactions(tokenAddress: Address, amount: bigint): Promise<PreparedTransaction[]>;
    prepareCreateChannelTransaction(params: CreateChannelParams): Promise<PreparedTransaction>;
    prepareDepositAndCreateChannelTransactions(tokenAddress: Address, amount: bigint, params: CreateChannelParams): Promise<PreparedTransaction[]>;
    prepareCheckpointChannelTransaction(params: CheckpointChannelParams): Promise<PreparedTransaction>;
    prepareChallengeChannelTransaction(params: ChallengeChannelParams): Promise<PreparedTransaction>;
    prepareResizeChannelTransaction(params: ResizeChannelParams): Promise<PreparedTransaction>;
    prepareCloseChannelTransaction(params: CloseChannelParams): Promise<PreparedTransaction>;
    prepareWithdrawalTransaction(tokenAddress: Address, amount: bigint): Promise<PreparedTransaction>;
    prepareApproveTokensTransaction(tokenAddress: Address, amount: bigint): Promise<PreparedTransaction>;
}
