export {};
declare global {
    namespace Amity {
        enum GroupTypeEnum {
            CHANNEL = "channel",
            COMMUNITY = "community"
        }
        type GroupType = `${GroupTypeEnum}`;
        type GroupMembership = 'member' | 'none' | 'banned' | 'muted';
        type Group = {
            membersCount: number;
        };
        type Member<T extends Amity.GroupType> = {
            userId: Amity.InternalUser['userId'];
            userInternalId: Amity.InternalUser['userInternalId'];
            userPublicId: Amity.InternalUser['userPublicId'];
        } & (T extends 'channel' ? {
            channelId: Amity.Channel['channelId'];
            membership: GroupMembership;
            readToSegment: number;
            lastMentionedSegment: number;
        } : T extends 'community' ? {
            communityId: Amity.Community['communityId'];
            communityMembership: GroupMembership;
        } : never) & Amity.Timestamps;
        type MemberWithUser<T extends Amity.GroupType> = Member<T> & {
            readonly user?: Amity.InternalUser;
        };
        type RawMembership<T extends Amity.GroupType> = {
            isBanned: boolean;
            isMuted: boolean;
            muteTimeout: string;
            lastActivity: Amity.timestamp;
        } & Amity.Member<T> & Amity.Accredited;
        type Membership<T extends Amity.GroupType> = Amity.RawMembership<T> & {
            readonly user?: Amity.InternalUser;
        };
    }
}
//# sourceMappingURL=group.d.ts.map