import { BytesLike } from 'ethers';
declare namespace Types {
    enum SigningType {
        APPROVE = "APPROVE",
        PERMIT = "PERMIT",
        DEPOSIT = "DEPOSIT",
        WITHDRAW = "WITHDRAW",
        DEPOSIT_V2 = "DEPOSIT_V2",
        WITHDRAW_V2 = "WITHDRAW_V2",
        TRANSFER = "TRANSFER",
        META_TRANSACTION = "META_TRANSACTION",
        META_TRANSACTION_V2 = "META_TRANSACTION_V2",
        SIGN_HASH = "SIGN_HASH"
    }
    interface ApproveTxSigningParams {
        from: string;
        spender: string;
        value: string;
        validAfter: number;
        validBefore: number;
        nonce: string;
    }
    interface PermitTxSigningParams {
        owner: string;
        spender: string;
        value: string;
        deadline: number;
        nonce: number;
    }
    interface DepositTxSigningParams {
        from: string;
        token: string;
        amount: string;
        receiver: string;
        validAfter: number;
        validBefore: number;
        nonce: string;
    }
    interface WithdrawTxSigningParams {
        from: string;
        amount: string;
        tokenAddress: string;
        receiver: string;
        validAfter: number;
        validBefore: number;
        nonce: string;
    }
    interface TransferTxSigningParams {
        from: string;
        to: string;
        value: string;
        validAfter: number;
        validBefore: number;
        nonce: string;
    }
    interface MetaTransactionParams {
        nonce: string;
        from: string;
        functionSignature: string;
    }
    interface ReinvestParams {
        nonce: string;
        from: string;
        managedAccountId: number;
        tokenAddress: string;
        newPool: string;
        validAfter: number;
        validBefore: number;
    }
    interface SignHashParams {
        request: ReinvestParams | ApproveTxSigningParams | PermitTxSigningParams | DepositTxSigningParams | WithdrawTxSigningParams | TransferTxSigningParams | MetaTransactionParams;
        hash: string;
    }
    interface PaymasterConfigDto {
        rpcUrl: string;
        context: {
            type: string;
        };
    }
    type PaymentOptions = {
        fiatAmount: number;
        fiatCurrency: string;
        diaFiatAmount: number;
        diaFiatCurrency: string;
        estimatedConversionPrice?: number;
    };
    type SignCredentialPayload = ApproveTxSigningParams | PermitTxSigningParams | DepositTxSigningParams | WithdrawTxSigningParams | TransferTxSigningParams | MetaTransactionParams | SignHashParams;
    type Signature = {
        v: number;
        r: string;
        s: string;
        signature: BytesLike;
    };
    interface SignCredential {
        type: SigningType;
        network: string;
        url: string;
        groupId?: string;
        contractAddress: string;
        currency?: string;
        payload: SignCredentialPayload;
        paymentOptions?: PaymentOptions;
    }
    type SignCredentials = {
        signs: SignCredential[];
    };
    type SignedCredential = {
        amount?: string;
        currency?: string;
        contractAddress: string;
        groupId?: string;
        paymentOptions?: PaymentOptions;
        request: {
            type: SigningType;
        } & SignCredentialPayload;
        signature: Signature;
    };
}
export default Types;
