import { Address } from 'iexec';
import { PublishedApporder, PublishedDatasetorder, PublishedRequestorder, PublishedWorkerpoolorder } from 'iexec/IExecOrderbookModule';
import { AddressOrENS, ParamSet, ParamSetCID } from './common.js';
export type EnsureParamsMessage = {
    message: 'ENSURE_PARAMS';
};
export type EnsureParamsUploadMessage = {
    message: 'ENSURE_PARAMS_UPLOAD';
};
export type EnsureParamsSuccessMessage = {
    message: 'ENSURE_PARAMS_SUCCESS';
    paramSet: ParamSet;
    cid: string;
};
export type FetchAppOrderMessage = {
    message: 'FETCH_APP_ORDER';
};
export type FetchAppOrderSuccessMessage = {
    message: 'FETCH_APP_ORDER_SUCCESS';
    order: PublishedApporder;
};
export type FetchDatasetOrderMessage = {
    message: 'FETCH_DATASET_ORDER';
};
export type FetchDatasetOrderSuccessMessage = {
    message: 'FETCH_DATASET_ORDER_SUCCESS';
    order: PublishedApporder;
};
export type FetchWorkerpoolOrderMessage = {
    message: 'FETCH_WORKERPOOL_ORDER';
};
export type FetchWorkerpoolOrderSuccessMessage = {
    message: 'FETCH_WORKERPOOL_ORDER_SUCCESS';
    order: PublishedApporder;
};
export type RequestOrderSignatureSignRequestMessage = {
    message: 'REQUEST_ORDER_SIGNATURE_SIGN_REQUEST';
    order: PublishedApporder;
};
export type RequestOrderSignatureSuccessMessage = {
    message: 'REQUEST_ORDER_SIGNATURE_SUCCESS';
    order: PublishedApporder;
};
export type MatchOrdersSignTxRequestMessage = {
    message: 'MATCH_ORDERS_SIGN_TX_REQUEST';
    apporder: PublishedApporder;
    datasetorder: PublishedDatasetorder;
    workerpoolorder: PublishedWorkerpoolorder;
    requestorder: PublishedRequestorder;
};
export type MatchOrdersSuccessMessage = {
    message: 'MATCH_ORDERS_SUCCESS';
    dealid: string;
    txHash: string;
};
export type TaskUpdatedMessage = {
    message: 'TASK_UPDATED';
    dealid: string;
    taskid: string;
    status: string;
};
export type UpdateTaskCompletedMessage = {
    message: 'UPDATE_TASK_COMPLETED';
};
export type UpdateOracleMessage = EnsureParamsMessage | EnsureParamsUploadMessage | EnsureParamsSuccessMessage | FetchAppOrderMessage | FetchAppOrderSuccessMessage | FetchDatasetOrderMessage | FetchDatasetOrderSuccessMessage | FetchWorkerpoolOrderMessage | FetchWorkerpoolOrderSuccessMessage | RequestOrderSignatureSignRequestMessage | RequestOrderSignatureSuccessMessage | MatchOrdersSignTxRequestMessage | MatchOrdersSuccessMessage | TaskUpdatedMessage | UpdateTaskCompletedMessage;
export type TaskTimedOutMessage = {
    message: 'TASK_TIMEDOUT';
};
export type TaskCompletedMessage = {
    message: 'TASK_COMPLETED';
};
export type TaskExecutionMessage = TaskTimedOutMessage | TaskCompletedMessage | TaskUpdatedMessage;
/**
 * Parameters to update an oracle.
 */
export type UpdateOracleParams = {
    /**
     * Identifier of the oracle to update.
     */
    paramSetOrCid: ParamSet | ParamSetCID;
    /**
     *  whether to use a voucher for payment (default: false)
     */
    useVoucher?: boolean;
    /**
     * Chain ID of targeted blockchain for cross-chain update.
     */
    targetBlockchains?: number[];
};
/**
 * Options for updating an oracle.
 */
export type UpdateOracleOptions = {
    oracleApp?: AddressOrENS;
    oracleAppWhitelist?: AddressOrENS;
    oracleContract?: Address;
    workerpool?: AddressOrENS;
    ipfsGateway?: string;
    ipfsNode?: string;
};
