import { AccountValue, CheckAllowanceResult, TransactionResult } from '@lidofinance/lido-ethereum-sdk';
import { Address } from 'viem';
import { CsmSDKModule } from '../common/class-primitives/csm-sdk-module.js';
import { PermitSignatureShort } from '../common/index.js';
import { SignPermitOrApproveProps } from './internal-types.js';
import { AllowanceProps, PerformOptionsNoSpend, PerformOptionsSpend } from './types.js';
export declare class TxSDK extends CsmSDKModule {
    protected get spender(): Address;
    private getTokenContract;
    isAbstractAccount(account: Address): Promise<boolean>;
    isMultisig(_account?: AccountValue): Promise<boolean>;
    private checkContractVersion;
    private internalTransaction;
    private internalCall;
    perform<TDecodedResult = undefined>(props: PerformOptionsSpend<TDecodedResult>): Promise<TransactionResult<TDecodedResult>>;
    perform<TDecodedResult = undefined>(props: PerformOptionsNoSpend<TDecodedResult>): Promise<TransactionResult<TDecodedResult>>;
    private performCall;
    private performTransaction;
    private prepareCall;
    private callToInternalTransaction;
    private callToGetGasLimit;
    private callToSendTransaction;
    private getPermit;
    private getApproveCallIfNeeded;
    allowance({ account: accountProp, token, }: AllowanceProps): Promise<bigint>;
    checkAllowance(props: SignPermitOrApproveProps): Promise<CheckAllowanceResult>;
    signPermit(props: SignPermitOrApproveProps): Promise<import("@lidofinance/lido-ethereum-sdk").PermitSignature>;
    approve(props: SignPermitOrApproveProps): Promise<TransactionResult>;
    private getApproveCall;
    signPermitOrApprove(props: SignPermitOrApproveProps): Promise<{
        permit: PermitSignatureShort;
        hash?: undefined;
    } | {
        permit: PermitSignatureShort;
        hash: `0x${string}`;
    }>;
    private wrapApproveCallback;
}
//# sourceMappingURL=tx-sdk.d.ts.map