/** * Feature gating with optional free-trial counter. * * Emits `gate_blocked` on denial when an `emit` callback is provided. */ import type { Tier } from '../types.js'; import type { TierProvider } from './tier_provider.js'; import type { MessageLog } from '../session/message_log.js'; import type { Emit } from '../events/emit.js'; export interface AccessGateOptions { tierProvider: TierProvider; log?: MessageLog | null; allowedTiers?: Tier[]; freeMessageLimit?: number; emit?: Emit; } export type AccessReason = 'tier' | 'trial' | 'denied'; export interface AccessResult { allowed: boolean; tier: Tier; reason: AccessReason; remaining: number | null; } export declare class AccessGate { readonly tierProvider: TierProvider; readonly log: MessageLog | null; readonly allowedTiers: Tier[]; readonly freeMessageLimit: number; readonly emit: Emit | null; constructor({ tierProvider, log, allowedTiers, freeMessageLimit, emit }: AccessGateOptions); check(whatsapp: string): Promise; } //# sourceMappingURL=access_gate.d.ts.map