<?xml version="1.0"?>
<doc>
    <assembly>
        <name>WINKOnvif.Core</name>
    </assembly>
    <members>
        <member name="T:WINKOnvif.Core.Authentication.AxisWsseAuthenticator">
            <summary>
            WS-Security (WSSE) implementation specifically for Axis cameras
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.AxisWsseAuthenticator.ApplyAuthentication``2(``0,WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Applies WS-Security authentication to a SOAP client
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.AxisWsseAuthenticator.GenerateWsseSecurityHeader(WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Generates the WSSE Security XML fragment to be inserted into the SOAP header.
            This is a modified version specifically for Axis cameras.
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.AxisWsseEndpointBehavior">
            <summary>
            WCF endpoint behavior that adds Axis-specific WS-Security headers to SOAP messages
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.AxisWsseMessageInspector">
            <summary>
            WCF message inspector that adds Axis-specific WS-Security headers to outgoing messages
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.BasicAuthenticator">
            <summary>
            Basic HTTP authentication implementation
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.BasicAuthenticator.ApplyAuthentication``2(``0,WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Applies Basic authentication to a SOAP client
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.BoschWsseAuthenticator">
            <summary>
            Bosch-compatible WS-Security (WSSE) implementation for ONVIF authentication with SOAP 1.2
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.BoschWsseAuthenticator.#ctor">
            <summary>
            Initializes a new instance of the BoschWsseAuthenticator class
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.BoschWsseAuthenticator.#ctor(Microsoft.Extensions.Logging.ILogger{WINKOnvif.Core.Authentication.BoschWsseAuthenticator})">
            <summary>
            Initializes a new instance of the BoschWsseAuthenticator class with logging
            </summary>
            <param name="logger">Logger for diagnostic information</param>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.BoschWsseAuthenticator.ApplyAuthentication``2(``0,WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Applies WS-Security authentication to a SOAP client
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.BoschWsseAuthenticator.SetCameraTime(System.DateTime)">
            <summary>
            Sets the camera time to use for authentication.
            This is useful for devices that require time synchronization.
            </summary>
            <param name="cameraTime">The camera's current time</param>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.BoschWsseAuthenticator.WINKOnvif#Core#Authentication#IWsseAuthenticator#GenerateWsseSecurityHeader(WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Generates the WSSE Security XML fragment to be inserted into the SOAP header.
            Implementation of IWsseAuthenticator interface.
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.BoschWsseAuthenticator.GenerateWsseSecurityHeader(WINKOnvif.Core.Models.Authentication.OnvifCredentials,System.Nullable{System.DateTime})">
            <summary>
            Generates the WSSE Security XML fragment to be inserted into the SOAP header.
            You can call this method and insert the returned string into your SOAP request's &lt;soap:Header&gt;.
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.BoschWsseEndpointBehavior">
            <summary>
            WCF endpoint behavior that adds Bosch-compatible WS-Security headers to SOAP messages
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.BoschWsseMessageInspector">
            <summary>
            WCF message inspector that adds Bosch-compatible WS-Security headers to outgoing messages
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.CorrectAxisAuthenticator">
            <summary>
            WS-Security (WSSE) implementation specifically for Axis cameras based on captured example
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.CorrectAxisAuthenticator.ApplyAuthentication``2(``0,WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Applies WS-Security authentication to a SOAP client
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.CorrectAxisAuthenticator.CreatePasswordDigest(System.String,System.String,System.String)">
            <summary>
            Creates a password digest as seen in the working example
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.CorrectAxisAuthenticator.GenerateWsseSecurityHeader(WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Generates the WSSE Security XML fragment to be inserted into the SOAP header
            based on the working example.
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.CorrectAxisEndpointBehavior">
            <summary>
            WCF endpoint behavior that adds Axis-specific WS-Security headers to SOAP messages
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.CorrectAxisMessageInspector">
            <summary>
            WCF message inspector that adds Axis-specific WS-Security headers to outgoing messages
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.DigestAuthenticator">
            <summary>
            Digest HTTP authentication implementation using RFC 2617 compliant algorithm.
            Based on FFmpeg's libavformat/httpauth.c implementation.
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.DigestAuthenticator.ApplyAuthentication``2(``0,WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Applies Digest authentication to a SOAP client
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.DirectSoapAuthenticator">
            <summary>
            A direct SOAP authenticator that bypasses the regular ONVIF authentication methods
            and sends raw SOAP messages with explicit content type headers.
            Designed for problematic cameras that don't handle standard ONVIF authentication properly.
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.DirectSoapAuthenticator.#ctor(Microsoft.Extensions.Logging.ILogger{WINKOnvif.Core.Authentication.DirectSoapAuthenticator})">
            <summary>
            Creates a new instance of DirectSoapAuthenticator
            </summary>
            <param name="logger">Optional logger instance</param>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.DirectSoapAuthenticator.GetAuthHeaderAsync(System.Net.Http.HttpRequestMessage,WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Gets authentication header for HTTP requests
            </summary>
            <param name="request">The HTTP request to authenticate</param>
            <param name="credentials">Credentials to use for authentication</param>
            <returns>Authentication header value</returns>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.DirectSoapAuthenticator.ApplyAuthentication``2(``0,WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Applies authentication to a SOAP client
            </summary>
            <typeparam name="TClient">Type of the client</typeparam>
            <typeparam name="TContract">Type of the service contract</typeparam>
            <param name="client">The client to apply authentication to</param>
            <param name="credentials">Credentials to use for authentication</param>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.ExactMatchAxisAuthenticator">
            <summary>
            WS-Security (WSSE) implementation for Axis cameras that exactly matches the provided working example
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.ExactMatchAxisAuthenticator.ApplyAuthentication``2(``0,WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Applies WS-Security authentication to a SOAP client
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.ExactMatchAxisAuthenticator.GenerateExactWsseHeader(WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Generates WSSE Security XML with properly computed password digest
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.IAuthenticator">
            <summary>
            Interface for authentication methods used with ONVIF services
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.IAuthenticator.GetAuthHeaderAsync(System.Net.Http.HttpRequestMessage,WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Gets authentication header for HTTP requests
            </summary>
            <param name="request">The HTTP request to authenticate</param>
            <param name="credentials">Credentials to use for authentication</param>
            <returns>Authentication header value</returns>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.IAuthenticator.ApplyAuthentication``2(``0,WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Applies authentication to a SOAP client
            </summary>
            <typeparam name="TClient">Type of the client</typeparam>
            <typeparam name="TContract">Type of the service contract</typeparam>
            <param name="client">The client to apply authentication to</param>
            <param name="credentials">Credentials to use for authentication</param>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.ImprovedDigestAuthenticator">
            <summary>
            Digest HTTP authentication implementation that works with multiple ONVIF camera endpoints
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.ImprovedDigestAuthenticator.ApplyAuthentication``2(``0,WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Applies Digest authentication to a SOAP client
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.IWsseAuthenticator">
            <summary>
            Interface for authenticators that generate WSSE security headers for SOAP requests
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.IWsseAuthenticator.GenerateWsseSecurityHeader(WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Generates the WSSE Security XML fragment to be inserted into the SOAP header.
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.OnvifAuthenticationChain">
            <summary>
            Implements a chain of authentication methods for ONVIF cameras with fallbacks
            to maximize compatibility with different camera types.
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.OnvifAuthenticationChain.#ctor(Microsoft.Extensions.Logging.ILogger{WINKOnvif.Core.Authentication.OnvifAuthenticationChain},System.IServiceProvider)">
            <summary>
            Creates a new instance of the OnvifAuthenticationChain
            </summary>
            <param name="logger">Logger instance</param>
            <param name="serviceProvider">Service provider to get authenticator instances</param>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.OnvifAuthenticationChain.TryAuthenticationChainAsync``1(WINKOnvif.Core.Models.Authentication.OnvifCredentials,System.Func{WINKOnvif.Core.Authentication.IAuthenticator,WINKOnvif.Core.Models.Authentication.OnvifCredentials,System.Threading.Tasks.Task{``0}})">
            <summary>
            Tries authentication methods in a defined sequence until one succeeds
            </summary>
            <typeparam name="TResult">Expected result type</typeparam>
            <param name="credentials">ONVIF credentials</param>
            <param name="authTest">Function to test authentication with a specific authenticator</param>
            <returns>The result from the first successful authentication test</returns>
            <exception cref="T:WINKOnvif.Core.Exceptions.OnvifException">Thrown if all authentication methods fail</exception>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.PhpCompatibleAuthenticator">
            <summary>
            Authenticator compatible with PHP implementation that uses specific timestamp format with milliseconds
            and different password digest calculation method
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.PhpCompatibleAuthenticator.GenerateWsseSecurityHeader(WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Generates the WSSE Security XML fragment to be inserted into the SOAP header.
            Uses the PHP-compatible format with milliseconds in timestamp.
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.PhpCompatibleEndpointBehavior">
            <summary>
            WCF endpoint behavior that adds WS-Security headers to SOAP messages using PHP-compatible format
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.PhpCompatibleMessageInspector">
            <summary>
            WCF message inspector that adds PHP-compatible WS-Security headers to outgoing messages
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.Rfc2617DigestAuth">
             <summary>
             RFC 2617 compliant HTTP Digest Authentication utility.
             Based on FFmpeg's libavformat/httpauth.c implementation.
            
             Reference: https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/httpauth.c
             </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.Rfc2617DigestAuth.DigestChallenge">
            <summary>
            Parsed Digest authentication challenge parameters
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.Rfc2617DigestAuth.DigestResponse">
            <summary>
            Computed Digest authentication response
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.Rfc2617DigestAuth.ParseChallenge(System.String)">
            <summary>
            Parse a WWW-Authenticate Digest challenge header
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.Rfc2617DigestAuth.ComputeResponse(WINKOnvif.Core.Authentication.Rfc2617DigestAuth.DigestChallenge,System.String,System.String,System.String,System.String,System.Int32)">
            <summary>
            Compute the Digest authentication response (RFC 2617)
            </summary>
            <param name="challenge">Parsed challenge from server</param>
            <param name="method">HTTP method (GET, POST, DESCRIBE, etc.)</param>
            <param name="uri">Request URI (path and query)</param>
            <param name="username">Username</param>
            <param name="password">Password</param>
            <param name="nc">Nonce count (default: 1)</param>
            <returns>Computed digest response</returns>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.Rfc2617DigestAuth.BuildAuthorizationHeader(WINKOnvif.Core.Authentication.Rfc2617DigestAuth.DigestChallenge,WINKOnvif.Core.Authentication.Rfc2617DigestAuth.DigestResponse,System.String,System.String)">
            <summary>
            Build the Authorization header value
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.Rfc2617DigestAuth.CreateAuthorizationHeader(System.String,System.String,System.String,System.String,System.String)">
            <summary>
            Convenience method to compute and build auth header in one call
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.SimplifiedAxisAuthenticator">
            <summary>
            A simplified authenticator for Axis cameras that uses an extremely basic approach
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.SimplifiedAxisAuthenticator.ApplyAuthentication``2(``0,WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Applies the simplest possible authentication to a SOAP client
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.SimplifiedAxisAuthenticator.GenerateSecurityHeader(WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Generates the simplest possible Security XML fragment
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.WsseAuthenticator">
            <summary>
            WS-Security (WSSE) implementation for ONVIF authentication
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.WsseAuthenticator.ApplyAuthentication``2(``0,WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Applies WS-Security authentication to a SOAP client
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Authentication.WsseAuthenticator.GenerateWsseSecurityHeader(WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Generates the WSSE Security XML fragment to be inserted into the SOAP header.
            You can call this method and insert the returned string into your SOAP request's soap:Header element.
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.WsseEndpointBehavior">
            <summary>
            WCF endpoint behavior that adds WS-Security headers to SOAP messages
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Authentication.WsseMessageInspector">
            <summary>
            WCF message inspector that adds WS-Security headers to outgoing messages
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Communication.HttpLogEventHandler">
            <summary>
            Delegate for HTTP logging events
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Communication.HttpLogEventArgs">
            <summary>
            Event arguments for HTTP logging events
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Communication.HttpLogEventArgs.Request">
            <summary>
            Gets the HTTP request message
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Communication.HttpLogEventArgs.Response">
            <summary>
            Gets the HTTP response message (may be null for request-only events)
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Communication.HttpLogEventArgs.Timestamp">
            <summary>
            Gets the timestamp of the event
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Communication.HttpLogEventArgs.RequestUri">
            <summary>
            Gets the request URI
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Communication.HttpLogEventArgs.Method">
            <summary>
            Gets the request method
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Communication.HttpLogEventArgs.ContentType">
            <summary>
            Gets the request content type
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Communication.HttpLogEventArgs.StatusCode">
            <summary>
            Gets the status code (if response is available)
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Communication.HttpLogEventArgs.ErrorMessage">
            <summary>
            Gets the error message (if any)
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Communication.HttpLogEventArgs.RequestContent">
            <summary>
            Gets the request body content
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Communication.HttpLogEventArgs.ResponseContent">
            <summary>
            Gets the response body content
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Communication.HttpLogEventArgs.IsRequest">
            <summary>
            Gets whether this is a request or response event
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Communication.HttpLogEventArgs.#ctor(System.Net.Http.HttpRequestMessage,System.String)">
            <summary>
            Creates a new instance of HttpLogEventArgs for a request
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Communication.HttpLogEventArgs.#ctor(System.Net.Http.HttpRequestMessage,System.Net.Http.HttpResponseMessage,System.String,System.String)">
            <summary>
            Creates a new instance of HttpLogEventArgs for a response
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Communication.HttpLogEventArgs.#ctor(System.Net.Http.HttpRequestMessage,System.String,System.String)">
            <summary>
            Creates a new instance of HttpLogEventArgs for an error
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Communication.HttpMessageLogger">
            <summary>
            HTTP message handler that logs all HTTP requests and responses
            </summary>
        </member>
        <member name="E:WINKOnvif.Core.Communication.HttpMessageLogger.RequestSent">
            <summary>
            Event raised when a request is sent
            </summary>
        </member>
        <member name="E:WINKOnvif.Core.Communication.HttpMessageLogger.ResponseReceived">
            <summary>
            Event raised when a response is received
            </summary>
        </member>
        <member name="E:WINKOnvif.Core.Communication.HttpMessageLogger.ErrorOccurred">
            <summary>
            Event raised when an error occurs
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Communication.HttpMessageLogger.#ctor(Microsoft.Extensions.Logging.ILogger)">
            <summary>
            Creates a new instance of HttpMessageLogger
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Communication.HttpMessageLogger.#ctor(System.Net.Http.HttpMessageHandler,Microsoft.Extensions.Logging.ILogger)">
            <summary>
            Creates a new instance of HttpMessageLogger with an inner handler
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Communication.HttpMessageLogger.SendAsync(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken)">
            <summary>
            Sends the request with logging
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Communication.HttpMessageLogger.GetRequestContentAsync(System.Net.Http.HttpRequestMessage)">
            <summary>
            Gets the content of the request as a string
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Communication.HttpMessageLogger.GetResponseContentAsync(System.Net.Http.HttpResponseMessage)">
            <summary>
            Gets the content of the response as a string
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Communication.HttpMessageLogger.CloneHttpRequestMessageAsync(System.Net.Http.HttpRequestMessage)">
            <summary>
            Clones an HTTP request message so we can read it later after it's disposed
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Communication.HttpMessageLogger.FormatHttpRequest(System.Net.Http.HttpRequestMessage,System.String)">
            <summary>
            Formats a raw HTTP request for display
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Communication.HttpMessageLogger.FormatHttpResponse(System.Net.Http.HttpResponseMessage,System.String)">
            <summary>
            Formats a raw HTTP response for display
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Communication.OnvifHttpClient">
            <summary>
            HTTP client implementation for REST-based ONVIF services
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Communication.OnvifHttpClient.GetAsync``1(System.String,WINKOnvif.Core.Models.Authentication.OnvifCredentials,System.Threading.CancellationToken)">
            <summary>
            Sends a GET request to the specified URI
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Communication.OnvifHttpClient.PostAsync``2(System.String,``0,WINKOnvif.Core.Models.Authentication.OnvifCredentials,System.Threading.CancellationToken)">
            <summary>
            Sends a POST request with the specified content
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Communication.OnvifHttpClient.GetBytesAsync(System.String,WINKOnvif.Core.Models.Authentication.OnvifCredentials,System.Threading.CancellationToken)">
            <summary>
            Sends a raw HTTP request with bytes
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Communication.OnvifHttpClient.CreateClient(WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Creates an HTTP client with optional authentication
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Communication.OnvifSoapClient">
            <summary>
            Base SOAP client implementation for ONVIF service communication
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Communication.OnvifSoapClient.CreateClient``2(System.String,WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Creates a SOAP client for the specified endpoint and contract
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Communication.OnvifSoapClient.CreateBinding(WINKOnvif.Core.Models.Authentication.OnvifSoapVersion)">
            <summary>
            Creates a standard binding for ONVIF SOAP services
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Communication.OnvifSoapClient.ApplyAuthentication``2(``0,WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Applies authentication to the SOAP client using the specified authenticator
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Communication.OnvifSoapClient.ExecuteAsync``3(``0,System.Func{``1,System.Threading.Tasks.Task{``2}},System.String)">
            <summary>
            Safely executes a SOAP operation with error handling and retries for transient failures
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Models.Authentication.OnvifCredentials.SoapVersion">
            <summary>
            SOAP protocol version to use when communicating with the device.
            Defaults to <see cref="F:WINKOnvif.Core.Models.Authentication.OnvifSoapVersion.Soap12"/>.
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Authentication.OnvifSoapVersion">
            <summary>
            SOAP protocol versions supported by ONVIF services.
            </summary>
        </member>
        <member name="F:WINKOnvif.Core.Models.Authentication.OnvifSoapVersion.Soap11">
            <summary>
            SOAP 1.1 protocol.
            </summary>
        </member>
        <member name="F:WINKOnvif.Core.Models.Authentication.OnvifSoapVersion.Soap12">
            <summary>
            SOAP 1.2 protocol (default).
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Discovery.DiscoveredDevice">
            <summary>
            Represents an ONVIF device discovered on the network
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Models.Discovery.DiscoveredDevice.Id">
            <summary>
            Unique device identifier (UUID)
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Models.Discovery.DiscoveredDevice.XAddrs">
            <summary>
            Web service address(es) for the device
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Models.Discovery.DiscoveredDevice.Types">
            <summary>
            Device type information
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Models.Discovery.DiscoveredDevice.Scopes">
            <summary>
            Raw scopes information from the device
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Models.Discovery.DiscoveredDevice.Name">
            <summary>
            Device name extracted from scopes
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Models.Discovery.DiscoveredDevice.Hardware">
            <summary>
            Hardware information extracted from scopes
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Models.Discovery.DiscoveredDevice.Location">
            <summary>
            Location information extracted from scopes
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Models.Discovery.DiscoveredDevice.XAddr">
            <summary>
            Original XAddr from previous model (for compatibility)
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Models.Discovery.DiscoveredDevice.ServiceAddress">
            <summary>
            Service address (for compatibility)
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Models.Discovery.DiscoveredDevice.Model">
            <summary>
            Model information (for compatibility, maps to Hardware)
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Events.EventNotification">
            <summary>
            Represents an ONVIF event notification
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Events.EventType">
            <summary>
            Common ONVIF event types
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Events.EventSubscription">
            <summary>
            Event subscription information
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Events.PullMessagesRequest">
            <summary>
            Pull messages request
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Events.PullMessagesResponse">
            <summary>
            Pull messages response
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Events.EventProperties">
            <summary>
            Event properties for specific event types
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Events.TopicFilter">
            <summary>
            Topic filter for event subscriptions
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.PTZ.PtzPosition">
            <summary>
            Represents a PTZ position for absolute movement and preset positions
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Models.PTZ.PtzPosition.Pan">
            <summary>
            Pan position value
            Values are typically in the range of -1.0 to 1.0
            Negative values usually indicate panning left, positive values right
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Models.PTZ.PtzPosition.Tilt">
            <summary>
            Tilt position value
            Values are typically in the range of -1.0 to 1.0
            Negative values usually indicate tilting down, positive values up
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Models.PTZ.PtzPosition.Zoom">
            <summary>
            Zoom position value
            Values are typically in the range of 0.0 to 1.0
            Higher values indicate more zoom (closer view)
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.PTZ.PtzVector">
            <summary>
            Represents a PTZ vector for relative and continuous movement
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Models.PTZ.PtzVector.X">
            <summary>
            X component (pan) - Values typically range from -1.0 to 1.0
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Models.PTZ.PtzVector.Y">
            <summary>
            Y component (tilt) - Values typically range from -1.0 to 1.0
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Models.PTZ.PtzVector.Z">
            <summary>
            Z component (zoom) - Values typically range from -1.0 to 1.0
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.Recording">
            <summary>
            Recording information
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.RecordingConfiguration">
            <summary>
            Recording configuration
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.RecordingSource">
            <summary>
            Recording source information
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.Track">
            <summary>
            Recording track information
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.TrackType">
            <summary>
            Track types
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.RecordingJob">
            <summary>
            Recording job
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.RecordingJobConfiguration">
            <summary>
            Recording job configuration
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.RecordingJobMode">
            <summary>
            Recording job mode
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.RecordingJobState">
            <summary>
            Recording job state
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.RecordingJobSource">
            <summary>
            Recording job source
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.SourceReference">
            <summary>
            Source reference
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.RecordingJobTrack">
            <summary>
            Recording job track
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.RecordingJobStateSource">
            <summary>
            Recording job state source
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.RecordingJobStateTrack">
            <summary>
            Recording job state track
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.RecordingJobExtension">
            <summary>
            Recording job extension
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.RecordingJobStateExtension">
            <summary>
            Recording job state extension
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.RecordingJobSourceExtension">
            <summary>
            Recording job source extension
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.ScheduleToken">
            <summary>
            Schedule token
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.SearchScope">
            <summary>
            Search scope for recordings
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.SearchScopeExtension">
            <summary>
            Search scope extension
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.FindRecordingResult">
            <summary>
            Recording search result
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.TrackInformation">
            <summary>
            Track information
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.VideoAttributes">
            <summary>
            Video attributes
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.AudioAttributes">
            <summary>
            Audio attributes
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.MetadataAttributes">
            <summary>
            Metadata attributes
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.TrackInformationExtension">
            <summary>
            Track information extension
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.RecordingInformation">
            <summary>
            Recording information
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.RecordingSourceInformation">
            <summary>
            Recording source information
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.FindEventResult">
            <summary>
            Recording event search result
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.RecordingEvent">
            <summary>
            Recording event
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.ReplayUri">
            <summary>
            Replay URI
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.RecordingCapabilities">
            <summary>
            Recording service capabilities
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Models.Recording.ReplayCapabilities">
            <summary>
            Replay service capabilities
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Discovery.IOnvifDiscoveryService">
            <summary>
            Interface for ONVIF device discovery on the network
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Discovery.IOnvifDiscoveryService.DiscoverDevicesAsync(System.Threading.CancellationToken)">
            <summary>
            Discovers ONVIF devices on the network
            </summary>
            <param name="cancellationToken">Cancellation token to stop discovery</param>
            <returns>A collection of discovered ONVIF devices</returns>
        </member>
        <member name="T:WINKOnvif.Core.Discovery.OnvifDiscoveryService">
            <summary>
            Implementation of ONVIF WS-Discovery protocol for finding network cameras
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Discovery.OnvifDiscoveryService.DiscoverDevicesAsync(System.Threading.CancellationToken)">
            <summary>
            Discovers ONVIF devices on the network
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Discovery.OnvifDiscoveryService.ParseDiscoveryResponse(System.String)">
            <summary>
            Parses WS-Discovery response XML to extract device information
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Discovery.OnvifDiscoveryService.ExtractFromScopes(System.String,System.String)">
            <summary>
            Extracts specific metadata from WS-Discovery scopes
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Events.IEventsService">
            <summary>
            Interface for ONVIF Events Service operations
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Events.IEventsService.GetEventPropertiesAsync">
            <summary>
            Get event service capabilities
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Events.IEventsService.CreatePullPointSubscriptionAsync(WINKOnvif.Core.Models.Events.TopicFilter,System.Nullable{System.TimeSpan},System.Collections.Generic.Dictionary{System.String,System.String})">
            <summary>
            Create a pull-point subscription
            </summary>
            <param name="filter">Optional topic filter</param>
            <param name="initialTerminationTime">Optional termination time</param>
            <param name="subscriptionPolicy">Optional subscription policy</param>
            <returns>Subscription information</returns>
        </member>
        <member name="M:WINKOnvif.Core.Events.IEventsService.PullMessagesAsync(System.String,System.TimeSpan,System.Int32)">
            <summary>
            Pull messages from a subscription
            </summary>
            <param name="subscriptionId">Subscription ID</param>
            <param name="timeout">Timeout for the pull operation</param>
            <param name="messageLimit">Maximum number of messages to return</param>
            <returns>Pull messages response with notifications</returns>
        </member>
        <member name="M:WINKOnvif.Core.Events.IEventsService.RenewAsync(System.String,System.TimeSpan)">
            <summary>
            Renew a subscription
            </summary>
            <param name="subscriptionId">Subscription ID</param>
            <param name="terminationTime">New termination time</param>
            <returns>Updated subscription information</returns>
        </member>
        <member name="M:WINKOnvif.Core.Events.IEventsService.UnsubscribeAsync(System.String)">
            <summary>
            Unsubscribe from events
            </summary>
            <param name="subscriptionId">Subscription ID</param>
        </member>
        <member name="M:WINKOnvif.Core.Events.IEventsService.GetSubscriptionsAsync">
            <summary>
            Get current subscriptions
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Events.IEventsService.SetSynchronizationPointAsync(System.String)">
            <summary>
            Set synchronization point (for consistent event state)
            </summary>
            <param name="subscriptionId">Subscription ID</param>
        </member>
        <member name="M:WINKOnvif.Core.Events.IEventsService.StartEventMonitoringAsync(System.Action{WINKOnvif.Core.Models.Events.EventNotification},WINKOnvif.Core.Models.Events.TopicFilter,System.Threading.CancellationToken)">
            <summary>
            Start continuous event monitoring
            </summary>
            <param name="onEventReceived">Callback for received events</param>
            <param name="filter">Optional topic filter</param>
            <param name="cancellationToken">Cancellation token</param>
            <returns>Subscription ID</returns>
        </member>
        <member name="M:WINKOnvif.Core.Events.IEventsService.StopEventMonitoringAsync(System.String)">
            <summary>
            Stop event monitoring
            </summary>
            <param name="subscriptionId">Subscription ID</param>
        </member>
        <member name="M:WINKOnvif.Core.Events.IEventsService.GetEventTopicsAsync">
            <summary>
            Get supported event topics
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Events.EventServiceCapabilities">
            <summary>
            Event service capabilities
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Exceptions.OnvifException">
            <summary>
            Base exception class for ONVIF-related errors with improved diagnostic information
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Exceptions.OnvifException.ServiceType">
            <summary>
            ONVIF service type that threw the exception
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Exceptions.OnvifException.ErrorCode">
            <summary>
            ONVIF-specific error code
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Exceptions.OnvifException.StatusCode">
            <summary>
            Gets the HTTP status code if applicable
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Exceptions.OnvifException.RawResponse">
            <summary>
            Gets the raw response from the ONVIF device if available
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Exceptions.OnvifException.IsTransient">
            <summary>
            Gets whether the error is likely transient and may succeed on retry
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Exceptions.OnvifException.IsAuthenticationError">
            <summary>
            Gets whether the error is related to authentication
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Exceptions.OnvifException.RetryAttempts">
            <summary>
            Number of retry attempts that were made before this exception was thrown
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Exceptions.OnvifException.ToString">
            <summary>
            Returns a string with detailed information about the exception
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Exceptions.OnvifAuthenticationException">
            <summary>
            Exception thrown when authentication fails
            </summary>
        </member>
        <member name="P:WINKOnvif.Core.Exceptions.OnvifAuthenticationException.AuthenticationExceptions">
            <summary>
            Gets all the exceptions that occurred during authentication attempts
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Exceptions.OnvifAuthenticationException.#ctor(System.String,System.Exception,System.Collections.Generic.IEnumerable{System.Exception})">
            <summary>
            Creates a new OnvifAuthenticationException with a list of all authentication exceptions
            </summary>
            <param name="message">Error message</param>
            <param name="innerException">Inner exception</param>
            <param name="authenticationExceptions">List of all authentication exceptions</param>
        </member>
        <member name="T:WINKOnvif.Core.Exceptions.OnvifConnectionException">
            <summary>
            Exception thrown when a connection to an ONVIF device fails
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Exceptions.OnvifNotSupportedException">
            <summary>
            Exception thrown when an operation is not supported by the device
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Exceptions.OnvifInvalidParameterException">
            <summary>
            Exception thrown when an invalid parameter is provided
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.OnvifServiceExtensions">
            <summary>
            Extension methods for registering ONVIF services with dependency injection
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.OnvifServiceExtensions.AddOnvifServices(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
            <summary>
            Adds all ONVIF services to the service collection
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.OnvifServiceExtensions.AddOnvifDiscoveryServices(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
            <summary>
            Adds only the core ONVIF discovery services
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.PTZ.IPtzService">
            <summary>
            Interface for ONVIF PTZ camera control
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.IPtzService.AbsoluteMoveAsync(System.String,WINKOnvif.Core.Models.PTZ.PtzPosition)">
            <summary>
            Moves the camera to an absolute position
            </summary>
            <param name="profileToken">The token identifying the profile to use</param>
            <param name="position">The absolute position to move to</param>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.IPtzService.RelativeMoveAsync(System.String,WINKOnvif.Core.Models.PTZ.PtzVector)">
            <summary>
            Moves the camera relative to its current position
            </summary>
            <param name="profileToken">The token identifying the profile to use</param>
            <param name="translation">The relative movement vector</param>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.IPtzService.StopAsync(System.String)">
            <summary>
            Stops all PTZ movement
            </summary>
            <param name="profileToken">The token identifying the profile to use</param>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.IPtzService.GetPresetsAsync(System.String)">
            <summary>
            Gets all presets configured for the camera
            </summary>
            <param name="profileToken">The token identifying the profile to use</param>
            <returns>A list of PTZ presets</returns>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.IPtzService.GotoPresetAsync(System.String,System.String)">
            <summary>
            Moves the camera to a specific preset position
            </summary>
            <param name="profileToken">The token identifying the profile to use</param>
            <param name="presetToken">The token identifying the preset to go to</param>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.IPtzService.SetPresetAsync(System.String,System.String,System.String)">
            <summary>
            Sets a new preset at the current camera position
            </summary>
            <param name="profileToken">The token identifying the profile to use</param>
            <param name="presetName">Optional name for the preset</param>
            <param name="presetToken">Optional token for the preset (if updating existing)</param>
            <returns>The token of the created/updated preset</returns>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.IPtzService.GetPositionAsync(System.String)">
            <summary>
            Gets the current PTZ position of the camera
            </summary>
            <param name="profileToken">The token identifying the profile to use</param>
            <returns>The current PTZ position</returns>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.IPtzService.ContinuousMoveAsync(System.String,WINKOnvif.Core.Models.PTZ.PtzVector,System.Nullable{System.TimeSpan})">
            <summary>
            Starts continuous movement in the specified direction
            </summary>
            <param name="profileToken">The token identifying the profile to use</param>
            <param name="velocity">The velocity vector for the movement</param>
            <param name="timeout">Optional timeout after which movement will stop</param>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.IPtzService.GetToursAsync(System.String)">
            <summary>
            Gets all available PTZ tours for a profile
            </summary>
            <param name="profileToken">The token identifying the profile to use</param>
            <returns>List of available PTZ tours</returns>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.IPtzService.GetTourAsync(System.String,System.String)">
            <summary>
            Gets a specific PTZ tour by token
            </summary>
            <param name="profileToken">The token identifying the profile to use</param>
            <param name="tourToken">The token identifying the tour</param>
            <returns>The requested PTZ tour</returns>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.IPtzService.CreateTourAsync(System.String,WINKOnvif.Core.Models.PTZ.PtzTour)">
            <summary>
            Creates a new PTZ tour
            </summary>
            <param name="profileToken">The token identifying the profile to use</param>
            <param name="tour">The tour configuration to create</param>
            <returns>The token of the created tour</returns>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.IPtzService.UpdateTourAsync(System.String,WINKOnvif.Core.Models.PTZ.PtzTour)">
            <summary>
            Modifies an existing PTZ tour
            </summary>
            <param name="profileToken">The token identifying the profile to use</param>
            <param name="tour">The tour with updated configuration</param>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.IPtzService.DeleteTourAsync(System.String,System.String)">
            <summary>
            Deletes a PTZ tour
            </summary>
            <param name="profileToken">The token identifying the profile to use</param>
            <param name="tourToken">The token identifying the tour to delete</param>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.IPtzService.StartTourAsync(System.String,System.String)">
            <summary>
            Starts a PTZ tour
            </summary>
            <param name="profileToken">The token identifying the profile to use</param>
            <param name="tourToken">The token identifying the tour to start</param>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.IPtzService.StopTourAsync(System.String,System.String)">
            <summary>
            Stops a running PTZ tour
            </summary>
            <param name="profileToken">The token identifying the profile to use</param>
            <param name="tourToken">The token identifying the tour to stop</param>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.IPtzService.PauseTourAsync(System.String,System.String)">
            <summary>
            Temporarily pauses a running tour
            </summary>
            <param name="profileToken">The token identifying the profile to use</param>
            <param name="tourToken">The token identifying the tour to pause</param>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.IPtzService.GetTourOptionsAsync(System.String)">
            <summary>
            Gets configuration options for PTZ tours
            </summary>
            <param name="profileToken">The token identifying the profile to use</param>
            <returns>The tour configuration options</returns>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.IPtzService.SendAuxiliaryCommandAsync(System.String,System.String)">
            <summary>
            Sends an auxiliary command to the PTZ device
            </summary>
            <param name="profileToken">The token identifying the profile to use</param>
            <param name="auxiliaryCommand">The auxiliary command to send</param>
            <returns>The response from the auxiliary command</returns>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.IPtzService.GetSupportedAuxiliaryCommandsAsync(System.String)">
            <summary>
            Gets the list of supported auxiliary commands
            </summary>
            <param name="profileToken">The token identifying the profile to use</param>
            <returns>List of supported auxiliary commands</returns>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.IPtzService.GetStatusAsync(System.String)">
            <summary>
            Gets the status of the PTZ device including position and movement
            </summary>
            <param name="profileToken">The token identifying the profile to use</param>
            <returns>The current PTZ status</returns>
        </member>
        <member name="T:WINKOnvif.Core.PTZ.PtzService">
            <summary>
            Implementation of the ONVIF PTZ service
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.#ctor(System.Net.Http.HttpClient,WINKOnvif.Core.Models.Authentication.OnvifCredentials,System.String,Microsoft.Extensions.Logging.ILogger{WINKOnvif.Core.PTZ.PtzService},WINKOnvif.Core.Authentication.IAuthenticator)">
            <summary>
            Initialize a new PTZ service
            </summary>
            <param name="httpClient">HTTP client to use for requests</param>
            <param name="credentials">ONVIF credentials</param>
            <param name="endpoint">PTZ service endpoint URL</param>
            <param name="logger">Logger for PTZ operations</param>
            <param name="authenticator">Optional authenticator to use (defaults to WSSE)</param>
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.GetPresetsAsync(System.String)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.GotoPresetAsync(System.String,System.String)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.CreatePresetAsync(System.String,System.String)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.RemovePresetAsync(System.String,System.String)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.AbsoluteMoveAsync(System.String,WINKOnvif.Core.Models.PTZ.PtzVector)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.RelativeMoveAsync(System.String,WINKOnvif.Core.Models.PTZ.PtzVector)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.ContinuousMoveAsync(System.String,WINKOnvif.Core.Models.PTZ.PtzVector)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.StopAsync(System.String)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.GetStatusAsync(System.String)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.SetPresetAsync(System.String,System.String,System.String)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.GetPositionAsync(System.String)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.ContinuousMoveAsync(System.String,WINKOnvif.Core.Models.PTZ.PtzVector,System.Nullable{System.TimeSpan})">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.GetToursAsync(System.String)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.GetTourAsync(System.String,System.String)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.CreateTourAsync(System.String,WINKOnvif.Core.Models.PTZ.PtzTour)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.UpdateTourAsync(System.String,WINKOnvif.Core.Models.PTZ.PtzTour)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.DeleteTourAsync(System.String,System.String)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.StartTourAsync(System.String,System.String)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.StopTourAsync(System.String,System.String)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.PauseTourAsync(System.String,System.String)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.GetTourOptionsAsync(System.String)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.SendAuxiliaryCommandAsync(System.String,System.String)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.GetSupportedAuxiliaryCommandsAsync(System.String)">
            <inheritdoc />
        </member>
        <member name="M:WINKOnvif.Core.PTZ.PtzService.AbsoluteMoveAsync(System.String,WINKOnvif.Core.Models.PTZ.PtzPosition)">
            <inheritdoc />
        </member>
        <member name="T:WINKOnvif.Core.Recording.IRecordingService">
            <summary>
            Interface for ONVIF Recording Service operations
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Recording.IRecordingService.GetServiceCapabilitiesAsync">
            <summary>
            Get recording service capabilities
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Recording.IRecordingService.GetRecordingsAsync">
            <summary>
            Get all recordings
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Recording.IRecordingService.GetRecordingAsync(System.String)">
            <summary>
            Get specific recording information
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Recording.IRecordingService.CreateRecordingAsync(WINKOnvif.Core.Models.Recording.RecordingConfiguration)">
            <summary>
            Create a new recording
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Recording.IRecordingService.DeleteRecordingAsync(System.String)">
            <summary>
            Delete a recording
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Recording.IRecordingService.SetRecordingConfigurationAsync(System.String,WINKOnvif.Core.Models.Recording.RecordingConfiguration)">
            <summary>
            Set recording configuration
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Recording.IRecordingService.GetRecordingJobsAsync">
            <summary>
            Get recording jobs
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Recording.IRecordingService.GetRecordingJobAsync(System.String)">
            <summary>
            Get specific recording job
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Recording.IRecordingService.CreateRecordingJobAsync(WINKOnvif.Core.Models.Recording.RecordingJobConfiguration)">
            <summary>
            Create recording job
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Recording.IRecordingService.DeleteRecordingJobAsync(System.String)">
            <summary>
            Delete recording job
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Recording.IRecordingService.SetRecordingJobConfigurationAsync(System.String,WINKOnvif.Core.Models.Recording.RecordingJobConfiguration)">
            <summary>
            Set recording job configuration
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Recording.IRecordingService.SetRecordingJobModeAsync(System.String,WINKOnvif.Core.Models.Recording.RecordingJobMode)">
            <summary>
            Set recording job mode
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Recording.IRecordingService.GetRecordingJobStateAsync(System.String)">
            <summary>
            Get recording job state
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Recording.IRecordingService.ExportRecordingAsync(System.String,System.DateTime,System.DateTime,System.Collections.Generic.List{System.String})">
            <summary>
            Export recording or parts of it
            </summary>
            <param name="recordingToken">Recording token</param>
            <param name="startTime">Start time</param>
            <param name="endTime">End time</param>
            <param name="trackTokens">Optional track tokens to export</param>
            <returns>Export URI</returns>
        </member>
        <member name="M:WINKOnvif.Core.Recording.IRecordingService.StopExportRecordingAsync(System.String)">
            <summary>
            Stop export operation
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Recording.IRecordingService.GetExportRecordingStateAsync(System.String)">
            <summary>
            Get export recording state
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Recording.ISearchService">
            <summary>
            Interface for ONVIF Search Service operations
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Recording.ISearchService.FindRecordingsAsync(WINKOnvif.Core.Models.Recording.SearchScope,System.Int32,System.Nullable{System.TimeSpan})">
            <summary>
            Find recordings
            </summary>
            <param name="scope">Search scope</param>
            <param name="maxMatches">Maximum number of matches</param>
            <param name="keepAliveTime">Keep alive time for search session</param>
            <returns>Search token</returns>
        </member>
        <member name="M:WINKOnvif.Core.Recording.ISearchService.GetRecordingSearchResultsAsync(System.String,System.Int32,System.Int32,System.Nullable{System.TimeSpan})">
            <summary>
            Get recording search results
            </summary>
            <param name="searchToken">Search token</param>
            <param name="minResults">Minimum results to wait for</param>
            <param name="maxResults">Maximum results to return</param>
            <param name="waitTime">Wait time for results</param>
            <returns>Search results</returns>
        </member>
        <member name="M:WINKOnvif.Core.Recording.ISearchService.FindEventsAsync(System.DateTime,System.Nullable{System.DateTime},WINKOnvif.Core.Models.Recording.SearchScope,WINKOnvif.Core.Recording.EventFilter,System.Boolean,System.Int32,System.Nullable{System.TimeSpan})">
            <summary>
            Find events in recordings
            </summary>
            <param name="startPoint">Start time</param>
            <param name="endPoint">End time (optional)</param>
            <param name="scope">Search scope</param>
            <param name="searchFilter">Event filter</param>
            <param name="includeStartState">Include start state events</param>
            <param name="maxMatches">Maximum matches</param>
            <param name="keepAliveTime">Keep alive time</param>
            <returns>Search token</returns>
        </member>
        <member name="M:WINKOnvif.Core.Recording.ISearchService.GetEventSearchResultsAsync(System.String,System.Int32,System.Int32,System.Nullable{System.TimeSpan})">
            <summary>
            Get event search results
            </summary>
            <param name="searchToken">Search token</param>
            <param name="minResults">Minimum results</param>
            <param name="maxResults">Maximum results</param>
            <param name="waitTime">Wait time</param>
            <returns>Event search results</returns>
        </member>
        <member name="M:WINKOnvif.Core.Recording.ISearchService.FindPTZPositionAsync(System.DateTime,System.Nullable{System.DateTime},WINKOnvif.Core.Models.Recording.SearchScope,WINKOnvif.Core.Recording.PTZPositionFilter,System.Int32,System.Nullable{System.TimeSpan})">
            <summary>
            Find PTZ position in recordings
            </summary>
            <param name="startPoint">Start time</param>
            <param name="endPoint">End time</param>
            <param name="scope">Search scope</param>
            <param name="searchFilter">PTZ position filter</param>
            <param name="maxMatches">Maximum matches</param>
            <param name="keepAliveTime">Keep alive time</param>
            <returns>Search token</returns>
        </member>
        <member name="M:WINKOnvif.Core.Recording.ISearchService.FindMetadataAsync(System.DateTime,System.Nullable{System.DateTime},WINKOnvif.Core.Models.Recording.SearchScope,WINKOnvif.Core.Recording.MetadataFilter,System.Int32,System.Nullable{System.TimeSpan})">
            <summary>
            Find metadata in recordings
            </summary>
            <param name="startPoint">Start time</param>
            <param name="endPoint">End time</param>
            <param name="scope">Search scope</param>
            <param name="metadataFilter">Metadata filter</param>
            <param name="maxMatches">Maximum matches</param>
            <param name="keepAliveTime">Keep alive time</param>
            <returns>Search token</returns>
        </member>
        <member name="M:WINKOnvif.Core.Recording.ISearchService.GetRecordingInformationAsync(System.String)">
            <summary>
            Get recording information
            </summary>
            <param name="recordingToken">Recording token</param>
            <returns>Recording information</returns>
        </member>
        <member name="M:WINKOnvif.Core.Recording.ISearchService.GetMediaAttributesAsync(System.Collections.Generic.List{System.String},System.DateTime)">
            <summary>
            Get media attributes for a recording
            </summary>
            <param name="recordingTokens">Recording tokens</param>
            <param name="time">Time to get attributes for</param>
            <returns>Media attributes</returns>
        </member>
        <member name="M:WINKOnvif.Core.Recording.ISearchService.EndSearchAsync(System.String)">
            <summary>
            End a search session
            </summary>
            <param name="searchToken">Search token</param>
        </member>
        <member name="M:WINKOnvif.Core.Recording.ISearchService.GetSearchStateAsync(System.String)">
            <summary>
            Get search state
            </summary>
            <param name="searchToken">Search token</param>
            <returns>Search state</returns>
        </member>
        <member name="T:WINKOnvif.Core.Recording.IReplayService">
            <summary>
            Interface for ONVIF Replay Service operations
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Recording.IReplayService.GetServiceCapabilitiesAsync">
            <summary>
            Get replay service capabilities
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Recording.IReplayService.GetReplayUriAsync(System.String,WINKOnvif.Core.Recording.StreamSetup)">
            <summary>
            Get replay URI
            </summary>
            <param name="recordingToken">Recording token</param>
            <param name="streamSetup">Stream setup</param>
            <returns>Replay URI</returns>
        </member>
        <member name="M:WINKOnvif.Core.Recording.IReplayService.GetReplayConfigurationAsync">
            <summary>
            Get replay configuration
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Recording.IReplayService.SetReplayConfigurationAsync(WINKOnvif.Core.Recording.ReplayConfiguration)">
            <summary>
            Set replay configuration
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Recording.EventFilter">
            <summary>
            Event filter for searching
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Recording.PTZPositionFilter">
            <summary>
            PTZ position filter
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Recording.MetadataFilter">
            <summary>
            Metadata filter
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Recording.SearchState">
            <summary>
            Search state
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Recording.StreamSetup">
            <summary>
            Stream setup for replay
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Recording.StreamType">
            <summary>
            Stream type
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Recording.Transport">
            <summary>
            Transport protocol
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Recording.TransportProtocol">
            <summary>
            Transport protocol type
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Recording.ReplayConfiguration">
            <summary>
            Replay configuration
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Recording.OnvifRecordingService.UseSoap11(System.Boolean)">
            <summary>
            Set whether to use SOAP 1.1 instead of SOAP 1.2
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Recording.OnvifSearchService.UseSoap11(System.Boolean)">
            <summary>
            Set whether to use SOAP 1.1 (text/xml) instead of SOAP 1.2 (application/soap+xml)
            </summary>
        </member>
        <member name="T:WINKOnvif.Core.Security.IOnvifSecurityService">
            <summary>
            Interface for ONVIF security services
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Security.IOnvifSecurityService.GenerateNonce">
            <summary>
            Generates a nonce (random value) for WS-Security authentication
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Security.IOnvifSecurityService.CreatePasswordDigest(System.String,System.String,System.String)">
            <summary>
            Creates a password digest using the WS-Security algorithm
            </summary>
            <param name="password">The password to hash</param>
            <param name="nonce">A random nonce value (must be base64-encoded)</param>
            <param name="created">Timestamp in ISO8601 format</param>
            <returns>Base64-encoded password digest</returns>
        </member>
        <member name="M:WINKOnvif.Core.Security.IOnvifSecurityService.ValidateCredentials(WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Validates if the provided credentials are valid for the device
            </summary>
            <param name="credentials">The credentials to validate</param>
            <returns>True if credentials are valid, false otherwise</returns>
        </member>
        <member name="M:WINKOnvif.Core.Security.IOnvifSecurityService.LoadCertificate(System.String,System.String)">
            <summary>
            Loads and validates an X509 certificate for HTTPS communication
            </summary>
            <param name="certificatePath">Path to the certificate file</param>
            <param name="password">Optional password for the certificate</param>
            <returns>Valid certificate or null if loading fails</returns>
        </member>
        <member name="T:WINKOnvif.Core.Security.OnvifSecurityService">
            <summary>
            Provides security services for ONVIF communication
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Security.OnvifSecurityService.GenerateNonce">
            <summary>
            Generates a nonce (random value) for WS-Security authentication
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Security.OnvifSecurityService.CreatePasswordDigest(System.String,System.String,System.String)">
            <summary>
            Creates a password digest using the WS-Security algorithm
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Security.OnvifSecurityService.ValidateCredentials(WINKOnvif.Core.Models.Authentication.OnvifCredentials)">
            <summary>
            Validates if the provided credentials are valid for the device
            </summary>
        </member>
        <member name="M:WINKOnvif.Core.Security.OnvifSecurityService.LoadCertificate(System.String,System.String)">
            <summary>
            Loads and validates an X509 certificate for HTTPS communication
            </summary>
        </member>
    </members>
</doc>
