using System;
namespace DotNetOpenId.RelyingParty {
///
/// Information published about an OpenId Provider by the
/// OpenId discovery documents found at a user's Claimed Identifier.
///
///
/// Because information provided by this interface is suppplied by a
/// user's individually published documents, it may be incomplete or inaccurate.
///
public interface IProviderEndpoint {
///
/// Checks whether the OpenId Identifier claims support for a given extension.
///
/// The extension whose support is being queried.
/// True if support for the extension is advertised. False otherwise.
///
/// Note that a true or false return value is no guarantee of a Provider's
/// support for or lack of support for an extension. The return value is
/// determined by how the authenticating user filled out his/her XRDS document only.
/// The only way to be sure of support for a given extension is to include
/// the extension in the request and see if a response comes back for that extension.
///
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter")]
bool IsExtensionSupported() where T : Extensions.IExtension, new();
///
/// Checks whether the OpenId Identifier claims support for a given extension.
///
/// The extension whose support is being queried.
/// True if support for the extension is advertised. False otherwise.
///
/// Note that a true or false return value is no guarantee of a Provider's
/// support for or lack of support for an extension. The return value is
/// determined by how the authenticating user filled out his/her XRDS document only.
/// The only way to be sure of support for a given extension is to include
/// the extension in the request and see if a response comes back for that extension.
///
bool IsExtensionSupported(Type extensionType);
///
/// The detected version of OpenID implemented by the Provider.
///
Version Version { get; }
///
/// The URL that the OpenID Provider receives authentication requests at.
///
Uri Uri { get; }
}
}