/**
 * Frontend Auth Configuration
 */
export interface AuthConfig {
  pbUrl: string;              // PocketBase URL (required)
  collection?: string;
  provider?: string;
  loginContainerId?: string;
  userDisplayNameId?: string;
  userEmailId?: string;
  loginBtnId?: string;
  loginErrorId?: string;
}

/**
 * Frontend configuration provided by backend
 */
export interface FrontendConfig {
  pbUrl: string;
  provider?: string;
  collection?: string;
}

/**
 * Backend Auth Configuration
 */
export interface BackendAuthConfig {
  clientId?: string;
  tenantId?: string;
  clientSecret?: string;
}

/**
 * Auth state object
 */
export interface AuthState {
  isAuthenticated: boolean;
  user: {
    id: string;
    name: string;
    email: string;
  } | null;
  token: string | null;
}

/**
 * Graph token cache object
 */
export interface GraphTokenCache {
  token: string;
  expiresOn: number;
}

/**
 * Auth event callbacks
 */
export interface AuthCallbacks {
  onAuthSuccess?: (state: AuthState) => void;
  onAuthFailure?: (error: any) => void;
  onTokenUpdate?: (state: AuthState) => void;
  onUiUpdate?: (state: AuthState) => void;
}
