import { AuthModuleOptions } from '../auth.module.js';
import { IOAuthStateStore } from '../protocols/oauth-state-store.js';
import { IUserContext } from '../protocols/user-context.js';
import { ProviderStrategyRegistry } from '../protocols/provider-strategy.js';
import { IConnectionGrantSink } from '../protocols/connection-store.js';
import '@nestjs/common';
import '../../../base-classes/tenant-context.js';
import '../runtime/oauth2-refresh.strategy.js';
import '../protocols/auth-strategy.js';

/**
 * Minimal response surface used by the controller — typed loosely so we
 * don't pull a hard dep on `express` or `fastify`. Both popular HTTP
 * adapters expose `redirect(status, url)`.
 */
interface RedirectingResponse {
    redirect(statusCode: number, url: string): unknown;
}
declare class AuthController {
    private readonly registry;
    private readonly userContext;
    private readonly stateStore;
    private readonly grantSink;
    private readonly options;
    constructor(registry: ProviderStrategyRegistry, userContext: IUserContext, stateStore: IOAuthStateStore, grantSink: IConnectionGrantSink, options: AuthModuleOptions);
    connect(slug: string, redirect: string | undefined, req: unknown, res: RedirectingResponse): Promise<unknown>;
    callback(slug: string, code: string | undefined, state: string | undefined, res: RedirectingResponse): Promise<unknown>;
    private requireStrategy;
    private redirectUriFor;
}

export { AuthController };
