import { TAgent } from '@veramo/core';
import express, { Express, Router } from 'express';
import { BaseClient, ClientMetadata, ClientOptions, Issuer } from 'openid-client';
import { ExpressSupport, GenericAuthArgs, ISingleEndpointOpts } from './types';
export declare function oidcDiscoverIssuer(opts?: {
    issuerUrl?: string;
}): Promise<{
    issuer: Issuer<BaseClient>;
    issuerUrl: string;
}>;
export declare function oidcGetClient(issuer: Issuer<BaseClient>, metadata: ClientMetadata, opts?: {
    jwks?: {
        keys: JsonWebKey[];
    };
    options?: ClientOptions;
}): Promise<BaseClient>;
export declare function getLoginEndpoint(router: Router, opts?: ISingleEndpointOpts & {
    redirectUrl?: string;
}): void;
export declare function getLoginCallbackEndpoint(router: Router, opts?: ISingleEndpointOpts): void;
export declare function getLogoutEndpoint(router: Router, client: BaseClient, opts?: ISingleEndpointOpts): void;
export declare function getLogoutCallbackEndpoint(router: Router, opts?: ISingleEndpointOpts): void;
export declare function getIdTokenEndpoint(router: Router, client: BaseClient, opts: ISingleEndpointOpts): void;
export declare function getAuthenticatedUserEndpoint(router: Router, opts?: ISingleEndpointOpts): void;
export interface IAuthenticationOpts {
    enabledFeatures?: AuthenticationApiFeatures;
    endpointOpts?: IAuthenticationEndpointOpts;
}
export interface IAuthenticationEndpointOpts {
    basePath?: string;
    globalAuth?: GenericAuthArgs;
    getAuthenticatedUser?: ISingleEndpointOpts;
    getLogin?: ISingleEndpointOpts;
    getLogout?: ISingleEndpointOpts;
    getIdToken?: ISingleEndpointOpts;
}
export type AuthenticationApiFeatures = 'login' | 'logout' | 'id-token' | 'authenticated-user';
export declare class OpenIDConnectAuthApi {
    get router(): express.Router;
    private readonly _express;
    private readonly _agent?;
    private readonly _opts?;
    private readonly _router;
    constructor(args: {
        agent?: TAgent<any>;
        expressSupport: ExpressSupport;
        client: BaseClient;
        opts: IAuthenticationOpts;
    });
    get agent(): TAgent<any> | undefined;
    get opts(): IAuthenticationOpts | undefined;
    get express(): Express;
}
//# sourceMappingURL=openid-connect-rp.d.ts.map