import { CommonParachainConfig, HrmpChannelsConfig, NodeCommonTypes, NodeConfig, ObjectJSON, Override, Parachain, Resources, SubstrateCliArgsVersion, Node, DelayNetworkSettings } from "./sharedTypes";
export interface LaunchConfig extends PolkadotLaunchConfig {
    config: {
        provider: string;
    };
    settings: Settings;
    configBasePath: string;
}
export interface PolkadotLaunchConfig {
    relaychain: RelayChainConfig;
    parachains: ParachainConfig[];
    types: any;
    hrmp_channels?: HrmpChannelsConfig[];
}
export interface RelayChainConfig {
    default_command?: string;
    default_image?: string;
    default_resources?: Resources;
    default_db_snapshot?: string;
    default_prometheus_prefix?: string;
    default_substrate_cli_args_version?: SubstrateCliArgsVersion;
    default_keystore_key_types?: string[];
    chain: string;
    force_decorator?: string;
    chain_spec_path?: string;
    chain_spec_command?: string;
    default_args?: string[];
    default_overrides?: Override[];
    random_nominators_count?: number;
    max_nominations?: number;
    nodes?: NodeConfig[];
    node_groups?: NodeGroupConfig[];
    total_node_in_groups?: number;
    genesis?: JSON | ObjectJSON;
    default_delay_network_settings?: DelayNetworkSettings;
    use_stash_for_validators?: boolean;
}
export interface ComputedNetwork {
    settings: Settings;
    relaychain: {
        defaultImage: string;
        defaultCommand: string;
        defaultArgs: string[];
        defaultDbSnapshot?: string;
        defaultPrometheusPrefix: string;
        defaultSubstrateCliArgsVersion?: SubstrateCliArgsVersion;
        chain: string;
        chainSpecPath?: string;
        chainSpecCommand?: string;
        randomNominatorsCount: number;
        maxNominations: number;
        nodes: Node[];
        overrides: Override[];
        genesis?: JSON | ObjectJSON;
        defaultResources?: Resources;
        delayNetworkSettings?: DelayNetworkSettings;
        force_decorator?: string;
        useStashForValidators: boolean;
    };
    parachains: Parachain[];
    types: any;
    hrmp_channels?: HrmpChannelsConfig[];
    configBasePath: string;
    seed: string;
}
export interface Settings {
    global_volumes?: GlobalVolume[];
    bootnode?: boolean;
    bootnode_domain?: string;
    timeout: number;
    node_spawn_timeout?: number;
    grafana?: boolean;
    telemetry?: boolean;
    prometheus?: boolean;
    jaeger_agent?: string;
    tracing_collator_url?: string;
    tracing_collator_service_name?: string;
    tracing_collator_service_namespace?: string;
    tracing_collator_service_port?: number;
    enable_tracing?: boolean;
    provider: string;
    polkadot_introspector?: boolean;
    backchannel?: boolean;
    image_pull_policy?: "IfNotPresent" | "Never" | "Always";
    local_ip?: string;
    global_delay_network_global_settings?: DelayNetworkSettings;
    node_verifier?: "None" | "Metric";
    isolate_env?: boolean;
}
export interface GlobalVolume {
    name: string;
    fs_type: string;
    mount_path: string;
}
export interface ParachainConfig extends CommonParachainConfig {
    add_to_genesis?: boolean;
    register_para?: boolean;
    onboard_as_parachain?: boolean;
    with_custom_props?: boolean;
    genesis_wasm_path?: string;
    genesis_wasm_generator?: string;
    genesis_state_path?: string;
    genesis_state_generator?: string;
    chain_spec_path?: string;
    chain_spec_command?: string;
    cumulus_based?: boolean;
    bootnodes?: string[];
    prometheus_prefix?: string;
    default_substrate_cli_args_version?: SubstrateCliArgsVersion;
    collator?: NodeConfig;
    collators?: NodeConfig[];
    collator_groups?: NodeGroupConfig[];
    default_args: string[];
}
export interface NodeGroupConfig extends NodeCommonTypes {
    image?: string;
    count: string | number;
    delay_network_settings?: DelayNetworkSettings;
}
