import type { OAuthClientProvider } from '@modelcontextprotocol/sdk/client/auth.js';
import type { OAuthClientMetadata, OAuthClientInformationMixed, OAuthTokens } from '@modelcontextprotocol/sdk/shared/auth.js';
import { OAuthTokenManager } from './oauth-token-manager.js';
export interface OAuthProviderOptions {
    serverUrl: string;
    profileName: string;
    tokenManager?: OAuthTokenManager;
    clientId?: string;
    redirectUrl?: string;
    forceReauth?: boolean;
}
export declare class OAuthProvider implements OAuthClientProvider {
    private serverUrl;
    private profileName;
    private tokenManager?;
    private _clientId?;
    private _redirectUrl;
    private _forceReauth;
    private _authProfile?;
    private _codeVerifier?;
    private _clientInformation?;
    constructor(options: OAuthProviderOptions);
    private isRuntimeMode;
    get redirectUrl(): string;
    get clientMetadata(): OAuthClientMetadata;
    clientInformation(): Promise<OAuthClientInformationMixed | undefined>;
    saveClientInformation(clientInformation: OAuthClientInformationMixed): Promise<void>;
    tokens(): Promise<OAuthTokens | undefined>;
    saveTokens(tokens: OAuthTokens): Promise<void>;
    private updateProfileMetadata;
    redirectToAuthorization(authorizationUrl: URL): Promise<void>;
    saveCodeVerifier(codeVerifier: string): Promise<void>;
    codeVerifier(): Promise<string>;
}
//# sourceMappingURL=oauth-provider.d.ts.map