<?xml version="1.0"?>
<doc>
    <assembly>
        <name>StevanFreeborn.Options</name>
    </assembly>
    <members>
        <member name="T:StevanFreeborn.Options.Option">
            <summary>
            Provides factory methods for creating <see cref="T:StevanFreeborn.Options.Option`1"/>.
            </summary>
        </member>
        <member name="M:StevanFreeborn.Options.Option.Some``1(``0)">
            <summary>
            Creates an option with the specified value.
            </summary>
            <typeparam name="T">The type of the value.</typeparam>
            <param name="value">The value.</param>
            <returns>An <see cref="T:StevanFreeborn.Options.Option`1"/> with the specified value.</returns>
        </member>
        <member name="M:StevanFreeborn.Options.Option.None``1">
            <summary>
            Creates an empty option.
            </summary>
            <typeparam name="T">The type of the value.</typeparam>
            <returns>An empty <see cref="T:StevanFreeborn.Options.Option`1"/>.</returns>
        </member>
        <member name="M:StevanFreeborn.Options.Option.From``1(``0)">
            <summary>
            Creates an option from the specified value, returning None if the value is null.
            </summary>
            <typeparam name="T">The type of the value.</typeparam>
            <param name="value">The value.</param>
            <returns>An <see cref="T:StevanFreeborn.Options.Option`1"/> with the value if not null, otherwise None.</returns>
        </member>
        <member name="M:StevanFreeborn.Options.Option.FromT``1(``0)">
            <summary>
            Converts a value to an <see cref="T:StevanFreeborn.Options.Option`1"/>.
            </summary>
            <typeparam name="T">The type of the value.</typeparam>
            <param name="value">The value.</param>
            <returns>An <see cref="T:StevanFreeborn.Options.Option`1"/>.</returns>
        </member>
        <member name="T:StevanFreeborn.Options.Option`1">
            <summary>
            Represents an optional value that may or may not be present.
            </summary>
            <typeparam name="T">The type of the value.</typeparam>
        </member>
        <member name="P:StevanFreeborn.Options.Option`1.IsSome">
            <summary>
            Gets a value indicating whether the option has a value.
            </summary>
        </member>
        <member name="P:StevanFreeborn.Options.Option`1.IsNone">
            <summary>
            Gets a value indicating whether the option is empty.
            </summary>
        </member>
        <member name="P:StevanFreeborn.Options.Option`1.Value">
            <summary>
            Gets the value of the option.
            </summary>
            <exception cref="T:System.InvalidOperationException">Thrown when accessing Value on a None option.</exception>
        </member>
        <member name="M:StevanFreeborn.Options.Option`1.op_Implicit(`0)~StevanFreeborn.Options.Option{`0}">
            <summary>
            Implicitly converts a value to an <see cref="T:StevanFreeborn.Options.Option`1"/>.
            </summary>
            <param name="value">The value to convert.</param>
        </member>
        <member name="M:StevanFreeborn.Options.Option`1.Deconstruct(System.Boolean@,`0@)">
            <summary>
            Deconstructs the option into its components.
            </summary>
            <param name="isSome">Indicates whether the option has a value.</param>
            <param name="value">The value of the option.</param>
        </member>
        <member name="M:StevanFreeborn.Options.Option`1.Map``1(System.Func{`0,``0})">
            <summary>
            Maps the value to a new type if the option has a value.
            </summary>
            <typeparam name="TNew">The new type.</typeparam>
            <param name="mapper">The function to map the value.</param>
            <returns>A new <see cref="T:StevanFreeborn.Options.Option`1"/> with the mapped value if Some, otherwise None.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when mapper is null.</exception>
        </member>
        <member name="M:StevanFreeborn.Options.Option`1.Bind``1(System.Func{`0,StevanFreeborn.Options.Option{``0}})">
            <summary>
            Binds to a new option if the current option has a value.
            </summary>
            <typeparam name="TNew">The new option type.</typeparam>
            <param name="binder">The function to bind to on Some.</param>
            <returns>The result of the binder function if Some, otherwise None.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when binder is null.</exception>
        </member>
        <member name="M:StevanFreeborn.Options.Option`1.Match``1(System.Func{`0,``0},System.Func{``0})">
            <summary>
            Matches the option and returns a value based on whether it has a value.
            </summary>
            <typeparam name="TResult">The type of the result.</typeparam>
            <param name="onSome">The function to execute on Some.</param>
            <param name="onNone">The function to execute on None.</param>
            <returns>The result of the appropriate function.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when onSome or onNone is null.</exception>
        </member>
        <member name="M:StevanFreeborn.Options.Option`1.Match(System.Action{`0},System.Action)">
            <summary>
            Matches the option and executes the appropriate action.
            </summary>
            <param name="onSome">The action to execute on Some.</param>
            <param name="onNone">The action to execute on None.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when onSome or onNone is null.</exception>
        </member>
        <member name="M:StevanFreeborn.Options.Option`1.Where(System.Func{`0,System.Boolean})">
            <summary>
            Filters the option based on the specified predicate.
            </summary>
            <param name="predicate">The predicate to filter with.</param>
            <returns>The current option if Some and the predicate is met, otherwise None.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when predicate is null.</exception>
        </member>
        <member name="M:StevanFreeborn.Options.Option`1.GetValueOrDefault(`0)">
            <summary>
            Gets the value of the option if Some, otherwise the specified default value.
            </summary>
            <param name="defaultValue">The default value.</param>
            <returns>The value if Some, otherwise the default value.</returns>
        </member>
        <member name="M:StevanFreeborn.Options.Option`1.GetValueOrDefault(System.Func{`0})">
            <summary>
            Gets the value of the option if Some, otherwise the result of the specified factory function.
            </summary>
            <param name="factory">The factory function to provide the default value.</param>
            <returns>The value if Some, otherwise the result of the factory function.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when factory is null.</exception>
        </member>
        <member name="M:StevanFreeborn.Options.Option`1.OrElse(System.Func{StevanFreeborn.Options.Option{`0}})">
            <summary>
            Returns the current option if Some, otherwise the result of the specified factory function.
            </summary>
            <param name="factory">The factory function to provide the fallback option.</param>
            <returns>The current option if Some, otherwise the result of the factory function.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when factory is null.</exception>
        </member>
        <member name="T:StevanFreeborn.Options.OptionAsyncExtensions">
            <summary>
            Provides async extension methods for <see cref="T:StevanFreeborn.Options.Option`1"/>.
            </summary>
        </member>
        <member name="M:StevanFreeborn.Options.OptionAsyncExtensions.MapAsync``2(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{``1}})">
            <summary>
            Maps the value to a new type asynchronously if the option has a value.
            </summary>
            <typeparam name="T">The type of the value.</typeparam>
            <typeparam name="TNew">The new type.</typeparam>
            <param name="option">The option.</param>
            <param name="mapper">The async function to map the value.</param>
            <returns>A task containing a new <see cref="T:StevanFreeborn.Options.Option`1"/> with the mapped value if Some, otherwise None.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when option or mapper is null.</exception>
        </member>
        <member name="M:StevanFreeborn.Options.OptionAsyncExtensions.BindAsync``2(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{StevanFreeborn.Options.Option{``1}}})">
            <summary>
            Binds to a new async result if the current option has a value.
            </summary>
            <typeparam name="T">The type of the value.</typeparam>
            <typeparam name="TNew">The new result type.</typeparam>
            <param name="option">The option.</param>
            <param name="binder">The async function to bind to on Some.</param>
            <returns>A task containing the result of the binder function if Some, otherwise None.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when option or binder is null.</exception>
        </member>
        <member name="M:StevanFreeborn.Options.OptionAsyncExtensions.MatchAsync``2(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{``1}},System.Func{System.Threading.Tasks.Task{``1}})">
            <summary>
            Matches the option asynchronously and returns a value based on whether it has a value.
            </summary>
            <typeparam name="T">The type of the value.</typeparam>
            <typeparam name="TResult">The type of the result.</typeparam>
            <param name="option">The option.</param>
            <param name="onSome">The async function to execute on Some.</param>
            <param name="onNone">The async function to execute on None.</param>
            <returns>A task containing the result of the appropriate function.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when option, onSome, or onNone is null.</exception>
        </member>
        <member name="M:StevanFreeborn.Options.OptionAsyncExtensions.WhereAsync``1(StevanFreeborn.Options.Option{``0},System.Func{``0,System.Threading.Tasks.Task{System.Boolean}})">
            <summary>
            Filters the option asynchronously based on the specified predicate.
            </summary>
            <typeparam name="T">The type of the value.</typeparam>
            <param name="option">The option.</param>
            <param name="predicate">The async predicate to filter with.</param>
            <returns>A task containing the current option if Some and the predicate is met, otherwise None.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when option or predicate is null.</exception>
        </member>
        <member name="M:StevanFreeborn.Options.OptionAsyncExtensions.OrElseAsync``1(StevanFreeborn.Options.Option{``0},System.Func{System.Threading.Tasks.Task{StevanFreeborn.Options.Option{``0}}})">
            <summary>
            Returns the current option if Some, otherwise the result of the specified async factory function.
            </summary>
            <typeparam name="T">The type of the value.</typeparam>
            <param name="option">The option.</param>
            <param name="factory">The async factory function to provide the fallback option.</param>
            <returns>A task containing the current option if Some, otherwise the result of the factory function.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when option or factory is null.</exception>
        </member>
    </members>
</doc>
