// Định nghĩa TypeScript cho @fas-platform/webauthn-sdk

export interface FaSSDKConfig {
  clientId: string;
  clientSecret?: string;  // Optional when useProxy is true
  apiBase?: string;
  useProxy?: boolean;     // Enable backend proxy mode
  timeout?: number;
}

export interface FaSUser {
  id: string;
  email: string;
  fullname?: string;
  projectId: string;
  isExternalUser: boolean;
  registrationCompleted: boolean;
  createdAt: string;
  updatedAt: string;
}

export interface FaSAuthResult {
  success: boolean;
  user: FaSUser;
  token: string;
}

export interface FaSError extends Error {
  code: string;
  originalError?: Error;
}

export interface BrowserSupport {
  webauthn: boolean;
  conditionalUI: boolean;
  residentKeys: boolean;
  userVerification: boolean;
  loading?: boolean;
}

declare class FaSSDK {
  constructor(config: FaSSDKConfig);
  
  registerPasskey(email: string, fullname?: string): Promise<FaSAuthResult>;
  authenticatePasskey(email: string): Promise<FaSAuthResult>;
  passwordlessLogin(): Promise<FaSAuthResult>;
  
  getAuthToken(): string | null;
  setAuthToken(token: string): void;
  logout(): void;
  isAuthenticated(): boolean;
  
  static isWebAuthnSupported(): boolean;
  static getBrowserSupport(): BrowserSupport;
}

export default FaSSDK; 