import { type ValidateFunction } from 'ajv'; import { type Type } from 'avsc'; import { type Root } from 'protobufjs'; import { type Callback } from '../apis/definitions.ts'; import { type BeforeDeserializationHook, type BeforeHookPayloadType, type BeforeSerializationHook, type Deserializers, type Serializers } from '../clients/serde.ts'; import { type CredentialProvider } from '../index.ts'; import { type MessageToConsume, type MessageToProduce } from '../protocol/records.ts'; import { AbstractSchemaRegistry } from './abstract.ts'; type ConfluentSchemaRegistryMessageToProduce = MessageToProduce; export interface ConfluentSchemaRegistryMetadata { schemas?: Record; } export type ConfluentSchemaRegistryProtobufTypeMapper = (id: number, type: BeforeHookPayloadType, context: ConfluentSchemaRegistryMessageToProduce | MessageToConsume) => string; export interface ConfluentSchemaRegistryOptions { url: string; auth?: { username?: string | CredentialProvider; password?: string | CredentialProvider; token?: string | CredentialProvider; }; protobufTypeMapper?: ConfluentSchemaRegistryProtobufTypeMapper; jsonValidateSend?: boolean; } export interface Schema { id: number; type: 'avro' | 'protobuf' | 'json'; schema: Type | Root | ValidateFunction; } export declare function defaultProtobufTypeMapper(_: number, type: BeforeHookPayloadType, context: ConfluentSchemaRegistryMessageToProduce | MessageToConsume): string; export declare class ConfluentSchemaRegistry extends AbstractSchemaRegistry { #private; constructor(options: ConfluentSchemaRegistryOptions); getSchemaId(message: Buffer | MessageToProduce, type?: BeforeHookPayloadType): number | undefined; get(id: number): Schema | undefined; fetchSchema(id: number, callback: Callback): Promise; getSerializers(): Serializers; getDeserializers(): Deserializers; getBeforeSerializationHook(): BeforeSerializationHook; getBeforeDeserializationHook(): BeforeDeserializationHook; } export {};