import { MetaTxConfig, Web3LibAdapter, TransactionRequest, TransactionResponse } from "@bosonprotocol/common";
import { BigNumberish } from "@ethersproject/bignumber";
import { BytesLike } from "@ethersproject/bytes";
import { BaseMetaTxArgs, SignedMetaTx, UnsignedMetaTx } from "../meta-tx/handler";
export declare function getNonce(args: {
    contractAddress: string;
    user: string;
    web3Lib: Web3LibAdapter;
}): Promise<string>;
type NativeMetaTxArgs = BaseMetaTxArgs & {
    functionName: string;
    functionSignature: string;
    domain: {
        name: string;
        version: string;
    };
};
export declare function signNativeMetaTx(args: NativeMetaTxArgs & {
    returnTypedDataToSign: true;
}): Promise<UnsignedMetaTx>;
export declare function signNativeMetaTx(args: NativeMetaTxArgs & {
    returnTypedDataToSign?: false | undefined;
}): Promise<SignedMetaTx>;
export type ApproveExchangeTokenBaseArgs = {
    web3Lib: Web3LibAdapter;
    chainId: number;
    user: string;
    exchangeToken: string;
    spender: string;
    value: BigNumberish;
};
export declare function signNativeMetaTxApproveExchangeToken(args: ApproveExchangeTokenBaseArgs & {
    returnTypedDataToSign: true;
}): Promise<UnsignedMetaTx>;
export declare function signNativeMetaTxApproveExchangeToken(args: ApproveExchangeTokenBaseArgs & {
    returnTypedDataToSign?: false | undefined;
}): Promise<SignedMetaTx>;
export declare function relayNativeMetaTransaction(args: {
    web3LibAdapter: Web3LibAdapter;
    chainId: number;
    contractAddress: string;
    metaTx: {
        config: Omit<MetaTxConfig, "apiIds" | "forwarderAbi"> & {
            apiId: string;
        };
        params: {
            userAddress: string;
            functionSignature: BytesLike;
            sigR: BytesLike;
            sigS: BytesLike;
            sigV: BigNumberish;
        };
    };
}): Promise<TransactionResponse>;
export type ExecuteNativeMetaTxBaseArgs = {
    contractAddress: string;
    web3Lib: Web3LibAdapter;
    userAddress: string;
    functionSignature: BytesLike;
    sigR: BytesLike;
    sigS: BytesLike;
    sigV: BigNumberish;
};
export declare function executeNativeMetaTransaction(args: ExecuteNativeMetaTxBaseArgs & {
    returnTxInfo: true;
}): Promise<TransactionRequest>;
export declare function executeNativeMetaTransaction(args: ExecuteNativeMetaTxBaseArgs & {
    returnTxInfo?: false | undefined;
}): Promise<TransactionResponse>;
export {};
//# sourceMappingURL=handler.d.ts.map