import { Attendee } from "../attendee/types";
import { EventLocation, EventStream, EventVisibility } from "../event/types";
export type Link = {
    rel: string;
    uri: string;
};
type EventImageType = {
    logo: string;
    picture: string;
    thumbnail: string;
};
export type Session = WithEventTimezoneDates<SessionServerResponse, [
    "start_date",
    "end_date"
]>;
export type WithEventTimezoneDates<T extends Record<string, unknown>, K extends readonly string[]> = T & {
    eventTimezoneDates?: EventTimezoneDates<K>;
};
type EventTimezoneDates<K extends readonly string[]> = {
    [key in K[number]]?: any;
};
export type Collaboration = {
    type: string;
    url: string;
    title: string;
};
export type Rating = {
    ratingList: {
        [key: string]: number;
    };
    ratingCount: number;
    ratingScore: boolean;
};
export type SessionServerResponse = {
    title: string;
    sub_title: string;
    description: string;
    discussion: SessionDiscussion | null;
    start_date: string;
    end_date: string;
    id: string;
    location: any;
    event: string;
    stream: any;
    visibility: EventVisibility;
    published: boolean;
    virtual: boolean;
    max_seat: number;
    document_list: string[];
    speaker_list: string[];
    reserved_list: string[];
    watch_list?: string[];
    prerecorded: PrerecordedVideo | null;
    rating: Rating;
    image: {
        image: string;
    };
    links: Link[];
    tags: string[];
    type: string;
    advertisement?: PrerecordedVideo | null;
    collaboration: Collaboration;
    priority: number;
    promoted_at: string;
    speakers?: any[];
};
export type PrerecordedVideo = {
    videoType: string;
    videoReference: string;
};
export type SessionFull = {
    id: string;
    start_date: string;
    end_date: string;
    title: string;
    sub_title: string;
    description: string;
    location: EventLocation;
    event: string;
    visibility: string;
    images: EventImageType;
    image: {
        image: string;
    };
    advertisement: {
        videoReference: string;
        videoType: string;
    };
    tags: string[];
    published: boolean;
    virtual: boolean;
    max_seat: number;
    type: string;
    reserved_list: string[];
    prerecorded: {
        videoReference: string;
        videoType: string;
    };
    links: Link[];
    extraDetails: string;
    stream: EventStream;
    heartCount: number;
    priority: number;
    discussion: SessionDiscussion | null;
    documents: DocumentType[];
    like_list: string[];
    watch_list: string[];
    speakers: Attendee[];
};
export type SessionDiscussion = {
    commentCount: number;
    comments: {
        [commentId: string]: {
            createdAt: string;
            createdBy: string;
            id: string;
            message: string;
            updatedAt: string;
        };
    };
};
export type ZoomSignature = {
    signature: string;
    apiKey: string;
    meetingNumber: number;
    role: number;
    email: string;
    name: string;
};
export type ZoomKeySecret = {
    key: string;
    secret: string;
};
export type SessionDate = {
    id: string;
    name: string;
};
export type SessionInput = {
    location: string;
    title: string;
    subtitle: string;
    description: string;
    published: string;
    virtual: string;
    visibility: string;
    maxSeat: string;
    type: string;
    recordedVideoType: string;
    recordedVideoReference: string;
    advertisementVideoType: string;
    advertisementVideoReference: string;
    stream: string;
    images: {
        image: string;
    };
    collaborationType: string;
    collaborationUrl: string;
    collaborationTitle: string;
    priority: string | number;
};
export {};
