/**
  Juju CAASOperator version 1.
  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 APIHostPortsResult {
    servers: HostPort[][];
}
export interface Address {
    cidr?: string;
    "config-type"?: string;
    "is-secondary"?: boolean;
    scope: string;
    "space-id"?: string;
    "space-name"?: string;
    type: string;
    value: string;
}
export interface ApplicationCharm {
    "charm-modified-version": number;
    "deployment-mode"?: string;
    "force-upgrade"?: boolean;
    sha256: string;
    url: string;
}
export interface ApplicationCharmResult {
    error?: Error;
    result?: ApplicationCharm;
}
export interface ApplicationCharmResults {
    results: ApplicationCharmResult[];
}
export interface Binary {
    Arch: string;
    Build: number;
    Major: number;
    Minor: number;
    Number: Number;
    Patch: number;
    Release: string;
    Tag: string;
}
export interface Entities {
    entities: Entity[];
}
export interface EntitiesVersion {
    "agent-tools": EntityVersion[];
}
export interface Entity {
    tag: string;
}
export interface EntityStatusArgs {
    data: AdditionalProperties;
    info: string;
    status: string;
    tag: string;
}
export interface EntityString {
    tag: string;
    value: string;
}
export interface EntityVersion {
    tag: string;
    tools: Version;
}
export interface Error {
    code: string;
    info?: AdditionalProperties;
    message: string;
}
export interface ErrorResult {
    error?: Error;
}
export interface ErrorResults {
    results: ErrorResult[];
}
export interface HostPort {
    Address: Address;
    cidr?: string;
    "config-type"?: string;
    "is-secondary"?: boolean;
    port: number;
    scope: string;
    "space-id"?: string;
    "space-name"?: string;
    type: string;
    value: string;
}
export interface LifeResult {
    error?: Error;
    life: string;
}
export interface LifeResults {
    results: LifeResult[];
}
export interface ModelResult {
    error?: Error;
    name: string;
    type: string;
    uuid: string;
}
export interface NotifyWatchResult {
    NotifyWatcherId: string;
    error?: Error;
}
export interface NotifyWatchResults {
    results: NotifyWatchResult[];
}
export interface Number {
    Build: number;
    Major: number;
    Minor: number;
    Patch: number;
    Tag: string;
}
export interface SetPodSpecParams {
    specs: EntityString[];
}
export interface SetStatus {
    entities: EntityStatusArgs[];
}
export interface StringResult {
    error?: Error;
    result: string;
}
export interface StringsResult {
    error?: Error;
    result?: string[];
}
export interface StringsWatchResult {
    changes?: string[];
    error?: Error;
    "watcher-id": string;
}
export interface StringsWatchResults {
    results: StringsWatchResult[];
}
export interface Version {
    version: Binary;
}
export interface WatchContainerStartArg {
    container?: string;
    entity: Entity;
}
export interface WatchContainerStartArgs {
    args: WatchContainerStartArg[];
}
export interface AdditionalProperties {
    [key: string]: any;
}
/**
  Facade is the CAAS operator API facade.
*/
declare class CAASOperatorV1 implements Facade {
    static NAME: string;
    static VERSION: number;
    NAME: string;
    VERSION: number;
    _transport: Transport;
    _info: ConnectionInfo;
    constructor(transport: Transport, info: ConnectionInfo);
    /**
      APIAddresses returns the list of addresses used to connect to the API.
    */
    aPIAddresses(params: any): Promise<StringsResult>;
    /**
      APIHostPorts returns the API server addresses.
    */
    aPIHostPorts(params: any): Promise<APIHostPortsResult>;
    /**
      Charm returns the charm info for all given applications.
    */
    charm(params: Entities): Promise<ApplicationCharmResults>;
    /**
      CurrentModel returns the name and UUID for the current juju model.
    */
    currentModel(params: any): Promise<ModelResult>;
    /**
      Life returns the life status of every supplied entity, where available.
    */
    life(params: Entities): Promise<LifeResults>;
    /**
      ModelUUID returns the model UUID that this facade is used to operate.
      It is implemented here directly as a result of removing it from
      embedded APIAddresser *without* bumping the facade version.
      It should be blanked when this facade version is next incremented.
    */
    modelUUID(params: any): Promise<StringResult>;
    /**
      Remove removes every given entity from state, calling EnsureDead
      first, then Remove. It will fail if the entity is not present.
    */
    remove(params: Entities): Promise<ErrorResults>;
    /**
      SetPodSpec sets the container specs for a set of applications.
      TODO(juju3) - remove
    */
    setPodSpec(params: SetPodSpecParams): Promise<ErrorResults>;
    /**
      SetStatus sets the status of each given entity.
    */
    setStatus(params: SetStatus): Promise<ErrorResults>;
    /**
      SetTools updates the recorded tools version for the agents.
    */
    setTools(params: EntitiesVersion): Promise<ErrorResults>;
    /**
      Watch starts an NotifyWatcher for each given entity.
    */
    watch(params: Entities): Promise<NotifyWatchResults>;
    /**
      WatchAPIHostPorts watches the API server addresses.
    */
    watchAPIHostPorts(params: any): Promise<NotifyWatchResult>;
    /**
      WatchContainerStart starts a StringWatcher to watch for container start events
      on the CAAS api for a specific application and container.
    */
    watchContainerStart(params: WatchContainerStartArgs): Promise<StringsWatchResults>;
    /**
      WatchUnits starts a StringsWatcher to watch changes to the
      lifecycle states of units for the specified applications in
      this model.
    */
    watchUnits(params: Entities): Promise<StringsWatchResults>;
}
export default CAASOperatorV1;
