import { Duration } from "../../google/protobuf/duration";
import { RequestHeader, ResponseHeader } from "./header";
import _m0 from "protobufjs/minimal";
export declare const protobufPackage = "bosdyn.api";
/**
 * Information necessary to uniquely specify a service fault.
 * A service fault typically is associated with a service running on the robot or a
 * payload. Occassionally, the fault may pertain to a payload but no specific service
 * on the payload. In that situation, no service_name should not be specified and instead
 * a payload_guid should be specified. Otherwise, in the standard case of a service
 * originating fault, only the service_name should be specified and the payload_guid
 * will be populated automatically by the fault service on robot.
 */
export interface ServiceFaultId {
    /** Name of the fault. */
    faultName: string;
    /**
     * Name of the registered service associated with the fault.
     * Optional. Service name does not need to be specified if this is a payload-level
     * fault with no associated service.
     */
    serviceName: string;
    /**
     * GUID of the payload associated with the faulted service.
     * Optional. If not set, it will be assigned to the payload associated with the
     * service_name.
     */
    payloadGuid: string;
}
/**
 * The current service faults for services registered with the robot.
 * A fault is an indicator of a problem with a service or payload registered
 * with the robot. An active fault may indicate a service may fail to comply
 * with a user request.
 * If the name, service_name, and payload_guid of a newly triggered ServiceFault matches an
 * already active ServiceFault the new fault will not be added to the active fault list.
 * The oldest matching fault will be maintained.
 */
export interface ServiceFault {
    /** Identifying information of the fault. */
    faultId: ServiceFaultId | undefined;
    /**
     * User visible description of the fault (and possibly remedies). Will be
     * displayed on tablet.
     */
    errorMessage: string;
    /**
     * Fault attributes
     * Each fault may be flagged with attribute metadata (strings in this case.)
     * These attributes are useful to communicate that a particular fault may
     * have significant effect on the operations of services. Some potential attributes
     * may be "autowalk", "Spot CORE", "vision", or "gauge detection". These
     * attributes enable the caller to flag a fault as indicating a problem with
     * particular robot abstractions. A fault may have, zero, one, or more
     * attributes attached to it.
     */
    attributes: string[];
    /**
     * The severity level will have some indication of the potential breakage
     * resulting from the fault. For example, a fault associated with payload
     * X and severity level SEVERITY_INFO may indicate the payload is in an
     * unexpected state but still operational. However, a fault with serverity
     * level SEVERITY_CRITICAL may indicate the payload is no
     * longer operational.
     */
    severity: ServiceFault_Severity;
    /** Time of robot local clock at fault onset. Set by robot-state service. */
    onsetTimestamp: Date | undefined;
    /** Time elapsed since onset of the fault. Set by robot-state service. */
    duration: Duration | undefined;
}
export declare enum ServiceFault_Severity {
    /** SEVERITY_UNKNOWN - Unknown severity */
    SEVERITY_UNKNOWN = 0,
    /** SEVERITY_INFO - Service still functional */
    SEVERITY_INFO = 1,
    /** SEVERITY_WARN - Service performance may be degraded */
    SEVERITY_WARN = 2,
    /** SEVERITY_CRITICAL - Critical service fault */
    SEVERITY_CRITICAL = 3,
    UNRECOGNIZED = -1
}
export declare function serviceFault_SeverityFromJSON(object: any): ServiceFault_Severity;
export declare function serviceFault_SeverityToJSON(object: ServiceFault_Severity): string;
/**
 * Trigger a new service fault that will be reported in the robot ServiceFaultState.
 * These faults will be displayed in the tablet. Developers should be careful to
 * avoid overwhelming operators with dozens of minor messages.
 */
export interface TriggerServiceFaultRequest {
    /** Common request header. */
    header: RequestHeader | undefined;
    /** The fault to report in ServiceFaultState. */
    fault: ServiceFault | undefined;
}
/** The TriggerServiceFault response message contains a header indicating success. */
export interface TriggerServiceFaultResponse {
    /** Common response header. */
    header: ResponseHeader | undefined;
    /** Return status for the request. */
    status: TriggerServiceFaultResponse_Status;
}
export declare enum TriggerServiceFaultResponse_Status {
    /** STATUS_UNKNOWN - UNKNOWN should never be used. */
    STATUS_UNKNOWN = 0,
    /** STATUS_OK - Success. The fault has been triggerd. */
    STATUS_OK = 1,
    /** STATUS_FAULT_ALREADY_ACTIVE - ServiceFaultId already in active faults. */
    STATUS_FAULT_ALREADY_ACTIVE = 2,
    UNRECOGNIZED = -1
}
export declare function triggerServiceFaultResponse_StatusFromJSON(object: any): TriggerServiceFaultResponse_Status;
export declare function triggerServiceFaultResponse_StatusToJSON(object: TriggerServiceFaultResponse_Status): string;
/**
 * Clear a service fault from the robot's ServiceFaultState (in robot_state.proto).
 * The active ServiceFault to clear will be determined by matching fault_name and
 * service_name/payload_guid, specified in the ServiceFaultId message.
 */
export interface ClearServiceFaultRequest {
    /** Common request header. */
    header: RequestHeader | undefined;
    /** Identifying information of the fault to clear. */
    faultId: ServiceFaultId | undefined;
    /** Clear all faults that are associated with the same service_name. Use carefully. */
    clearAllServiceFaults: boolean;
    /** Clear all faults that are associated with the same payload_guid. Use carefully. */
    clearAllPayloadFaults: boolean;
}
/** The ClearServiceFault response message contains a header indicating success. */
export interface ClearServiceFaultResponse {
    /** Common response header. */
    header: ResponseHeader | undefined;
    /** Return status for the request. */
    status: ClearServiceFaultResponse_Status;
}
export declare enum ClearServiceFaultResponse_Status {
    /** STATUS_UNKNOWN - UNKNOWN should never be used. */
    STATUS_UNKNOWN = 0,
    /** STATUS_OK - Success. The fault has been cleared. */
    STATUS_OK = 1,
    /** STATUS_FAULT_NOT_ACTIVE - ServiceFaultId not found in active faults. */
    STATUS_FAULT_NOT_ACTIVE = 2,
    UNRECOGNIZED = -1
}
export declare function clearServiceFaultResponse_StatusFromJSON(object: any): ClearServiceFaultResponse_Status;
export declare function clearServiceFaultResponse_StatusToJSON(object: ClearServiceFaultResponse_Status): string;
export declare const ServiceFaultId: {
    encode(message: ServiceFaultId, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ServiceFaultId;
    fromJSON(object: any): ServiceFaultId;
    toJSON(message: ServiceFaultId): unknown;
    fromPartial<I extends {
        faultName?: string | undefined;
        serviceName?: string | undefined;
        payloadGuid?: string | undefined;
    } & {
        faultName?: string | undefined;
        serviceName?: string | undefined;
        payloadGuid?: string | undefined;
    } & { [K in Exclude<keyof I, keyof ServiceFaultId>]: never; }>(object: I): ServiceFaultId;
};
export declare const ServiceFault: {
    encode(message: ServiceFault, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ServiceFault;
    fromJSON(object: any): ServiceFault;
    toJSON(message: ServiceFault): unknown;
    fromPartial<I extends {
        faultId?: {
            faultName?: string | undefined;
            serviceName?: string | undefined;
            payloadGuid?: string | undefined;
        } | undefined;
        errorMessage?: string | undefined;
        attributes?: string[] | undefined;
        severity?: ServiceFault_Severity | undefined;
        onsetTimestamp?: Date | undefined;
        duration?: {
            seconds?: number | undefined;
            nanos?: number | undefined;
        } | undefined;
    } & {
        faultId?: ({
            faultName?: string | undefined;
            serviceName?: string | undefined;
            payloadGuid?: string | undefined;
        } & {
            faultName?: string | undefined;
            serviceName?: string | undefined;
            payloadGuid?: string | undefined;
        } & { [K in Exclude<keyof I["faultId"], keyof ServiceFaultId>]: never; }) | undefined;
        errorMessage?: string | undefined;
        attributes?: (string[] & string[] & { [K_1 in Exclude<keyof I["attributes"], keyof string[]>]: never; }) | undefined;
        severity?: ServiceFault_Severity | undefined;
        onsetTimestamp?: Date | undefined;
        duration?: ({
            seconds?: number | undefined;
            nanos?: number | undefined;
        } & {
            seconds?: number | undefined;
            nanos?: number | undefined;
        } & { [K_2 in Exclude<keyof I["duration"], keyof Duration>]: never; }) | undefined;
    } & { [K_3 in Exclude<keyof I, keyof ServiceFault>]: never; }>(object: I): ServiceFault;
};
export declare const TriggerServiceFaultRequest: {
    encode(message: TriggerServiceFaultRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): TriggerServiceFaultRequest;
    fromJSON(object: any): TriggerServiceFaultRequest;
    toJSON(message: TriggerServiceFaultRequest): unknown;
    fromPartial<I extends {
        header?: {
            requestTimestamp?: Date | undefined;
            clientName?: string | undefined;
            disableRpcLogging?: boolean | undefined;
        } | undefined;
        fault?: {
            faultId?: {
                faultName?: string | undefined;
                serviceName?: string | undefined;
                payloadGuid?: string | undefined;
            } | undefined;
            errorMessage?: string | undefined;
            attributes?: string[] | undefined;
            severity?: ServiceFault_Severity | undefined;
            onsetTimestamp?: Date | undefined;
            duration?: {
                seconds?: number | undefined;
                nanos?: number | undefined;
            } | undefined;
        } | undefined;
    } & {
        header?: ({
            requestTimestamp?: Date | undefined;
            clientName?: string | undefined;
            disableRpcLogging?: boolean | undefined;
        } & {
            requestTimestamp?: Date | undefined;
            clientName?: string | undefined;
            disableRpcLogging?: boolean | undefined;
        } & { [K in Exclude<keyof I["header"], keyof RequestHeader>]: never; }) | undefined;
        fault?: ({
            faultId?: {
                faultName?: string | undefined;
                serviceName?: string | undefined;
                payloadGuid?: string | undefined;
            } | undefined;
            errorMessage?: string | undefined;
            attributes?: string[] | undefined;
            severity?: ServiceFault_Severity | undefined;
            onsetTimestamp?: Date | undefined;
            duration?: {
                seconds?: number | undefined;
                nanos?: number | undefined;
            } | undefined;
        } & {
            faultId?: ({
                faultName?: string | undefined;
                serviceName?: string | undefined;
                payloadGuid?: string | undefined;
            } & {
                faultName?: string | undefined;
                serviceName?: string | undefined;
                payloadGuid?: string | undefined;
            } & { [K_1 in Exclude<keyof I["fault"]["faultId"], keyof ServiceFaultId>]: never; }) | undefined;
            errorMessage?: string | undefined;
            attributes?: (string[] & string[] & { [K_2 in Exclude<keyof I["fault"]["attributes"], keyof string[]>]: never; }) | undefined;
            severity?: ServiceFault_Severity | undefined;
            onsetTimestamp?: Date | undefined;
            duration?: ({
                seconds?: number | undefined;
                nanos?: number | undefined;
            } & {
                seconds?: number | undefined;
                nanos?: number | undefined;
            } & { [K_3 in Exclude<keyof I["fault"]["duration"], keyof Duration>]: never; }) | undefined;
        } & { [K_4 in Exclude<keyof I["fault"], keyof ServiceFault>]: never; }) | undefined;
    } & { [K_5 in Exclude<keyof I, keyof TriggerServiceFaultRequest>]: never; }>(object: I): TriggerServiceFaultRequest;
};
export declare const TriggerServiceFaultResponse: {
    encode(message: TriggerServiceFaultResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): TriggerServiceFaultResponse;
    fromJSON(object: any): TriggerServiceFaultResponse;
    toJSON(message: TriggerServiceFaultResponse): unknown;
    fromPartial<I extends {
        header?: {
            requestHeader?: {
                requestTimestamp?: Date | undefined;
                clientName?: string | undefined;
                disableRpcLogging?: boolean | undefined;
            } | undefined;
            requestReceivedTimestamp?: Date | undefined;
            responseTimestamp?: Date | undefined;
            error?: {
                code?: import("./header").CommonError_Code | undefined;
                message?: string | undefined;
                data?: {
                    typeUrl?: string | undefined;
                    value?: Uint8Array | undefined;
                } | undefined;
            } | undefined;
            request?: {
                typeUrl?: string | undefined;
                value?: Uint8Array | undefined;
            } | undefined;
        } | undefined;
        status?: TriggerServiceFaultResponse_Status | undefined;
    } & {
        header?: ({
            requestHeader?: {
                requestTimestamp?: Date | undefined;
                clientName?: string | undefined;
                disableRpcLogging?: boolean | undefined;
            } | undefined;
            requestReceivedTimestamp?: Date | undefined;
            responseTimestamp?: Date | undefined;
            error?: {
                code?: import("./header").CommonError_Code | undefined;
                message?: string | undefined;
                data?: {
                    typeUrl?: string | undefined;
                    value?: Uint8Array | undefined;
                } | undefined;
            } | undefined;
            request?: {
                typeUrl?: string | undefined;
                value?: Uint8Array | undefined;
            } | undefined;
        } & {
            requestHeader?: ({
                requestTimestamp?: Date | undefined;
                clientName?: string | undefined;
                disableRpcLogging?: boolean | undefined;
            } & {
                requestTimestamp?: Date | undefined;
                clientName?: string | undefined;
                disableRpcLogging?: boolean | undefined;
            } & { [K in Exclude<keyof I["header"]["requestHeader"], keyof RequestHeader>]: never; }) | undefined;
            requestReceivedTimestamp?: Date | undefined;
            responseTimestamp?: Date | undefined;
            error?: ({
                code?: import("./header").CommonError_Code | undefined;
                message?: string | undefined;
                data?: {
                    typeUrl?: string | undefined;
                    value?: Uint8Array | undefined;
                } | undefined;
            } & {
                code?: import("./header").CommonError_Code | undefined;
                message?: string | undefined;
                data?: ({
                    typeUrl?: string | undefined;
                    value?: Uint8Array | undefined;
                } & {
                    typeUrl?: string | undefined;
                    value?: Uint8Array | undefined;
                } & { [K_1 in Exclude<keyof I["header"]["error"]["data"], keyof import("../../google/protobuf/any").Any>]: never; }) | undefined;
            } & { [K_2 in Exclude<keyof I["header"]["error"], keyof import("./header").CommonError>]: never; }) | undefined;
            request?: ({
                typeUrl?: string | undefined;
                value?: Uint8Array | undefined;
            } & {
                typeUrl?: string | undefined;
                value?: Uint8Array | undefined;
            } & { [K_3 in Exclude<keyof I["header"]["request"], keyof import("../../google/protobuf/any").Any>]: never; }) | undefined;
        } & { [K_4 in Exclude<keyof I["header"], keyof ResponseHeader>]: never; }) | undefined;
        status?: TriggerServiceFaultResponse_Status | undefined;
    } & { [K_5 in Exclude<keyof I, keyof TriggerServiceFaultResponse>]: never; }>(object: I): TriggerServiceFaultResponse;
};
export declare const ClearServiceFaultRequest: {
    encode(message: ClearServiceFaultRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ClearServiceFaultRequest;
    fromJSON(object: any): ClearServiceFaultRequest;
    toJSON(message: ClearServiceFaultRequest): unknown;
    fromPartial<I extends {
        header?: {
            requestTimestamp?: Date | undefined;
            clientName?: string | undefined;
            disableRpcLogging?: boolean | undefined;
        } | undefined;
        faultId?: {
            faultName?: string | undefined;
            serviceName?: string | undefined;
            payloadGuid?: string | undefined;
        } | undefined;
        clearAllServiceFaults?: boolean | undefined;
        clearAllPayloadFaults?: boolean | undefined;
    } & {
        header?: ({
            requestTimestamp?: Date | undefined;
            clientName?: string | undefined;
            disableRpcLogging?: boolean | undefined;
        } & {
            requestTimestamp?: Date | undefined;
            clientName?: string | undefined;
            disableRpcLogging?: boolean | undefined;
        } & { [K in Exclude<keyof I["header"], keyof RequestHeader>]: never; }) | undefined;
        faultId?: ({
            faultName?: string | undefined;
            serviceName?: string | undefined;
            payloadGuid?: string | undefined;
        } & {
            faultName?: string | undefined;
            serviceName?: string | undefined;
            payloadGuid?: string | undefined;
        } & { [K_1 in Exclude<keyof I["faultId"], keyof ServiceFaultId>]: never; }) | undefined;
        clearAllServiceFaults?: boolean | undefined;
        clearAllPayloadFaults?: boolean | undefined;
    } & { [K_2 in Exclude<keyof I, keyof ClearServiceFaultRequest>]: never; }>(object: I): ClearServiceFaultRequest;
};
export declare const ClearServiceFaultResponse: {
    encode(message: ClearServiceFaultResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ClearServiceFaultResponse;
    fromJSON(object: any): ClearServiceFaultResponse;
    toJSON(message: ClearServiceFaultResponse): unknown;
    fromPartial<I extends {
        header?: {
            requestHeader?: {
                requestTimestamp?: Date | undefined;
                clientName?: string | undefined;
                disableRpcLogging?: boolean | undefined;
            } | undefined;
            requestReceivedTimestamp?: Date | undefined;
            responseTimestamp?: Date | undefined;
            error?: {
                code?: import("./header").CommonError_Code | undefined;
                message?: string | undefined;
                data?: {
                    typeUrl?: string | undefined;
                    value?: Uint8Array | undefined;
                } | undefined;
            } | undefined;
            request?: {
                typeUrl?: string | undefined;
                value?: Uint8Array | undefined;
            } | undefined;
        } | undefined;
        status?: ClearServiceFaultResponse_Status | undefined;
    } & {
        header?: ({
            requestHeader?: {
                requestTimestamp?: Date | undefined;
                clientName?: string | undefined;
                disableRpcLogging?: boolean | undefined;
            } | undefined;
            requestReceivedTimestamp?: Date | undefined;
            responseTimestamp?: Date | undefined;
            error?: {
                code?: import("./header").CommonError_Code | undefined;
                message?: string | undefined;
                data?: {
                    typeUrl?: string | undefined;
                    value?: Uint8Array | undefined;
                } | undefined;
            } | undefined;
            request?: {
                typeUrl?: string | undefined;
                value?: Uint8Array | undefined;
            } | undefined;
        } & {
            requestHeader?: ({
                requestTimestamp?: Date | undefined;
                clientName?: string | undefined;
                disableRpcLogging?: boolean | undefined;
            } & {
                requestTimestamp?: Date | undefined;
                clientName?: string | undefined;
                disableRpcLogging?: boolean | undefined;
            } & { [K in Exclude<keyof I["header"]["requestHeader"], keyof RequestHeader>]: never; }) | undefined;
            requestReceivedTimestamp?: Date | undefined;
            responseTimestamp?: Date | undefined;
            error?: ({
                code?: import("./header").CommonError_Code | undefined;
                message?: string | undefined;
                data?: {
                    typeUrl?: string | undefined;
                    value?: Uint8Array | undefined;
                } | undefined;
            } & {
                code?: import("./header").CommonError_Code | undefined;
                message?: string | undefined;
                data?: ({
                    typeUrl?: string | undefined;
                    value?: Uint8Array | undefined;
                } & {
                    typeUrl?: string | undefined;
                    value?: Uint8Array | undefined;
                } & { [K_1 in Exclude<keyof I["header"]["error"]["data"], keyof import("../../google/protobuf/any").Any>]: never; }) | undefined;
            } & { [K_2 in Exclude<keyof I["header"]["error"], keyof import("./header").CommonError>]: never; }) | undefined;
            request?: ({
                typeUrl?: string | undefined;
                value?: Uint8Array | undefined;
            } & {
                typeUrl?: string | undefined;
                value?: Uint8Array | undefined;
            } & { [K_3 in Exclude<keyof I["header"]["request"], keyof import("../../google/protobuf/any").Any>]: never; }) | undefined;
        } & { [K_4 in Exclude<keyof I["header"], keyof ResponseHeader>]: never; }) | undefined;
        status?: ClearServiceFaultResponse_Status | undefined;
    } & { [K_5 in Exclude<keyof I, keyof ClearServiceFaultResponse>]: never; }>(object: I): ClearServiceFaultResponse;
};
declare type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export declare 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>;
declare type KeysOfUnion<T> = T extends T ? keyof T : never;
export declare 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 {};
//# sourceMappingURL=service_fault.d.ts.map