import { RequestHeader, ResponseHeader } from "./header";
import { Endpoint, ServiceEntry } from "./directory";
import _m0 from "protobufjs/minimal";
export declare const protobufPackage = "bosdyn.api";
/**
 * The RegisterService request message sends the service's entry and endpoint to the robot's directory.
 * This Request serves as a heartbeat to the Directory.
 */
export interface RegisterServiceRequest {
    /** Common request header. */
    header: RequestHeader | undefined;
    /** The endpoint at which this service may be contacted. */
    endpoint: Endpoint | undefined;
    /** The service to create. The name must not match any existing service. */
    serviceEntry: ServiceEntry | undefined;
}
/** The RegisterService response message has information of whether the service was registered correctly. */
export interface RegisterServiceResponse {
    /** Common response Header. */
    header: ResponseHeader | undefined;
    /** Return status for the request. */
    status: RegisterServiceResponse_Status;
}
export declare enum RegisterServiceResponse_Status {
    /** STATUS_UNKNOWN - UNKNOWN should never be used. An internal DirectoryRegistrationService issue has happened if UNKNOWN is set. */
    STATUS_UNKNOWN = 0,
    /** STATUS_OK - Success. The new service record is available. */
    STATUS_OK = 1,
    /** STATUS_ALREADY_EXISTS - RegisterService failed because a service with this name already exists. */
    STATUS_ALREADY_EXISTS = 2,
    UNRECOGNIZED = -1
}
export declare function registerServiceResponse_StatusFromJSON(object: any): RegisterServiceResponse_Status;
export declare function registerServiceResponse_StatusToJSON(object: RegisterServiceResponse_Status): string;
/** The UnregisterService request message will unregister a service based on name. */
export interface UnregisterServiceRequest {
    /** Common request header. */
    header: RequestHeader | undefined;
    /** The unique user-friendly name of the service. */
    serviceName: string;
}
/** The UnregisterService response message has information of whether the service was unregistered. */
export interface UnregisterServiceResponse {
    /** Common response Header. */
    header: ResponseHeader | undefined;
    /** Return status for the request. */
    status: UnregisterServiceResponse_Status;
}
export declare enum UnregisterServiceResponse_Status {
    /**
     * STATUS_UNKNOWN - UNKNOWN should never be used. An internal DirectoryRegistrationService issue has
     * happened if UNKNOWN is set.
     */
    STATUS_UNKNOWN = 0,
    /** STATUS_OK - Success.  The service record was deleted. */
    STATUS_OK = 1,
    /** STATUS_NONEXISTENT_SERVICE - The provided service name was not found. */
    STATUS_NONEXISTENT_SERVICE = 2,
    UNRECOGNIZED = -1
}
export declare function unregisterServiceResponse_StatusFromJSON(object: any): UnregisterServiceResponse_Status;
export declare function unregisterServiceResponse_StatusToJSON(object: UnregisterServiceResponse_Status): string;
/**
 * The UpdateService request message will update a service based on name to include the new endpoint and service entry.
 * This Request serves as a heartbeat to the Directory.
 */
export interface UpdateServiceRequest {
    /** Common request header. */
    header: RequestHeader | undefined;
    /** The endpoint at which this service may be contacted. */
    endpoint: Endpoint | undefined;
    /** New record for service.  The name field is used as lookup key. */
    serviceEntry: ServiceEntry | undefined;
}
/** The UpdateService response message has information of whether the service was updated on robot. */
export interface UpdateServiceResponse {
    /** Common response Header. */
    header: ResponseHeader | undefined;
    /** Return status for the request. */
    status: UpdateServiceResponse_Status;
}
export declare enum UpdateServiceResponse_Status {
    /** STATUS_UNKNOWN - UNKNOWN should never be used. An internal DirectoryRegistrationService issue has happened if UNKNOWN is set. */
    STATUS_UNKNOWN = 0,
    /** STATUS_OK - Success.  The new service record is available. */
    STATUS_OK = 1,
    /** STATUS_NONEXISTENT_SERVICE - The provided service name was not found. */
    STATUS_NONEXISTENT_SERVICE = 2,
    UNRECOGNIZED = -1
}
export declare function updateServiceResponse_StatusFromJSON(object: any): UpdateServiceResponse_Status;
export declare function updateServiceResponse_StatusToJSON(object: UpdateServiceResponse_Status): string;
export declare const RegisterServiceRequest: {
    encode(message: RegisterServiceRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): RegisterServiceRequest;
    fromJSON(object: any): RegisterServiceRequest;
    toJSON(message: RegisterServiceRequest): unknown;
    fromPartial<I extends {
        header?: {
            requestTimestamp?: Date | undefined;
            clientName?: string | undefined;
            disableRpcLogging?: boolean | undefined;
        } | undefined;
        endpoint?: {
            hostIp?: string | undefined;
            port?: number | undefined;
        } | undefined;
        serviceEntry?: {
            name?: string | undefined;
            type?: string | undefined;
            authority?: string | undefined;
            lastUpdate?: Date | undefined;
            userTokenRequired?: boolean | undefined;
            permissionRequired?: string | undefined;
            livenessTimeoutSecs?: number | undefined;
            hostPayloadGuid?: string | 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;
        endpoint?: ({
            hostIp?: string | undefined;
            port?: number | undefined;
        } & {
            hostIp?: string | undefined;
            port?: number | undefined;
        } & { [K_1 in Exclude<keyof I["endpoint"], keyof Endpoint>]: never; }) | undefined;
        serviceEntry?: ({
            name?: string | undefined;
            type?: string | undefined;
            authority?: string | undefined;
            lastUpdate?: Date | undefined;
            userTokenRequired?: boolean | undefined;
            permissionRequired?: string | undefined;
            livenessTimeoutSecs?: number | undefined;
            hostPayloadGuid?: string | undefined;
        } & {
            name?: string | undefined;
            type?: string | undefined;
            authority?: string | undefined;
            lastUpdate?: Date | undefined;
            userTokenRequired?: boolean | undefined;
            permissionRequired?: string | undefined;
            livenessTimeoutSecs?: number | undefined;
            hostPayloadGuid?: string | undefined;
        } & { [K_2 in Exclude<keyof I["serviceEntry"], keyof ServiceEntry>]: never; }) | undefined;
    } & { [K_3 in Exclude<keyof I, keyof RegisterServiceRequest>]: never; }>(object: I): RegisterServiceRequest;
};
export declare const RegisterServiceResponse: {
    encode(message: RegisterServiceResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): RegisterServiceResponse;
    fromJSON(object: any): RegisterServiceResponse;
    toJSON(message: RegisterServiceResponse): 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?: RegisterServiceResponse_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?: RegisterServiceResponse_Status | undefined;
    } & { [K_5 in Exclude<keyof I, keyof RegisterServiceResponse>]: never; }>(object: I): RegisterServiceResponse;
};
export declare const UnregisterServiceRequest: {
    encode(message: UnregisterServiceRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UnregisterServiceRequest;
    fromJSON(object: any): UnregisterServiceRequest;
    toJSON(message: UnregisterServiceRequest): unknown;
    fromPartial<I extends {
        header?: {
            requestTimestamp?: Date | undefined;
            clientName?: string | undefined;
            disableRpcLogging?: boolean | undefined;
        } | undefined;
        serviceName?: string | 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;
        serviceName?: string | undefined;
    } & { [K_1 in Exclude<keyof I, keyof UnregisterServiceRequest>]: never; }>(object: I): UnregisterServiceRequest;
};
export declare const UnregisterServiceResponse: {
    encode(message: UnregisterServiceResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UnregisterServiceResponse;
    fromJSON(object: any): UnregisterServiceResponse;
    toJSON(message: UnregisterServiceResponse): 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?: UnregisterServiceResponse_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?: UnregisterServiceResponse_Status | undefined;
    } & { [K_5 in Exclude<keyof I, keyof UnregisterServiceResponse>]: never; }>(object: I): UnregisterServiceResponse;
};
export declare const UpdateServiceRequest: {
    encode(message: UpdateServiceRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateServiceRequest;
    fromJSON(object: any): UpdateServiceRequest;
    toJSON(message: UpdateServiceRequest): unknown;
    fromPartial<I extends {
        header?: {
            requestTimestamp?: Date | undefined;
            clientName?: string | undefined;
            disableRpcLogging?: boolean | undefined;
        } | undefined;
        endpoint?: {
            hostIp?: string | undefined;
            port?: number | undefined;
        } | undefined;
        serviceEntry?: {
            name?: string | undefined;
            type?: string | undefined;
            authority?: string | undefined;
            lastUpdate?: Date | undefined;
            userTokenRequired?: boolean | undefined;
            permissionRequired?: string | undefined;
            livenessTimeoutSecs?: number | undefined;
            hostPayloadGuid?: string | 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;
        endpoint?: ({
            hostIp?: string | undefined;
            port?: number | undefined;
        } & {
            hostIp?: string | undefined;
            port?: number | undefined;
        } & { [K_1 in Exclude<keyof I["endpoint"], keyof Endpoint>]: never; }) | undefined;
        serviceEntry?: ({
            name?: string | undefined;
            type?: string | undefined;
            authority?: string | undefined;
            lastUpdate?: Date | undefined;
            userTokenRequired?: boolean | undefined;
            permissionRequired?: string | undefined;
            livenessTimeoutSecs?: number | undefined;
            hostPayloadGuid?: string | undefined;
        } & {
            name?: string | undefined;
            type?: string | undefined;
            authority?: string | undefined;
            lastUpdate?: Date | undefined;
            userTokenRequired?: boolean | undefined;
            permissionRequired?: string | undefined;
            livenessTimeoutSecs?: number | undefined;
            hostPayloadGuid?: string | undefined;
        } & { [K_2 in Exclude<keyof I["serviceEntry"], keyof ServiceEntry>]: never; }) | undefined;
    } & { [K_3 in Exclude<keyof I, keyof UpdateServiceRequest>]: never; }>(object: I): UpdateServiceRequest;
};
export declare const UpdateServiceResponse: {
    encode(message: UpdateServiceResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): UpdateServiceResponse;
    fromJSON(object: any): UpdateServiceResponse;
    toJSON(message: UpdateServiceResponse): 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?: UpdateServiceResponse_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?: UpdateServiceResponse_Status | undefined;
    } & { [K_5 in Exclude<keyof I, keyof UpdateServiceResponse>]: never; }>(object: I): UpdateServiceResponse;
};
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=directory_registration.d.ts.map