/**
  Juju MigrationMaster version 2.
  This facade is available on:
    Controller-machine-agent
    Machine-agent
    Unit-agent
    Models

  NOTE: This file was generated using the Juju schema
  from Juju 2.8.2 at the git SHA 516c1904ce.
  Do not manually edit this file.
*/
import { ConnectionInfo, Transport } from "../../client.js";
import { Facade } from "../../types.js";
export interface Error {
    code: string;
    info?: AdditionalProperties;
    message: string;
}
export interface MasterMigrationStatus {
    "migration-id": string;
    phase: string;
    "phase-changed-time": string;
    spec: MigrationSpec;
}
export interface MigrationModelInfo {
    "agent-version": string;
    "controller-agent-version": Number;
    name: string;
    "owner-tag": string;
    uuid: string;
}
export interface MigrationSpec {
    "model-tag": string;
    "target-info": MigrationTargetInfo;
}
export interface MigrationTargetInfo {
    addrs: string[];
    "auth-tag": string;
    "ca-cert": string;
    "controller-alias"?: string;
    "controller-tag": string;
    macaroons?: string;
    password?: string;
}
export interface MinionReports {
    failed: string[];
    "migration-id": string;
    phase: string;
    "success-count": number;
    "unknown-count": number;
    "unknown-sample": string[];
}
export interface NotifyWatchResult {
    NotifyWatcherId: string;
    error?: Error;
}
export interface Number {
    Build: number;
    Major: number;
    Minor: number;
    Patch: number;
    Tag: string;
}
export interface ProcessRelations {
    "controller-alias": string;
}
export interface SerializedModel {
    bytes: number[];
    charms: string[];
    resources: SerializedModelResource[];
    tools: SerializedModelTools[];
}
export interface SerializedModelResource {
    application: string;
    "application-revision": SerializedModelResourceRevision;
    "charmstore-revision": SerializedModelResourceRevision;
    name: string;
    "unit-revisions": Record<string, SerializedModelResourceRevision>;
}
export interface SerializedModelResourceRevision {
    description: string;
    fingerprint: string;
    origin: string;
    path: string;
    revision: number;
    size: number;
    timestamp: string;
    type: string;
    username?: string;
}
export interface SerializedModelTools {
    uri: string;
    version: string;
}
export interface SetMigrationPhaseArgs {
    phase: string;
}
export interface SetMigrationStatusMessageArgs {
    message: string;
}
export interface AdditionalProperties {
    [key: string]: any;
}
/**
  API implements the API required for the model migration
  master worker.
*/
declare class MigrationMasterV2 implements Facade {
    static NAME: string;
    static VERSION: number;
    NAME: string;
    VERSION: number;
    _transport: Transport;
    _info: ConnectionInfo;
    constructor(transport: Transport, info: ConnectionInfo);
    /**
      Export serializes the model associated with the API connection.
    */
    export(params: any): Promise<SerializedModel>;
    /**
      MigrationStatus returns the details and progress of the latest
      model migration.
    */
    migrationStatus(params: any): Promise<MasterMigrationStatus>;
    /**
      MinionReports returns details of the reports made by migration
      minions to the controller for the current migration phase.
    */
    minionReports(params: any): Promise<MinionReports>;
    /**
      ModelInfo returns essential information about the model to be
      migrated.
    */
    modelInfo(params: any): Promise<MigrationModelInfo>;
    /**
      Prechecks performs pre-migration checks on the model and
      (source) controller.
    */
    prechecks(params: any): Promise<any>;
    /**
      ProcessRelations processes any relations that need updating after an export.
      This should help fix any remoteApplications that have been migrated.
    */
    processRelations(params: ProcessRelations): Promise<any>;
    /**
      Reap removes all documents for the model associated with the API
      connection.
    */
    reap(params: any): Promise<any>;
    /**
      SetPhase sets the phase of the active model migration. The provided
      phase must be a valid phase value, for example QUIESCE" or
      "ABORT". See the core/migration package for the complete list.
    */
    setPhase(params: SetMigrationPhaseArgs): Promise<any>;
    /**
      SetStatusMessage sets a human readable status message containing
      information about the migration's progress. This will be shown in
      status output shown to the end user.
    */
    setStatusMessage(params: SetMigrationStatusMessageArgs): Promise<any>;
    /**
      Watch starts watching for an active migration for the model
      associated with the API connection. The returned id should be used
      with the NotifyWatcher facade to receive events.
    */
    watch(params: any): Promise<NotifyWatchResult>;
    /**
      WatchMinionReports sets up a watcher which reports when a report
      for a migration minion has arrived.
    */
    watchMinionReports(params: any): Promise<NotifyWatchResult>;
}
export default MigrationMasterV2;
