import { ethers } from 'ethers';
import { IHinkal } from '../../data-structures/Hinkal/IHinkal';
import { AuthorizationData } from '../../types/hinkal.types';
import { BridgeQuote } from '../../types/bridging-tx.types';
type EncodableContract = {
    address?: string;
    target?: string | {
        toString(): string;
    };
    interface: {
        encodeFunctionData: (...args: any[]) => string;
    };
};
export declare const emporiumOp: ({ contract, func, args, callDataString, invokeWallet, value, }: {
    contract: EncodableContract | string;
    func?: string;
    args?: unknown[];
    callDataString?: string;
    invokeWallet?: boolean;
    value?: bigint;
}) => string;
export declare const encodeEmporiumMetadata: (chainId: number, emporiumAddress: string, privateKey: string | undefined, ops: string[], message?: bigint, signerAddress?: string) => Promise<string>;
export declare const decodeEmporiumMetadata: (metadata: string) => {
    v: number;
    r: string;
    s: string;
    message: bigint;
    signerAddress: string;
    ops: string[];
};
export declare const createTransferToEmporiumOp: (tokenContract: EncodableContract | undefined, to: string, amount: bigint, invokeWallet: boolean) => string;
export declare const createTransaferEmporiumOpsBatch: (hinkal: IHinkal, chainId: number, erc20TokenAddresses: string[], amounts: bigint[], to?: string) => string[];
export declare const createApproveEmporiumOp: (tokenContract: EncodableContract, to: string, amount: bigint, invokeWallet: boolean) => string;
export declare const generateFundAndApproveOps: (hinkal: IHinkal, chainId: number, erc20AddressesToFund: string[], fundAmounts: bigint[], approveTokenAddresses: string[], approveAmounts: bigint[], walletAddress: string, spenderAddress: string | undefined) => string[];
export declare const createLifiBridgeOps: (hinkal: IHinkal, chainId: number, fromAddress: string, lifiRouterAddress: string, tokenAddress: string, fundAmount: bigint, bridgeAmount: bigint, quote: BridgeQuote) => string[];
export declare const checkEOAWithDelegation: (chainId: number, eoaAddress: string) => Promise<{
    delegated: boolean;
    implementation: undefined;
    nonce: undefined;
} | {
    delegated: boolean;
    implementation: string;
    nonce: number;
}>;
export declare const getAuthorizationDataIfNeeded: (chainId: number, privateKey: string | undefined) => Promise<AuthorizationData | undefined>;
export declare const recoverAuthorizationData: (authorizationData: AuthorizationData | undefined) => ethers.Authorization | undefined;
export {};
