interface UserResourceSettings {
    excludePlainText?: boolean;
    webSocketPort?: number;
    webSocketSecurePort?: number;
}

interface FileRequestAttribute extends DocumentOutput {
    addResourceHints?: boolean | ResourceHintType | ResourceHintType[];
    retainUsedStyles?: Array<string | RegExp> | UsedStylesData;
    removeBinaries?: boolean;
    removeInlineStyles?: boolean;
    removeUnusedClasses?: boolean;
    removeUnusedPseudoClasses?: boolean;
    removeUnusedVariables?: boolean;
    removeUnusedFontFace?: boolean;
    removeUnusedKeyframes?: boolean;
    removeUnusedMedia?: boolean;
    removeUnusedSupports?: boolean;
    removeUnusedContainer?: boolean;
    removeUnusedScope?: boolean;
}

interface FileActionAttribute {
    saveAs?: {
        html?: SaveAsOptions;
        script?: SaveAsOptions;
        link?: SaveAsOptions;
        image?: SaveAsOptions;
        font?: SaveAsOptions;
        video?: SaveAsOptions;
        audio?: SaveAsOptions;
        raw?: SaveAsOptions;
    };
    preserveCrossOrigin?: boolean | URLData;
}

type WebBundleMap = IterableMap<WebBundleData>;