import type { NonEmptyString } from "../../../common/CustomTypes/NonEmptyString";
import type { Logger, OperationLoggingSeverity } from "../../../common/Logging";
import type { Maybe } from "../../../common/Maybe";
import type { EnvironmentId } from "../../../common/Models/Environment/EnvironmentId";
import type { Name } from "../../../common/Models/Name";
import type { Void } from "../../../common/Types";
import type { AxiosInstance } from 'axios';
import type { Dict } from "../../Common";
import type { ProjectResponse } from "../AltostraProjectsManager/Types";
import type { ErrorMapping, IdentityToken, ServiceClientConfig } from "../common";
import type { ItemSelection } from "../ItemSelection";
import { ServiceClientBase } from "../ServiceClientBase";
import type { CreateEnvironmentOptions, EnvironmentResponse, EnvironmentUpdate, ListedEnvironmentResponse } from "./Types";
export interface EnvironmentsManagerOptions {
    axios?: AxiosInstance;
    endpoints: {
        backoffice: string;
    };
    getToken: () => Promise<IdentityToken>;
    logger?: Logger<OperationLoggingSeverity>;
    config?: ServiceClientConfig;
    errorMapping?: ErrorMapping;
}
export declare class EnvironmentsManager extends ServiceClientBase {
    #private;
    constructor({ axios, endpoints, getToken, logger, config, errorMapping, }: EnvironmentsManagerOptions);
    getEffectiveConfig(envName: NonEmptyString): Promise<Dict<string>>;
    list(): Promise<ListedEnvironmentResponse[]>;
    get(envName: Name): Promise<Maybe<EnvironmentResponse>>;
    create(createEnvOptions: CreateEnvironmentOptions): Promise<EnvironmentResponse>;
    listProjects(environment: ItemSelection): Promise<ProjectResponse[]>;
    update(environment: ItemSelection, update: EnvironmentUpdate): Promise<Void>;
    delete(id: EnvironmentId): Promise<Void>;
}
