import _m0 from 'protobufjs/minimal.js';

declare const protobufPackage = "armonik.api.grpc.v1.health_checks";
/** Represents the available health status */
declare enum HealthStatusEnum {
    /** HEALTH_STATUS_ENUM_UNSPECIFIED - Unspecified */
    HEALTH_STATUS_ENUM_UNSPECIFIED = 0,
    /** HEALTH_STATUS_ENUM_HEALTHY - Service is working without issues */
    HEALTH_STATUS_ENUM_HEALTHY = 1,
    /** HEALTH_STATUS_ENUM_DEGRADED - Service has issues but still works */
    HEALTH_STATUS_ENUM_DEGRADED = 2,
    /** HEALTH_STATUS_ENUM_UNHEALTHY - Service does not work */
    HEALTH_STATUS_ENUM_UNHEALTHY = 3,
    UNRECOGNIZED = -1
}
declare function healthStatusEnumFromJSON(object: any): HealthStatusEnum;
declare function healthStatusEnumToJSON(object: HealthStatusEnum): string;
/** Request to check if all services are healthy */
interface CheckHealthRequest {
}
declare const CheckHealthRequest: {
    encode(_: CheckHealthRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CheckHealthRequest;
    fromJSON(_: any): CheckHealthRequest;
    toJSON(_: CheckHealthRequest): unknown;
    create<I extends {} & {} & { [K in Exclude<keyof I, never>]: never; }>(base?: I | undefined): CheckHealthRequest;
    fromPartial<I_1 extends {} & {} & { [K_1 in Exclude<keyof I_1, never>]: never; }>(_: I_1): CheckHealthRequest;
};
/** Response to check if all services are healthy */
interface CheckHealthResponse {
    services: CheckHealthResponse_ServiceHealth[];
}
declare const CheckHealthResponse: {
    encode(message: CheckHealthResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CheckHealthResponse;
    fromJSON(object: any): CheckHealthResponse;
    toJSON(message: CheckHealthResponse): unknown;
    create<I extends {
        services?: {
            name?: string | undefined;
            message?: string | undefined;
            healthy?: HealthStatusEnum | undefined;
        }[] | undefined;
    } & {
        services?: ({
            name?: string | undefined;
            message?: string | undefined;
            healthy?: HealthStatusEnum | undefined;
        }[] & ({
            name?: string | undefined;
            message?: string | undefined;
            healthy?: HealthStatusEnum | undefined;
        } & {
            name?: string | undefined;
            message?: string | undefined;
            healthy?: HealthStatusEnum | undefined;
        } & { [K in Exclude<keyof I["services"][number], keyof CheckHealthResponse_ServiceHealth>]: never; })[] & { [K_1 in Exclude<keyof I["services"], keyof {
            name?: string | undefined;
            message?: string | undefined;
            healthy?: HealthStatusEnum | undefined;
        }[]>]: never; }) | undefined;
    } & { [K_2 in Exclude<keyof I, "services">]: never; }>(base?: I | undefined): CheckHealthResponse;
    fromPartial<I_1 extends {
        services?: {
            name?: string | undefined;
            message?: string | undefined;
            healthy?: HealthStatusEnum | undefined;
        }[] | undefined;
    } & {
        services?: ({
            name?: string | undefined;
            message?: string | undefined;
            healthy?: HealthStatusEnum | undefined;
        }[] & ({
            name?: string | undefined;
            message?: string | undefined;
            healthy?: HealthStatusEnum | undefined;
        } & {
            name?: string | undefined;
            message?: string | undefined;
            healthy?: HealthStatusEnum | undefined;
        } & { [K_3 in Exclude<keyof I_1["services"][number], keyof CheckHealthResponse_ServiceHealth>]: never; })[] & { [K_4 in Exclude<keyof I_1["services"], keyof {
            name?: string | undefined;
            message?: string | undefined;
            healthy?: HealthStatusEnum | undefined;
        }[]>]: never; }) | undefined;
    } & { [K_5 in Exclude<keyof I_1, "services">]: never; }>(object: I_1): CheckHealthResponse;
};
interface CheckHealthResponse_ServiceHealth {
    /** Name of the service (e.g. "control_plane", "database", "redis") */
    name: string;
    message: string;
    healthy: HealthStatusEnum;
}
declare const CheckHealthResponse_ServiceHealth: {
    encode(message: CheckHealthResponse_ServiceHealth, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CheckHealthResponse_ServiceHealth;
    fromJSON(object: any): CheckHealthResponse_ServiceHealth;
    toJSON(message: CheckHealthResponse_ServiceHealth): unknown;
    create<I extends {
        name?: string | undefined;
        message?: string | undefined;
        healthy?: HealthStatusEnum | undefined;
    } & {
        name?: string | undefined;
        message?: string | undefined;
        healthy?: HealthStatusEnum | undefined;
    } & { [K in Exclude<keyof I, keyof CheckHealthResponse_ServiceHealth>]: never; }>(base?: I | undefined): CheckHealthResponse_ServiceHealth;
    fromPartial<I_1 extends {
        name?: string | undefined;
        message?: string | undefined;
        healthy?: HealthStatusEnum | undefined;
    } & {
        name?: string | undefined;
        message?: string | undefined;
        healthy?: HealthStatusEnum | undefined;
    } & { [K_1 in Exclude<keyof I_1, keyof CheckHealthResponse_ServiceHealth>]: never; }>(object: I_1): CheckHealthResponse_ServiceHealth;
};
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
type DeepPartial<T> = T extends Builtin ? T : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
    [K in keyof T]?: DeepPartial<T[K]>;
} : Partial<T>;
type KeysOfUnion<T> = T extends T ? keyof T : never;
type Exact<P, I extends P> = P extends Builtin ? P : P & {
    [K in keyof P]: Exact<P[K], I[K]>;
} & {
    [K in Exclude<keyof I, KeysOfUnion<P>>]: never;
};

export { CheckHealthRequest, CheckHealthResponse, CheckHealthResponse_ServiceHealth, DeepPartial, Exact, HealthStatusEnum, healthStatusEnumFromJSON, healthStatusEnumToJSON, protobufPackage };
