/** * @fileoverview Strapi authenticator processor implementation * Handles Strapi-specific authentication flows */ import type { AuthResponse, CustomAuthConfig } from '../../types'; import type { AuthenticatorProcessor } from '../types'; /** * Strapi user structure */ export interface StrapiUser { id: number; documentId: string; username: string; email: string; provider: string; confirmed: boolean; blocked: boolean; createdAt: string; updatedAt: string; publishedAt: string; firstName: string; lastName: string; company: string; isFirstTimeLogin: boolean; hasCompletedOnboarding: boolean; hasSkippedOnboarding: boolean; onBoardingReminderTime: string; loginCount: number; lastLoginAt: string; role: { id: number; documentId: string; name: string; description: string; type: string; createdAt: string; updatedAt: string; publishedAt: string; }; } /** * Strapi authentication response structure */ export interface StrapiAuthResponse { jwt: string; user: StrapiUser; } /** * Transforms a valid Strapi response into our application's auth response format * @param strapiResponse - Validated Strapi auth response * @returns Transformed auth response */ export declare function transformStrapiResponse(strapiResponse: StrapiAuthResponse): AuthResponse; /** * Validates if the response is a valid Strapi authentication response * @param response - API response to validate * @returns Boolean indicating if response is a valid Strapi auth response */ export declare function isStrapiAuthResponse(response: unknown): response is StrapiAuthResponse; /** * Strapi authenticator processor * Handles authentication process specific to Strapi backend * @template T - Type extending CustomAuthConfig */ export declare class StrapiAuthenticatorProcessor implements AuthenticatorProcessor { /** * Process login credentials using the Strapi authentication flow * @param credentials - User login credentials * @param rememberMe - Whether to remember the user session * @param login - The login function from auth context * @returns Promise resolving to authentication response */ processLogin(credentials: Record, rememberMe: boolean, login: (credentials: T['Credentials'], rememberMe: boolean) => Promise>): Promise>; }