/**
  Juju Client version 7.
  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 AllWatcherId {
    "watcher-id": string;
}
export interface ApplicationOfferStatus {
    "active-connected-count": number;
    "application-name": string;
    charm: string;
    endpoints: Record<string, RemoteEndpoint>;
    err?: Error;
    "offer-name": string;
    "total-connected-count": number;
}
export interface ApplicationStatus {
    base: Base;
    "can-upgrade-to": string;
    charm: string;
    "charm-channel"?: string;
    "charm-profile": string;
    "charm-version": string;
    "endpoint-bindings": Record<string, string>;
    err?: Error;
    exposed: boolean;
    "exposed-endpoints"?: Record<string, ExposedEndpoint>;
    int?: number;
    life: string;
    "meter-statuses": Record<string, MeterStatus>;
    "provider-id"?: string;
    "public-address": string;
    relations: Record<string, string[]>;
    status: DetailedStatus;
    "subordinate-to": string[];
    units: Record<string, UnitStatus>;
    "workload-version": string;
}
export interface Base {
    channel: string;
    name: string;
}
export interface Binary {
    Arch: string;
    Build: number;
    Major: number;
    Minor: number;
    Number: Number;
    Patch: number;
    Release: string;
    Tag: string;
}
export interface BranchStatus {
    "assigned-units": Record<string, string[]>;
    created: number;
    "created-by": string;
}
export interface DetailedStatus {
    data: AdditionalProperties;
    err?: Error;
    info: string;
    kind: string;
    life: string;
    since: string;
    status: string;
    version: string;
}
export interface EndpointStatus {
    application: string;
    name: string;
    role: string;
    subordinate: boolean;
}
export interface EntityStatus {
    data?: AdditionalProperties;
    info: string;
    since: string;
    status: string;
}
export interface Error {
    code: string;
    info?: AdditionalProperties;
    message: string;
}
export interface ExposedEndpoint {
    "expose-to-cidrs"?: string[];
    "expose-to-spaces"?: string[];
}
export interface FilesystemAttachmentDetails {
    FilesystemAttachmentInfo: FilesystemAttachmentInfo;
    life?: string;
    "mount-point"?: string;
    "read-only"?: boolean;
}
export interface FilesystemAttachmentInfo {
    "mount-point"?: string;
    "read-only"?: boolean;
}
export interface FilesystemDetails {
    "filesystem-tag": string;
    info: FilesystemInfo;
    life?: string;
    "machine-attachments"?: Record<string, FilesystemAttachmentDetails>;
    status: EntityStatus;
    storage?: StorageDetails;
    "unit-attachments"?: Record<string, FilesystemAttachmentDetails>;
    "volume-tag"?: string;
}
export interface FilesystemInfo {
    "filesystem-id": string;
    pool: string;
    size: number;
}
export interface FindToolsParams {
    agentstream: string;
    arch: string;
    major: number;
    number: Number;
    "os-type": string;
}
export interface FindToolsResult {
    error?: Error;
    list: Tools[];
}
export interface FullStatus {
    applications: Record<string, ApplicationStatus>;
    branches: Record<string, BranchStatus>;
    "controller-timestamp": string;
    filesystems?: FilesystemDetails[];
    machines: Record<string, MachineStatus>;
    model: ModelStatusInfo;
    offers: Record<string, ApplicationOfferStatus>;
    relations: RelationStatus[];
    "remote-applications": Record<string, RemoteApplicationStatus>;
    storage?: StorageDetails[];
    volumes?: VolumeDetails[];
}
export interface History {
    error?: Error;
    statuses: DetailedStatus[];
}
export interface LXDProfile {
    config: Record<string, string>;
    description: string;
    devices: Record<string, Record<string, string>>;
}
export interface MachineStatus {
    "agent-status": DetailedStatus;
    base: Base;
    constraints: string;
    containers: Record<string, MachineStatus>;
    "display-name": string;
    "dns-name": string;
    hardware: string;
    "has-vote": boolean;
    hostname?: string;
    id: string;
    "instance-id": string;
    "instance-status": DetailedStatus;
    "ip-addresses"?: string[];
    jobs: string[];
    "lxd-profiles"?: Record<string, LXDProfile>;
    "modification-status": DetailedStatus;
    "network-interfaces"?: Record<string, NetworkInterface>;
    "primary-controller-machine"?: boolean;
    "wants-vote": boolean;
}
export interface MeterStatus {
    color: string;
    message: string;
}
export interface ModelStatusInfo {
    "available-version": string;
    "cloud-tag": string;
    "meter-status": MeterStatus;
    "model-status": DetailedStatus;
    name: string;
    region?: string;
    sla: string;
    type: string;
    version: string;
}
export interface NetworkInterface {
    "dns-nameservers"?: string[];
    gateway?: string;
    "ip-addresses": string[];
    "is-up": boolean;
    "mac-address": string;
    space?: string;
}
export interface Number {
    Build: number;
    Major: number;
    Minor: number;
    Patch: number;
    Tag: string;
}
export interface RelationStatus {
    endpoints: EndpointStatus[];
    id: number;
    interface: string;
    key: string;
    scope: string;
    status: DetailedStatus;
}
export interface RemoteApplicationStatus {
    endpoints: RemoteEndpoint[];
    err?: Error;
    life: string;
    "offer-name": string;
    "offer-url": string;
    relations: Record<string, string[]>;
    status: DetailedStatus;
}
export interface RemoteEndpoint {
    interface: string;
    limit: number;
    name: string;
    role: string;
}
export interface StatusHistoryFilter {
    date: string;
    delta: number;
    exclude: string[];
    size: number;
}
export interface StatusHistoryRequest {
    filter: StatusHistoryFilter;
    historyKind: string;
    size: number;
    tag: string;
}
export interface StatusHistoryRequests {
    requests: StatusHistoryRequest[];
}
export interface StatusHistoryResult {
    error?: Error;
    history: History;
}
export interface StatusHistoryResults {
    results: StatusHistoryResult[];
}
export interface StatusParams {
    "include-storage"?: boolean;
    patterns: string[];
}
export interface StorageAttachmentDetails {
    life?: string;
    location?: string;
    "machine-tag": string;
    "storage-tag": string;
    "unit-tag": string;
}
export interface StorageDetails {
    attachments?: Record<string, StorageAttachmentDetails>;
    kind: number;
    life?: string;
    "owner-tag": string;
    persistent: boolean;
    status: EntityStatus;
    "storage-tag": string;
}
export interface Tools {
    sha256?: string;
    size: number;
    url: string;
    version: Binary;
}
export interface UnitStatus {
    address?: string;
    "agent-status": DetailedStatus;
    charm: string;
    leader?: boolean;
    machine: string;
    "opened-ports": string[];
    "provider-id"?: string;
    "public-address": string;
    subordinates: Record<string, UnitStatus>;
    "workload-status": DetailedStatus;
    "workload-version": string;
}
export interface VolumeAttachmentDetails {
    VolumeAttachmentInfo: VolumeAttachmentInfo;
    "bus-address"?: string;
    "device-link"?: string;
    "device-name"?: string;
    life?: string;
    "plan-info"?: VolumeAttachmentPlanInfo;
    "read-only"?: boolean;
}
export interface VolumeAttachmentInfo {
    "bus-address"?: string;
    "device-link"?: string;
    "device-name"?: string;
    "plan-info"?: VolumeAttachmentPlanInfo;
    "read-only"?: boolean;
}
export interface VolumeAttachmentPlanInfo {
    "device-attributes"?: Record<string, string>;
    "device-type"?: string;
}
export interface VolumeDetails {
    info: VolumeInfo;
    life?: string;
    "machine-attachments"?: Record<string, VolumeAttachmentDetails>;
    status: EntityStatus;
    storage?: StorageDetails;
    "unit-attachments"?: Record<string, VolumeAttachmentDetails>;
    "volume-tag": string;
}
export interface VolumeInfo {
    "hardware-id"?: string;
    persistent: boolean;
    pool?: string;
    size: number;
    "volume-id": string;
    wwn?: string;
}
export interface AdditionalProperties {
    [key: string]: any;
}
/**
  Client serves client-specific API methods.
*/
declare class ClientV7 implements Facade {
    static NAME: string;
    static VERSION: number;
    NAME: string;
    VERSION: number;
    _transport: Transport;
    _info: ConnectionInfo;
    constructor(transport: Transport, info: ConnectionInfo);
    /**
      FindTools returns a List containing all tools matching the given parameters.
      TODO(juju 3.1) - remove, used by 2.9 client only
    */
    findTools(params: FindToolsParams): Promise<FindToolsResult>;
    /**
      FullStatus gives the information needed for juju status over the api
    */
    fullStatus(params: StatusParams): Promise<FullStatus>;
    /**
      StatusHistory returns a slice of past statuses for several entities.
    */
    statusHistory(params: StatusHistoryRequests): Promise<StatusHistoryResults>;
    /**
      WatchAll initiates a watcher for entities in the connected model.
    */
    watchAll(params: any): Promise<AllWatcherId>;
}
export default ClientV7;
