import { IDatabaseConfig } from './IDatabaseConfig';
import { LogLevel } from '@arashi/interfaces';
export interface ICloudwatchCredentials {
    accessKeyId: string;
    secretAccessKey: string;
}
export interface ICloudwatchStreamConfig {
    group: string;
    name: string;
}
export interface ICloudwatchConfig {
    region: string;
    credentials: ICloudwatchCredentials;
    stream: ICloudwatchStreamConfig;
}
export interface IConfig {
    bind?: string;
    port?: number;
    authentication_header?: string;
    backend_authentication_header?: string;
    backend_authentication_secret?: string;
    shard?: number;
    prometheus?: {
        enabled?: boolean;
        bind?: string;
        port?: number;
    };
    log?: {
        level?: LogLevel;
        filters?: string[];
        cloudwatch?: ICloudwatchConfig;
    };
    database?: {
        query_timeout?: number;
        main?: IDatabaseConfig<"MASTER">;
        replicationNodes?: IDatabaseConfig[];
    };
    /**
     * @since 9.2.1 - defaults to false
     *
     * Scheduled to default to true in 10.0.0.
     * Scheduled to be removed completely in 11.0.0
     *
     * Breaking changes includes:
     * - DECIMAL types returned as strings.
     * Proper solution is to use a BigNumber library of some sort to
     * handle large numbers safely.
     * - JSON types are parsed and returned as actual objects as strings.
     *
     * When this setting is false, DECIMAL types are returned as JS numbers
     * and JSON types are returned as strings, requiring the application to JSON parse the data.
     */
    enableMySQL2BreakingChanges?: boolean;
    request_size_limit?: number;
    customConfig?: Record<string, any>;
}
