import { IdentityResolver, ResolvedIdentity, ResolveIdentityOptions } from '@atproto-labs/identity-resolver';
import { OAuthAuthorizationServerMetadata } from '@atproto/oauth-types';
import { GetCachedOptions, OAuthAuthorizationServerMetadataResolver } from './oauth-authorization-server-metadata-resolver.js';
import { OAuthProtectedResourceMetadataResolver } from './oauth-protected-resource-metadata-resolver.js';
export type { GetCachedOptions };
export type ResolveOAuthOptions = GetCachedOptions & ResolveIdentityOptions;
export declare class OAuthResolver {
    readonly identityResolver: IdentityResolver;
    readonly protectedResourceMetadataResolver: OAuthProtectedResourceMetadataResolver;
    readonly authorizationServerMetadataResolver: OAuthAuthorizationServerMetadataResolver;
    constructor(identityResolver: IdentityResolver, protectedResourceMetadataResolver: OAuthProtectedResourceMetadataResolver, authorizationServerMetadataResolver: OAuthAuthorizationServerMetadataResolver);
    /**
     * @param input - A handle, DID, PDS URL or Entryway URL
     */
    resolve(input: string, options?: ResolveOAuthOptions): Promise<{
        identity?: ResolvedIdentity;
        metadata: OAuthAuthorizationServerMetadata;
    }>;
    /**
     * @note this method can be used to verify if a particular uri supports OAuth
     * based sign-in (for compatibility with legacy implementation).
     */
    resolveFromService(input: string, options?: ResolveOAuthOptions): Promise<{
        metadata: OAuthAuthorizationServerMetadata;
    }>;
    resolveFromIdentity(input: string, options?: ResolveOAuthOptions): Promise<{
        identity: ResolvedIdentity;
        metadata: OAuthAuthorizationServerMetadata;
    }>;
    resolveIdentity(input: string, options?: ResolveIdentityOptions): Promise<ResolvedIdentity>;
    getAuthorizationServerMetadata(issuer: string, options?: GetCachedOptions): Promise<OAuthAuthorizationServerMetadata>;
    getResourceServerMetadata(pdsUrl: string | URL, options?: GetCachedOptions): Promise<{
        issuer: `http://[::1]${string}` | "http://localhost" | `http://localhost#${string}` | `http://localhost?${string}` | `http://localhost/${string}` | `http://localhost:${string}` | "http://127.0.0.1" | `http://127.0.0.1#${string}` | `http://127.0.0.1?${string}` | `http://127.0.0.1/${string}` | `http://127.0.0.1:${string}` | `https://${string}`;
        authorization_endpoint: `http://[::1]${string}` | "http://localhost" | `http://localhost#${string}` | `http://localhost?${string}` | `http://localhost/${string}` | `http://localhost:${string}` | "http://127.0.0.1" | `http://127.0.0.1#${string}` | `http://127.0.0.1?${string}` | `http://127.0.0.1/${string}` | `http://127.0.0.1:${string}` | `https://${string}`;
        token_endpoint: `http://[::1]${string}` | "http://localhost" | `http://localhost#${string}` | `http://localhost?${string}` | `http://localhost/${string}` | `http://localhost:${string}` | "http://127.0.0.1" | `http://127.0.0.1#${string}` | `http://127.0.0.1?${string}` | `http://127.0.0.1/${string}` | `http://127.0.0.1:${string}` | `https://${string}`;
        jwks_uri?: `http://[::1]${string}` | "http://localhost" | `http://localhost#${string}` | `http://localhost?${string}` | `http://localhost/${string}` | `http://localhost:${string}` | "http://127.0.0.1" | `http://127.0.0.1#${string}` | `http://127.0.0.1?${string}` | `http://127.0.0.1/${string}` | `http://127.0.0.1:${string}` | `https://${string}` | undefined;
        claims_supported?: string[] | undefined;
        claims_locales_supported?: string[] | undefined;
        claims_parameter_supported?: boolean | undefined;
        request_parameter_supported?: boolean | undefined;
        request_uri_parameter_supported?: boolean | undefined;
        require_request_uri_registration?: boolean | undefined;
        scopes_supported?: string[] | undefined;
        subject_types_supported?: string[] | undefined;
        response_types_supported?: string[] | undefined;
        response_modes_supported?: string[] | undefined;
        grant_types_supported?: string[] | undefined;
        code_challenge_methods_supported?: ("S256" | "plain")[] | undefined;
        ui_locales_supported?: string[] | undefined;
        id_token_signing_alg_values_supported?: string[] | undefined;
        display_values_supported?: string[] | undefined;
        request_object_signing_alg_values_supported?: string[] | undefined;
        authorization_response_iss_parameter_supported?: boolean | undefined;
        authorization_details_types_supported?: string[] | undefined;
        request_object_encryption_alg_values_supported?: string[] | undefined;
        request_object_encryption_enc_values_supported?: string[] | undefined;
        token_endpoint_auth_methods_supported?: string[] | undefined;
        token_endpoint_auth_signing_alg_values_supported?: string[] | undefined;
        revocation_endpoint?: `http://[::1]${string}` | "http://localhost" | `http://localhost#${string}` | `http://localhost?${string}` | `http://localhost/${string}` | `http://localhost:${string}` | "http://127.0.0.1" | `http://127.0.0.1#${string}` | `http://127.0.0.1?${string}` | `http://127.0.0.1/${string}` | `http://127.0.0.1:${string}` | `https://${string}` | undefined;
        introspection_endpoint?: `http://[::1]${string}` | "http://localhost" | `http://localhost#${string}` | `http://localhost?${string}` | `http://localhost/${string}` | `http://localhost:${string}` | "http://127.0.0.1" | `http://127.0.0.1#${string}` | `http://127.0.0.1?${string}` | `http://127.0.0.1/${string}` | `http://127.0.0.1:${string}` | `https://${string}` | undefined;
        pushed_authorization_request_endpoint?: `http://[::1]${string}` | "http://localhost" | `http://localhost#${string}` | `http://localhost?${string}` | `http://localhost/${string}` | `http://localhost:${string}` | "http://127.0.0.1" | `http://127.0.0.1#${string}` | `http://127.0.0.1?${string}` | `http://127.0.0.1/${string}` | `http://127.0.0.1:${string}` | `https://${string}` | undefined;
        require_pushed_authorization_requests?: boolean | undefined;
        userinfo_endpoint?: `http://[::1]${string}` | "http://localhost" | `http://localhost#${string}` | `http://localhost?${string}` | `http://localhost/${string}` | `http://localhost:${string}` | "http://127.0.0.1" | `http://127.0.0.1#${string}` | `http://127.0.0.1?${string}` | `http://127.0.0.1/${string}` | `http://127.0.0.1:${string}` | `https://${string}` | undefined;
        end_session_endpoint?: `http://[::1]${string}` | "http://localhost" | `http://localhost#${string}` | `http://localhost?${string}` | `http://localhost/${string}` | `http://localhost:${string}` | "http://127.0.0.1" | `http://127.0.0.1#${string}` | `http://127.0.0.1?${string}` | `http://127.0.0.1/${string}` | `http://127.0.0.1:${string}` | `https://${string}` | undefined;
        registration_endpoint?: `http://[::1]${string}` | "http://localhost" | `http://localhost#${string}` | `http://localhost?${string}` | `http://localhost/${string}` | `http://localhost:${string}` | "http://127.0.0.1" | `http://127.0.0.1#${string}` | `http://127.0.0.1?${string}` | `http://127.0.0.1/${string}` | `http://127.0.0.1:${string}` | `https://${string}` | undefined;
        dpop_signing_alg_values_supported?: string[] | undefined;
        protected_resources?: (`http://[::1]${string}` | "http://localhost" | `http://localhost#${string}` | `http://localhost?${string}` | `http://localhost/${string}` | `http://localhost:${string}` | "http://127.0.0.1" | `http://127.0.0.1#${string}` | `http://127.0.0.1?${string}` | `http://127.0.0.1/${string}` | `http://127.0.0.1:${string}` | `https://${string}`)[] | undefined;
        client_id_metadata_document_supported?: boolean | undefined;
    }>;
}
//# sourceMappingURL=oauth-resolver.d.ts.map