import { StorageType } from "../../Base/entities/image.entity";
import { IEventModelAttributes } from "../entity/event.entity";
export interface IEventsRequest {
}
export interface IEventsGetByCityRequest {
    city: string;
    filter?: "all" | "minPrice" | "date";
}
export interface IEventsGetByCategoryRequest {
    categoryId: string;
    filter?: "all" | "minPrice" | "date";
    city?: string;
}
export interface IEventDetailRequest {
    city?: string;
    slug: string;
}
export interface IEventsGetByVenueRequest {
    venue: string;
}
export interface IEventsGetByPerformerRequest {
    performer: string;
}
export interface IEventUpsertRequest extends Omit<IEventModelAttributes, "status" | "createdBy"> {
}
export interface IEventCreateRequest {
    information: {
        title: string;
        slug: string;
        abstract?: string;
        seo: {
            title?: string;
            description?: string;
            keywords?: string[];
        };
        media: {
            images: {
                url: string;
                storage: StorageType;
            }[];
            thumbnail: {
                url: string;
                storage: StorageType;
            };
        };
        suggested?: string;
        mustKnow?: string;
    };
    roles: {
        additional_info: {
            accessibility: string;
            food_and_drinks: string;
            parking: string;
        };
        prohibited_items: string[];
        entry_requirements: string;
        age_restriction: string;
    };
    sessions?: {
        venue: string;
        city?: string;
        date: Date;
        organizer?: string;
        tickets?: {
            price: number;
            capacity: number;
            seatGroup?: string;
        }[];
        closeSellDate?: Date;
        isSoldOut?: boolean;
        lastSoldDate?: Date;
        hasSeat?: boolean;
    }[];
    performer?: string[];
    eventCategory: string;
    status?: "approved" | "pending";
}
export interface IEventDeleteRequest {
    id: string;
}
export interface IEventRequest {
    id: string;
}
export interface IEventsSearchQueryRequest {
    query: string;
}
