UNPKG

@calljmp/cli

Version:
254 lines 8.57 kB
export declare enum OrganizationMembershipStatus { Active = "active", Pending = "pending", Suspended = "suspended" } export declare enum OrganizationInvitationStatus { Pending = "pending", Accepted = "accepted", Revoked = "revoked" } export interface OrganizationPermissions { projects?: { create?: boolean; read?: boolean; update?: boolean; delete?: boolean; transfer?: boolean; }; members?: { invite?: boolean; remove?: boolean; updateRoles?: boolean; view?: boolean; }; organization?: { view?: boolean; update?: boolean; delete?: boolean; }; billing?: { view?: boolean; manage?: boolean; }; roles?: { create?: boolean; update?: boolean; delete?: boolean; }; } export interface OrganizationSettings { [key: string]: unknown; } export interface Organization { id: number; name: string; slug: string; description: string | null; avatarUrl: string | null; settings: OrganizationSettings | null; ownerId: number; createdAt: Date; updatedAt: Date; } export interface OrganizationRole { id: number; organizationId: number; name: string; description: string | null; permissions: OrganizationPermissions; createdAt: Date; updatedAt: Date; } export type OrganizationPredefinedRole = keyof typeof OrganizationRoleTemplates; export declare const OrganizationRoleTemplates: { readonly admin: { readonly name: "Admin"; readonly description: "Full access to organization, projects, and team management"; readonly permissions: { readonly projects: { readonly create: true; readonly read: true; readonly update: true; readonly delete: true; readonly transfer: true; }; readonly members: { readonly invite: true; readonly view: true; readonly updateRoles: true; readonly remove: true; }; readonly organization: { readonly view: true; readonly update: true; readonly delete: true; }; readonly billing: { readonly view: true; readonly manage: true; }; readonly roles: { readonly create: true; readonly update: true; readonly delete: true; }; }; }; readonly developer: { readonly name: "Developer"; readonly description: "Can create and manage projects, collaborate with team members"; readonly permissions: { readonly projects: { readonly create: true; readonly read: true; readonly update: true; readonly delete: true; readonly transfer: false; }; readonly members: { readonly invite: false; readonly view: true; readonly updateRoles: false; readonly remove: false; }; readonly organization: { readonly view: true; readonly update: false; readonly delete: false; }; readonly billing: { readonly view: false; readonly manage: false; }; readonly roles: { readonly create: false; readonly update: false; readonly delete: false; }; }; }; readonly viewer: { readonly name: "Viewer"; readonly description: "Read-only access to projects and organization. Cannot make changes."; readonly permissions: { readonly projects: { readonly create: false; readonly read: true; readonly update: false; readonly delete: false; readonly transfer: false; }; readonly members: { readonly invite: false; readonly view: true; readonly updateRoles: false; readonly remove: false; }; readonly organization: { readonly view: true; readonly update: false; readonly delete: false; }; readonly billing: { readonly view: false; readonly manage: false; }; readonly roles: { readonly create: false; readonly update: false; readonly delete: false; }; }; }; }; export interface OrganizationMembership { id: number; organizationId: number; accountId: number; roleId: number; status: OrganizationMembershipStatus; invitedBy: number | null; invitedAt: Date | null; createdAt: Date; updatedAt: Date; } export interface OrganizationInvitation { id: number; organizationId: number; email: string; roleId: number; token: string; invitedBy: number; status: OrganizationInvitationStatus; expiresAt: Date; acceptedAt: Date | null; createdAt: Date; updatedAt: Date; } export interface OrganizationMember { createdAt: Date; updatedAt: Date; status: OrganizationMembershipStatus; accountId: number; accountEmail: string; accountName: string; accountAvatarUrl: string | null; roleId: number; roleName: string; roleDescription: string | null; rolePermissions: OrganizationPermissions; } export interface OrganizationOwner { createdAt: Date; updatedAt: Date; accountId: number; accountName: string; accountEmail: string; accountAvatarUrl: string | null; } export interface OrganizationInvitedMember { id: number; createdAt: Date; updatedAt: Date; expiresAt: Date; acceptedAt: Date | null; inviteeEmail: string; inviteeId?: number; inviteeName?: string; inviteeAvatarUrl?: string | null; status: OrganizationInvitationStatus; roleId: number; roleName: string; roleDescription: string | null; rolePermissions: OrganizationPermissions; inviterId: number; inviterName: string; inviterEmail: string; inviterAvatarUrl: string | null; organizationId: number; } export declare function jsonToOrganizationInvitedMember(json: Record<string, any>): OrganizationInvitedMember; export declare function organizationInvitedMemberToJson(member: OrganizationInvitedMember): Record<string, any>; export declare function jsonToOrganizationOwner(json: Record<string, any>): OrganizationOwner; export declare function organizationOwnerToJson(owner: OrganizationOwner): Record<string, any>; export declare function jsonToOrganizationMember(json: Record<string, any>): OrganizationMember; export declare function organizationMemberToJson(member: OrganizationMember): Record<string, any>; export declare function jsonToOrganization(json: Record<string, any>): Organization; export declare function organizationToJson(organization: Organization): Record<string, any>; export declare function jsonToOrganizationRole(json: Record<string, any>): OrganizationRole; export declare function organizationRoleToJson(role: OrganizationRole): Record<string, any>; export declare function jsonToOrganizationMembership(json: Record<string, any>): OrganizationMembership; export declare function organizationMembershipToJson(membership: OrganizationMembership): Record<string, any>; export declare function jsonToOrganizationInvitation(json: Record<string, any>): OrganizationInvitation; export declare function organizationInvitationToJson(invitation: OrganizationInvitation): Record<string, any>; type PermissionKeys<T> = { [K in keyof T]: T[K] extends Record<string, any> ? { [P in keyof T[K]]: `${string & K}.${string & P}`; }[keyof T[K]] : never; }[keyof T]; export type OrganizationPermissionKey = PermissionKeys<Required<OrganizationPermissions>>; export declare function hasOrganizationPermission(role: OrganizationRole | undefined, permission: OrganizationPermissionKey): boolean; export declare function organizationPermissionLevel(permissions: OrganizationPermissions): 'none' | 'read' | 'limited' | 'full'; export {}; //# sourceMappingURL=organizations.d.ts.map