import WebSocket from 'ws';
import { Ora } from 'ora';
import { Command } from '@oclif/core';
import IBrowserLogin from './types/browser-login.js';
import { IVMOperations, IVMs } from './types/vm.js';
export interface IAccount {
    email: string;
    api_token?: string;
    'api-token'?: string;
    region: string;
    fullname: string;
    avatar: string;
    current: boolean;
    accountName?: string;
}
export interface IAccounts {
    [key: string]: IAccount;
}
export interface IGlobalLiaraConfig {
    version: string;
    accounts: IAccounts;
}
export interface IConfig {
    'api-token'?: string;
    account?: string;
    region?: string;
    image?: string;
    'team-id'?: string;
}
export interface IProject {
    _id: string;
    planID: string;
    bundlePlanID: string;
    scale: number;
    type: string;
    status: string;
    project_id: string;
    created_at: string;
    isDeployed: boolean;
    network?: string;
}
export interface IGetProjectsResponse {
    projects: IProject[];
}
export interface IDomains {
    _id: string;
    name: string;
    type: string;
    project: {
        _id: string;
        project_id: string;
    };
    status: string;
    certificatesStatus: string;
    redirectTo: string;
    redirectStatus: number;
    created_at: string;
    CNameRecord: string;
}
export interface IGetDomainsResponse {
    domains: IDomains[];
}
export interface IEnvs {
    key: string;
    value: string;
    encrypted: boolean;
    _id: string;
}
export interface IProjectDetails {
    _id: string;
    project_id: string;
    type: string;
    status: string;
    defaultSubdomain: boolean;
    zeroDowntime: boolean;
    scale: number;
    envs: IEnvs[];
    planID: string;
    bundlePlanID: string;
    fixedIPStatus: string;
    created_at: string;
    node: {
        _id: string;
        IP: string;
    };
    hourlyPrice: number;
    isDeployed: boolean;
    reservedDiskSpace: number;
    network: string;
}
export interface IProjectDetailsResponse {
    project: IProjectDetails;
}
export interface IBucket {
    id: string;
    name: string;
    plan: number;
    status: string;
    permission: string;
    project_id: string;
    createdAt: string;
    updatedAt: boolean;
}
export interface IGetBucketsResponse {
    status: string;
    buckets: IBucket[];
}
export interface IMailboxes {
    plan: {
        name: string;
    };
    domain: string;
    recordsStatus: string;
    mode: string;
    status: string;
    createdAt: string;
    id: string;
    smtp_server: string;
    smtp_port: number;
}
export interface IGetMailboxesResponse {
    status: string;
    data: {
        mailServers: IMailboxes[];
    };
}
export interface IMailPlan {
    available: boolean;
    maxAccount: number;
    maxForwarder: number;
    maxInbound: string;
    maxInboundMailRetention: number;
    maxOutboundMailRetention: number;
    maxOutboundPerDay: number;
    maxOutboundPerMonth: number;
    name: string;
    price: number;
}
export interface IGetMailsAccounts {
    name: string;
    createdAt: string;
    id: string;
}
export interface IGetMailsAccountsResponse {
    status: string;
    data: {
        accounts: IGetMailsAccounts[];
        domain: string;
    };
}
export interface Files {
    content_type: string | null;
    data: string;
    name: string;
}
export default abstract class extends Command {
    static flags: {
        help: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<void>;
        dev: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
        debug: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
        'api-token': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
        account: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
        'team-id': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
    };
    got: import("got").Got;
    spinner: Ora;
    readGlobalConfig(): Promise<IGlobalLiaraConfig>;
    catch(error: any): Promise<void>;
    setGotConfig(config: IConfig): Promise<void>;
    createProxiedWebsocket(endpoint: string): WebSocket;
    promptProject(): Promise<string>;
    getCurrentAccount(): Promise<IAccount>;
    getAccount(accountName: string): Promise<IAccount>;
    browser(browser?: string): Promise<IBrowserLogin[]>;
    promptNetwork(): Promise<import("./types/network.js").default | undefined>;
    getNetwork(name: string): Promise<import("./types/network.js").default>;
    getVms(errorMessage: string, filter?: (vm: IVMs) => any): Promise<IVMs[]>;
    getVMOperations(vm: IVMs): Promise<IVMOperations[]>;
}
