import { ConfigService } from '@nestjs/config';
import { ICloudProvider, CreateServerConfig, ServerCreationResult, ServerDeletionResult, SSHKeyCreationResult, SSHKeyDetails } from '../interfaces/cloud-provider.interface';
import { InstanceEntity } from '../../instances/entities/instance.entity';
import { ICredentialProvider } from '../interfaces/credential-provider.interface';
import { DeleteServerDto } from '../../../modules/infrastructure/servers/dto/delete-server.dto';
import { ServerResponseDto } from '../../../modules/infrastructure/servers/dto/server-response.dto';
import { SSHKeyDto } from '../../../modules/access/dto/ssh-key.dto';
import { NodeSizeDto } from '../dto/node-size.dto';
import { PricingDto, PricingQueryDto } from '../dto/pricing.dto';
import { LabelService } from '../../common/services/label.service';
export declare class ContaboProviderService implements ICloudProvider {
    private readonly configService;
    private readonly credentialProvider;
    private readonly labelService;
    private readonly logger;
    private readonly apiUrl;
    private readonly FLUI_PREFIX;
    constructor(configService: ConfigService, credentialProvider: ICredentialProvider, labelService: LabelService);
    listServersAsDto(): Promise<ServerResponseDto[]>;
    getServerDetailsAsDto(serverId: string): Promise<ServerResponseDto | null>;
    createServer(config: CreateServerConfig): Promise<ServerCreationResult>;
    deleteServer(config: DeleteServerDto): Promise<ServerDeletionResult>;
    getServerStatus(serverId: string): Promise<string>;
    testConnection(): Promise<{
        success: boolean;
        error?: string;
    }>;
    powerOnServer(serverId: string): Promise<void>;
    powerOffServer(serverId: string): Promise<void>;
    changeServerType(): Promise<{
        actionId?: number;
    }>;
    expandVolume(): Promise<{
        actionId?: number;
    }>;
    listInstances(filters?: Record<string, unknown>): Promise<InstanceEntity[]>;
    private mapContaboInstanceToEntity;
    private mapContaboStatus;
    listSSHKeys(): Promise<SSHKeyDto[]>;
    getNodeSizes(): Promise<NodeSizeDto[]>;
    getPricing(query: PricingQueryDto): Promise<PricingDto>;
    private generateSyntheticLabels;
    private isFluiManagedByName;
    createSSHKey(name: string, publicKey: string, labels?: Record<string, string>): Promise<SSHKeyCreationResult>;
    deleteSSHKey(providerKeyId: string): Promise<void>;
    getSSHKey(providerKeyId: string): Promise<SSHKeyDetails>;
    updateServerLabels(serverId: string, labels: Record<string, string>): Promise<void>;
}
