import * as plugins from './plugins.js';
export type TClientType = 'api' | 'ci' | 'coreflow' | 'cli' | 'serverconfig';
import { Image } from './classes.image.js';
import { Service } from './classes.service.js';
import { Cluster } from './classes.cluster.js';
import { SecretBundle } from './classes.secretbundle.js';
import { SecretGroup } from './classes.secretgroup.js';
import { ExternalRegistry } from './classes.externalregistry.js';
export declare class CloudlyApiClient {
    private cloudlyUrl;
    private registerAs;
    typedrouter: plugins.typedrequest.TypedRouter;
    typedsocketClient: plugins.typedsocket.TypedSocket;
    configUpdateSubject: plugins.smartrx.rxjs.Subject<plugins.servezoneInterfaces.requests.config.IRequest_Cloudly_Coreflow_PushClusterConfig>;
    serverActionSubject: plugins.smartrx.rxjs.Subject<plugins.servezoneInterfaces.requests.server.IRequest_TriggerServerAction>;
    constructor(optionsArg: {
        registerAs: TClientType;
        cloudlyUrl?: string;
    });
    start(): Promise<void>;
    stop(): Promise<void>;
    identity: plugins.servezoneInterfaces.data.IIdentity;
    getIdentityByToken(token: string, optionsArg?: {
        tagConnection?: boolean;
        statefullIdentity?: boolean;
    }): Promise<plugins.servezoneInterfaces.data.IIdentity>;
    /**
     * will use statefull identity by default
     */
    getClusterConfigFromCloudlyByIdentity(identityArg?: plugins.servezoneInterfaces.data.IIdentity): Promise<plugins.servezoneInterfaces.data.ICluster>;
    /**
     * will use statefull identity by default
     */
    getServerConfigFromCloudlyByIdentity(identityArg?: plugins.servezoneInterfaces.data.IIdentity): Promise<plugins.servezoneInterfaces.data.IServer>;
    /**
     * gets a certificate for a domain used by a service
     */
    getCertificateForDomain(optionsArg: {
        domainName: string;
        type: plugins.servezoneInterfaces.requests.certificate.IRequest_Any_Cloudly_GetCertificateForDomain['request']['type'];
        identity?: plugins.servezoneInterfaces.data.IIdentity;
    }): Promise<plugins.tsclass.network.ICert>;
    externalRegistry: {
        getRegistryById: (registryNameArg: string) => Promise<ExternalRegistry>;
        getRegistries: () => Promise<ExternalRegistry[]>;
        createRegistry: (optionsArg: Parameters<typeof ExternalRegistry.createExternalRegistry>[1]) => Promise<ExternalRegistry>;
    };
    image: {
        getImageById: (imageIdArg: string) => Promise<Image>;
        getImages: () => Promise<Image[]>;
        createImage: (optionsArg: Parameters<typeof Image.createImage>[1]) => Promise<Image>;
    };
    services: {
        getServiceById: (serviceIdArg: string) => Promise<Service>;
        getServices: () => Promise<Service[]>;
        createService: (optionsArg: Parameters<typeof Service.createService>[1]) => Promise<Service>;
    };
    cluster: {
        getClusterById: (clusterIdArg: string) => Promise<Cluster>;
        getClusters: () => Promise<Cluster[]>;
        createCluster: (optionsArg: Parameters<typeof Cluster.createCluster>[1]) => Promise<Cluster>;
    };
    secretbundle: {
        getSecretBundleById: (secretBundleIdArg: string) => Promise<SecretBundle>;
        getSecretBundles: () => Promise<SecretBundle[]>;
        createSecretBundle: (optionsArg: Parameters<typeof SecretBundle.createSecretBundle>[1]) => Promise<SecretBundle>;
    };
    secretgroup: {
        getSecretGroupById: (secretGroupIdArg: string) => Promise<SecretGroup>;
        getSecretGroups: () => Promise<SecretGroup[]>;
        createSecretGroup: (optionsArg: Parameters<typeof SecretGroup.createSecretGroup>[1]) => Promise<SecretGroup>;
    };
}
