import { Dialect } from "sequelize";
/**
 * ApplicationHealth used to check all application integrations
 * and return status of each of then
 */
export interface ApplicationHealthDetailed {
    name: string;
    status: boolean;
    version: string;
    date: Date;
    duration: number;
    integrations: Integration[];
}
export interface ApplicationHealthSimple {
    status: string;
}
export interface Integration {
    name: string;
    kind: HealthIntegration;
    status: boolean;
    response_time: number;
    url: string;
    error?: string | Error | object | unknown;
}
export interface Auth {
    user?: string;
    password: string;
}
export interface ApplicationConfig {
    name?: string;
    version?: string;
    integrations: IntegrationConfig[];
}
export interface IntegrationConfig {
    type: HealthTypes;
    name: string;
    host: string;
    port?: number;
    headers?: HTTPHeader[];
    db?: number;
    timeout?: number;
    auth?: Auth;
    Aws?: Aws;
    dbName?: string;
    dbUser?: string;
    dbPwd?: string;
    dbDialect?: Dialect;
    dbPort?: number;
    customCheckerFunction?(): Promise<HTTPChecker>;
}
export interface Aws {
    region?: string;
    access_key_id?: string;
    secret_access_key?: string;
}
export interface HTTPHeader {
    key: string;
    value: string;
}
export declare enum HealthTypes {
    Redis = "Redis",
    Memcached = "Memcached",
    Web = "Web",
    Dynamo = "Dynamo",
    Database = "Database",
    Custom = "Custom"
}
export declare enum HealthIntegration {
    RedisIntegration = "Redis DB integration",
    MemcachedIntegration = "Memcached integraton",
    WebServiceIntegration = "Web integrated API",
    DynamoDbIntegration = "AWS Dynamo DB",
    DatabaseIntegration = "Database integration",
    CustomIntegration = "Custom integration",
    UnknownIntegration = "Unknown or missing integration type"
}
export declare enum Defaults {
    RedisTimeout = 2000,
    RedisDB = 0,
    RedisPort = 6379,
    MemcachedTimeout = 1000,
    MemcachePort = 11211,
    WebTimeout = 10000
}
export interface HTTPChecker {
    status: boolean;
    error?: string | Error | object | unknown;
}
export declare enum Dialects {
    postgres = "postgres",
    mysql = "mysql",
    sqlite = "sqlite",
    mariadb = "mariadb"
}
//# sourceMappingURL=types.d.ts.map