import Client from "../client"; import { GetGroupUniversesOptions } from "../client/apis/DevelopAPI"; import { CursorPage } from "./Asset"; import { PartialGameUniverse } from "./Game"; import { GetGroupRevenueSummaryInTimeFrame, GetGroupRevenueSummaryInTimeFrameOptions, GetGroupTransactions, GetGroupTransactionsOptions } from "../client/apis/EconomyAPI"; import { AcceptJoinRequest, AcceptJoinRequests, AcceptJoinRequestsOptions, AcceptRelationshipRequest, AcceptRelationshipRequests, AcceptRelationshipRequestsOptions, ChangeOwner, ClaimGroup, CreateRelationship, CreateRelationshipOptions, CreateRole, CreateRoleOptions, CreateWallPost, CreateWallPostOptions, DeclineJoinRequest, DeclineJoinRequests, DeclineRelationshipRequest, DeclineRelationshipRequests, DeclineRelationshipRequestsOptions, DeleteRelationship, DeleteRelationshipOptions, DeleteRole, DeleteSocialLink, DeleteWallPost, GetAllRolesPermissions, GetGroupPayouts, GetGroupRelationships, GetGroupRelationshipsOptions, GetGroupSettings, GetGuestPermissions, GetJoinRequest, GetJoinRequestsOptions, GetMembersOptions, GetMembersWithRoleOptions, GetRelationshipRequests, GetRelationshipRequestsOptions, GetRolePermissions, GetSelfGroupMembership, GetSocialLinks, GetWallPostsOptions, JoinGroup, JoinGroupOptions, KickMember, PayoutMembers, PayoutMembersOptions, PostSocialLink, PostSocialLinkOptions, RemovePrimaryGroup, SetPrimaryGroup, UpdateGroupDescription, UpdateGroupIcon, UpdateGroupSettings, UpdateGroupSettingsOptions, UpdateGroupStatus, UpdateMember, UpdateRecurringPayouts, UpdateRecurringPayoutsOptions, UpdateRole, UpdateRoleOptions, UpdateRolePermissions, UpdateRolePermissionsOptions, UpdateSocialLink, UpdateSocialLinkOptions } from "../client/apis/GroupsAPI"; import { PartialUser, PartialUserOptions, UserBase } from "./User"; type GroupRelationships = Omit & { groupId: number; relationshipType: T; totalGroupCount: number; groups: Group[]; nextRowIndex: number; }; export interface GroupBaseOptions { id: number; name?: string; } export declare class GroupBase { client: Client; id: number; name: string | null; constructor(data: GroupBaseOptions, client: Client); getUniverses(options?: Omit): Promise>; /** * Returns whether the authenticated user can manage the group or not * @returns {Promise} */ canSelfManage(): Promise; /** * Gets the currently available funds in the group * @returns {Promise} */ getFunds(): Promise; getRevenueSummaryInTimeFrame(timeFrame: GetGroupRevenueSummaryInTimeFrameOptions["timeFrame"]): Promise; getTransactions(options: Omit): Promise; getAllies(maxItems?: number, startItem?: number): Promise>; getEnemies(maxItems?: number, startItem?: number): Promise>; getGroup(): Promise; getMember(userId: number): Promise; getIsMember(userId: number): Promise; getSettings(): Promise; updateSettings(options: Omit): Promise; updateDescription(description: string): Promise; updateShout(shout: string): Promise; updateIcon(file: unknown): Promise; declineJoinRequests(userIds: number[]): Promise; getJoinRequests(options: Omit): Promise>; acceptJoinRequests(options: Omit): Promise; declineJoinRequest(userId: number): Promise; getJoinRequest(userId: number): Promise; acceptJoinRequest(userId: number): Promise; getSelfMembership(): Promise; getRoles(): Promise; getMembersWithRole(options: Omit): Promise>; getMembers(options: Omit): Promise>; join(options: Omit): Promise; getIsPendingJoin(): Promise; changeOwner(userId: number): Promise; claim(): Promise; kickMember(userId: number): Promise; updateMember(userId: number, roleId: number): Promise; getPayouts(): Promise; payoutMembers(options: Omit): Promise; updateRecurringPayouts(options: Omit): Promise; getRelationships(options: Omit): Promise; declineRelationshipRequests(options: Omit): Promise; getRelationshipRequests(options: Omit): Promise; acceptRelationshipRequests(options: Omit): Promise; deleteRelationship(options: Omit): Promise; createRelationship(options: Omit): Promise; acceptRelationshipRequest(type: "enemies" | "allies", withGroup: number): Promise; declineRelationshipRequest(type: "enemies" | "allies", withGroup: number): Promise; getRolePermissions(roleId: number): Promise; updateRolePermissions(roleId: number, permissions: Omit): Promise; getGuestPermissions(): Promise; getAllRolesPermissions(): Promise; getSocialLinks(): Promise; createSocialLink(options: Omit): Promise; deleteSocialLink(id: number): Promise; updateSocialLink(options: Omit): Promise; getWallPosts(options: Omit): Promise>; createWallPost(options: Omit): Promise; deleteWallPost(id: number): Promise; getIsUserPrimaryGroup(userId: number): Promise; removeAsPrimary(): Promise; setAsPrimary(): Promise; createRole(options: Omit): Promise; deleteRole(roleId: number): Promise; updateRole(roleId: number, options: Omit): Promise; } export interface PartialGroupOptions { id: number; name?: string; } export declare class PartialGroup extends GroupBase { constructor(data: PartialGroupOptions, client: Client); } export interface GroupMemberOptions { group: PartialGroupOptions; name?: string | null; /** * The user id */ id: number; role?: { id: number; name: string; rank: number; }; } export declare class GroupMember extends UserBase { group: PartialGroup; role: GroupRole | null; constructor(data: GroupMemberOptions, client: Client); kick(): Promise; } export interface GroupOptions { id: number; name: string; description: string; owner: { buildersClubMembershipType: string; userId: number; username: string; displayName: string; } | null; shout: { body: string; poster: { buildersClubMembershipType: string; userId: number; username: string; displayName: string; }; created: string; updated: string; } | null; memberCount: number; isBuildersClubOnly: boolean; publicEntryAllowed: boolean; isLocked: boolean; } export declare class Group extends GroupBase { description: string; name: string; owner: GroupMember | null; shout: GroupShout | null; memberCount: number; isBuildersClubOnly: boolean; publicEntryAllowed: boolean; isLocked: boolean; constructor(data: GroupOptions, client: Client); } export interface GroupJoinRequestOptions { id?: number; user: PartialUserOptions; group: PartialGroupOptions; created: string; } export declare class GroupJoinRequest { client: Client; id: number | null; user: PartialUser; group: PartialGroup; created: Date; constructor(data: GroupJoinRequestOptions, client: Client); } export interface GroupRoleOptions { id?: number; name?: string; rank?: number; group: { id: number; name?: string; }; } export declare class GroupRole { client: Client; id: number | null; name: string | null; rank: number | null; group: PartialGroup; constructor(data: GroupRoleOptions, client: Client); } export interface GroupRolePermissionsOptions { groupId: number; role: { id: number; name: string; description: string; rank: number; memberCount: number; }; permissions: { groupPostsPermissions: { viewWall: boolean; postToWall: boolean; deleteFromWall: boolean; viewStatus: boolean; postToStatus: boolean; }; groupMembershipPermissions: { changeRank: boolean; inviteMembers: boolean; removeMembers: boolean; }; groupManagementPermissions: { manageRelationships: boolean; manageClan: boolean; viewAuditLogs: boolean; }; groupEconomyPermissions: { spendGroupFunds: boolean; advertiseGroup: boolean; createItems: boolean; manageItems: boolean; addGroupPlaces: boolean; manageGroupGames: boolean; viewGroupPayouts: boolean; }; }; } export declare class GroupRolePermissions { client: Client; group: PartialGroup; role: GroupRole; permissions: GroupRolePermissionsOptions["permissions"]; constructor(data: GroupRolePermissionsOptions, client: Client); } export interface GroupShoutOptions { content: string; creator: { id: number; username: string; }; group: { id: number; name?: string; }; } export declare class GroupShout { client: Client; content: string; creator: PartialUser; group: PartialGroup; constructor(data: GroupShoutOptions, client: Client); } export interface GroupWallPostOptions { id: number; poster: { buildersClubMembershipType: string; userId: number; username: string; displayName: string; }; group: { id: number; name?: string; }; body: string; created: string; updated: string; } export declare class GroupWallPost { client: Client; id: number; creator: GroupMember; content: string; created: Date; constructor(data: GroupWallPostOptions, client: Client); } export {};