import Long = require("long");
import { LoggingDestination, LoggingFlags } from "../Types";
interface ConnectionOptions {
    baseUrl?: string;
    authToken?: string;
    proxy?: string;
    certificates?: string[];
}
interface TestabilityOptions {
    spanProcessingIntervalMs?: number;
    logLevel?: string;
}
interface LoggingOptions {
    destination?: "stdout" | "stderr" | "none";
    nodejs?: {
        flags?: string;
    };
}
interface RumOptions {
    applicationId?: string;
    clientIpHeaders?: string[];
}
interface DebugOptions {
    addStackOnStart?: boolean;
}
export interface DtOptions {
    clusterID?: number;
    tenant?: string;
    connection?: ConnectionOptions;
    testability?: TestabilityOptions;
    logging?: LoggingOptions;
    rum?: RumOptions;
    debug?: DebugOptions;
}
export interface DtConfiguration {
    clusterId?: number;
    tenantUUID?: string;
    tenantId?: number;
    agentID?: Long;
    baseUrl?: string;
    authToken?: string;
    spanProcessingIntervalMs?: number;
    loggingDestination?: LoggingDestination;
    loggingFlags?: LoggingFlags;
    rumClientIpHeaders?: string[];
    rumApplicationId?: string;
    debugAddStackOnStart?: boolean;
}
/**
 * Builds up configuration using options passed during initialization, Environment
 * variables and configuration files.
 * Following priority is used:
 * - Options given as arguments
 * - Options from environment
 * - Options from config file
 * @param options options provided programatically
 * @returns configuration
 *
 * Note: this function is only exported for tests, use `getConfiguration()` instead.
 */
export declare function detectConfiguration(options?: Readonly<DtOptions>): Readonly<DtConfiguration>;
/**
 * Builds up configuration using options passed, Environment variables and configuration files.
 * Following priority is used:
 * - Options given as function arguments
 * - Options from environment
 * - Options from config files
 * The detected configuration is cached and returned on followup calls.
 * @param options optional options provided programatically (e.g. Commandline)
 * @returns configuration retrieved
 */
export declare function getConfiguration(options?: Readonly<DtOptions>): Readonly<DtConfiguration>;
export declare function _testSetConfig(c?: any): void;
export {};
//# sourceMappingURL=StartupConfig.d.ts.map