// Types
export * from './tenant.types.js';

// Services
export { TenantContextService } from './tenant-context.service.js';

// Middleware
export { TenantContextMiddleware, TENANT_FINDER, createTenantMiddleware } from './tenant-context.middleware.js';
export type { ITenantFinder, TenantMiddlewareOptions } from './tenant-context.middleware.js';

// Tenant Finder (Simple implementation)
export { SimpleTenantFinder } from './simple-tenant-finder.js';

// Guards
export { TenantGuard } from './tenant.guard.js';

// Decorators
export {
  TenantId,
  Tenant,
  RequireFeatures,
  RequirePlans,
  SkipTenantCheck,
  REQUIRED_FEATURES_KEY,
  REQUIRED_PLANS_KEY,
  SKIP_TENANT_CHECK_KEY,
} from './tenant.decorator.js';

// Base Repository
export { BaseTenantRepository } from './base-tenant.repository.js';
export type { TenantAwareEntity } from './base-tenant.repository.js';

// Module
export { TenantContextModule } from './tenant-context.module.js';
export type {
  TenantModuleOptions,
  TenantModuleAsyncOptions,
  TenantModuleAsyncOptionsWithFinder,
} from './tenant-context.module.js';
