import { Config } from '@backstage/config';
import { Request } from 'express';
import { ProfileTransform } from '../types';
/** @public */
export interface ProxyAuthenticator<TContext, TResult, TProviderInfo = undefined> {
    defaultProfileTransform: ProfileTransform<TResult>;
    initialize(ctx: {
        config: Config;
    }): TContext;
    authenticate(options: {
        req: Request;
    }, ctx: TContext): Promise<{
        result: TResult;
        providerInfo?: TProviderInfo;
    }>;
}
/** @public */
export declare function createProxyAuthenticator<TContext, TResult, TProviderInfo>(authenticator: ProxyAuthenticator<TContext, TResult, TProviderInfo>): ProxyAuthenticator<TContext, TResult, TProviderInfo>;
