// GENERATED CONTENT - DO NOT EDIT
// Content was automatically extracted by Reffy into webref
// (https://github.com/w3c/webref)
// Source: Constructable Stylesheet Objects (https://wicg.github.io/construct-stylesheets/)

partial interface CSSStyleSheet {
  constructor(optional CSSStyleSheetInit options = {});
  Promise<CSSStyleSheet> replace(USVString text);
  undefined replaceSync(USVString text);
};

dictionary CSSStyleSheetInit {
  (MediaList or DOMString) media = "";
  DOMString title = "";
  boolean alternate = false;
  boolean disabled = false;
};

partial interface mixin DocumentOrShadowRoot {
  attribute FrozenArray<CSSStyleSheet> adoptedStyleSheets;
};
