// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// source: cerbos/svc/v1/svc.proto

/* eslint-disable */
import {
  type CallOptions,
  type ChannelCredentials,
  Client,
  type ClientOptions,
  type ClientReadableStream,
  type ClientUnaryCall,
  type handleServerStreamingCall,
  type handleUnaryCall,
  makeGenericClientConstructor,
  type Metadata,
  type ServiceError,
  type UntypedServiceImplementation,
} from "@grpc/grpc-js";
import {
  AddOrUpdatePolicyRequest,
  AddOrUpdateSchemaRequest,
  CheckResourceBatchRequest,
  CheckResourceSetRequest,
  CheckResourcesRequest,
  DeleteSchemaRequest,
  DisablePolicyRequest,
  EnablePolicyRequest,
  GetPolicyRequest,
  GetSchemaRequest,
  InspectPoliciesRequest,
  ListAuditLogEntriesRequest,
  ListPoliciesRequest,
  ListSchemasRequest,
  PlanResourcesRequest,
  ReloadStoreRequest,
  ServerInfoRequest,
} from "../../request/v1/request";
import {
  AddOrUpdatePolicyResponse,
  AddOrUpdateSchemaResponse,
  CheckResourceBatchResponse,
  CheckResourceSetResponse,
  CheckResourcesResponse,
  DeleteSchemaResponse,
  DisablePolicyResponse,
  EnablePolicyResponse,
  GetPolicyResponse,
  GetSchemaResponse,
  InspectPoliciesResponse,
  ListAuditLogEntriesResponse,
  ListPoliciesResponse,
  ListSchemasResponse,
  PlanResourcesResponse,
  ReloadStoreResponse,
  ServerInfoResponse,
} from "../../response/v1/response";

export const protobufPackage = "cerbos.svc.v1";

export type CerbosServiceService = typeof CerbosServiceService;
export const CerbosServiceService = {
  checkResourceSet: {
    path: "/cerbos.svc.v1.CerbosService/CheckResourceSet",
    requestStream: false,
    responseStream: false,
    requestSerialize: (value: CheckResourceSetRequest): Buffer =>
      Buffer.from(CheckResourceSetRequest.encode(value).finish()),
    requestDeserialize: (value: Buffer): CheckResourceSetRequest =>
      CheckResourceSetRequest.decode(value),
    responseSerialize: (value: CheckResourceSetResponse): Buffer =>
      Buffer.from(CheckResourceSetResponse.encode(value).finish()),
    responseDeserialize: (value: Buffer): CheckResourceSetResponse =>
      CheckResourceSetResponse.decode(value),
  },
  checkResourceBatch: {
    path: "/cerbos.svc.v1.CerbosService/CheckResourceBatch",
    requestStream: false,
    responseStream: false,
    requestSerialize: (value: CheckResourceBatchRequest): Buffer =>
      Buffer.from(CheckResourceBatchRequest.encode(value).finish()),
    requestDeserialize: (value: Buffer): CheckResourceBatchRequest =>
      CheckResourceBatchRequest.decode(value),
    responseSerialize: (value: CheckResourceBatchResponse): Buffer =>
      Buffer.from(CheckResourceBatchResponse.encode(value).finish()),
    responseDeserialize: (value: Buffer): CheckResourceBatchResponse =>
      CheckResourceBatchResponse.decode(value),
  },
  checkResources: {
    path: "/cerbos.svc.v1.CerbosService/CheckResources",
    requestStream: false,
    responseStream: false,
    requestSerialize: (value: CheckResourcesRequest): Buffer =>
      Buffer.from(CheckResourcesRequest.encode(value).finish()),
    requestDeserialize: (value: Buffer): CheckResourcesRequest =>
      CheckResourcesRequest.decode(value),
    responseSerialize: (value: CheckResourcesResponse): Buffer =>
      Buffer.from(CheckResourcesResponse.encode(value).finish()),
    responseDeserialize: (value: Buffer): CheckResourcesResponse =>
      CheckResourcesResponse.decode(value),
  },
  serverInfo: {
    path: "/cerbos.svc.v1.CerbosService/ServerInfo",
    requestStream: false,
    responseStream: false,
    requestSerialize: (value: ServerInfoRequest): Buffer =>
      Buffer.from(ServerInfoRequest.encode(value).finish()),
    requestDeserialize: (value: Buffer): ServerInfoRequest =>
      ServerInfoRequest.decode(value),
    responseSerialize: (value: ServerInfoResponse): Buffer =>
      Buffer.from(ServerInfoResponse.encode(value).finish()),
    responseDeserialize: (value: Buffer): ServerInfoResponse =>
      ServerInfoResponse.decode(value),
  },
  planResources: {
    path: "/cerbos.svc.v1.CerbosService/PlanResources",
    requestStream: false,
    responseStream: false,
    requestSerialize: (value: PlanResourcesRequest): Buffer =>
      Buffer.from(PlanResourcesRequest.encode(value).finish()),
    requestDeserialize: (value: Buffer): PlanResourcesRequest =>
      PlanResourcesRequest.decode(value),
    responseSerialize: (value: PlanResourcesResponse): Buffer =>
      Buffer.from(PlanResourcesResponse.encode(value).finish()),
    responseDeserialize: (value: Buffer): PlanResourcesResponse =>
      PlanResourcesResponse.decode(value),
  },
} as const;

export interface CerbosServiceServer extends UntypedServiceImplementation {
  checkResourceSet: handleUnaryCall<
    CheckResourceSetRequest,
    CheckResourceSetResponse
  >;
  checkResourceBatch: handleUnaryCall<
    CheckResourceBatchRequest,
    CheckResourceBatchResponse
  >;
  checkResources: handleUnaryCall<
    CheckResourcesRequest,
    CheckResourcesResponse
  >;
  serverInfo: handleUnaryCall<ServerInfoRequest, ServerInfoResponse>;
  planResources: handleUnaryCall<PlanResourcesRequest, PlanResourcesResponse>;
}

export interface CerbosServiceClient extends Client {
  checkResourceSet(
    request: CheckResourceSetRequest,
    callback: (
      error: ServiceError | null,
      response: CheckResourceSetResponse,
    ) => void,
  ): ClientUnaryCall;
  checkResourceSet(
    request: CheckResourceSetRequest,
    metadata: Metadata,
    callback: (
      error: ServiceError | null,
      response: CheckResourceSetResponse,
    ) => void,
  ): ClientUnaryCall;
  checkResourceSet(
    request: CheckResourceSetRequest,
    metadata: Metadata,
    options: Partial<CallOptions>,
    callback: (
      error: ServiceError | null,
      response: CheckResourceSetResponse,
    ) => void,
  ): ClientUnaryCall;
  checkResourceBatch(
    request: CheckResourceBatchRequest,
    callback: (
      error: ServiceError | null,
      response: CheckResourceBatchResponse,
    ) => void,
  ): ClientUnaryCall;
  checkResourceBatch(
    request: CheckResourceBatchRequest,
    metadata: Metadata,
    callback: (
      error: ServiceError | null,
      response: CheckResourceBatchResponse,
    ) => void,
  ): ClientUnaryCall;
  checkResourceBatch(
    request: CheckResourceBatchRequest,
    metadata: Metadata,
    options: Partial<CallOptions>,
    callback: (
      error: ServiceError | null,
      response: CheckResourceBatchResponse,
    ) => void,
  ): ClientUnaryCall;
  checkResources(
    request: CheckResourcesRequest,
    callback: (
      error: ServiceError | null,
      response: CheckResourcesResponse,
    ) => void,
  ): ClientUnaryCall;
  checkResources(
    request: CheckResourcesRequest,
    metadata: Metadata,
    callback: (
      error: ServiceError | null,
      response: CheckResourcesResponse,
    ) => void,
  ): ClientUnaryCall;
  checkResources(
    request: CheckResourcesRequest,
    metadata: Metadata,
    options: Partial<CallOptions>,
    callback: (
      error: ServiceError | null,
      response: CheckResourcesResponse,
    ) => void,
  ): ClientUnaryCall;
  serverInfo(
    request: ServerInfoRequest,
    callback: (
      error: ServiceError | null,
      response: ServerInfoResponse,
    ) => void,
  ): ClientUnaryCall;
  serverInfo(
    request: ServerInfoRequest,
    metadata: Metadata,
    callback: (
      error: ServiceError | null,
      response: ServerInfoResponse,
    ) => void,
  ): ClientUnaryCall;
  serverInfo(
    request: ServerInfoRequest,
    metadata: Metadata,
    options: Partial<CallOptions>,
    callback: (
      error: ServiceError | null,
      response: ServerInfoResponse,
    ) => void,
  ): ClientUnaryCall;
  planResources(
    request: PlanResourcesRequest,
    callback: (
      error: ServiceError | null,
      response: PlanResourcesResponse,
    ) => void,
  ): ClientUnaryCall;
  planResources(
    request: PlanResourcesRequest,
    metadata: Metadata,
    callback: (
      error: ServiceError | null,
      response: PlanResourcesResponse,
    ) => void,
  ): ClientUnaryCall;
  planResources(
    request: PlanResourcesRequest,
    metadata: Metadata,
    options: Partial<CallOptions>,
    callback: (
      error: ServiceError | null,
      response: PlanResourcesResponse,
    ) => void,
  ): ClientUnaryCall;
}

export const CerbosServiceClient = makeGenericClientConstructor(
  CerbosServiceService,
  "cerbos.svc.v1.CerbosService",
) as unknown as {
  new (
    address: string,
    credentials: ChannelCredentials,
    options?: Partial<ClientOptions>,
  ): CerbosServiceClient;
  service: typeof CerbosServiceService;
  serviceName: string;
};

export type CerbosAdminServiceService = typeof CerbosAdminServiceService;
export const CerbosAdminServiceService = {
  addOrUpdatePolicy: {
    path: "/cerbos.svc.v1.CerbosAdminService/AddOrUpdatePolicy",
    requestStream: false,
    responseStream: false,
    requestSerialize: (value: AddOrUpdatePolicyRequest): Buffer =>
      Buffer.from(AddOrUpdatePolicyRequest.encode(value).finish()),
    requestDeserialize: (value: Buffer): AddOrUpdatePolicyRequest =>
      AddOrUpdatePolicyRequest.decode(value),
    responseSerialize: (value: AddOrUpdatePolicyResponse): Buffer =>
      Buffer.from(AddOrUpdatePolicyResponse.encode(value).finish()),
    responseDeserialize: (value: Buffer): AddOrUpdatePolicyResponse =>
      AddOrUpdatePolicyResponse.decode(value),
  },
  inspectPolicies: {
    path: "/cerbos.svc.v1.CerbosAdminService/InspectPolicies",
    requestStream: false,
    responseStream: false,
    requestSerialize: (value: InspectPoliciesRequest): Buffer =>
      Buffer.from(InspectPoliciesRequest.encode(value).finish()),
    requestDeserialize: (value: Buffer): InspectPoliciesRequest =>
      InspectPoliciesRequest.decode(value),
    responseSerialize: (value: InspectPoliciesResponse): Buffer =>
      Buffer.from(InspectPoliciesResponse.encode(value).finish()),
    responseDeserialize: (value: Buffer): InspectPoliciesResponse =>
      InspectPoliciesResponse.decode(value),
  },
  listPolicies: {
    path: "/cerbos.svc.v1.CerbosAdminService/ListPolicies",
    requestStream: false,
    responseStream: false,
    requestSerialize: (value: ListPoliciesRequest): Buffer =>
      Buffer.from(ListPoliciesRequest.encode(value).finish()),
    requestDeserialize: (value: Buffer): ListPoliciesRequest =>
      ListPoliciesRequest.decode(value),
    responseSerialize: (value: ListPoliciesResponse): Buffer =>
      Buffer.from(ListPoliciesResponse.encode(value).finish()),
    responseDeserialize: (value: Buffer): ListPoliciesResponse =>
      ListPoliciesResponse.decode(value),
  },
  getPolicy: {
    path: "/cerbos.svc.v1.CerbosAdminService/GetPolicy",
    requestStream: false,
    responseStream: false,
    requestSerialize: (value: GetPolicyRequest): Buffer =>
      Buffer.from(GetPolicyRequest.encode(value).finish()),
    requestDeserialize: (value: Buffer): GetPolicyRequest =>
      GetPolicyRequest.decode(value),
    responseSerialize: (value: GetPolicyResponse): Buffer =>
      Buffer.from(GetPolicyResponse.encode(value).finish()),
    responseDeserialize: (value: Buffer): GetPolicyResponse =>
      GetPolicyResponse.decode(value),
  },
  disablePolicy: {
    path: "/cerbos.svc.v1.CerbosAdminService/DisablePolicy",
    requestStream: false,
    responseStream: false,
    requestSerialize: (value: DisablePolicyRequest): Buffer =>
      Buffer.from(DisablePolicyRequest.encode(value).finish()),
    requestDeserialize: (value: Buffer): DisablePolicyRequest =>
      DisablePolicyRequest.decode(value),
    responseSerialize: (value: DisablePolicyResponse): Buffer =>
      Buffer.from(DisablePolicyResponse.encode(value).finish()),
    responseDeserialize: (value: Buffer): DisablePolicyResponse =>
      DisablePolicyResponse.decode(value),
  },
  enablePolicy: {
    path: "/cerbos.svc.v1.CerbosAdminService/EnablePolicy",
    requestStream: false,
    responseStream: false,
    requestSerialize: (value: EnablePolicyRequest): Buffer =>
      Buffer.from(EnablePolicyRequest.encode(value).finish()),
    requestDeserialize: (value: Buffer): EnablePolicyRequest =>
      EnablePolicyRequest.decode(value),
    responseSerialize: (value: EnablePolicyResponse): Buffer =>
      Buffer.from(EnablePolicyResponse.encode(value).finish()),
    responseDeserialize: (value: Buffer): EnablePolicyResponse =>
      EnablePolicyResponse.decode(value),
  },
  listAuditLogEntries: {
    path: "/cerbos.svc.v1.CerbosAdminService/ListAuditLogEntries",
    requestStream: false,
    responseStream: true,
    requestSerialize: (value: ListAuditLogEntriesRequest): Buffer =>
      Buffer.from(ListAuditLogEntriesRequest.encode(value).finish()),
    requestDeserialize: (value: Buffer): ListAuditLogEntriesRequest =>
      ListAuditLogEntriesRequest.decode(value),
    responseSerialize: (value: ListAuditLogEntriesResponse): Buffer =>
      Buffer.from(ListAuditLogEntriesResponse.encode(value).finish()),
    responseDeserialize: (value: Buffer): ListAuditLogEntriesResponse =>
      ListAuditLogEntriesResponse.decode(value),
  },
  addOrUpdateSchema: {
    path: "/cerbos.svc.v1.CerbosAdminService/AddOrUpdateSchema",
    requestStream: false,
    responseStream: false,
    requestSerialize: (value: AddOrUpdateSchemaRequest): Buffer =>
      Buffer.from(AddOrUpdateSchemaRequest.encode(value).finish()),
    requestDeserialize: (value: Buffer): AddOrUpdateSchemaRequest =>
      AddOrUpdateSchemaRequest.decode(value),
    responseSerialize: (value: AddOrUpdateSchemaResponse): Buffer =>
      Buffer.from(AddOrUpdateSchemaResponse.encode(value).finish()),
    responseDeserialize: (value: Buffer): AddOrUpdateSchemaResponse =>
      AddOrUpdateSchemaResponse.decode(value),
  },
  listSchemas: {
    path: "/cerbos.svc.v1.CerbosAdminService/ListSchemas",
    requestStream: false,
    responseStream: false,
    requestSerialize: (value: ListSchemasRequest): Buffer =>
      Buffer.from(ListSchemasRequest.encode(value).finish()),
    requestDeserialize: (value: Buffer): ListSchemasRequest =>
      ListSchemasRequest.decode(value),
    responseSerialize: (value: ListSchemasResponse): Buffer =>
      Buffer.from(ListSchemasResponse.encode(value).finish()),
    responseDeserialize: (value: Buffer): ListSchemasResponse =>
      ListSchemasResponse.decode(value),
  },
  getSchema: {
    path: "/cerbos.svc.v1.CerbosAdminService/GetSchema",
    requestStream: false,
    responseStream: false,
    requestSerialize: (value: GetSchemaRequest): Buffer =>
      Buffer.from(GetSchemaRequest.encode(value).finish()),
    requestDeserialize: (value: Buffer): GetSchemaRequest =>
      GetSchemaRequest.decode(value),
    responseSerialize: (value: GetSchemaResponse): Buffer =>
      Buffer.from(GetSchemaResponse.encode(value).finish()),
    responseDeserialize: (value: Buffer): GetSchemaResponse =>
      GetSchemaResponse.decode(value),
  },
  deleteSchema: {
    path: "/cerbos.svc.v1.CerbosAdminService/DeleteSchema",
    requestStream: false,
    responseStream: false,
    requestSerialize: (value: DeleteSchemaRequest): Buffer =>
      Buffer.from(DeleteSchemaRequest.encode(value).finish()),
    requestDeserialize: (value: Buffer): DeleteSchemaRequest =>
      DeleteSchemaRequest.decode(value),
    responseSerialize: (value: DeleteSchemaResponse): Buffer =>
      Buffer.from(DeleteSchemaResponse.encode(value).finish()),
    responseDeserialize: (value: Buffer): DeleteSchemaResponse =>
      DeleteSchemaResponse.decode(value),
  },
  reloadStore: {
    path: "/cerbos.svc.v1.CerbosAdminService/ReloadStore",
    requestStream: false,
    responseStream: false,
    requestSerialize: (value: ReloadStoreRequest): Buffer =>
      Buffer.from(ReloadStoreRequest.encode(value).finish()),
    requestDeserialize: (value: Buffer): ReloadStoreRequest =>
      ReloadStoreRequest.decode(value),
    responseSerialize: (value: ReloadStoreResponse): Buffer =>
      Buffer.from(ReloadStoreResponse.encode(value).finish()),
    responseDeserialize: (value: Buffer): ReloadStoreResponse =>
      ReloadStoreResponse.decode(value),
  },
} as const;

export interface CerbosAdminServiceServer extends UntypedServiceImplementation {
  addOrUpdatePolicy: handleUnaryCall<
    AddOrUpdatePolicyRequest,
    AddOrUpdatePolicyResponse
  >;
  inspectPolicies: handleUnaryCall<
    InspectPoliciesRequest,
    InspectPoliciesResponse
  >;
  listPolicies: handleUnaryCall<ListPoliciesRequest, ListPoliciesResponse>;
  getPolicy: handleUnaryCall<GetPolicyRequest, GetPolicyResponse>;
  disablePolicy: handleUnaryCall<DisablePolicyRequest, DisablePolicyResponse>;
  enablePolicy: handleUnaryCall<EnablePolicyRequest, EnablePolicyResponse>;
  listAuditLogEntries: handleServerStreamingCall<
    ListAuditLogEntriesRequest,
    ListAuditLogEntriesResponse
  >;
  addOrUpdateSchema: handleUnaryCall<
    AddOrUpdateSchemaRequest,
    AddOrUpdateSchemaResponse
  >;
  listSchemas: handleUnaryCall<ListSchemasRequest, ListSchemasResponse>;
  getSchema: handleUnaryCall<GetSchemaRequest, GetSchemaResponse>;
  deleteSchema: handleUnaryCall<DeleteSchemaRequest, DeleteSchemaResponse>;
  reloadStore: handleUnaryCall<ReloadStoreRequest, ReloadStoreResponse>;
}

export interface CerbosAdminServiceClient extends Client {
  addOrUpdatePolicy(
    request: AddOrUpdatePolicyRequest,
    callback: (
      error: ServiceError | null,
      response: AddOrUpdatePolicyResponse,
    ) => void,
  ): ClientUnaryCall;
  addOrUpdatePolicy(
    request: AddOrUpdatePolicyRequest,
    metadata: Metadata,
    callback: (
      error: ServiceError | null,
      response: AddOrUpdatePolicyResponse,
    ) => void,
  ): ClientUnaryCall;
  addOrUpdatePolicy(
    request: AddOrUpdatePolicyRequest,
    metadata: Metadata,
    options: Partial<CallOptions>,
    callback: (
      error: ServiceError | null,
      response: AddOrUpdatePolicyResponse,
    ) => void,
  ): ClientUnaryCall;
  inspectPolicies(
    request: InspectPoliciesRequest,
    callback: (
      error: ServiceError | null,
      response: InspectPoliciesResponse,
    ) => void,
  ): ClientUnaryCall;
  inspectPolicies(
    request: InspectPoliciesRequest,
    metadata: Metadata,
    callback: (
      error: ServiceError | null,
      response: InspectPoliciesResponse,
    ) => void,
  ): ClientUnaryCall;
  inspectPolicies(
    request: InspectPoliciesRequest,
    metadata: Metadata,
    options: Partial<CallOptions>,
    callback: (
      error: ServiceError | null,
      response: InspectPoliciesResponse,
    ) => void,
  ): ClientUnaryCall;
  listPolicies(
    request: ListPoliciesRequest,
    callback: (
      error: ServiceError | null,
      response: ListPoliciesResponse,
    ) => void,
  ): ClientUnaryCall;
  listPolicies(
    request: ListPoliciesRequest,
    metadata: Metadata,
    callback: (
      error: ServiceError | null,
      response: ListPoliciesResponse,
    ) => void,
  ): ClientUnaryCall;
  listPolicies(
    request: ListPoliciesRequest,
    metadata: Metadata,
    options: Partial<CallOptions>,
    callback: (
      error: ServiceError | null,
      response: ListPoliciesResponse,
    ) => void,
  ): ClientUnaryCall;
  getPolicy(
    request: GetPolicyRequest,
    callback: (error: ServiceError | null, response: GetPolicyResponse) => void,
  ): ClientUnaryCall;
  getPolicy(
    request: GetPolicyRequest,
    metadata: Metadata,
    callback: (error: ServiceError | null, response: GetPolicyResponse) => void,
  ): ClientUnaryCall;
  getPolicy(
    request: GetPolicyRequest,
    metadata: Metadata,
    options: Partial<CallOptions>,
    callback: (error: ServiceError | null, response: GetPolicyResponse) => void,
  ): ClientUnaryCall;
  disablePolicy(
    request: DisablePolicyRequest,
    callback: (
      error: ServiceError | null,
      response: DisablePolicyResponse,
    ) => void,
  ): ClientUnaryCall;
  disablePolicy(
    request: DisablePolicyRequest,
    metadata: Metadata,
    callback: (
      error: ServiceError | null,
      response: DisablePolicyResponse,
    ) => void,
  ): ClientUnaryCall;
  disablePolicy(
    request: DisablePolicyRequest,
    metadata: Metadata,
    options: Partial<CallOptions>,
    callback: (
      error: ServiceError | null,
      response: DisablePolicyResponse,
    ) => void,
  ): ClientUnaryCall;
  enablePolicy(
    request: EnablePolicyRequest,
    callback: (
      error: ServiceError | null,
      response: EnablePolicyResponse,
    ) => void,
  ): ClientUnaryCall;
  enablePolicy(
    request: EnablePolicyRequest,
    metadata: Metadata,
    callback: (
      error: ServiceError | null,
      response: EnablePolicyResponse,
    ) => void,
  ): ClientUnaryCall;
  enablePolicy(
    request: EnablePolicyRequest,
    metadata: Metadata,
    options: Partial<CallOptions>,
    callback: (
      error: ServiceError | null,
      response: EnablePolicyResponse,
    ) => void,
  ): ClientUnaryCall;
  listAuditLogEntries(
    request: ListAuditLogEntriesRequest,
    options?: Partial<CallOptions>,
  ): ClientReadableStream<ListAuditLogEntriesResponse>;
  listAuditLogEntries(
    request: ListAuditLogEntriesRequest,
    metadata?: Metadata,
    options?: Partial<CallOptions>,
  ): ClientReadableStream<ListAuditLogEntriesResponse>;
  addOrUpdateSchema(
    request: AddOrUpdateSchemaRequest,
    callback: (
      error: ServiceError | null,
      response: AddOrUpdateSchemaResponse,
    ) => void,
  ): ClientUnaryCall;
  addOrUpdateSchema(
    request: AddOrUpdateSchemaRequest,
    metadata: Metadata,
    callback: (
      error: ServiceError | null,
      response: AddOrUpdateSchemaResponse,
    ) => void,
  ): ClientUnaryCall;
  addOrUpdateSchema(
    request: AddOrUpdateSchemaRequest,
    metadata: Metadata,
    options: Partial<CallOptions>,
    callback: (
      error: ServiceError | null,
      response: AddOrUpdateSchemaResponse,
    ) => void,
  ): ClientUnaryCall;
  listSchemas(
    request: ListSchemasRequest,
    callback: (
      error: ServiceError | null,
      response: ListSchemasResponse,
    ) => void,
  ): ClientUnaryCall;
  listSchemas(
    request: ListSchemasRequest,
    metadata: Metadata,
    callback: (
      error: ServiceError | null,
      response: ListSchemasResponse,
    ) => void,
  ): ClientUnaryCall;
  listSchemas(
    request: ListSchemasRequest,
    metadata: Metadata,
    options: Partial<CallOptions>,
    callback: (
      error: ServiceError | null,
      response: ListSchemasResponse,
    ) => void,
  ): ClientUnaryCall;
  getSchema(
    request: GetSchemaRequest,
    callback: (error: ServiceError | null, response: GetSchemaResponse) => void,
  ): ClientUnaryCall;
  getSchema(
    request: GetSchemaRequest,
    metadata: Metadata,
    callback: (error: ServiceError | null, response: GetSchemaResponse) => void,
  ): ClientUnaryCall;
  getSchema(
    request: GetSchemaRequest,
    metadata: Metadata,
    options: Partial<CallOptions>,
    callback: (error: ServiceError | null, response: GetSchemaResponse) => void,
  ): ClientUnaryCall;
  deleteSchema(
    request: DeleteSchemaRequest,
    callback: (
      error: ServiceError | null,
      response: DeleteSchemaResponse,
    ) => void,
  ): ClientUnaryCall;
  deleteSchema(
    request: DeleteSchemaRequest,
    metadata: Metadata,
    callback: (
      error: ServiceError | null,
      response: DeleteSchemaResponse,
    ) => void,
  ): ClientUnaryCall;
  deleteSchema(
    request: DeleteSchemaRequest,
    metadata: Metadata,
    options: Partial<CallOptions>,
    callback: (
      error: ServiceError | null,
      response: DeleteSchemaResponse,
    ) => void,
  ): ClientUnaryCall;
  reloadStore(
    request: ReloadStoreRequest,
    callback: (
      error: ServiceError | null,
      response: ReloadStoreResponse,
    ) => void,
  ): ClientUnaryCall;
  reloadStore(
    request: ReloadStoreRequest,
    metadata: Metadata,
    callback: (
      error: ServiceError | null,
      response: ReloadStoreResponse,
    ) => void,
  ): ClientUnaryCall;
  reloadStore(
    request: ReloadStoreRequest,
    metadata: Metadata,
    options: Partial<CallOptions>,
    callback: (
      error: ServiceError | null,
      response: ReloadStoreResponse,
    ) => void,
  ): ClientUnaryCall;
}

export const CerbosAdminServiceClient = makeGenericClientConstructor(
  CerbosAdminServiceService,
  "cerbos.svc.v1.CerbosAdminService",
) as unknown as {
  new (
    address: string,
    credentials: ChannelCredentials,
    options?: Partial<ClientOptions>,
  ): CerbosAdminServiceClient;
  service: typeof CerbosAdminServiceService;
  serviceName: string;
};
