import type { Identifier, ISODateTime, ObjectPrettify, UnionPrettify, ObjectKeysToCamelCase } from "typeforge";
type UrlProtocol = `http${"s" | ""}://`;
export type RawGroupInfoData<GroupId extends Identifier> = ObjectPrettify<{
    id: GroupId;
    name: string;
    description: string;
    owner: {
        hasVerifiedBadge: boolean;
        userId: number;
        username: string;
        displayName: string;
    };
    shout?: {
        body: string;
        poster: {
            hasVerifiedBadge: boolean;
            userId: string;
            username: string;
            displayName: string;
        };
        created: string;
        updated: string;
    };
    memberCount: number;
    isBuildersClubOnly: boolean;
    publicEntryAllowed: boolean;
    hasVerifiedBadge: boolean;
}>;
export type PrettifiedGroupInfoData<GroupId extends Identifier> = ObjectPrettify<Omit<RawGroupInfoData<GroupId>, "shout"> & {
    shout?: {
        body: string;
        poster: {
            hasVerifiedBadge: boolean;
            userId: string;
            username: string;
            displayName: string;
        };
        created: Date;
        updated: Date;
    };
}>;
export type GroupAuditLogActionType = "Delete Post" | "Remove Member" | "Accept Join Request" | "Decline Join Request" | "Post Status" | "Change Rank" | "Buy Ad" | "Send Ally Request" | "Create Enemy" | "Accept Ally Request" | "Decline Ally Request" | "Delete Ally" | "Delete Enemy" | "Add Group Place" | "Remove Group Place" | "Create Items" | "Configure Items" | "Spend Group Funds" | "Change Owner" | "Delete" | "Adjust Currency Amounts" | "Abandon" | "Claim" | "Rename" | "Change Description" | "Invite To Clan" | "Kick From Clan" | "Cancel Clan Invite" | "Buy Clan" | "Create Group Asset" | "Update Group Asset" | "Configure Group Asset" | "Revert Group Asset" | "Create Group Developer Product" | "Configure Group Game" | "Create Group Developer Subscription Product" | "Lock" | "Unlock" | "Create Game Pass" | "Create Badge" | "Configure Badge" | "Save Place" | "Publish Place" | "Update Roleset Rank" | "Update Roleset Data";
type GroupAuditLogBase<ActionType extends GroupAuditLogActionType, Description extends Record<any, any>> = {
    actionType: ActionType;
    actor: {
        user: {
            hasVerifiedBadge: boolean;
            userId: number;
            username: string;
            displayName: string;
        };
        role: {
            id: number;
            name: string;
            rank: number;
        };
    };
    description: Description;
    created: string;
};
type GroupAuditLog_DeletePost = GroupAuditLogBase<"Delete Post", {
    PostDec: string;
    TargetId: number;
    TargetName: string;
}>;
type GroupAuditLog_RemoveMember_AcceptJoinRequest_DeclineJoinRequest = GroupAuditLogBase<"Remove Member" | "Accept Join Request" | "Decline Join Request", {
    TargetId: number;
    TargetName: string;
}>;
type GroupAuditLog_PostStatus = GroupAuditLogBase<"Post Status", {
    Text: string;
}>;
type GroupAuditLog_ChangeRank = GroupAuditLogBase<"Change Rank", {
    TargetId: number;
    NewRoleSetId: number;
    OldRoleSetId: number;
    TargetName: string;
    NewRoleSetName: string;
    OldRoleSetName: string;
}>;
type GroupAuditLog_BuyAd = GroupAuditLogBase<"Buy Ad", {
    AdName: string;
    Bid: number;
    CurrencyTypeId: number;
    CurrencyTypeName: string;
}>;
type GroupAuditLog_SendAllyRequest_CreateEnemy_AcceptAllyRequest_DeclineAllyRequest_DeleteAlly_DeleteEnemy = GroupAuditLogBase<"Send Ally Request" | "Create Enemy" | "Accept Ally Request" | "Decline Ally Request" | "Delete Ally" | "Delete Enemy", {
    TargetGroupId: number;
    TargetGroupName: string;
}>;
type GroupAuditLog_CreateItems_CreateGroupDeveloperProduct = GroupAuditLogBase<"Create Items" | "Create Group Developer Product", {
    AssetId: number;
    AssetName: string;
}>;
type GroupAuditLog_SpendGroupFunds = GroupAuditLogBase<"Spend Group Funds", {
    Amount: number;
    CurrencyTypeId: number;
    ItemDescription: string;
    CurrencyTypeName: string;
}>;
type GroupAuditLog_ChangeOwner = GroupAuditLogBase<"Change Owner", {
    IsRoblox: boolean;
    NewOwnerId: number;
    NewOwnerName: string;
    OldOwnerId: number;
    OldOwnerName: string;
}>;
type GroupAuditLog_Abandon = GroupAuditLogBase<"Abandon", {}>;
type GroupAuditLog_Claim = GroupAuditLogBase<"Claim", {}>;
type GroupAuditLog_Rename = GroupAuditLogBase<"Rename", {
    NewName: string;
}>;
type GroupAuditLog_ChangeDescription = GroupAuditLogBase<"Change Description", {
    NewDescription: string;
}>;
type GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems = (GroupAuditLogBase<"Invite To Clan" | "Kick From Clan" | "Cancel Clan Invite" | "Buy Clan" | "Adjust Currency Amounts" | "Revert Group Asset" | "Create Group Developer Subscription Product" | "Lock" | "Unlock" | "Configure Badge" | "Publish Place" | "Add Group Place" | "Remove Group Place" | "Configure Items" | "Delete", {}>);
type GroupAuditLog_CreateGroupAsset_UpdateGroupAsset = GroupAuditLogBase<"Create Group Asset" | "Update Group Asset", {
    AssetId: number;
    AssetName: string;
    VersionNumber: number;
    RevertVersionNumber: number | null;
}>;
type GroupAuditLog_ConfigureGroupAsset = GroupAuditLogBase<"Configure Group Asset", {
    AssetId: number;
    AssetName: string;
    Actions: number[] | null;
}>;
type GroupAuditLog_ConfigureGroupGame = GroupAuditLogBase<"Configure Group Game", {
    Actions: number[];
    Type: number;
    TargetId: number;
    TargetName: string;
    UniverseId: number | null;
    UniverseName: string;
}>;
type GroupAuditLog_CreateGamePass = GroupAuditLogBase<"Create Game Pass", {
    GamePassId: number;
    PlaceId: number;
    GamePassName: string;
    PlaceName: string;
}>;
type GroupAuditLog_CreateBadge = GroupAuditLogBase<"Create Badge", {
    BadgeId: number;
    BadgeName: string;
    Type: null;
}>;
type GroupAuditLog_SavePlace = GroupAuditLogBase<"Save Place", {
    AssetId: number;
    AssetName: string;
    VersionNumber: number;
}>;
type GroupAuditLog_UpdateRolesetRank = GroupAuditLogBase<"Update Roleset Rank", {
    NewRank: number;
    OldRank: number;
    RoleSetId: number;
    RoleSetName: string;
}>;
type GroupAuditLog_UpdateRolesetData = GroupAuditLogBase<"Update Roleset Data", {
    NewDescription: string;
    NewName: string;
    OldDescription: string;
    OldName: string;
    RoleSetId: number;
    RoleSetName: string;
}>;
type RawGroupAuditLogs_NameToType = {
    "Delete Post": GroupAuditLog_DeletePost;
    "Remove Member": GroupAuditLog_RemoveMember_AcceptJoinRequest_DeclineJoinRequest;
    "Accept Join Request": GroupAuditLog_RemoveMember_AcceptJoinRequest_DeclineJoinRequest;
    "Decline Join Request": GroupAuditLog_RemoveMember_AcceptJoinRequest_DeclineJoinRequest;
    "Post Status": GroupAuditLog_PostStatus;
    "Change Rank": GroupAuditLog_ChangeRank;
    "Buy Ad": GroupAuditLog_BuyAd;
    "Send Ally Request": GroupAuditLog_SendAllyRequest_CreateEnemy_AcceptAllyRequest_DeclineAllyRequest_DeleteAlly_DeleteEnemy;
    "Create Enemy": GroupAuditLog_SendAllyRequest_CreateEnemy_AcceptAllyRequest_DeclineAllyRequest_DeleteAlly_DeleteEnemy;
    "Accept Ally Request": GroupAuditLog_SendAllyRequest_CreateEnemy_AcceptAllyRequest_DeclineAllyRequest_DeleteAlly_DeleteEnemy;
    "Decline Ally Request": GroupAuditLog_SendAllyRequest_CreateEnemy_AcceptAllyRequest_DeclineAllyRequest_DeleteAlly_DeleteEnemy;
    "Delete Ally": GroupAuditLog_SendAllyRequest_CreateEnemy_AcceptAllyRequest_DeclineAllyRequest_DeleteAlly_DeleteEnemy;
    "Delete Enemy": GroupAuditLog_SendAllyRequest_CreateEnemy_AcceptAllyRequest_DeclineAllyRequest_DeleteAlly_DeleteEnemy;
    "Add Group Place": GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems;
    "Remove Group Place": GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems;
    "Create Items": GroupAuditLog_CreateItems_CreateGroupDeveloperProduct;
    "Configure Items": GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems;
    "Spend Group Funds": GroupAuditLog_SpendGroupFunds;
    "Change Owner": GroupAuditLog_ChangeOwner;
    "Delete": GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems;
    "Adjust Currency Amounts": GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems;
    "Abandon": GroupAuditLog_Abandon;
    "Claim": GroupAuditLog_Claim;
    "Rename": GroupAuditLog_Rename;
    "Change Description": GroupAuditLog_ChangeDescription;
    "Invite To Clan": GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems;
    "Kick From Clan": GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems;
    "Cancel Clan Invite": GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems;
    "Buy Clan": GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems;
    "Create Group Asset": GroupAuditLog_CreateGroupAsset_UpdateGroupAsset;
    "Update Group Asset": GroupAuditLog_CreateGroupAsset_UpdateGroupAsset;
    "Configure Group Asset": GroupAuditLog_ConfigureGroupAsset;
    "Revert Group Asset": GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems;
    "Create Group Developer Product": GroupAuditLog_CreateItems_CreateGroupDeveloperProduct;
    "Configure Group Game": GroupAuditLog_ConfigureGroupGame;
    "Create Group Developer Subscription Product": GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems;
    "Lock": GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems;
    "Unlock": GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems;
    "Create Game Pass": GroupAuditLog_CreateGamePass;
    "Create Badge": GroupAuditLog_CreateBadge;
    "Configure Badge": GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems;
    "Save Place": GroupAuditLog_SavePlace;
    "Publish Place": GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems;
    "Update Roleset Rank": GroupAuditLog_UpdateRolesetRank;
    "Update Roleset Data": GroupAuditLog_UpdateRolesetData;
};
type PrettifiedGroupAuditLogs_NameToType = {
    "Delete Post": ObjectKeysToCamelCase<GroupAuditLog_DeletePost>;
    "Remove Member": ObjectKeysToCamelCase<GroupAuditLog_RemoveMember_AcceptJoinRequest_DeclineJoinRequest>;
    "Accept Join Request": ObjectKeysToCamelCase<GroupAuditLog_RemoveMember_AcceptJoinRequest_DeclineJoinRequest>;
    "Decline Join Request": ObjectKeysToCamelCase<GroupAuditLog_RemoveMember_AcceptJoinRequest_DeclineJoinRequest>;
    "Post Status": ObjectKeysToCamelCase<GroupAuditLog_PostStatus>;
    "Change Rank": ObjectKeysToCamelCase<GroupAuditLog_ChangeRank>;
    "Buy Ad": ObjectKeysToCamelCase<GroupAuditLog_BuyAd>;
    "Send Ally Request": ObjectKeysToCamelCase<GroupAuditLog_SendAllyRequest_CreateEnemy_AcceptAllyRequest_DeclineAllyRequest_DeleteAlly_DeleteEnemy>;
    "Create Enemy": ObjectKeysToCamelCase<GroupAuditLog_SendAllyRequest_CreateEnemy_AcceptAllyRequest_DeclineAllyRequest_DeleteAlly_DeleteEnemy>;
    "Accept Ally Request": ObjectKeysToCamelCase<GroupAuditLog_SendAllyRequest_CreateEnemy_AcceptAllyRequest_DeclineAllyRequest_DeleteAlly_DeleteEnemy>;
    "Decline Ally Request": ObjectKeysToCamelCase<GroupAuditLog_SendAllyRequest_CreateEnemy_AcceptAllyRequest_DeclineAllyRequest_DeleteAlly_DeleteEnemy>;
    "Delete Ally": ObjectKeysToCamelCase<GroupAuditLog_SendAllyRequest_CreateEnemy_AcceptAllyRequest_DeclineAllyRequest_DeleteAlly_DeleteEnemy>;
    "Delete Enemy": ObjectKeysToCamelCase<GroupAuditLog_SendAllyRequest_CreateEnemy_AcceptAllyRequest_DeclineAllyRequest_DeleteAlly_DeleteEnemy>;
    "Add Group Place": ObjectKeysToCamelCase<GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems>;
    "Remove Group Place": ObjectKeysToCamelCase<GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems>;
    "Create Items": ObjectKeysToCamelCase<GroupAuditLog_CreateItems_CreateGroupDeveloperProduct>;
    "Configure Items": ObjectKeysToCamelCase<GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems>;
    "Spend Group Funds": ObjectKeysToCamelCase<GroupAuditLog_SpendGroupFunds>;
    "Change Owner": ObjectKeysToCamelCase<GroupAuditLog_ChangeOwner>;
    "Delete": ObjectKeysToCamelCase<GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems>;
    "Adjust Currency Amounts": ObjectKeysToCamelCase<GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems>;
    "Abandon": ObjectKeysToCamelCase<GroupAuditLog_Abandon>;
    "Claim": ObjectKeysToCamelCase<GroupAuditLog_Claim>;
    "Rename": ObjectKeysToCamelCase<GroupAuditLog_Rename>;
    "Change Description": ObjectKeysToCamelCase<GroupAuditLog_ChangeDescription>;
    "Invite To Clan": ObjectKeysToCamelCase<GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems>;
    "Kick From Clan": ObjectKeysToCamelCase<GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems>;
    "Cancel Clan Invite": ObjectKeysToCamelCase<GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems>;
    "Buy Clan": ObjectKeysToCamelCase<GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems>;
    "Create Group Asset": ObjectKeysToCamelCase<GroupAuditLog_CreateGroupAsset_UpdateGroupAsset>;
    "Update Group Asset": ObjectKeysToCamelCase<GroupAuditLog_CreateGroupAsset_UpdateGroupAsset>;
    "Configure Group Asset": ObjectKeysToCamelCase<GroupAuditLog_ConfigureGroupAsset>;
    "Revert Group Asset": ObjectKeysToCamelCase<GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems>;
    "Create Group Developer Product": ObjectKeysToCamelCase<GroupAuditLog_CreateItems_CreateGroupDeveloperProduct>;
    "Configure Group Game": ObjectKeysToCamelCase<GroupAuditLog_ConfigureGroupGame>;
    "Create Group Developer Subscription Product": ObjectKeysToCamelCase<GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems>;
    "Lock": ObjectKeysToCamelCase<GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems>;
    "Unlock": ObjectKeysToCamelCase<GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems>;
    "Create Game Pass": ObjectKeysToCamelCase<GroupAuditLog_CreateGamePass>;
    "Create Badge": ObjectKeysToCamelCase<GroupAuditLog_CreateBadge>;
    "Configure Badge": ObjectKeysToCamelCase<GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems>;
    "Save Place": ObjectKeysToCamelCase<GroupAuditLog_SavePlace>;
    "Publish Place": ObjectKeysToCamelCase<GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems>;
    "Update Roleset Rank": ObjectKeysToCamelCase<GroupAuditLog_UpdateRolesetRank>;
    "Update Roleset Data": ObjectKeysToCamelCase<GroupAuditLog_UpdateRolesetData>;
};
type AllGroupAuditLogs = GroupAuditLog_DeletePost | GroupAuditLog_RemoveMember_AcceptJoinRequest_DeclineJoinRequest | GroupAuditLog_PostStatus | GroupAuditLog_ChangeRank | GroupAuditLog_BuyAd | GroupAuditLog_SpendGroupFunds | GroupAuditLog_ChangeOwner | GroupAuditLog_Abandon | GroupAuditLog_Claim | GroupAuditLog_Rename | GroupAuditLog_ChangeDescription | GroupAuditLog_CreateGroupAsset_UpdateGroupAsset | GroupAuditLog_ConfigureGroupAsset | GroupAuditLog_ConfigureGroupGame | GroupAuditLog_CreateGamePass | GroupAuditLog_CreateBadge | GroupAuditLog_SavePlace | GroupAuditLog_UpdateRolesetRank | GroupAuditLog_SendAllyRequest_CreateEnemy_AcceptAllyRequest_DeclineAllyRequest_DeleteAlly_DeleteEnemy | GroupAuditLog_UpdateRolesetData | GroupAuditLog_CreateItems_CreateGroupDeveloperProduct | GroupAuditLog_InviteToClan_KickFromClan_CancelClanInvite_BuyClan_AdjustCurrencyAmounts_RevertGroupAsset_CreateGroupDeveloperSubscriptionProduct_Lock_Unlock_ConfigureBadge_PublishPlace_AddGroupPlace_RemoveGroupPlace_ConfigureItems;
type RawGroupAuditLogsData_Data<LogType extends GroupAuditLogActionType | undefined = undefined> = (LogType extends keyof RawGroupAuditLogs_NameToType ? ObjectPrettify<({
    actionType: LogType;
} & Omit<RawGroupAuditLogs_NameToType[LogType], "actionType">)> : AllGroupAuditLogs);
type FormattedGroupAuditLogDatas_Data<LogType extends GroupAuditLogActionType | undefined> = (LogType extends GroupAuditLogActionType ? ObjectPrettify<({
    actionType: LogType;
} & Omit<PrettifiedGroupAuditLogs_NameToType[LogType], "actionType">)> : AllGroupAuditLogs);
export type RawGroupAuditLogsData<LogType extends GroupAuditLogActionType | undefined = undefined> = ObjectPrettify<{
    previousPageCursor?: string;
    nextPageCursor?: string;
    data: RawGroupAuditLogsData_Data<LogType>[];
}>;
export type PrettifiedGroupAuditLogsData<Type extends GroupAuditLogActionType | undefined = undefined> = (FormattedGroupAuditLogDatas_Data<Type>[]);
type GroupNameHistoryData<TemporalType> = {
    name: string;
    created: TemporalType;
}[];
export type RawGroupNameHistoryData = {
    previousPageCursor?: string;
    nextPageCursor?: string;
    data: GroupNameHistoryData<ISODateTime>;
};
export type PrettifiedGroupNameHistoryData = GroupNameHistoryData<Date>;
export type GroupSettingsData = ObjectPrettify<{
    isApprovalRequired: boolean;
    isBuildersClubRequired: boolean;
    areEnemiesAllowed: boolean;
    areGroupFundsVisible: boolean;
    areGroupGamesVisible: boolean;
    isGroupNameChangeEnabled: boolean;
}>;
export type GroupsConfigMetadataData = ObjectPrettify<{
    groupConfiguration: {
        nameMaxLength: number;
        descriptionMaxLength: number;
        iconMaxFileSizeMb: number;
        cost: number;
        isUsingTwoStepWebviewComponent: boolean;
    };
    recurringPayoutsConfiguration: {
        maxPayoutPartners: number;
    };
    roleConfiguration: {
        nameMaxLength: number;
        descriptionMaxLength: number;
        limit: number;
        cost: number;
        minRank: number;
        maxRank: number;
    };
    groupNameChangeConfiguration: {
        cost: number;
        cooldownInDays: number;
        ownershipCooldownInDays: number;
    };
    isPremiumPayoutsEnabled: boolean;
    isDefaultEmblemPolicyEnabled: boolean;
}>;
export type GroupsMetadataData = ObjectPrettify<{
    groupLimit: number;
    currentGroupCount: number;
    groupStatusMaxLength: number;
    groupPostMaxLengt: number;
    isGroupWallNotificationsEnabled: boolean;
    groupWallNotificationsSubscribeIntervalInMilliseconds: number;
    areProfileGroupsHidden: boolean;
    isGroupDetailsPolicyEnabled: boolean;
    showPreviousGroupNames: boolean;
}>;
export type RawGroupPolicyInfoData<GroupId extends Identifier> = {
    groups: {
        canViewGroup: boolean;
        groupId: GroupId;
    }[];
};
export type PrettifiedGroupPolicyInfoData<GroupId extends Identifier> = {
    [Id in GroupId]: {
        canViewGroup: boolean;
    };
};
type GroupShoutData<NewShout extends string, TemporalType> = ObjectPrettify<{
    body: NewShout;
    poster: {
        buildersClubMembershipType: number;
        hasVerifiedBadge: boolean;
        userId: number;
        username: string;
        displayName: string;
    };
    created: TemporalType;
    updated: TemporalType;
}>;
export type RawGroupShoutData<NewShout extends string> = GroupShoutData<NewShout, ISODateTime>;
export type PrettifiedGroupShoutData<NewShout extends string> = GroupShoutData<NewShout, Date>;
type GroupJoinRequest<UserId extends Identifier, TemporalType> = ObjectPrettify<{
    requester: {
        buildersClubMembershipType: number;
        hasVerifiedBadge: true;
        userId: UserId;
        username: string;
        displayName: string;
    };
    created: TemporalType;
}>;
export type RawGroupJoinRequests = ObjectPrettify<{
    previousPageCursor?: string;
    nextPageCursor?: string;
    data: GroupJoinRequest<Identifier, ISODateTime>[];
}>;
export type PrettifiedGroupJoinRequests = GroupJoinRequest<Identifier, Date>[];
export type RawGroupJoinRequestForUser<UserId extends Identifier> = GroupJoinRequest<UserId, ISODateTime> | {};
export type PrettifiedGroupJoinRequestForUser<UserId extends Identifier> = GroupJoinRequest<UserId, Date> | {};
export type AuthenticatedUserGroupMembershipInfoData<GroupId extends Identifier> = ObjectPrettify<{
    groupId: GroupId;
    isPrimary: boolean;
    isPendingJoin: boolean;
    userRole: {
        user: {
            buildersClubMembershipType: number;
            hasVerifiedBadge: boolean;
            userId: number;
            username: string;
            displayName: string;
        };
        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;
            viewAnalytics: boolean;
        };
        groupOpenCloudPermissions: {
            useCloudAuthentication: boolean;
            administerCloudAuthentication: boolean;
        };
    };
    areGroupGamesVisible: boolean;
    areGroupFundsVisible: boolean;
    areEnemiesAllowed: boolean;
    canConfigure: boolean;
}>;
export type PrettifiedAllRolesForGroupData = ObjectPrettify<{
    id: number;
    name: string;
    description: string;
    rank: number;
    memberCount: number;
}[]>;
export type RawAllRolesForGroupData<GroupId extends Identifier> = ObjectPrettify<{
    groupId: GroupId;
    roles: PrettifiedAllRolesForGroupData;
}>;
export type PrettifiedGroupMembersWithRoleData = ObjectPrettify<{
    hasVerifiedBadge: boolean;
    userId: Identifier;
    username: string;
    displayName: string;
}>[];
export type RawGroupMembersWithRoleData = ObjectPrettify<{
    previousPageCursor?: string;
    nextPageCursor?: string;
    data: PrettifiedGroupMembersWithRoleData;
}>;
export type PrettifiedGroupMembersData = ObjectPrettify<{
    user: {
        hasVerifiedBadge: boolean;
        userId: number;
        username: string;
        displayName: string;
    };
    role: {
        id: number;
        name: string;
        rank: number;
    };
}>[];
export type RawGroupMembersData = ObjectPrettify<{
    previousPageCursor?: string;
    nextPageCursor?: string;
    data: PrettifiedGroupMembersData;
}>;
type AuthenticatedUserPendingGroupsData<TemporalType> = ObjectPrettify<{
    id: number;
    name: string;
    description: string;
    owner: {
        hasVerifiedBadge: boolean;
        userId: number;
        username: string;
        displayName: string;
    };
    shout: {
        body: string;
        poster: {
            hasVerifiedBadge: boolean;
            userId: number;
            username: string;
            displayName: string;
        };
        created: TemporalType;
        updated: TemporalType;
    } | null;
    isBuildersClubOnly: boolean;
    publicEntryAllowed: boolean;
    hasVerifiedBadge: boolean;
}>[];
export type RawAuthenticatedUserPendingGroupsData = AuthenticatedUserPendingGroupsData<ISODateTime>;
export type PrettifiedAuthenticatedUserPendingGroupsData = AuthenticatedUserPendingGroupsData<Date>;
type GroupsThatUsersFriendsAreInData<TemporalType> = ObjectPrettify<{
    user: {
        hasVerifiedBadge: boolean;
        userId: number;
        username: string;
        displayName: string;
    };
    groups: [
        {
            group: {
                id: number;
                name: string;
                description: string;
                owner: {
                    hasVerifiedBadge: boolean;
                    userId: number;
                    username: string;
                    displayName: string;
                };
                shout: {
                    body: string;
                    poster: {
                        hasVerifiedBadge: boolean;
                        userId: number;
                        username: string;
                        displayName: string;
                    };
                    created: TemporalType;
                    updated: TemporalType;
                } | null;
                isBuildersClubOnly: boolean;
                publicEntryAllowed: boolean;
                hasVerifiedBadge: boolean;
            };
            role: {
                id: number;
                name: string;
                rank: number;
            };
        }
    ];
}[]>;
export type RawGroupsThatUsersFriendsAreInData = ObjectPrettify<{
    data: GroupsThatUsersFriendsAreInData<ISODateTime>;
}>;
export type PrettifiedGroupsThatUsersFriendsAreInData = GroupsThatUsersFriendsAreInData<Date>;
type AllGroupRolesForUserData_V1<TemporalType> = ObjectPrettify<{
    group: {
        id: number;
        name: string;
        description: string;
        owner: {
            hasVerifiedBadge: boolean;
            userId: number;
            username: string;
            displayName: string;
        };
        shout: {
            body: string;
            poster: {
                hasVerifiedBadge: boolean;
                userId: number;
                username: string;
                displayName: string;
            };
            created: TemporalType;
            updated: TemporalType;
        } | null;
        memberCount: number;
        isBuildersClubOnly: boolean;
        publicEntryAllowed: boolean;
        hasVerifiedBadge: boolean;
    };
    role: {
        id: number;
        name: string;
        description: string;
        rank: number;
        memberCount: number;
    };
    isPrimaryGroup: boolean;
}>[];
export type RawAllGroupRolesForUserData_V1 = ObjectPrettify<{
    data: AllGroupRolesForUserData_V1<ISODateTime>;
}>;
export type FormattedAllGroupRolesForUserData_V1 = AllGroupRolesForUserData_V1<Date>;
export type GroupPayoutRestrictionsInfoData = ObjectPrettify<{
    canUseRecurringPayout: boolean;
    canUseOneTimePayout: boolean;
}>;
export type PrettifiedGroupPayoutsInfoData = ObjectPrettify<{
    user: {
        hasVerifiedBadge: boolean;
        userId: number;
        username: string;
        displayName: string;
    };
    percentage: number;
}>[];
export type RawGroupPayoutsInfoData = ObjectPrettify<{
    data: PrettifiedGroupPayoutsInfoData;
}>;
export type GroupRelationshipType = "Enemies" | "Allies";
type GroupRelationshipsData<GroupId extends Identifier, TimeType> = ObjectPrettify<{
    groupId: GroupId;
    relationshipType: GroupRelationshipType;
    totalGroupCount: number;
    relatedGroups: {
        id: number;
        name: string;
        description: string;
        owner: {
            hasVerifiedBadge: boolean;
            userId: number;
            username: string;
            displayName: string;
        };
        shout: {
            body: string;
            poster: {
                buildersClubMembershipType: number;
                hasVerifiedBadge: boolean;
                userId: number;
                username: string;
                displayName: string;
            };
            created: TimeType;
            updated: TimeType;
        } | null;
        memberCount: number;
        isBuildersClubOnly: number;
        publicEntryAllowed: boolean;
        hasVerifiedBadge: boolean;
    }[];
    nextRowIndex: number;
}>;
export type RawGroupRelationshipsData<GroupId extends Identifier> = GroupRelationshipsData<GroupId, ISODateTime>;
export type PrettifiedGroupRelationshipsData<GroupId extends Identifier> = GroupRelationshipsData<GroupId, Date>;
export type GroupRolePermissionsData<GroupId extends Identifier, RoleSetId extends Identifier, Name extends string = string, Rank extends number = number> = ObjectPrettify<{
    groupId: GroupId;
    role: {
        id: RoleSetId;
        name: Name;
        description: string;
        rank: Rank;
    };
    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;
            viewAnalytics: boolean;
        };
        groupOpenCloudPermissions: {
            useCloudAuthentication: boolean;
            administerCloudAuthentication: boolean;
        };
    };
}>;
export type GroupRolePermissions = ObjectKeysToCamelCase<{
    DeleteFromWall?: boolean;
    PostToWall?: boolean;
    InviteMembers?: boolean;
    PostToStatus?: boolean;
    RemoveMembers?: boolean;
    ViewStatus?: boolean;
    ViewWall?: boolean;
    ChangeRank?: boolean;
    AdvertiseGroup?: boolean;
    ManageRelationships?: boolean;
    AddGroupPlaces?: boolean;
    ViewAuditLogs?: boolean;
    CreateItems?: boolean;
    ManageItems?: boolean;
    SpendGroupFunds?: boolean;
    ManageClan?: boolean;
    ManageGroupGames?: boolean;
    UseCloudAuthentication?: boolean;
    AdministerCloudAuthentication?: boolean;
    ViewAnalytics?: boolean;
}>;
export type RawGroupPermissionsForAllRoles<GroupId extends Identifier> = ObjectPrettify<{
    data: GroupRolePermissionsData<GroupId, number>[];
}>;
export type PrettifiedGroupPermissionsForAllRoles<GroupId extends Identifier> = GroupRolePermissionsData<GroupId, number>[];
type GroupSocialLinkType = UnionPrettify<'Facebook' | 'Twitter' | 'YouTube' | 'Twitch' | 'GooglePlus' | 'Discord' | 'RobloxGroup' | 'Amazon' | 'Guilded'>;
type AddGroupSocialLinksWithUrl = {
    "Facebook": `${UrlProtocol}facebook.com/${string}`;
    "Twitter": `${UrlProtocol}twitter.com/${string}`;
    "Youtube": `${UrlProtocol}youtube.com/${string}`;
    "Twitch": `${UrlProtocol}twitch.tv/${string}`;
    "Discord": `${UrlProtocol}discord.gg/${string}`;
    "Guilded": `${UrlProtocol}guilded.gg/${string}`;
};
export type NewSocialLinkRequest = {
    [Key in keyof AddGroupSocialLinksWithUrl as number]: {
        type: Key;
        url: AddGroupSocialLinksWithUrl[Key];
        title: `${string & any}`;
    };
}[number];
export type PrettifiedGroupSocialLinksData = ObjectPrettify<{
    id: Identifier;
    type: GroupSocialLinkType;
    url: `${"https" | "http"}://${string}`;
    title: string;
}[]>;
export type RawGroupSocialLinksData = ObjectPrettify<{
    data: PrettifiedGroupSocialLinksData;
}>;
export type AddGroupSocialLinkData<NewSocial extends NewSocialLinkRequest, SocialLinkId extends Identifier = Identifier> = ObjectPrettify<{
    id: SocialLinkId;
} & {
    -readonly [Key in keyof NewSocial]: NewSocial[Key];
}>;
export type GroupWallPostsData_V1<TimeType> = ObjectPrettify<{
    id: number;
    poster: {
        hasVerifiedBadge: boolean;
        userId: number;
        username: string;
        displayName: string;
    };
    body: string;
    created: TimeType;
    updated: TimeType;
}[]>;
export type RawGroupWallPostsData_V1 = ObjectPrettify<{
    previousPageCursor?: string;
    nextPageCursor?: string;
    data: GroupWallPostsData_V1<ISODateTime>;
}>;
export type PrettifiedGroupWallPostsData_V1 = ObjectPrettify<GroupWallPostsData_V1<Date>>;
type GroupSearchData<TimeType> = ObjectPrettify<{
    id: number;
    name: string;
    description: string;
    memberCount: number;
    previousName: string;
    publicEntryAllowed: true;
    created: TimeType;
    updated: TimeType;
    hasVerifiedBadge: true;
}[]>;
export type RawGroupSearchData = ObjectPrettify<{
    previousPageCursor?: string;
    nextPageCursor?: string;
    keyword: string;
    data: GroupSearchData<string>;
}>;
export type PrettifiedGroupSearchData = GroupSearchData<Date>;
export type PrettifiedGroupLookupSearch = ObjectPrettify<{
    id: number;
    name: string;
    memberCount: number;
    hasVerifiedBadge: boolean;
}[]>;
export type RawGroupLookupSearch = ObjectPrettify<{
    data: PrettifiedGroupLookupSearch;
}>;
export type RawGroupSearchMetadata = ObjectPrettify<{
    SuggestedGroupKeywords: string[];
    ShowFriendsGroupsSort: boolean;
}>;
export type PrettifiedGroupSearchMetadata = ObjectPrettify<ObjectKeysToCamelCase<RawGroupSearchMetadata>>;
export type RawGroupRolesFromIdsData<RoleId extends Identifier> = {
    data: {
        groupId: number;
        id: RoleId;
        name: string;
        rank: number;
    }[];
};
export type PrettifiedGroupRolesFromIdsData<RoleId extends Identifier> = {
    [Key in RoleId]: ObjectPrettify<{
        groupId: number;
        name: string;
        rank: number;
    }> | undefined;
};
type PrimaryGroupForUserData<TemporalType> = ObjectPrettify<{
    group: {
        id: number;
        name: string;
        description: string;
        owner: {
            hasVerifiedBadge: boolean;
            userId: number;
            username: string;
            displayName: string;
        };
        shout: {
            body: string;
            poster: {
                buildersClubMembershipType: number;
                hasVerifiedBadge: boolean;
                userId: number;
                username: string;
                displayName: string;
            };
            created: TemporalType;
            updated: TemporalType;
        } | null;
        isBuildersClubOnly: boolean;
        publicEntryAllowed: boolean;
        hasVerifiedBadge: boolean;
    };
    role: {
        id: number;
        name: string;
        rank: number;
    };
}>;
export type RawPrimaryGroupForUserData = PrimaryGroupForUserData<string>;
export type PrettifiedPrimaryGroupForUserData = PrimaryGroupForUserData<Date>;
export type UpdateRoleSetRequest = {
    name: `${any}`;
    description: `${any}`;
    rank: number;
};
export type UpdateRoleSetData<NewRoleData extends UpdateRoleSetRequest> = ObjectPrettify<{
    id: number;
    name: NewRoleData["name"];
    description: NewRoleData["description"];
    rank: NewRoleData["rank"];
}>;
export type RawGroupIdsToGroupsInfoData<GroupId extends Identifier> = {
    data: {
        id: GroupId;
        name: string;
        description: string;
        owner: {
            id: number;
            type: string;
        };
        created: string;
        hasVerifiedBadge: boolean;
    }[];
};
export type PrettifiedGroupIdsToGroupsInfoData<GroupId extends Identifier> = {
    [Key in GroupId]: {
        name: string;
        description: string;
        owner: {
            id: number;
            type: string;
        };
        created: Date;
        hasVerifiedBadge: boolean;
    } | undefined;
};
export type PrettifiedAllGroupRolesForUserData_V2 = ObjectPrettify<{
    group: {
        id: number;
        name: string;
        memberCount: number;
        hasVerifiedBadge: boolean;
    };
    role: {
        id: number;
        name: string;
        rank: number;
    };
}[]>;
export type RawAllGroupRolesForUserData_V2 = ObjectPrettify<{
    data: PrettifiedAllGroupRolesForUserData_V2;
}>;
type GroupWallPostsData_V2<TemporalType> = ObjectPrettify<{
    id: number;
    poster: {
        user: {
            hasVerifiedBadge: boolean;
            userId: number;
            username: string;
            displayName: string;
        };
        role: {
            id: number;
            name: string;
            rank: number;
        };
    };
    body: string;
    created: TemporalType;
    updated: TemporalType;
}[]>;
export type RawGroupWallPostsData_V2 = ObjectPrettify<{
    previousPageCursor?: string;
    nextPageCursor?: string;
    data: GroupWallPostsData_V2<ISODateTime>;
}>;
export type PrettifiedGroupWallPostsData_V2 = GroupWallPostsData_V2<Date>;
export {};
