import type { QuotaInfo } from '../lib/billing/types'; /** * Unified hook providing subscription, features, limits, and canDo() method * * This hook integrates RBAC permissions (from TeamContext), feature access (from Plan), * and quota enforcement (from Limits) into a single DX-friendly interface. * * FIX2: Refactored to avoid React hooks violations: * - hasFeature() now uses cached features from context (no hook calls) * - getQuota() returns sync cached data * - Added getQuotaAsync() for full quota info with current usage * * @example * ```tsx * const membership = useMembership() * * // Check subscription info * console.log(membership.plan.name) // 'Pro' * console.log(membership.subscription.status) // 'active' * * // Check feature access (sync, cached) * if (membership.hasFeature('advanced_analytics')) { * // Show analytics * } * * // Check quota limits (sync, cached) * const projectsLimit = membership.getQuota('projects') * console.log(projectsLimit.max, projectsLimit.resetPeriod) * * // Get full quota info with current usage (async) * const projectsQuota = await membership.getQuotaAsync('projects') * console.log(projectsQuota.current, projectsQuota.max) * * // Unified permission check (Permission + Feature + Quota) * const canCreateProject = await membership.canDo('projects.create') * if (canCreateProject.allowed) { * // Create project * } else { * toast.error(canCreateProject.reason) * } * ``` */ export declare function useMembership(): { plan: import("../lib/billing/types").Plan; subscription: import("../lib/billing/types").SubscriptionWithPlan; status: import("../lib/billing/types").SubscriptionStatus; isTrialing: boolean; isActive: boolean; isPastDue: boolean; isCanceled: boolean; isLoading: boolean; hasFeature: (featureSlug: string) => boolean; getQuota: (limitSlug: string) => { max: number; resetPeriod: string; } | null; getQuotaAsync: (limitSlug: string) => Promise; canDo: (action: string) => Promise<{ allowed: boolean; reason?: string; }>; refetch: () => void; }; //# sourceMappingURL=useMembership.d.ts.map