export interface OidcRuntimeConfig {
    issuerUrl: string;
    clientId: string;
    clientSecret?: string;
    redirectUri: string;
    scopes: string[];
}
export interface EnterpriseOidcUserInfo {
    issuer: string;
    subject: string;
    email?: string;
    displayName?: string;
    claims: Record<string, unknown>;
}
export declare const OIDC_ENV: {
    readonly issuerUrl: "SMARTPERFETTO_OIDC_ISSUER_URL";
    readonly clientId: "SMARTPERFETTO_OIDC_CLIENT_ID";
    readonly clientSecret: "SMARTPERFETTO_OIDC_CLIENT_SECRET";
    readonly redirectUri: "SMARTPERFETTO_OIDC_REDIRECT_URI";
    readonly scopes: "SMARTPERFETTO_OIDC_SCOPES";
};
export declare function resolveOidcRuntimeConfig(env?: NodeJS.ProcessEnv): OidcRuntimeConfig | null;
export declare class EnterpriseOidcClient {
    private readonly config;
    private readonly fetchImpl;
    private discovery;
    constructor(config: OidcRuntimeConfig, fetchImpl?: typeof fetch);
    static fromEnv(env?: NodeJS.ProcessEnv): EnterpriseOidcClient | null;
    buildAuthorizationUrl(params: {
        state: string;
        nonce: string;
    }): Promise<string>;
    exchangeCodeForUserInfo(code: string): Promise<EnterpriseOidcUserInfo>;
    private getDiscovery;
}
//# sourceMappingURL=enterpriseOidcClient.d.ts.map