import type { Transaction } from "../../transactions/index.js";
import type { CallEnv, OrderAddress, OrderObject, PassportObject } from "../common.js";
import type { AccountOrMark_Address, ManyAccountOrMark_Address } from "../local/index.js";
import type { ObjectService } from "../query/object.js";
import type { ReceivedObjects, ReceivedObjectsOrRecently } from "../query/received.js";
import type { CallResult } from "./base.js";
import { CallBase } from "./base.js";
import type { GuardSubmissionToFill } from "./guard.js";
import type { ProgressNext } from "./progress.js";
import type { CompensationClaim } from "./service.js";
export interface CallOrder_Data {
    object: string;
    agent?: ManyAccountOrMark_Address;
    required_info?: string | null;
    progress?: {
        operation: ProgressNext;
        hold: boolean;
        adminUnhold?: boolean;
        message?: string;
    } | {
        operation: ProgressNext;
        message?: string;
    };
    arb_confirm?: {
        arb: string;
        confirm: boolean;
        description?: string;
        proposition?: string[];
    };
    arb_objection?: {
        arb: string;
        objection: string;
    };
    arb_claim_compensation?: {
        arb: string;
    };
    receive?: ReceivedObjectsOrRecently;
    transfer_to?: AccountOrMark_Address;
}
interface ServiceInfo {
    object: ObjectService;
    type: string;
}
export declare class CallOrder extends CallBase {
    data: CallOrder_Data;
    object_address: string | undefined;
    service: ServiceInfo | undefined;
    constructor(data: CallOrder_Data);
    protected prepare(env: CallEnv): Promise<void>;
    call(env: CallEnv): Promise<CallResult>;
    private get_service;
    operate(env: CallEnv, tx: Transaction, _passport?: PassportObject, _submission?: GuardSubmissionToFill[]): Promise<void>;
    private get_arb;
    private check_arb;
}
export declare function orderFn(name: string): string;
export declare const MAX_AGENT_COUNT = 10;
export declare const MAX_DISPUTE_COUNT = 10;
export interface OwnerChange {
    order: OrderObject;
    new_owner: AccountOrMark_Address;
}
export interface AgentSet {
    order: OrderObject;
    agents: string[];
}
export declare function create(tx: Transaction, order: OrderObject): OrderAddress;
export declare function owner_change(tx: Transaction, param: OwnerChange): Promise<void>;
export declare function agent_set(tx: Transaction, param: AgentSet): void;
export declare function owner_receive(tx: Transaction, order: OrderObject, param: ReceivedObjects): Promise<void | number>;
export declare function order_required_info_update(tx: Transaction, order: OrderObject, im_or_proof: string | null | undefined): Promise<void>;
export declare function compensation_claim(tx: Transaction, param: CompensationClaim): void;
export {};
