import { SmrtObject, SmrtObjectOptions } from '@happyvertical/smrt-core'; import { OverrideEffect } from '../types/index.js'; /** * Constructor options for {@link MembershipOverride}. */ export interface MembershipOverrideOptions extends SmrtObjectOptions { membershipId?: string; permissionId?: string; effect?: OverrideEffect; } /** * MembershipOverride allows granting or denying specific permissions * to a user beyond what their role and groups provide. * * Overrides are applied after role and group permissions are resolved. * DENY overrides take precedence over GRANT overrides. * * @example * ```typescript * // Grant a specific permission to a user * const override = await membershipOverrides.create({ * membershipId: membership.id, * permissionId: specialPermission.id, * effect: OverrideEffect.GRANT * }); * * // Deny a permission (even if role grants it) * const deny = await membershipOverrides.create({ * membershipId: membership.id, * permissionId: dangerousPermission.id, * effect: OverrideEffect.DENY * }); * ``` */ export declare class MembershipOverride extends SmrtObject { /** * Foreign key to Membership */ membershipId?: string; /** * Foreign key to Permission */ permissionId?: string; /** * Effect of the override: grant or deny */ effect: OverrideEffect; constructor(options?: MembershipOverrideOptions); /** * Check if this override grants the permission */ isGrant(): boolean; /** * Check if this override denies the permission */ isDeny(): boolean; } //# sourceMappingURL=MembershipOverride.d.ts.map