import type { Transaction } from "../../transactions/index.js";
import type { CallEnv, PassportObject, CoinParam, TypedPermissionObject, PermissionObject, ArbitrationObject, ArbitrationAddress, BalanceType, ArbObject, NamedObject, PaymentAddress } from "../common.js";
import type { VotingGuard } from "../query/object.js";
import type { CallResult } from "./base.js";
import { CallBase } from "./base.js";
import type { GuardSubmissionToFill } from "./guard.js";
import type { ReceivedObjectsOrRecently } from "../query/received.js";
export interface CallArbitration_Data {
    object: TypedPermissionObject;
    dispute?: {
        order: string;
        description: string;
        proposition: string[];
        fee: CoinParam;
        namedArb?: NamedObject;
    };
    description?: string;
    location?: string;
    fee?: BalanceType;
    pause?: boolean;
    confirm?: {
        arb: string;
        voting_deadline: number | null;
    };
    voting_deadline_change?: {
        arb: string;
        voting_deadline: number | null;
    };
    vote?: {
        arb: string;
        votes: number[];
        voting_guard?: string;
    };
    feedback?: {
        arb: string;
        feedback: string;
    };
    arbitration?: {
        arb: string;
        feedback: string;
        indemnity: number;
    };
    reset?: {
        arb: string;
        feedback: string;
    };
    arb_withdraw?: {
        arb: string;
    };
    fees_transfer?: {
        to: {
            allocation: string;
        } | {
            treasury: string;
        };
        payment_remark: string;
        payment_index: number;
        newPayment?: NamedObject;
    };
    usage_guard?: string | null;
    voting_guard?: {
        op: "add" | "set";
        guards: VotingGuard[];
    } | {
        op: "remove";
        guards: string[];
    } | {
        op: "clear";
    };
    owner_receive?: ReceivedObjectsOrRecently;
    um?: string | null;
}
export declare class CallArbitration extends CallBase {
    data: CallArbitration_Data;
    object_address: string | undefined;
    permission_address: string | undefined;
    new_permission_description: string | undefined;
    parameter_type: string | undefined;
    constructor(data: CallArbitration_Data);
    protected prepare(env: CallEnv): Promise<void>;
    call(env: CallEnv): Promise<CallResult>;
    operate(env: CallEnv, tx: Transaction, passport?: PassportObject, submission?: GuardSubmissionToFill[]): Promise<void>;
}
export declare const MAX_VOTING_GUARD_COUNT = 50;
export declare function create(tx: Transaction, arbitration: ArbitrationObject, parameter_type: string): ArbitrationAddress;
export declare function newArbitration(tx: Transaction, parameter_type: string, permission: PermissionObject, description: string, passport?: PassportObject): ArbitrationObject;
export declare function description_set(tx: Transaction, arbitration: ArbitrationObject, parameter_type: string, permission: PermissionObject, description: string, passport?: PassportObject): void;
export declare function location_set(tx: Transaction, arbitration: ArbitrationObject, parameter_type: string, permission: PermissionObject, location: string, passport?: PassportObject): void;
export declare function voting_guard_add(tx: Transaction, arbitration: ArbitrationObject, parameter_type: string, permission: PermissionObject, voting_guards: VotingGuard[], passport?: PassportObject): void;
export declare function voting_guard_remove(tx: Transaction, arbitration: ArbitrationObject, parameter_type: string, permission: PermissionObject, guards: string[], passport?: PassportObject): void;
export declare function voting_guard_clear(tx: Transaction, arbitration: ArbitrationObject, parameter_type: string, permission: PermissionObject, passport?: PassportObject): void;
export declare function usage_guard_set(tx: Transaction, arbitration: ArbitrationObject, parameter_type: string, permission: PermissionObject, guard: string, passport?: PassportObject): void;
export declare function usage_guard_none(tx: Transaction, arbitration: ArbitrationObject, parameter_type: string, permission: PermissionObject, passport?: PassportObject): void;
export declare function pause(tx: Transaction, arbitration: ArbitrationObject, parameter_type: string, permission: PermissionObject, pause: boolean, passport?: PassportObject): void;
export declare function fee_set(tx: Transaction, arbitration: ArbitrationObject, parameter_type: string, permission: PermissionObject, fee: BalanceType, passport?: PassportObject): void;
export declare function dispute(env: CallEnv, tx: Transaction, arbitration: ArbitrationObject, parameter_type: string, order: string, description: string, proposition: string[], fee: CoinParam, passport?: PassportObject): Promise<ArbObject>;
export declare function vote(tx: Transaction, arbitration: ArbitrationObject, parameter_type: string, permission: PermissionObject, arb: string, votes: number[], voting_guard?: string, passport?: PassportObject): void;
export declare function arbitration(tx: Transaction, arbitration: ArbitrationObject, parameter_type: string, permission: PermissionObject, arb: string, feedback: string, indemnity: BalanceType, passport?: PassportObject): void;
export declare function feedback(tx: Transaction, arbitration: ArbitrationObject, parameter_type: string, permission: PermissionObject, arb: string, feedback: string, passport?: PassportObject): void;
export declare function confirm(tx: Transaction, arbitration: ArbitrationObject, parameter_type: string, permission: PermissionObject, arb: string, voting_deadline: number | null, passport?: PassportObject): void;
export declare function voting_deadline_change(tx: Transaction, arbitration: ArbitrationObject, parameter_type: string, permission: PermissionObject, arb: string, voting_deadline: number | null, passport?: PassportObject): void;
export declare function reset(tx: Transaction, arbitration: ArbitrationObject, parameter_type: string, permission: PermissionObject, arb: string, feedback: string, passport?: PassportObject): void;
export declare function arb_withdraw(tx: Transaction, arbitration: ArbitrationObject, parameter_type: string, permission: PermissionObject, arb: string, passport?: PassportObject): void;
export declare function fees_alloc(tx: Transaction, arbitration: ArbitrationObject, parameter_type: string, permission: PermissionObject, allocation: string, payment_remark: string, payment_index: number, passport?: PassportObject): PaymentAddress;
export declare function fees_transfer(tx: Transaction, arbitration: ArbitrationObject, parameter_type: string, permission: PermissionObject, treasury: string, payment_remark: string, payment_index: number, passport?: PassportObject): PaymentAddress;
export declare function um_set(tx: Transaction, arbitration: ArbitrationObject, parameter_type: string, permission: PermissionObject, um: string | null, passport?: PassportObject): void;
