import { type LicenseInfo } from './featureFlags'; export interface FeatureCheck { feature: string; allowed: boolean; reason?: string; quota?: { current: number; limit: number; remaining: number; }; upgrade?: { required: boolean; tier: string; path: string; }; } export interface FeatureUsage { feature: string; quantity: number; timestamp: number; context?: Record; } export interface FeatureGatingDependencies { licenseKey?: string; authToken?: string; userId?: string; featureServiceUrl?: string; cacheTTL?: number; fetch: typeof fetch; licenseInfo?: LicenseInfo; } export declare const createFeatureGating: (dependencies: FeatureGatingDependencies) => { checkFeature: (feature: string, quantity?: number, context?: Record) => Promise; recordUsage: (feature: string, quantity?: number, context?: Record) => Promise; requireFeature: (feature: string, quantity?: number, context?: Record) => Promise; getFeatureQuota: (feature: string) => Promise<{ current: number; limit: number; remaining: number; } | null>; getUpgradePath: (feature: string) => Promise<{ required: boolean; tier: string; path: string; } | null>; clearCache: () => void; isFeatureEnabled: (feature: string) => Promise; getAvailableFeatures: () => Promise; }; export declare const getFeatureGating: () => ReturnType; export declare const withFeatureCheck: (feature: string, quantity?: number) => (_argv: any, next: () => Promise) => Promise; export declare const requireFeature: (feature: string, quantity?: number) => (_target: any, _propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;