/** * SERV Local Development Mode * * Zero external dependencies - everything runs in-memory. * Perfect for local testing before deploying to Cloudflare. */ import type { Tenant, User, Membership, Session } from './types/index.js'; import { MemorySessionStore } from './session/store.js'; import { MemoryTenantStore } from './middleware/tenant.js'; import { MemoryElicitationStore, MemoryGrantStore, OAuthProviderRegistry, OAuthFlowHandler } from './auth/oauth.js'; import { LocalTokenVault } from './vault/token-vault.js'; import { JwtService } from './auth/jwt.js'; import { TenantResolver } from './middleware/tenant.js'; import { AuthMiddleware } from './middleware/auth.js'; export declare class LocalUserStore { private users; private emailIndex; findById(id: string): Promise; findByEmail(email: string): Promise; create(data: Omit): Promise; add(user: User): void; } export declare class LocalMembershipStore { private memberships; private key; find(tenantId: string, userId: string): Promise; findByUser(userId: string): Promise; create(data: Omit): Promise; add(membership: Membership): void; } export interface LocalServConfig { /** Port to run on (default: 3000) */ port?: number; /** Base URL for local development */ baseUrl?: string; /** Enable debug logging */ debug?: boolean; } export declare class LocalServ { readonly port: number; readonly baseUrl: string; readonly debug: boolean; readonly sessions: MemorySessionStore; readonly tenants: MemoryTenantStore; readonly users: LocalUserStore; readonly memberships: LocalMembershipStore; readonly elicitations: MemoryElicitationStore; readonly grants: MemoryGrantStore; readonly vault: LocalTokenVault; readonly jwt: JwtService; readonly tenantResolver: TenantResolver; readonly auth: AuthMiddleware; readonly oauthProviders: OAuthProviderRegistry; readonly oauthFlow: OAuthFlowHandler; private readonly secrets; constructor(config?: LocalServConfig); /** * Create a tenant for local testing */ createTenant(options: { name: string; slug: string; plan?: 'free' | 'pro' | 'enterprise'; }): Tenant; /** * Create a user for local testing */ createUser(options: { email: string; verified?: boolean; }): User; /** * Add a user to a tenant */ addMembership(options: { tenant: Tenant; user: User; role?: 'owner' | 'admin' | 'member' | 'viewer'; }): Membership; /** * Register an OAuth provider for testing */ registerOAuthProvider(providerId: string, clientId: string, clientSecret: string): void; /** * Create a session for a user in a tenant */ createSession(tenant: Tenant, user?: User): Promise<{ session: Session; token: string; }>; /** * Handle an HTTP request (for use with Node.js http server) */ handleRequest(method: string, url: string, headers: Record, body?: string): Promise<{ status: number; headers: Record; body: string; }>; private resolveTenant; private notFound; private badRequest; private log; shutdown(): Promise; } /** * Create a LocalServ instance with a default tenant and user */ export declare function createLocalServ(config?: LocalServConfig): { serv: LocalServ; tenant: Tenant; user: User; membership: Membership; }; /** * Quick session token for testing */ export declare function getTestToken(serv: LocalServ, tenant: Tenant, user?: User): Promise; //# sourceMappingURL=local.d.ts.map