// GENERATED CONTENT - DO NOT EDIT
// Content was automatically extracted by Reffy into reffy-reports
// (https://github.com/tidoust/reffy-reports)
// Source: Screen Capture (https://w3c.github.io/mediacapture-screen-share/)

partial interface MediaDevices {
    Promise<MediaStream> getDisplayMedia(optional MediaStreamConstraints constraints);
};

partial dictionary MediaTrackSupportedConstraints {
             boolean displaySurface = true;
             boolean logicalSurface = true;
             boolean cursor = true;
};

partial dictionary MediaTrackConstraintSet {
             ConstrainDOMString displaySurface;
             ConstrainBoolean logicalSurface;
             ConstrainDOMString cursor;
};

partial dictionary MediaTrackSettings {
             DOMString displaySurface;
             boolean logicalSurface;
             DOMString cursor;
};

enum DisplayCaptureSurfaceType {
    "monitor",
    "window",
    "application",
    "browser"
};

enum CursorCaptureConstraint {
    "never",
    "always",
    "motion"
};
