import { MetaTxConfig, TransactionResponse, Web3LibAdapter } from "@bosonprotocol/common";
import { BigNumberish } from "@ethersproject/bignumber";
import { BytesLike } from "@ethersproject/bytes";
import { SignedMetaTx, UnsignedMetaTx } from "../meta-tx/handler";
import { BaseCoreSDK } from "./../mixins/base-core-sdk";
export declare class NativeMetaTxMixin<T extends Web3LibAdapter> extends BaseCoreSDK<T> {
    /**
     * Encodes and signs a native "token.approve()" meta transaction that can be relayed.
     * @param exchangeToken - The address of the token contract.
     * @param value - The value to be approved.
     * @param overrides - Optionally specify a spender address (default is the protocol contract address)
     *                    and/or set returnTypedDataToSign to control the return type.
     * @returns Signature or structured typed data.
     */
    signNativeMetaTxApproveExchangeToken(exchangeToken: string, value: BigNumberish, overrides: Partial<{
        spender: string;
    }> & {
        returnTypedDataToSign: true;
    }): Promise<UnsignedMetaTx>;
    signNativeMetaTxApproveExchangeToken(exchangeToken: string, value: BigNumberish, overrides?: Partial<{
        spender: string;
        returnTypedDataToSign?: false;
    }>): Promise<SignedMetaTx>;
    /**
     * Relay a native meta transaction,
     * @param metaTxParams - Required params for meta transaction.
     * @param overrides - Optional overrides.
     * @returns Transaction response.
     */
    relayNativeMetaTransaction(contractAddress: string, metaTxParams: {
        functionSignature: BytesLike;
        sigR: BytesLike;
        sigS: BytesLike;
        sigV: BigNumberish;
    }, overrides?: Partial<{
        userAddress: string;
        metaTxConfig: Partial<Omit<MetaTxConfig, "apiIds" | "forwarderAbi"> & {
            apiId: string;
        }>;
        metaTransactionMethod: string;
    }>): Promise<TransactionResponse>;
    /**
     * Execute a signed native meta transaction directly on-chain (no Biconomy relayer).
     * The wallet backing the SDK pays the gas; pass `overrides.userAddress` when the
     * meta-tx signer differs from that wallet.
     * @param contractAddress - The token contract address.
     * @param metaTxParams - Required params for the native meta transaction.
     * @param overrides - Optional overrides.
     * @returns Transaction response.
     */
    executeNativeMetaTransaction(contractAddress: string, metaTxParams: {
        functionSignature: BytesLike;
        sigR: BytesLike;
        sigS: BytesLike;
        sigV: BigNumberish;
    }, overrides?: Partial<{
        userAddress: string;
    }>): Promise<TransactionResponse>;
}
//# sourceMappingURL=mixin.d.ts.map