/** Generic paginated result wrapper. */ interface PaginatedResult { data: T[]; meta: { limit?: number; nextCursor?: string | null; }; } /** Represents an access group. */ interface AccessGroup { id: string; sequenceId: number; name: string; description: string | null; createdAt: string; updatedAt: string; } /** Represents an access package group relation. */ interface AccessPackageGroup { id: string; sequenceId: number; accessPackageId: string; groupId: string; createdAt: string; updatedAt: string; group: AccessGroup; } /** Represents an access package. */ interface AccessPackage { id: string; sequenceId: number; name: string; description: string; createdAt: string; updatedAt: string; accessPackageGroups?: AccessPackageGroup[]; } /** Represents a company access package item. */ interface CompanyAccessPackageItem { id: string; sequenceId: number; companyId: string; accessPackageId: string; createdAt: string; updatedAt: string; accessPackage?: AccessPackage; accessPackageGroups?: AccessPackageGroup[]; } /** Represents a company resource. */ interface CompanyResource { id: string; sequenceId: number; name: string; description: string | null; createdAt: string; updatedAt: string; } /** Parameters for fetching access packages. */ interface GetAccessPackagesParams { id?: string; name?: string; include?: Array<'resources' | 'groups'>; limit?: number; sortBy?: 'createdAt' | 'name' | 'sequenceId'; sortOrder?: 'ASC' | 'DESC'; cursor?: string; } /** Parameters for fetching company access packages. */ interface GetCompanyAccessPackagesParams { id?: string; companyId?: string; accessPackageId?: string; include?: Array<'accessPackages' | 'groups' | 'resources'>; limit?: number; sortBy?: 'createdAt' | 'name'; sortOrder?: 'ASC' | 'DESC'; cursor?: string; } /** Payload for creating a company access package. */ interface CreateCompanyAccessPackagePayload { companyId: string; accessPackageId: string; } /** Payload for updating a company access package. */ interface UpdateCompanyAccessPackagePayload { accessPackageId: string; } /** Parameters for fetching company resources. */ interface GetCompanyResourcesParams { companyId: string; resourceId?: string; resourceName?: string; attributes?: Array<'id' | 'name' | 'sequenceId' | 'description' | 'createdAt' | 'updatedAt'>; } export type { AccessGroup, AccessPackage, AccessPackageGroup, CompanyAccessPackageItem, CompanyResource, CreateCompanyAccessPackagePayload, GetAccessPackagesParams, GetCompanyAccessPackagesParams, GetCompanyResourcesParams, PaginatedResult, UpdateCompanyAccessPackagePayload };