import { z } from "zod"; export declare const UserSchema: z.ZodObject<{ id: z.ZodString; email: z.ZodString; name: z.ZodString; role: z.ZodEnum<["user", "admin", "developer"]>; permissions: z.ZodArray; createdAt: z.ZodDate; lastLogin: z.ZodOptional; metadata: z.ZodOptional>; }, "strip", z.ZodTypeAny, { id: string; name: string; role: "user" | "admin" | "developer"; email: string; createdAt: Date; permissions: string[]; metadata?: Record | undefined; lastLogin?: Date | undefined; }, { id: string; name: string; role: "user" | "admin" | "developer"; email: string; createdAt: Date; permissions: string[]; metadata?: Record | undefined; lastLogin?: Date | undefined; }>; export type User = z.infer; export declare const TokenPayloadSchema: z.ZodObject<{ userId: z.ZodString; email: z.ZodString; role: z.ZodEnum<["user", "admin", "developer"]>; permissions: z.ZodArray; iat: z.ZodOptional; exp: z.ZodOptional; }, "strip", z.ZodTypeAny, { role: "user" | "admin" | "developer"; email: string; userId: string; permissions: string[]; iat?: number | undefined; exp?: number | undefined; }, { role: "user" | "admin" | "developer"; email: string; userId: string; permissions: string[]; iat?: number | undefined; exp?: number | undefined; }>; export type TokenPayload = z.infer; export interface AuthConfig { jwtSecret: string; jwtExpiresIn: string; refreshTokenExpiresIn: string; bcryptRounds: number; } export declare class AuthService { private config; private demoUsers; private refreshTokens; private revokedAccessTokens; constructor(config?: Partial); hashPassword(password: string): Promise; verifyPassword(password: string, hash: string): Promise; generateAccessToken(user: User): string; generateRefreshToken(userId: string): string; verifyToken(token: string): TokenPayload; decodeToken(token: string): TokenPayload | null; hasPermission(user: User | TokenPayload, permission: string): boolean; hasAnyPermission(user: User | TokenPayload, permissions: string[]): boolean; hasAllPermissions(user: User | TokenPayload, permissions: string[]): boolean; generateApiKey(): string; validateApiKey(apiKey: string): boolean; login(email: string, password: string): Promise<{ token: string; refreshToken: string; user: User; }>; register(email: string, password: string, name?: string): Promise<{ token: string; refreshToken: string; user: User; }>; refreshToken(refreshToken: string): Promise<{ token: string; }>; revokeToken(token: string): Promise; private assertDemoAuthEnabled; private createDemoUser; private issueSession; } export declare class AuthError extends Error { code: string; statusCode: number; constructor(message: string, code: string, statusCode?: number); } export declare class PermissionError extends AuthError { constructor(message?: string, permission?: string); } export declare const Permissions: { readonly AI: { readonly USE_OPENAI: "ai:use_openai"; readonly USE_VISION: "ai:use_vision"; readonly USE_EMBEDDINGS: "ai:use_embeddings"; readonly UNLIMITED_REQUESTS: "ai:unlimited_requests"; }; readonly COLLABORATION: { readonly CREATE_ROOM: "collab:create_room"; readonly JOIN_ROOM: "collab:join_room"; readonly EDIT_DOCUMENT: "collab:edit_document"; readonly DELETE_ROOM: "collab:delete_room"; }; readonly ADMIN: { readonly MANAGE_USERS: "admin:manage_users"; readonly VIEW_ANALYTICS: "admin:view_analytics"; readonly SYSTEM_CONFIG: "admin:system_config"; }; }; export type Permission = (typeof Permissions)[keyof typeof Permissions][keyof (typeof Permissions)[keyof typeof Permissions]]; //# sourceMappingURL=auth-service.d.ts.map