/**
 * Authentication helpers for OpenAPI tools
 */
import { AuthSchemeType } from './AuthTypes';
import { AuthCredential } from '../../../auth/AuthCredential';
import { ApiParameter } from '../common/common';
export declare enum APIKeyIn {
    header = "header",
    query = "query",
    cookie = "cookie"
}
export declare class APIKey {
    type_: AuthSchemeType;
    in_: APIKeyIn;
    name: string;
    constructor(config: {
        type_: AuthSchemeType;
        in_: APIKeyIn;
        name: string;
    });
}
export declare class HTTPBase {
    type_: AuthSchemeType;
    scheme: string;
    constructor(config: {
        type_: AuthSchemeType;
        scheme: string;
    });
}
export declare class HTTPBearer extends HTTPBase {
    bearerFormat?: string;
    constructor(config: {
        type_: AuthSchemeType;
        scheme: string;
        bearerFormat?: string;
    });
}
export declare class OAuth2 {
    type_: AuthSchemeType;
    flows: Record<string, any>;
    constructor(config: {
        type_: AuthSchemeType;
        flows: Record<string, any>;
    });
}
export declare class OpenIdConnect {
    type_: AuthSchemeType;
    openIdConnectUrl: string;
    constructor(config: {
        type_: AuthSchemeType;
        openIdConnectUrl: string;
    });
}
export declare class OpenIdConnectWithConfig extends OpenIdConnect {
    authorization_endpoint: string;
    token_endpoint: string;
    scopes: string[];
    constructor(config: {
        type_: AuthSchemeType;
        openIdConnectUrl: string;
        authorization_endpoint: string;
        token_endpoint: string;
        scopes: string[];
    });
}
export interface HttpCredentials {
    token?: string;
    username?: string;
    password?: string;
}
export interface HttpAuth {
    scheme: string;
    credentials: HttpCredentials;
}
export interface ServiceAccountCredential {
    type: string;
    project_id: string;
    private_key_id: string;
    private_key: string;
    client_email: string;
    client_id: string;
    auth_uri: string;
    token_uri: string;
    auth_provider_x509_cert_url: string;
    client_x509_cert_url: string;
    universe_domain: string;
}
export interface ServiceAccount {
    service_account_credential: ServiceAccountCredential;
    scopes: string[];
}
export declare const INTERNAL_AUTH_PREFIX = "__auth_";
/**
 * Convert a token to a scheme and credential
 */
export declare function tokenToSchemeCredential(tokenType: string, location: string, name: string, token?: string): [any, AuthCredential | null];
/**
 * Convert a service account config dict to a scheme and credential
 */
export declare function serviceAccountDictToSchemeCredential(config: Record<string, any>, scopes: string[]): [HTTPBearer, AuthCredential];
/**
 * Convert a ServiceAccount to a scheme and credential
 */
export declare function serviceAccountSchemeCredential(config: ServiceAccount): [HTTPBearer, AuthCredential];
/**
 * Convert an OpenID Connect config dict to a scheme and credential
 */
export declare function openidDictToSchemeCredential(configDict: Record<string, any>, scopes: string[], credentialDict: Record<string, any>): [OpenIdConnectWithConfig, AuthCredential];
/**
 * Fetch OpenID Connect configuration from a URL and convert to a scheme and credential
 */
export declare function openidUrlToSchemeCredential(openidUrl: string, scopes: string[], credentialDict: Record<string, any>): Promise<[OpenIdConnectWithConfig, AuthCredential]>;
/**
 * Convert an auth credential to a parameter and keyword args
 */
export declare function credentialToParam(authScheme: any, authCredential: AuthCredential | null): [ApiParameter | null, Record<string, any> | null];
/**
 * Convert a dictionary to an auth scheme
 */
export declare function dictToAuthScheme(data: Record<string, any>): any;
