import * as outputs from "../types/output";
export interface ProjectConfig {
    configs?: {
        [key: string]: outputs.types.ConfigObjConfig;
    };
    name?: string;
    networks?: {
        [key: string]: outputs.types.NetworkConfig;
    };
    secrets?: {
        [key: string]: outputs.types.SecretConfig;
    };
    services: {
        [key: string]: outputs.types.ServiceConfig;
    };
    volumes?: {
        [key: string]: outputs.types.VolumeConfig;
    };
}
export interface ServiceState {
    id: string;
    task_role: string;
}
export declare namespace types {
    interface BlkioConfig {
        device_read_bps?: outputs.types.ThrottleDevice[];
        device_read_iops?: outputs.types.ThrottleDevice[];
        device_write_bps?: outputs.types.ThrottleDevice[];
        device_write_iops?: outputs.types.ThrottleDevice[];
        weight?: number;
        weight_device?: outputs.types.WeightDevice[];
    }
    interface BuildConfig {
        additional_contexts?: {
            [key: string]: string;
        };
        args?: {
            [key: string]: string;
        };
        cache_from?: string[];
        cache_to?: string[];
        context?: string;
        dockerfile?: string;
        dockerfile_inline?: string;
        entitlements?: string[];
        extra_hosts?: {
            [key: string]: string[];
        };
        isolation?: string;
        labels?: {
            [key: string]: string;
        };
        network?: string;
        no_cache?: boolean;
        platforms?: string[];
        privileged?: boolean;
        pull?: boolean;
        secrets?: outputs.types.ServiceSecretConfig[];
        shm_size?: number;
        ssh?: outputs.types.SSHKey[];
        tags?: string[];
        target?: string;
        ulimits?: {
            [key: string]: outputs.types.UlimitsConfig;
        };
    }
    interface ConfigObjConfig {
        content?: string;
        driver?: string;
        driver_opts?: {
            [key: string]: string;
        };
        environment?: string;
        external?: boolean;
        file?: string;
        labels?: {
            [key: string]: string;
        };
        name?: string;
        template_driver?: string;
    }
    interface CredentialSpecConfig {
        config?: string;
        file?: string;
        registry?: string;
    }
    interface DeployConfig {
        endpoint_mode?: string;
        labels?: {
            [key: string]: string;
        };
        mode?: string;
        placement?: outputs.types.Placement;
        replicas?: number;
        resources: outputs.types.Resources;
        restart_policy?: outputs.types.RestartPolicy;
        rollback_config?: outputs.types.UpdateConfig;
        update_config?: outputs.types.UpdateConfig;
    }
    interface DevelopConfig {
        watch?: outputs.types.Trigger[];
    }
    interface DeviceMapping {
        permissions?: string;
        source?: string;
        target?: string;
    }
    interface DeviceRequest {
        capabilities?: string[];
        count?: number;
        device_ids?: string[];
        driver?: string;
        options?: {
            [key: string]: string;
        };
    }
    interface DiscreteGenericResource {
        kind: string;
        value: number;
    }
    interface EnvFile {
        format?: string;
        path?: string;
        required: boolean;
    }
    interface ExtendsConfig {
        file?: string;
        service?: string;
    }
    interface GenericResource {
        discrete_resource_spec?: outputs.types.DiscreteGenericResource;
    }
    interface HealthCheckConfig {
        disable?: boolean;
        interval?: number;
        retries?: number;
        start_interval?: number;
        start_period?: number;
        test?: string[];
        timeout?: number;
    }
    interface IPAMConfig {
        config?: outputs.types.IPAMPool[];
        driver?: string;
    }
    interface IPAMPool {
        aux_addresses?: {
            [key: string]: string;
        };
        gateway?: string;
        ip_range?: string;
        subnet?: string;
    }
    interface LoggingConfig {
        driver?: string;
        options?: {
            [key: string]: string;
        };
    }
    interface NetworkConfig {
        attachable?: boolean;
        driver?: string;
        driver_opts?: {
            [key: string]: string;
        };
        enable_ipv6?: boolean;
        external?: boolean;
        internal?: boolean;
        ipam: outputs.types.IPAMConfig;
        labels?: {
            [key: string]: string;
        };
        name?: string;
    }
    interface Placement {
        constraints?: string[];
        max_replicas_per_node?: number;
        preferences?: outputs.types.PlacementPreferences[];
    }
    interface PlacementPreferences {
        spread?: string;
    }
    interface Resource {
        cpus?: number;
        devices?: outputs.types.DeviceRequest[];
        generic_resources?: outputs.types.GenericResource[];
        memory?: number;
        pids?: number;
    }
    interface Resources {
        limits?: outputs.types.Resource;
        reservations?: outputs.types.Resource;
    }
    interface RestartPolicy {
        condition?: string;
        delay?: number;
        max_attempts?: number;
        window?: number;
    }
    interface SSHKey {
        id?: string;
        path?: string;
    }
    interface SecretConfig {
        content?: string;
        driver?: string;
        driver_opts?: {
            [key: string]: string;
        };
        environment?: string;
        external?: boolean;
        file?: string;
        labels?: {
            [key: string]: string;
        };
        name?: string;
        template_driver?: string;
    }
    interface ServiceConfig {
        annotations?: {
            [key: string]: string;
        };
        attach?: boolean;
        blkio_config?: outputs.types.BlkioConfig;
        build?: outputs.types.BuildConfig;
        cap_add?: string[];
        cap_drop?: string[];
        cgroup?: string;
        cgroup_parent?: string;
        command?: string[];
        configs?: outputs.types.ServiceConfigObjConfig[];
        container_name?: string;
        cpu_count?: number;
        cpu_percent?: number;
        cpu_period?: number;
        cpu_quota?: number;
        cpu_rt_period?: number;
        cpu_rt_runtime?: number;
        cpu_shares?: number;
        cpus?: number;
        cpuset?: string;
        credential_spec?: outputs.types.CredentialSpecConfig;
        defang_llm?: boolean;
        defang_postgres?: boolean;
        defang_redis?: boolean;
        defang_static_files?: boolean;
        depends_on?: {
            [key: string]: outputs.types.ServiceDependency;
        };
        deploy?: outputs.types.DeployConfig;
        develop?: outputs.types.DevelopConfig;
        device_cgroup_rules?: string[];
        devices?: outputs.types.DeviceMapping[];
        dns?: string[];
        dns_opt?: string[];
        dns_search?: string[];
        dockerfile?: string;
        domainname?: string;
        entrypoint?: string[];
        env_file?: outputs.types.EnvFile[];
        environment?: {
            [key: string]: string;
        };
        expose?: string[];
        extends?: outputs.types.ExtendsConfig;
        external_links?: string[];
        extra_hosts?: {
            [key: string]: string[];
        };
        gpus?: outputs.types.DeviceRequest[];
        group_add?: string[];
        healthcheck?: outputs.types.HealthCheckConfig;
        hostname?: string;
        image?: string;
        init?: boolean;
        ipc?: string;
        isolation?: string;
        labels?: {
            [key: string]: string;
        };
        links?: string[];
        log_driver?: string;
        log_opt?: {
            [key: string]: string;
        };
        logging?: outputs.types.LoggingConfig;
        mac_address?: string;
        mem_limit?: number;
        mem_reservation?: number;
        mem_swappiness?: number;
        memswap_limit?: number;
        net?: string;
        network_mode?: string;
        networks?: {
            [key: string]: outputs.types.ServiceNetworkConfig;
        };
        oom_kill_disable?: boolean;
        oom_score_adj?: number;
        pid?: string;
        pids_limit?: number;
        platform?: string;
        ports?: outputs.types.ServicePortConfig[];
        post_start?: outputs.types.ServiceHook[];
        pre_stop?: outputs.types.ServiceHook[];
        privileged?: boolean;
        profiles?: string[];
        pull_policy?: string;
        read_only?: boolean;
        restart?: string;
        runtime?: string;
        scale?: number;
        secrets?: outputs.types.ServiceSecretConfig[];
        security_opt?: string[];
        shm_size?: number;
        stdin_open?: boolean;
        stop_grace_period?: number;
        stop_signal?: string;
        storage_opt?: {
            [key: string]: string;
        };
        sysctls?: {
            [key: string]: string;
        };
        tmpfs?: string[];
        tty?: boolean;
        ulimits?: {
            [key: string]: outputs.types.UlimitsConfig;
        };
        user?: string;
        userns_mode?: string;
        uts?: string;
        volume_driver?: string;
        volumes?: outputs.types.ServiceVolumeConfig[];
        volumes_from?: string[];
        working_dir?: string;
    }
    interface ServiceConfigObjConfig {
        gid?: string;
        mode?: number;
        source?: string;
        target?: string;
        uid?: string;
    }
    interface ServiceDependency {
        condition?: string;
        required: boolean;
        restart?: boolean;
    }
    interface ServiceHook {
        command: string[];
        environment?: {
            [key: string]: string;
        };
        privileged?: boolean;
        user?: string;
        working_dir?: string;
    }
    interface ServiceNetworkConfig {
        aliases?: string[];
        driver_opts?: {
            [key: string]: string;
        };
        ipv4_address?: string;
        ipv6_address?: string;
        link_local_ips?: string[];
        mac_address?: string;
        priority?: number;
    }
    interface ServicePortConfig {
        app_protocol?: string;
        defang_listener?: string;
        host_ip?: string;
        mode?: string;
        name?: string;
        protocol?: string;
        published?: string;
        target?: number;
    }
    interface ServiceSecretConfig {
        gid?: string;
        mode?: number;
        source?: string;
        target?: string;
        uid?: string;
    }
    interface ServiceVolumeBind {
        create_host_path?: boolean;
        propagation?: string;
        recursive?: string;
        selinux?: string;
    }
    interface ServiceVolumeConfig {
        bind?: outputs.types.ServiceVolumeBind;
        consistency?: string;
        read_only?: boolean;
        source?: string;
        target?: string;
        tmpfs?: outputs.types.ServiceVolumeTmpfs;
        type?: string;
        volume?: outputs.types.ServiceVolumeVolume;
    }
    interface ServiceVolumeTmpfs {
        mode?: number;
        size?: number;
    }
    interface ServiceVolumeVolume {
        nocopy?: boolean;
        subpath?: string;
    }
    interface ThrottleDevice {
    }
    interface Trigger {
        action: string;
        ignore?: string[];
        path: string;
        target?: string;
    }
    interface UlimitsConfig {
        hard?: number;
        single?: number;
        soft?: number;
    }
    interface UpdateConfig {
        delay?: number;
        failure_action?: string;
        max_failure_ratio?: number;
        monitor?: number;
        order?: string;
        parallelism?: number;
    }
    interface VolumeConfig {
        driver?: string;
        driver_opts?: {
            [key: string]: string;
        };
        external?: boolean;
        labels?: {
            [key: string]: string;
        };
        name?: string;
    }
    interface WeightDevice {
    }
}
