import type { Address, TypedData, TypedDataDomain } from 'viem';
export type Witness = {
    witness: any;
    witnessTypeName: string;
    witnessType: Record<string, {
        name: string;
        type: string;
    }[]>;
};
export type TokenPermissions = {
    token: Address;
    amount: bigint;
};
export type PermitTransferFrom = {
    permitted: TokenPermissions;
    spender: Address;
    nonce: bigint;
    deadline: bigint;
};
export type PermitBatchTransferFrom = {
    permitted: TokenPermissions[];
    spender: Address;
    nonce: bigint;
    deadline: bigint;
};
export type PermitTransferFromData = {
    domain: TypedDataDomain;
    types: TypedData;
    message: PermitTransferFrom;
};
export type PermitBatchTransferFromData = {
    domain: TypedDataDomain;
    types: TypedData;
    message: PermitBatchTransferFrom;
};
export declare function getPermitTransferData(permit: PermitTransferFrom, permit2Address: Address, chainId: number, witness?: Witness): PermitTransferFromData;
export declare function getPermitBatchTransferData(permit: PermitBatchTransferFrom, permit2Address: Address, chainId: number, witness?: Witness): PermitBatchTransferFromData;
export declare function getPermitData<T extends PermitTransferFrom>(permit: T, permit2Address: Address, chainId: number, witness?: Witness): PermitTransferFromData;
export declare function getPermitData<T extends PermitBatchTransferFrom>(permit: T, permit2Address: Address, chainId: number, witness?: Witness): PermitBatchTransferFromData;
export declare function hash<T extends PermitTransferFrom | PermitBatchTransferFrom>(permit: T, permit2Address: Address, chainId: number, witness?: Witness): `0x${string}`;
//# sourceMappingURL=signatureTransfer.d.ts.map