import type { HonoRequest } from 'hono';
import type { ISSOProvider, ISessionProvider, IUserProvider, User, Session, SSOCallbackResult, SSOLoginConfig } from '../auth/index.js';
import { MastraAuthProvider } from './auth.js';
export declare class CompositeAuth extends MastraAuthProvider implements ISSOProvider<User>, ISessionProvider<Session>, IUserProvider<User> {
    private providers;
    private authenticatedProviderByObject;
    private authenticatedProviderByPrimitive;
    constructor(providers: MastraAuthProvider[]);
    private findProvider;
    private rememberAuthenticatedProvider;
    private takeAuthenticatedProvider;
    private mapAuthenticatedUserToResourceId;
    /**
     * True if any provider is MastraCloudAuth (exempt from license requirement).
     */
    get isMastraCloudAuth(): boolean;
    /**
     * True if any provider is SimpleAuth (exempt from license requirement).
     */
    get isSimpleAuth(): boolean;
    authenticateToken(token: string, request: HonoRequest): Promise<unknown | null>;
    authorizeUser(user: unknown, request: HonoRequest): Promise<boolean>;
    /**
     * Forward cookie header to SSO provider for PKCE validation.
     * Called by auth handler before handleCallback().
     */
    setCallbackCookieHeader(cookieHeader: string | null): void;
    getLoginUrl(redirectUri: string, state: string): string;
    getLoginCookies(redirectUri: string, state: string): string[] | undefined;
    handleCallback(code: string, state: string): Promise<SSOCallbackResult<User>>;
    getLoginButtonConfig(): SSOLoginConfig;
    getLogoutUrl(redirectUri: string, request?: Request): Promise<string | null>;
    createSession(userId: string, metadata?: Record<string, unknown>): Promise<Session>;
    validateSession(sessionId: string): Promise<Session | null>;
    destroySession(sessionId: string): Promise<void>;
    refreshSession(sessionId: string): Promise<Session | null>;
    getSessionIdFromRequest(request: Request): string | null;
    getSessionHeaders(session: Session): Record<string, string>;
    getClearSessionHeaders(): Record<string, string>;
    getCurrentUser(request: Request): Promise<User | null>;
    getUser(userId: string): Promise<User | null>;
}
//# sourceMappingURL=composite-auth.d.ts.map