import { SortDirection, UserDto } from "./base"; import { PageMetadataDto, PaginationQueryDto } from "./base"; import { MembershipRole } from "./membership"; import { CommunityType, CommunityStatsDto } from "./common"; export declare enum InvitationStatus { PENDING = "PENDING", REQUEST = "REQUEST", ACCEPTED = "ACCEPTED", REJECTED = "REJECTED", REQUEST_ACCEPTED = "REQUEST_ACCEPTED", REQUEST_REJECTED = "REQUEST_REJECTED" } export declare class InvitedUserDto { userId: string; role: MembershipRole; } export declare class CreateInvitationDto { users: InvitedUserDto[]; message?: string; } export declare class UpdateInvitationStatusDto { status: InvitationStatus.ACCEPTED | InvitationStatus.REJECTED; } export declare class UpdateRequestStatusDto { status: InvitationStatus.REQUEST_ACCEPTED | InvitationStatus.REQUEST_REJECTED; } export type InvitationFields = "basic" | "community" | "stats"; export declare enum UserInvitationSortField { COMMUNITY_TITLE = "community_title", STATUS = "status", INVITATION_DATE = "invitation_date", ROLE = "role" } export declare class SearchInvitationDto extends PaginationQueryDto { status?: InvitationStatus; sentAfter?: Date; seeLater?: boolean; communityId?: number; communityType?: CommunityType; fields?: InvitationFields[]; sortBy?: UserInvitationSortField; sortDirection?: SortDirection; } export declare class CommunitySummaryDto { id: number; title: string; image?: string; colour?: string; type: CommunityType; creationDate: Date; welcomeNote?: string; schoolYearStart?: number; schoolYearEnd?: number; creator: UserDto; } export declare class InvitationResponseDto { id: number; invitationDate: Date; status: InvitationStatus; communityId: number; sentBy: UserDto; message?: string; receiver: UserDto; role: MembershipRole; community?: CommunitySummaryDto; communityStats?: CommunityStatsDto; seeLater?: boolean; } export declare class InvitationOrMemberDto extends InvitationResponseDto { joinDate?: Date; user: UserDto; lastVisitAnnouncementsDate?: Date; lastVisitResourcesDate?: Date; lastVisitWikiDate?: Date; lastVisitDiscussionsDate?: Date; lastVisit?: Date; invitationId?: number; memberId?: number; } export declare class InvitationStatsDto { total: number; accepted: number; pending: number; rejected: number; } export declare class SearchInvitationResponseDto { items: InvitationResponseDto[]; meta: PageMetadataDto; } export declare class SearchInvitationAndMembersResponseDto { items: InvitationOrMemberDto[]; meta: PageMetadataDto; } export declare class CountInvitationsQueryDto { sentAfter: string; } export declare class InvitationStatsQueryDto { } export declare enum InvitationSortField { STATUS = "status", LAST_VISIT = "lastVisit", ROLE = "currentRole", USER_NAME = "userName" } export declare class ListCommunityInvitationsQueryDto extends PaginationQueryDto { status?: InvitationStatus; searchTerm?: string; sortBy?: InvitationSortField; sortDirection?: SortDirection; fields?: InvitationFields[]; } export declare class DeleteInvitationsDto { invitationIds: number[]; } export declare class UpdateSeeLaterDto { seeLater: boolean; }