// https://encoding.spec.whatwg.org/#textdecodercommon
interface mixin TextDecoderCommon {
    readonly attribute DOMString encoding;
    readonly attribute boolean fatal;
    readonly attribute boolean ignoreBOM;
};

// https://encoding.spec.whatwg.org/#textdecoderoptions
dictionary TextDecoderOptions {
    boolean fatal = false;
    boolean ignoreBOM = false;
};

// https://encoding.spec.whatwg.org/#textdecodeoptions
dictionary TextDecodeOptions {
    boolean stream = false;
};

// https://encoding.spec.whatwg.org/#textdecoder
[Exposed=*]
interface TextDecoder {
    constructor(optional DOMString label = "utf-8", optional TextDecoderOptions options = {});

    // FIXME: BufferSource is really a AllowSharedBufferSource
    USVString decode(optional BufferSource input, optional TextDecodeOptions options = {});
};
TextDecoder includes TextDecoderCommon;
