export interface Encoder<I, O> {
    actualValue?: I;
    encode(newValue?: I): O | undefined;
    reset(): void;
}
export interface AttachmentEncoder extends Encoder<Record<string, unknown>, string> {
    reset(): void;
}
export type ClientSampleEncoderSettings = {
    callIdIsUuid?: boolean;
    clientIdIsUuid?: boolean;
    peerConnectionIdIsUuid?: boolean;
    trackIdIsUuid?: boolean;
};
export interface AttachmentsEncoderFactory {
    createIceCandidatePairAttachmentEncoder(): AttachmentEncoder;
    createCodecStatsAttachmentEncoder(): AttachmentEncoder;
    createMediaSourceAttachmentEncoder(): AttachmentEncoder;
    createMediaPlayoutAttachmentEncoder(): AttachmentEncoder;
    createClientSampleAttachmentEncoder(): AttachmentEncoder;
    createPeerConnectionSampleAttachmentEncoder(): AttachmentEncoder;
    createCertificateAttachmentEncoder(): AttachmentEncoder;
    createIceCandidateAttachmentEncoder(): AttachmentEncoder;
    createIceTransportAttachmentEncoder(): AttachmentEncoder;
    createInboundTrackAttachmentEncoder(): AttachmentEncoder;
    createOutboundTrackAttachmentEncoder(): AttachmentEncoder;
    createInboundRtpAttachmentEncoder(): AttachmentEncoder;
    createOutboundRtpAttachmentEncoder(): AttachmentEncoder;
    createDataChannelAttachmentEncoder(): AttachmentEncoder;
    createRemoteInboundRtpAttachmentEncoder(): AttachmentEncoder;
    createRemoteOutboundRtpAttachmentEncoder(): AttachmentEncoder;
    createPeerConnectionTransportAttachmentEncoder(): AttachmentEncoder;
}
export declare class DefaultAttachmentEncoderFactory implements AttachmentsEncoderFactory {
    createIceCandidatePairAttachmentEncoder(): AttachmentEncoder;
    createCodecStatsAttachmentEncoder(): AttachmentEncoder;
    createClientSampleAttachmentEncoder(): AttachmentEncoder;
    createInboundTrackAttachmentEncoder(): AttachmentEncoder;
    createOutboundTrackAttachmentEncoder(): AttachmentEncoder;
    createPeerConnectionSampleAttachmentEncoder(): AttachmentEncoder;
    createCertificateAttachmentEncoder(): AttachmentEncoder;
    createIceCandidateAttachmentEncoder(): AttachmentEncoder;
    createIceTransportAttachmentEncoder(): AttachmentEncoder;
    createInboundRtpAttachmentEncoder(): AttachmentEncoder;
    createOutboundRtpAttachmentEncoder(): AttachmentEncoder;
    createDataChannelAttachmentEncoder(): DefaultAttachmentEncoder;
    createRemoteInboundRtpAttachmentEncoder(): DefaultAttachmentEncoder;
    createRemoteOutboundRtpAttachmentEncoder(): DefaultAttachmentEncoder;
    createMediaSourceAttachmentEncoder(): DefaultAttachmentEncoder;
    createMediaPlayoutAttachmentEncoder(): DefaultAttachmentEncoder;
    createPeerConnectionTransportAttachmentEncoder(): DefaultAttachmentEncoder;
}
export declare class DefaultAttachmentEncoder implements AttachmentEncoder {
    private _actualValueRef?;
    constructor();
    reset(): void;
    encode(newValue?: Record<string, unknown>): string | undefined;
}
export declare class OneTimePassEncoder<T> implements Encoder<T, T> {
    private _value;
    get actualValue(): T | undefined;
    reset(): void;
    encode(newValue?: T): T | undefined;
}
export declare class OneTimePassUuidToByteArrayEncoder implements Encoder<string, Uint8Array> {
    private _done?;
    reset(): void;
    encode(newValue?: string): Uint8Array | undefined;
}
export declare class OneTimePassStringToUint8ArrayEncoder implements Encoder<string, Uint8Array> {
    private _done?;
    reset(): void;
    encode(newValue?: string): Uint8Array | undefined;
}
export declare class StringToStringEncoder implements Encoder<string, string> {
    private _value;
    get actualValue(): string | undefined;
    reset(): void;
    encode(newValue?: string): string | undefined;
}
export declare class StringToUint8ArrayEncoder implements Encoder<string, Uint8Array> {
    private _value;
    get actualValue(): string | undefined;
    reset(): void;
    encode(newValue?: string): Uint8Array | undefined;
}
export declare class StringToNumberEncoder implements Encoder<string, number> {
    private _value;
    get actualValue(): string | undefined;
    reset(): void;
    encode(newValue?: string): number | undefined;
}
export declare class NumberToBigIntEncoder implements Encoder<number, bigint> {
    private _value;
    get actualValue(): number | undefined;
    reset(): void;
    encode(newValue?: number): bigint | undefined;
}
export declare class NumberToNumberEncoder implements Encoder<number, number> {
    private _value;
    get actualValue(): number | undefined;
    reset(): void;
    encode(newValue?: number): number | undefined;
}
export declare class BooleanToBooleanEncoder implements Encoder<boolean, boolean> {
    private _value;
    get actualValue(): boolean | undefined;
    reset(): void;
    encode(newValue?: boolean): true | undefined;
}
export declare function stringToBytesArray(str: string): Uint8Array;
export declare function uuidToByteArray(uuid: string): Uint8Array;
export declare function convertUint8ToBase64(aBytes: Uint8Array): string;
//# sourceMappingURL=utils.d.ts.map