import { U as Uint8Array_ } from './_types-UoFpvNJp.js';
import { a as Base32Alphabet } from './_common32-CO50UDr6.js';

/**
 * TransformStream classes to encode and decode to and from base32 data in a streaming manner.
 *
 * ```ts
 * import { assertEquals } from "@std/assert";
 * import { encodeBase32 } from "@std/encoding/unstable-base32";
 * import { Base32EncoderStream } from "@std/encoding/unstable-base32-stream";
 * import { toText } from "@std/streams";
 *
 * const readable = (await Deno.open("./deno.lock"))
 *   .readable
 *   .pipeThrough(new Base32EncoderStream({ output: "string" }));
 *
 * assertEquals(
 *   await toText(readable),
 *   encodeBase32(await Deno.readFile("./deno.lock"), { alphabet: "base32" }),
 * );
 * ```
 *
 * @experimental **UNSTABLE**: New API, yet to be vetted.
 *
 * @module
 */

/**
 * Transforms a {@linkcode Uint8Array<ArrayBuffer>} stream into a base32 stream.
 *
 * @experimental **UNSTABLE**: New API, yet to be vetted.
 *
 * @typeParam T The type of the base32 stream.
 *
 * @example Basic Usage
 * ```ts
 * import { assertEquals } from "@std/assert";
 * import { encodeBase32 } from "@std/encoding/unstable-base32";
 * import { Base32EncoderStream } from "@std/encoding/unstable-base32-stream";
 * import { toText } from "@std/streams";
 *
 * const readable = (await Deno.open("./deno.lock"))
 *   .readable
 *   .pipeThrough(new Base32EncoderStream({ output: "string" }));
 *
 * assertEquals(
 *   await toText(readable),
 *   encodeBase32(await Deno.readFile("./deno.lock"), { alphabet: "base32" }),
 * );
 * ```
 */
declare class Base32EncoderStream<T extends "string" | "bytes"> extends TransformStream<Uint8Array_, T extends "bytes" ? Uint8Array_ : string> {
    /**
     * Constructs a new instance.
     *
     * @param options The options of the base32 stream.
     */
    constructor(options?: {
        alphabet?: Base32Alphabet;
        output?: T;
    });
}
/**
 * Transforms a base32 stream into a {@link Uint8Array<ArrayBuffer>} stream.
 *
 * @experimental **UNSTABLE**: New API, yet to be vetted.
 *
 * @typeParam T The type of the base32 stream.
 *
 * @example Basic Usage
 * ```ts
 * import { assertEquals } from "@std/assert";
 * import {
 *   Base32DecoderStream,
 *   Base32EncoderStream,
 * } from "@std/encoding/unstable-base32-stream";
 * import { toBytes } from "@std/streams/unstable-to-bytes";
 *
 * const readable = (await Deno.open("./deno.lock"))
 *   .readable
 *   .pipeThrough(new Base32EncoderStream({ output: "string" }))
 *   .pipeThrough(new Base32DecoderStream({ input: "string" }));
 *
 * assertEquals(
 *   await toBytes(readable),
 *   await Deno.readFile("./deno.lock"),
 * );
 * ```
 *
 * @module
 */
declare class Base32DecoderStream<T extends "string" | "bytes"> extends TransformStream<T extends "bytes" ? Uint8Array_ : string, Uint8Array_> {
    /**
     * Constructs a new instance.
     *
     * @param options The options of the base32 stream.
     */
    constructor(options?: {
        alphabet?: Base32Alphabet;
        input?: T;
    });
}

export { Base32DecoderStream, Base32EncoderStream, Uint8Array_ };
