using Newtonsoft.Json;
using ChromeDevTools.Protocol.Types;

namespace ChromeDevTools
{
    namespace Protocol
    {
        namespace Page
        {
            /// <summary>
            /// Capture page screenshot.
            /// </summary>
            [CommandResponseAttribute(typeof(CaptureScreenshotCommandResponse))]
            public class captureScreenshot : IDevtoolsCommandWithResponse
            {
                /// <summary>
                /// Gets or sets Image compression format (defaults to png).
                /// </summary>
                [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
                public string Format { get; set; }
                /// <summary>
                /// Gets or sets Compression quality from range [0..100] (jpeg only).
                /// </summary>
                [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
                public long? Quality { get; set; }
                /// <summary>
                /// Gets or sets Capture the screenshot of a given region only.
                /// </summary>
                [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
                public Viewport Clip { get; set; }
                /// <summary>
                /// Gets or sets Capture the screenshot from the surface, rather than the view. Defaults to true.
                /// </summary>
                [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
                public bool? FromSurface { get; set; }
            }

            /// <summary>
            /// Capture page screenshot response.
            /// </summary>
            public class CaptureScreenshotCommandResponse : IDevtoolsResponse
            {
                /// <summary>
                /// Gets or sets Base64-encoded image data.
                /// </summary>
                public string Data { get; set; }
            }
        }
    }
}