import { Context, Service } from "tydet-core";
import { IcmInfo } from "./dto/icmInfo.dto";
import { Project, ProjectEnvironment, ProjectParameter } from "./dto/project.dto";
import { PaginationInfo } from "./dto/pagination.dto";
export declare class ICM extends Service {
    private pathFile;
    private icmFile;
    private baseUrl;
    private accessToken;
    private lastSync;
    constructor(icmPathFile: string);
    beforeMount(context: Context): Promise<void>;
    onMount(): Promise<void>;
    onReset(): Promise<void>;
    onEject(): Promise<void>;
    private createJwt;
    private requestToken;
    getAccessToken(): Promise<string>;
    getTokenInfo(): Promise<IcmInfo>;
    getProjects(per?: number, page?: number): Promise<{
        projects: Project[];
        pagination: PaginationInfo;
    }>;
    createProject(name: string): Promise<Project>;
    getProject(name: string): Promise<Project>;
    updateProject(projectName: string, newName: string): Promise<Project>;
    removeProject(name: string): Promise<boolean>;
    getEnvironments(project: string, per?: number, page?: number): Promise<{
        environments: ProjectEnvironment[];
        pagination: PaginationInfo;
    }>;
    createEnvironment(project: string, name: string): Promise<ProjectEnvironment>;
    getEnvironment(project: string, name: string): Promise<ProjectEnvironment>;
    updateEnvironment(project: string, environment: string, newName: string): Promise<ProjectEnvironment>;
    removeEnvironment(project: string, name: string): Promise<boolean>;
    getParameters(project: string, per?: number, page?: number): Promise<{
        parameters: ProjectParameter[];
        pagination: PaginationInfo;
    }>;
    createParameter(project: string, name: string): Promise<ProjectParameter>;
    getParameter(project: string, name: string): Promise<ProjectParameter>;
    updateParameter(project: string, parameter: string, newName: string): Promise<ProjectParameter>;
    removeParameter(project: string, name: string): Promise<boolean>;
    createValue(project: string, parameter: string, environment: string, value: string): Promise<boolean>;
    getValue(project: string, parameter: string, environment: string): Promise<string>;
    updateValue(project: string, parameter: string, environment: string, value: string): Promise<boolean>;
    removeValue(project: string, parameter: string, environment: string): Promise<boolean>;
}
