export function bindUint8ArrayBlobAdapter(toUtf8, fromUtf8, toBase64, fromBase64) {
    return class Uint8ArrayBlobAdapter extends Uint8Array {
        static fromString(source, encoding = "utf-8") {
            if (typeof source === "string") {
                if (encoding === "base64") {
                    return Uint8ArrayBlobAdapter.mutate(fromBase64(source));
                }
                return Uint8ArrayBlobAdapter.mutate(fromUtf8(source));
            }
            throw new Error(`Unsupported conversion from ${typeof source} to Uint8ArrayBlobAdapter.`);
        }
        static mutate(source) {
            Object.setPrototypeOf(source, Uint8ArrayBlobAdapter.prototype);
            return source;
        }
        transformToString(encoding = "utf-8") {
            if (encoding === "base64") {
                return toBase64(this);
            }
            return toUtf8(this);
        }
    };
}
