import { BigNumber } from 'ethers';
import { SignatureLike } from '@ethersproject/bytes';
import { Transaction, TransactionInstruction, VersionedTransaction } from '@solana/web3.js';
import { IDomain, ITypes, IMessage } from './defination';
import SDKStorage from './store';
interface FSLLoginOptions {
    responseType?: string;
    appKey: string;
    redirectUri?: string;
    scope?: string;
    state?: string;
    usePopup?: boolean;
    useModal?: boolean;
    isApp?: boolean;
    domain?: string;
    uid?: number;
}
declare class FSLAuthorization {
    responseType?: string;
    appKey: string;
    redirectUri?: string;
    scope?: string;
    state?: string;
    usePopup?: boolean;
    useModal?: boolean;
    domain: string;
    isApp?: boolean;
    inWhiteList: boolean;
    requestToken?: string;
    sdkStorage?: SDKStorage;
    uid?: number;
    handling: boolean;
    windowFeatures: string;
    private constructor();
    static init(opt: FSLLoginOptions): Promise<FSLAuthorization>;
    getApproveDDL(): Promise<import("axios").AxiosResponse<any, any>>;
    openAutoApprove(): Promise<import("axios").AxiosResponse<any, any>>;
    closeAutoApprove(): Promise<import("axios").AxiosResponse<any, any>>;
    signIn(args?: {
        withState: boolean;
    }): Promise<unknown>;
    signOut(): Promise<import("axios").AxiosResponse<any, any>>;
    signInV2(): Promise<unknown>;
    checkAndAutoHandle<T>(uid: number | undefined, callUrl: URL, params: Record<string, any>, format?: (data: any) => T): Promise<T | any>;
    static evmVerifyMessage(msg: string, signature: SignatureLike): string;
    static evmVerifyTypedData(domain: IDomain, types: ITypes, message: IMessage, signature: SignatureLike): string;
    callEvmSign(args: {
        msg: any;
        rpc?: string;
        chainId: number;
        chain?: string;
        domain?: string;
        uid?: number;
        signDigest?: boolean;
    }): Promise<any>;
    callEvmSignDigest(args: {
        msg: any;
        rpc?: string;
        chainId: number;
        chain?: string;
        domain?: string;
        uid?: number;
    }): Promise<any>;
    signTypedData(args: {
        domain: IDomain;
        types: ITypes;
        message: IMessage;
        chainId: number;
        mockDomain?: string;
        chain?: string;
        uid?: number;
    }): Promise<any>;
    callEvmContractByCallData(args: {
        contractAddress: string;
        callData: string;
        chainId: number;
        gasLimit: string;
        value?: string;
        chain?: string;
        rpc?: string;
        domain?: string;
        nonce?: number;
        onlySign?: boolean;
        maxPriorityFeePerGasValue?: BigNumber;
        maxFeePerGasValue?: BigNumber;
        uid?: number;
        confirmed?: boolean;
    }): Promise<any>;
    signCallDataTransaction(args: {
        contractAddress: string;
        callData: string;
        chainId: number;
        gasLimit: string;
        value?: string;
        chain?: string;
        rpc?: string;
        domain?: string;
        nonce?: number;
        maxPriorityFeePerGasValue?: BigNumber;
        maxFeePerGasValue?: BigNumber;
        uid?: number;
    }): Promise<any>;
    signSolMessage(args: {
        msg: string;
        domain?: string;
        uid?: number;
    }): Promise<any>;
    callSolInstructions(args: {
        instructions: TransactionInstruction[];
        rpc?: string;
        unitLimit?: number;
        unitPrice?: number;
        domain?: string;
        onlySign?: boolean;
        uid?: number;
    }): Promise<any>;
    signSolInstructions(args: {
        instructions: any[];
        rpc?: string;
        unitLimit?: number;
        unitPrice?: number;
        domain?: string;
        uid?: number;
    }): Promise<any>;
    signSolTransaction(args: {
        transactions: Array<Transaction> | Array<VersionedTransaction>;
        uid?: number;
    }): Promise<Array<Transaction> | Array<VersionedTransaction>>;
    callEvmContract(args: {
        contractAddress: string;
        methodName: string;
        abi?: any;
        chainId: number;
        chain?: string;
        value?: string;
        gasLimit: string;
        params?: any[];
        to?: string;
        rpc?: string;
        domain?: string;
        nonce?: number;
        maxPriorityFeePerGasValue?: BigNumber;
        maxFeePerGasValue?: BigNumber;
        onlySign?: boolean;
        uid?: number;
    }): Promise<any>;
    signEvmContract(args: {
        contractAddress: string;
        methodName: string;
        abi?: any;
        chainId: number;
        chain?: string;
        value?: string;
        gasLimit: string;
        params?: any[];
        to?: string;
        rpc?: string;
        domain?: string;
        nonce?: number;
        maxPriorityFeePerGasValue?: BigNumber;
        maxFeePerGasValue?: BigNumber;
        uid?: number;
    }): Promise<any>;
}
export default FSLAuthorization;
