import type { Identifier, ISODateTime, ObjectEither, ObjectPrettify, ObjectPrettifyDeep } from "typeforge"; type GroupInfoData = { path: `groups/${GroupId}`; createTime: TemporalType; updateTime: TemporalType; id: GroupId; displayName: string; description: string; owner: `users/${Identifier}`; memberCount: number; publicEntryAllowed: boolean; locked: boolean; verified: boolean; }; export type RawGroupInfoData = GroupInfoData; export type PrettifiedGroupInfoData = GroupInfoData; type GroupJoinRequestData = ObjectPrettify<{ path: `groups/${GroupId}/join-requests/${Identifier}`; createTime: TemporalType; user: `users/${Identifier}`; }>; export type RawGroupJoinRequestsData = ObjectPrettifyDeep<{ groupJoinRequests: GroupJoinRequestData[]; nextPageToken: string; }>; export type PrettifiedGroupJoinRequestsData = GroupJoinRequestData[]; export type GroupMembers_Filter = ObjectEither<{ userId: Identifier; }, { roleId: Identifier; }>; export type GroupMembers_WildcardFilter = ObjectPrettify<{ userIds: Identifier[]; }>; type GroupMember = ObjectPrettify<{ path: `groups/${GroupId extends "-" ? Identifier : GroupId}/memberships/${string}`; createTime: TemporalType; updateTime: TemporalType; user: `users/${UserId}`; role: `groups/${GroupId extends "-" ? Identifier : GroupId}/roles/${RoleId}`; }>; export type RawGroupMembersData = ObjectPrettify<{ groupMemberships: GroupMember[]; nextPageToken: string; }>; export type PrettifiedGroupMembersData = GroupMember[]; export type GroupRole = ObjectPrettify<{ path: `groups/${GroupId}/roles/${RoleId}`; createTime: TemporalType; updateTime: TemporalType; id: RoleId; displayName: string; description: string; rank: number; memberCount?: number; permissions?: { viewWallPosts: boolean; createWallPosts: boolean; deleteWallPosts: boolean; viewGroupShout: boolean; createGroupShout: boolean; changeRank: boolean; acceptRequests: boolean; exileMembers: boolean; manageRelationships: boolean; viewAuditLog: boolean; spendGroupFunds: boolean; advertiseGroup: boolean; createAvatarItems: boolean; manageAvatarItems: boolean; manageGroupUniverses: boolean; viewUniverseAnalytics: boolean; createApiKeys: boolean; manageApiKeys: boolean; }; }>; export type RawGroupRolesData = { groupRoles: GroupRole[]; nextPageToken: string; }; export type PrettifiedGroupRolesData = GroupRole[]; type GroupShoutData = { path: `groups/${GroupId}/shout`; createTime: TemporalType; updateTime: TemporalType; content: string; poster: `users/${Identifier}`; }; export type RawGroupShoutData = GroupShoutData; export type PrettifiedGroupShoutData = GroupShoutData; export type UpdateGroupMemberRoleData = { path: `groups/${GroupId}/memberships/${string}`; createTime: ISODateTime; updateTime: ISODateTime; user: `users/${Identifier}`; role: `groups/${GroupId}/roles/${RoleId}`; }; export {};