import { SmrtObject, SmrtObjectOptions } from '@happyvertical/smrt-core'; import { Membership as MembershipContract } from '@happyvertical/smrt-types'; import { MembershipStatus } from '../types/index.js'; /** * Constructor options for {@link Membership}. */ export interface MembershipOptions extends SmrtObjectOptions { userId?: string; tenantId?: string; roleId?: string; status?: MembershipStatus; } /** * Membership represents a user's membership in a tenant with an assigned role. * * A user can have only one membership per tenant (UNIQUE userId + tenantId). * The role determines the base permissions for the user in that tenant. * * @example * ```typescript * const membership = await memberships.create({ * userId: user.id, * tenantId: tenant.id, * roleId: role.id, * status: MembershipStatus.ACTIVE * }); * await membership.save(); * ``` */ export declare class Membership extends SmrtObject implements MembershipContract { /** * Foreign key to User */ userId?: string; /** * Foreign key to Tenant */ tenantId?: string; /** * Foreign key to Role - determines base permissions */ roleId?: string; /** * Membership status */ status: MembershipStatus; constructor(options?: MembershipOptions); /** * Check if membership is active */ isActive(): boolean; /** * Check if membership is pending (invitation not yet accepted) */ isPending(): boolean; } //# sourceMappingURL=Membership.d.ts.map