import { BaseCoreSDK } from "./../mixins/base-core-sdk";
import * as subgraph from "../subgraph";
import { TransactionResponse, TransactionRequest, Web3LibAdapter } from "@bosonprotocol/common";
import { BigNumberish } from "@ethersproject/bignumber";
import { BytesLike } from "@ethersproject/bytes";
import { SingleDisputeQueryVariables } from "./subgraph";
import { getSignatureParameters, StructuredData } from "../utils/signature";
export declare class DisputesMixin<T extends Web3LibAdapter> extends BaseCoreSDK<T> {
    /**
     * Returns dispute entity from subgraph.
     * @param disputeId - ID of dispute entity.
     * @param queryVars - Optional query variables to skip, order or filter.
     * @returns Dispute entity from subgraph.
     */
    getDisputeById(disputeId: BigNumberish, queryVars?: SingleDisputeQueryVariables): Promise<subgraph.DisputeFieldsFragment>;
    /**
     * Returns dispute entities from subgraph.
     * @param queryVars - Optional query variables to skip, order or filter.
     * @returns Dispute entities from subgraph.
     */
    getDisputes(queryVars?: subgraph.GetDisputesQueryQueryVariables): Promise<subgraph.DisputeFieldsFragment[]>;
    /**
     * Raises a dispute by calling the `DisputeHandlerContract`.
     * @param exchangeId - ID of exchange to dispute.
     * @returns Transaction response.
     */
    raiseDispute(exchangeId: BigNumberish, returnTxInfo: true): Promise<TransactionRequest>;
    raiseDispute(exchangeId: BigNumberish, returnTxInfo?: false | undefined): Promise<TransactionResponse>;
    /**
     * Retracts a dispute by calling the `DisputeHandlerContract`.
     * @param exchangeId - ID of disputed exchange.
     * @returns Transaction response.
     */
    retractDispute(exchangeId: BigNumberish, returnTxInfo: true): Promise<TransactionRequest>;
    retractDispute(exchangeId: BigNumberish, returnTxInfo?: false | undefined): Promise<TransactionResponse>;
    /**
     * Extends the dispute timeout by calling the `DisputeHandlerContract`.
     * @param exchangeId - ID of disputed exchange.
     * @param newDisputeTimeout - New dispute timeout in seconds.
     * @returns Transaction response.
     */
    extendDisputeTimeout(exchangeId: BigNumberish, newDisputeTimeout: BigNumberish, returnTxInfo: true): Promise<TransactionRequest>;
    extendDisputeTimeout(exchangeId: BigNumberish, newDisputeTimeout: BigNumberish, returnTxInfo?: false | undefined): Promise<TransactionResponse>;
    /**
     * Expires a dispute by calling the `DisputeHandlerContract`.
     * @param exchangeId - ID of disputed exchange.
     * @returns Transaction response.
     */
    expireDispute(exchangeId: BigNumberish, returnTxInfo: true): Promise<TransactionRequest>;
    expireDispute(exchangeId: BigNumberish, returnTxInfo?: false | undefined): Promise<TransactionResponse>;
    /**
     * Expires many disputes by calling the `DisputeHandlerContract`.
     * @param exchangeIds - IDs of disputed exchanges.
     * @returns Transaction response.
     */
    expireDisputeBatch(exchangeIds: BigNumberish[], returnTxInfo: true): Promise<TransactionRequest>;
    expireDisputeBatch(exchangeIds: BigNumberish[], returnTxInfo?: false | undefined): Promise<TransactionResponse>;
    /**
     * Resolves dispute by calling the `DisputeHandlerContract`. If caller is `buyer` then
     * signature of `seller` is required as an argument. If caller if `seller` then vice-versa.
     * The signature can be retrieved by calling the method
     * `CoreSDK.signDisputeResolutionProposal`.
     * @param args - Dispute resolve arguments:
     * - `args.exchangeId` - ID of disputed exchange.
     * - `args.buyerPercent` - Percentage of deposit the buyer gets.
     * - `args.sigR` - r signature value of counterparty.
     * - `args.sigS` - s signature value of counterparty.
     * - `args.sigV` - v signature value of counterparty.
     * @returns Transaction response.
     */
    resolveDispute(args: {
        exchangeId: BigNumberish;
        buyerPercentBasisPoints: BigNumberish;
        sigR: BytesLike;
        sigS: BytesLike;
        sigV: BigNumberish;
        returnTxInfo: true;
    } | {
        exchangeId: BigNumberish;
        buyerPercentBasisPoints: BigNumberish;
        signature: string;
        returnTxInfo: true;
    }): Promise<TransactionRequest>;
    resolveDispute(args: {
        exchangeId: BigNumberish;
        buyerPercentBasisPoints: BigNumberish;
        sigR: BytesLike;
        sigS: BytesLike;
        sigV: BigNumberish;
        returnTxInfo?: false | undefined;
    } | {
        exchangeId: BigNumberish;
        buyerPercentBasisPoints: BigNumberish;
        signature: string;
        returnTxInfo?: false | undefined;
    }): Promise<TransactionResponse>;
    /**
     * Escalates dispute by calling the `DisputeHandlerContract`.
     * @param exchangeId - ID of disputed exchange.
     * @returns Transaction response.
     */
    escalateDispute(exchangeId: BigNumberish, returnTxInfo: true): Promise<TransactionRequest>;
    escalateDispute(exchangeId: BigNumberish, returnTxInfo?: false | undefined): Promise<TransactionResponse>;
    /**
     * Decides dispute by calling the `DisputeHandlerContract`.
     * @param exchangeId - ID of disputed exchange.
     * @param buyerPercent - Percentage of deposit buyer gets.
     * @returns Transaction response.
     */
    decideDispute(exchangeId: BigNumberish, buyerPercent: BigNumberish, returnTxInfo: true): Promise<TransactionRequest>;
    decideDispute(exchangeId: BigNumberish, buyerPercent: BigNumberish, returnTxInfo?: false | undefined): Promise<TransactionResponse>;
    /**
     * Refuses escalated dispute by calling the `DisputeHandlerContract`.
     * @param exchangeId - ID of disputed exchange.
     * @returns Transaction response.
     */
    refuseEscalatedDispute(exchangeId: BigNumberish, returnTxInfo: true): Promise<TransactionRequest>;
    refuseEscalatedDispute(exchangeId: BigNumberish, returnTxInfo?: false | undefined): Promise<TransactionResponse>;
    /**
     * Expires escalated dispute by calling the `DisputeHandlerContract`.
     * @param exchangeId - ID of disputed exchange.
     * @returns Transaction response.
     */
    expireEscalatedDispute(exchangeId: BigNumberish, returnTxInfo: true): Promise<TransactionRequest>;
    expireEscalatedDispute(exchangeId: BigNumberish, returnTxInfo?: false | undefined): Promise<TransactionResponse>;
    /**
     * Signs dispute resolution message.
     * @param args - Dispute resolve arguments:
     * - `args.exchangeId` - ID of disputed exchange.
     * - `args.buyerPercentBasisPoints` - Percentage of deposit the buyer gets.
     * @returns Signature.
     */
    signDisputeResolutionProposal(args: {
        exchangeId: BigNumberish;
        buyerPercentBasisPoints: BigNumberish;
        returnTypedDataToSign: true;
    }): Promise<StructuredData>;
    signDisputeResolutionProposal(args: {
        exchangeId: BigNumberish;
        buyerPercentBasisPoints: BigNumberish;
        returnTypedDataToSign?: false;
    }): Promise<ReturnType<typeof getSignatureParameters>>;
}
//# sourceMappingURL=mixin.d.ts.map