import type { OAuthFlowsObject, ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document';
import type { ErrorResponse } from '../../../../libs/errors.js';
/** Oauth2 security schemes which are not implicit */
type NonImplicitFlow = Omit<OAuthFlowsObject, 'implicit'>;
type PKCEState = {
    codeVerifier: string;
    codeChallenge: string;
    codeChallengeMethod: string;
};
/**
 * Creates a code challenge from the code verifier
 */
export declare const generateCodeChallenge: (verifier: string, encoding: "SHA-256" | "plain") => Promise<string>;
/**
 * Authorize oauth2 flow
 *
 * @returns the accessToken
 */
export declare const authorizeOauth2: (flows: OAuthFlowsObject, type: keyof OAuthFlowsObject, selectedScopes: string[], 
/** We use the active server to set a base for relative redirect uris */
activeServer: ServerObject | null, 
/** If we want to use the proxy */
proxyUrl: string) => Promise<ErrorResponse<string>>;
/**
 * Makes the BE authorization call to grab the token server to server
 * Used for clientCredentials and authorizationCode
 */
export declare const authorizeServers: (flows: NonImplicitFlow, type: keyof NonImplicitFlow, scopes: string, { code, pkce, proxyUrl, }: {
    code?: string;
    pkce?: PKCEState | null;
    proxyUrl?: string;
} | undefined, activeServer: ServerObject | null) => Promise<ErrorResponse<string>>;
export {};
//# sourceMappingURL=oauth.d.ts.map