import { App, ObjectPlugin } from 'vue'; import { AccountInfo, User, NewUser, UpdatePasswordForm, UpdateAccountRequest, AuthEventMap, SSOProvider, SSOInitiateRequest, SSOCallbackRequest, SSOLinkRequest, TenantInfo, CreateTenantRequest, UpdateTenantRequest, AddMemberRequest, UpdateMemberRequest, CreateInvitationRequest, AcceptInvitationRequest, OTPSendRequest, OTPVerifyRequest, SMSSendRequest, SMSVerifyRequest, EmailTokenSendRequest, EmailTokenVerifyRequest, GenerateTokenRequest, GenerateTokenResponse, AuthenticationResponse, AuthState } from './types'; import { RedirectConfig, NormalizedRedirectConfig } from './types/redirect'; interface InitParams { baseURL: string; /** * Redirect configuration for authentication flows * @see RedirectConfig */ redirect?: RedirectConfig; /** * Enable multi-tenancy support. When true, tenants are loaded after auth check. * @default false */ tenancy?: boolean; } /** * Auth instance returned by createAuth * Implements ObjectPlugin for Vue 3.5+ compatibility */ export interface AuthInstance extends ObjectPlugin<[]> { on: (event: K, handler: AuthEventMap[K]) => void; off: (event: K, handler: AuthEventMap[K]) => void; removeAllListeners: (event?: K) => void; use: (dependency: any, options?: { guard?: boolean; }) => AuthInstance; routerGuard: () => (to: any, from: any) => Promise; install: (app: App) => void; } /** * Get the current redirect configuration * Used internally by router guard */ export declare function getRedirectConfig(): NormalizedRedirectConfig; export declare function createAuth(params: InitParams): AuthInstance; export declare function useAuth(): { user: import('vue').ComputedRef; accountInfo: import('vue').Ref<{ id: string; account_type: string; display_name: string; is_active: boolean; is_verified: boolean; last_login?: string | undefined; roles: string[]; authentication_methods: { id: string; type: string; identifier?: string | undefined; is_verified: boolean; last_used?: string | undefined; use_count: number; provider?: string | undefined; provider_user_id?: string | undefined; }[]; person?: { id: string; name: string; first_name: string; last_name: string; email?: string | undefined; phone_number?: string | undefined; tags: string[]; } | undefined; } | null, AccountInfo | { id: string; account_type: string; display_name: string; is_active: boolean; is_verified: boolean; last_login?: string | undefined; roles: string[]; authentication_methods: { id: string; type: string; identifier?: string | undefined; is_verified: boolean; last_used?: string | undefined; use_count: number; provider?: string | undefined; provider_user_id?: string | undefined; }[]; person?: { id: string; name: string; first_name: string; last_name: string; email?: string | undefined; phone_number?: string | undefined; tags: string[]; } | undefined; } | null>; sso: import('./sso').SSOObject; tenants: import('vue').Ref<{ id: string; name: string; slug: string; parent_id: string | null; settings: Record | null; status: import('./types').TenantStatus; suspended_at: string | null; suspended_reason: string | null; created_at: string; updated_at: string; }[], TenantInfo[] | { id: string; name: string; slug: string; parent_id: string | null; settings: Record | null; status: import('./types').TenantStatus; suspended_at: string | null; suspended_reason: string | null; created_at: string; updated_at: string; }[]>; currentTenant: import('vue').Ref<{ id: string; name: string; slug: string; parent_id: string | null; settings: Record | null; status: import('./types').TenantStatus; suspended_at: string | null; suspended_reason: string | null; created_at: string; updated_at: string; } | null, TenantInfo | { id: string; name: string; slug: string; parent_id: string | null; settings: Record | null; status: import('./types').TenantStatus; suspended_at: string | null; suspended_reason: string | null; created_at: string; updated_at: string; } | null>; getFullName: () => string; getIsLoggedIn: () => boolean; getEmail: () => string; getRoles: () => string[]; getAccountType: () => string; isPersonAccount: () => boolean; getTenants: () => { id: string; name: string; slug: string; parent_id: string | null; settings: Record | null; status: import('./types').TenantStatus; suspended_at: string | null; suspended_reason: string | null; created_at: string; updated_at: string; }[]; getCurrentTenant: () => { id: string; name: string; slug: string; parent_id: string | null; settings: Record | null; status: import('./types').TenantStatus; suspended_at: string | null; suspended_reason: string | null; created_at: string; updated_at: string; } | null; login: (credentials: { email: string; password: string; }) => Promise; logout: () => Promise; signup: (newUser: NewUser) => Promise; checkAuth: () => Promise; refreshSession: () => Promise; sendSMS: (data: SMSSendRequest) => Promise; verifySMS: (data: SMSVerifyRequest) => Promise; sendOTP: (data: OTPSendRequest) => Promise; verifyOTP: (data: OTPVerifyRequest) => Promise; sendEmailToken: (data: EmailTokenSendRequest) => Promise; verifyEmailToken: (data: EmailTokenVerifyRequest) => Promise; generateLoginToken: (data?: GenerateTokenRequest) => Promise; loginWithToken: (token: string) => Promise; initiateSSO: (provider: SSOProvider, params: SSOInitiateRequest) => Promise; loginWithSSO: (provider: SSOProvider, params: SSOCallbackRequest) => Promise; linkSSOProvider: (provider: SSOProvider, params: SSOLinkRequest) => Promise; unlinkSSOProvider: (provider: SSOProvider) => Promise; updateProfile: (updates: UpdateAccountRequest) => Promise; deleteCurrentUser: () => Promise; changePassword: (form: UpdatePasswordForm) => Promise; forgotPassword: (email: string) => Promise; verifyResetToken: (token: string) => Promise; resetPassword: (token: string, newPassword: string) => Promise; sendVerification: (email?: string) => Promise; verifyEmail: (token: string) => Promise; getSessions: () => Promise; revokeSession: (sessionToken: string) => Promise; revokeAllSessions: () => Promise; loadTenants: () => Promise; setTenant: (tenantId: string | null) => void; switchTenant: (tenantId: string) => void; createTenant: (data: CreateTenantRequest) => Promise; updateTenant: (tenantId: string, data: UpdateTenantRequest) => Promise; deleteTenant: (tenantId: string) => Promise; getTenantMembers: (tenantId: string, status?: string) => Promise; addTenantMember: (tenantId: string, member: AddMemberRequest) => Promise; updateTenantMember: (tenantId: string, identityId: string, updates: UpdateMemberRequest) => Promise; activateTenantMember: (tenantId: string, identityId: string) => Promise; removeTenantMember: (tenantId: string, identityId: string) => Promise; getTenantRoles: () => Promise; createInvitation: (data: CreateInvitationRequest) => Promise; getInvitation: (token: string) => Promise<{ email: string; first_name?: string | null; last_name?: string | null; }>; acceptInvitation: (token: string, data?: AcceptInvitationRequest) => Promise; registerAxios: (instance: any) => void; }; export {};