export {};
export declare enum AmityEventType {
    Virtual = "virtual",
    InPerson = "in_person"
}
export declare enum AmityEventOriginType {
    Community = "community",
    User = "user"
}
export declare enum AmityEventStatus {
    Scheduled = "scheduled",
    Live = "live",
    Ended = "ended",
    Cancelled = "cancelled"
}
export declare enum AmityEventResponseStatus {
    Going = "going",
    NotGoing = "not_going"
}
export declare enum AmityEventSortOption {
    StartTime = "startTime",
    CreatedAt = "createdAt"
}
export declare enum AmityEventOrderOption {
    Ascending = "asc",
    Descending = "desc"
}
declare global {
    namespace Amity {
        type EventType = AmityEventType;
        type EventOriginType = AmityEventOriginType;
        type EventStatus = AmityEventStatus;
        type EventResponseStatus = AmityEventResponseStatus;
        type EventSortOption = AmityEventSortOption;
        type EventOrderOption = AmityEventOrderOption;
        type EventMetadata = {
            timezone: string;
        };
        type EventLinkObject = {
            post?: Amity.Post;
            room?: Amity.Room;
            creator?: Amity.User;
            coverImage?: Amity.File<'image'>;
            targetCommunity?: Amity.Community;
            createRSVP: (status: Amity.EventResponseStatus) => Promise<Amity.EventResponse | undefined>;
            updateRSVP: (status: Amity.EventResponseStatus) => Promise<Amity.EventResponse | undefined>;
            getMyRSVP: () => Promise<Amity.EventResponse | undefined>;
            getRSVPs: (params: Omit<Amity.QueryRSVPs, 'eventId'>, callback: Amity.LiveCollectionCallback<Amity.EventResponse>) => Amity.Unsubscriber;
        };
        type RawEvent = {
            eventId: string;
            publicId: string;
            userId: string;
            userPublicId: string;
            userInternalId: string;
            coverImageFileId?: string;
            title: string;
            description: string;
            type: Amity.EventType;
            status: Amity.EventStatus;
            startTime: string;
            endTime: string;
            originId: string;
            originType: Amity.EventOriginType;
            discussionCommunityId?: string;
            rsvpCount: number;
            interestedCount: number;
            location?: string;
            externalUrl?: string;
            isOriginPublic: boolean;
            postId: string;
        } & Amity.Taggable & Amity.Metadata<Amity.EventMetadata> & Amity.Timestamps & Amity.SoftDelete;
        type RawEventResponse = {
            eventId: string;
            userId: string;
            createdAt: Amity.Timestamps['createdAt'];
            respondedAt: Amity.Timestamps;
            status: AmityEventResponseStatus;
            userInternalId: string;
            userPublicId: string;
        };
        type InternalEventResponse = RawEventResponse;
        type EventResponseLinkObject = {
            event?: Amity.InternalEvent;
            user?: Amity.InternalUser;
        };
        type InternalEvent = RawEvent;
        type Event = Amity.InternalEvent & Amity.EventLinkObject;
        type EventResponse = Amity.InternalEventResponse & Amity.EventResponseLinkObject;
        type QueryEvents = {
            userId?: string;
            originId?: string;
            onlyAttendee?: boolean;
            type?: Amity.EventType;
            status?: Amity.EventStatus;
            originType?: Amity.EventOriginType;
            sortBy?: Amity.EventSortOption;
            orderBy?: Amity.EventOrderOption;
        };
        type EventLiveCollection = Amity.LiveCollectionParams<Amity.QueryEvents>;
        type EventLiveCollectionCache = Amity.LiveCollectionCache<Amity.InternalEvent['eventId'], Amity.QueryEvents>;
        type QueryRSVPs = {
            status: Amity.EventResponseStatus;
            eventId: string;
            options?: {
                limit?: number;
                token?: string;
            };
            page?: string;
        };
        type QueryMyEvents = {
            status: Amity.EventResponseStatus;
        };
        type MyEventLiveCollection = Amity.LiveCollectionParams<Amity.QueryMyEvents>;
        type MyEventLiveCollectionCache = Amity.LiveCollectionCache<Amity.InternalEvent['eventId'], Amity.QueryMyEvents>;
        type RSVPLiveCollectionCache = Amity.LiveCollectionCache<Amity.InternalEventResponse['userId'], Amity.QueryRSVPs>;
        type RSVPLiveCollection = Amity.LiveCollectionParams<Amity.QueryRSVPs>;
        type EventCreateOptions = Pick<Amity.Event, 'coverImageFileId' | 'title' | 'description' | 'type' | 'startTime' | 'endTime' | 'originType' | 'originId' | 'location' | 'externalUrl' | 'tags' | 'metadata'>;
        type EventUpdateOptions = Partial<Pick<Amity.Event, 'coverImageFileId' | 'title' | 'description' | 'type' | 'startTime' | 'endTime' | 'location' | 'externalUrl' | 'tags' | 'metadata'>>;
    }
}
//# sourceMappingURL=event.d.ts.map