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

  NOTE: This file was generated using the Juju schema
  from Juju 3.3 at the git SHA 65fa4c1ee5.
  Do not manually edit this file.
*/
import { ConnectionInfo, Transport } from "../../client.js";
import { Facade } from "../../types.js";
export interface Entities {
    entities: Entity[];
}
export interface EntitiesResult {
    entities: Entity[];
    error?: Error;
}
export interface EntitiesResults {
    results: EntitiesResult[];
}
export interface Entity {
    tag: string;
}
export interface EntityStatusArgs {
    data: AdditionalProperties;
    info: string;
    status: string;
    tag: string;
}
export interface Error {
    code: string;
    info?: AdditionalProperties;
    message: string;
}
export interface ErrorResult {
    error?: Error;
}
export interface ErrorResults {
    results: ErrorResult[];
}
export interface NotifyWatchResult {
    NotifyWatcherId: string;
    error?: Error;
}
export interface NotifyWatchResults {
    results: NotifyWatchResult[];
}
export interface PinApplicationResult {
    "application-name": string;
    error?: Error;
}
export interface PinApplicationsResults {
    results: PinApplicationResult[];
}
export interface PinnedLeadershipResult {
    error?: Error;
    result?: Record<string, string[]>;
}
export interface SetStatus {
    entities: EntityStatusArgs[];
}
export interface StringResult {
    error?: Error;
    result: string;
}
export interface StringResults {
    results: StringResult[];
}
export interface UpdateChannelArg {
    channel: string;
    force: boolean;
    tag: Entity;
}
export interface UpdateChannelArgs {
    args: UpdateChannelArg[];
}
export interface UpgradeSeriesStartUnitCompletionParam {
    entities: Entity[];
    message: string;
}
export interface UpgradeSeriesStatusParam {
    entity: Entity;
    message: string;
    status: string;
}
export interface UpgradeSeriesStatusParams {
    params: UpgradeSeriesStatusParam[];
}
export interface UpgradeSeriesStatusResult {
    error?: Error;
    status?: string;
    target?: string;
}
export interface UpgradeSeriesStatusResults {
    results?: UpgradeSeriesStatusResult[];
}
export interface AdditionalProperties {
    [key: string]: any;
}
/**
  API serves methods required by the machine agent upgrade-machine worker.
*/
declare class UpgradeSeriesV3 implements Facade {
    static NAME: string;
    static VERSION: number;
    NAME: string;
    VERSION: number;
    _transport: Transport;
    _info: ConnectionInfo;
    constructor(transport: Transport, info: ConnectionInfo);
    /**
      CurrentSeries returns what Juju thinks the current series of the machine is.
      Note that a machine could have been upgraded out-of-band by running
      do-release-upgrade outside of the upgrade-machine workflow,
      making this value incorrect.
    */
    currentSeries(params: Entities): Promise<StringResults>;
    /**
      FinishUpgradeSeries is the last action in the upgrade workflow and is
      called after all machine and unit statuses are "completed".
      It updates the machine series to reflect the completed upgrade, then
      removes the upgrade-machine lock.
    */
    finishUpgradeSeries(params: UpdateChannelArgs): Promise<ErrorResults>;
    /**
      MachineStatus gets the current upgrade-machine status of a machine.
    */
    machineStatus(params: Entities): Promise<UpgradeSeriesStatusResults>;
    /**
      PinMachineApplications pins leadership for applications represented by units
      running on the auth'd machine.
    */
    pinMachineApplications(params: any): Promise<PinApplicationsResults>;
    /**
      PinnedLeadership returns all pinned applications and the entities that
      require their pinned behaviour, for leadership in the current model.
    */
    pinnedLeadership(params: any): Promise<PinnedLeadershipResult>;
    /**
      SetInstanceStatus sets the status of the machine.
    */
    setInstanceStatus(params: SetStatus): Promise<ErrorResults>;
    /**
      SetMachineStatus sets the current upgrade-machine status of a machine.
    */
    setMachineStatus(params: UpgradeSeriesStatusParams): Promise<ErrorResults>;
    /**
      SetUpgradeSeriesUnitStatus sets the upgrade series status of the unit.
      If no upgrade is in progress an error is returned instead.
    */
    setUpgradeSeriesUnitStatus(params: UpgradeSeriesStatusParams): Promise<ErrorResults>;
    /**
      StartUnitCompletion starts the upgrade series completion phase for all subordinate
      units of a given machine.
    */
    startUnitCompletion(params: UpgradeSeriesStartUnitCompletionParam): Promise<ErrorResults>;
    /**
      TargetSeries returns the series that a machine has been locked
      for upgrading to.
    */
    targetSeries(params: Entities): Promise<StringResults>;
    /**
      UnitsCompleted returns the units running on this machine that have completed
      the upgrade-machine workflow and are in their normal running state.
    */
    unitsCompleted(params: Entities): Promise<EntitiesResults>;
    /**
      UnitsPrepared returns the units running on this machine that have completed
      their upgrade-machine preparation, and are ready to be stopped and have their
      unit agent services converted for the target series.
    */
    unitsPrepared(params: Entities): Promise<EntitiesResults>;
    /**
      UnpinMachineApplications unpins leadership for applications represented by
      units running on the auth'd machine.
    */
    unpinMachineApplications(params: any): Promise<PinApplicationsResults>;
    /**
      UpgradeSeriesUnitStatus returns the current preparation status of an
      upgrading unit.
      If no series upgrade is in progress an error is returned instead.
    */
    upgradeSeriesUnitStatus(params: Entities): Promise<UpgradeSeriesStatusResults>;
    /**
      WatchUpgradeSeriesNotifications returns a NotifyWatcher for observing changes to upgrade series locks.
    */
    watchUpgradeSeriesNotifications(params: Entities): Promise<NotifyWatchResults>;
}
export default UpgradeSeriesV3;
