export type LogLevel = "debug" | "info" | "warn" | "error" | "silent";
export type DeploymentAction = "up" | "preview" | "destroy" | "outputs" | "refresh" | "rollback";
export type DeploymentStatus = "initializing" | "configuring" | "deploying" | "completed" | "failed" | "rolling-back";
export interface Logger {
    debug(message: string, ...args: any[]): void;
    info(message: string, ...args: any[]): void;
    warn(message: string, ...args: any[]): void;
    error(message: string, ...args: any[]): void;
}
export interface DeploymentProgress {
    status: DeploymentStatus;
    message: string;
    timestamp: Date;
    metadata?: Record<string, any>;
}
export interface DeploymentOptions {
    action: DeploymentAction;
    stackName: string;
    secretsJson: string;
    companyName: string;
    workDir?: string;
    helmChartPath?: string;
    logLevel?: LogLevel;
    onProgress?: (progress: DeploymentProgress) => void;
    validateConfig?: boolean;
    enableRollback?: boolean;
    timeout?: number;
    cloudProvider?: "aws" | "gcp";
    cloudConfig?: AwsCloudConfig | GcpCloudConfig;
    autoSetupConfig?: boolean;
    namespace?: string;
    deploymentType: "shared" | "dedicated";
    planTier?: import("./plans.js").PlanTier;
    billingAccountId?: string;
    defaultDomain?: string;
    authDomain?: string;
    openPaymentsDomain?: string;
    connectorDomain?: string;
    enableRafikiAuth?: boolean;
    enableRafikiBackend?: boolean;
    enableNginx?: boolean;
    enableRedis?: boolean;
    graphqlAllowedIps?: string[];
    rafikiAuthImage?: {
        repository?: string;
        tag?: string;
        pullPolicy?: string;
    };
    rafikiBackendImage?: {
        repository?: string;
        tag?: string;
        pullPolicy?: string;
    };
    nginxImage?: {
        repository?: string;
        tag?: string;
        pullPolicy?: string;
    };
    redisImage?: {
        repository?: string;
        tag?: string;
        pullPolicy?: string;
    };
    ingressClassName?: string;
    dedicatedDeploymentHpaEnabledByDefault?: boolean;
    sharedDeploymentNetworkPolicyEnabled?: boolean;
    ingressControllerNamespace?: string;
    ingressControllerPodSelectorLabels?: Record<string, string>;
    allowedExternalEgressRules?: Array<{
        cidr: string;
        ports?: Array<{
            port: number;
            protocol: "TCP" | "UDP";
        }>;
    }>;
    prometheusFqdn?: string;
    clusterName?: string;
    environment?: string;
    managedCertificateEnabled?: boolean;
    createKubernetesSecrets?: boolean;
}
export interface AwsCloudConfig {
    region: string;
    profile?: string;
    accessKeyId?: string;
    secretAccessKey?: string;
}
export interface GcpCloudConfig {
    project: string;
    region: string;
    zone?: string;
    credentials?: string;
}
export type CloudConfig = AwsCloudConfig | GcpCloudConfig;
export interface DeploymentResult {
    success: boolean;
    outputs?: any;
    summary?: any;
    error?: string;
    kubeconfig?: string;
    rollbackPerformed?: boolean;
    duration?: number;
    costMonitoring?: {
        enabled: boolean;
        namespace?: string;
        tier?: string;
        budget?: number;
        currency?: string;
        dashboardUrl?: string;
        reason?: string;
        error?: string;
    };
}
export interface FieldValidationError {
    field: string;
    message: string;
    value?: any;
}
export interface DeploymentConfig {
    stackName: string;
    secretsJson: string;
    companyName: string;
    cloudProvider?: "aws" | "gcp";
    helmChartPath?: string;
    cloudConfig?: CloudConfig;
    namespace?: string;
    deploymentType?: "shared" | "dedicated";
    planTier?: import("./plans.js").PlanTier;
    kubecostEnabled?: boolean;
    defaultDomain?: string;
    enableRafikiAuth?: boolean;
    enableRafikiBackend?: boolean;
    enableNginx?: boolean;
    enableRedis?: boolean;
    rafikiAuthImage?: {
        repository?: string;
        tag?: string;
        pullPolicy?: string;
    };
    rafikiBackendImage?: {
        repository?: string;
        tag?: string;
        pullPolicy?: string;
    };
    nginxImage?: {
        repository?: string;
        tag?: string;
        pullPolicy?: string;
    };
    redisImage?: {
        repository?: string;
        tag?: string;
        pullPolicy?: string;
    };
    ingressClassName?: string;
    dedicatedDeploymentHpaEnabledByDefault?: boolean;
    sharedDeploymentNetworkPolicyEnabled?: boolean;
    ingressControllerNamespace?: string;
    ingressControllerPodSelectorLabels?: Record<string, string>;
    allowedExternalEgressRules?: Array<{
        cidr: string;
        ports?: Array<{
            port: number;
            protocol: "TCP" | "UDP";
        }>;
    }>;
}
export interface NamespaceConfig {
    name: string;
    labels?: Record<string, string>;
    annotations?: Record<string, string>;
    resourceQuota?: {
        requests?: {
            cpu?: string;
            memory?: string;
            storage?: string;
        };
        limits?: {
            cpu?: string;
            memory?: string;
            storage?: string;
        };
        persistentvolumeclaims?: string;
    };
}
export interface SharedClusterConfig {
    clusterName: string;
    kubeconfig?: string;
    namespaces?: NamespaceConfig[];
    staticIpName?: string;
    region?: string;
    zone?: string;
    project?: string;
    vpcId?: string;
    kubecostEnabled?: boolean;
    tierCapacity?: {
        maxBasicTenants: number;
        maxStandardTenants: number;
        maxPremiumTenants: number;
        maxEnterpriseTenants: number;
    };
}
export interface TierDeploymentResult extends DeploymentResult {
    tierInfo?: {
        planTier: import("./plans.js").PlanTier;
        resourceAllocation: import("./plans.js").TierResourceAllocation;
        costEstimate?: {
            monthly: number;
            currency: string;
        };
        costMonitoring?: {
            enabled: boolean;
            dashboardUrl?: string;
            budgetAllocated?: number;
            budgetThresholds?: number[];
            alertsEnabled?: boolean;
        };
    };
}
export interface ClusterLookupResult {
    exists: boolean;
    kubeconfig?: string;
    clusterName?: string;
    staticIpName?: string;
    vpcId?: string;
    region?: string;
    zone?: string;
    project?: string;
}
export interface K8sLoadBalancerIngress {
    hostname?: string;
    ip?: string;
}
export interface K8sLoadBalancerStatus {
    ingress?: K8sLoadBalancerIngress[];
}
export interface IngressStatus {
    loadBalancer?: K8sLoadBalancerStatus;
}
export interface ServiceStatus {
    loadBalancer?: K8sLoadBalancerStatus;
}
//# sourceMappingURL=index.d.ts.map