export interface PaginationMeta {
    total: number
    limit: number
    offset: number
}

export interface PaginatedResponse<T> {
    data: T[]
    meta: PaginationMeta
}

export interface Vertical {
    id: number
    name: string
    slug: string
    show_count?: number
    logo_url?: string | null
}

export interface Venue {
    id: number
    name: string
    slug: string
    city: string
    state: string | null
    country: string
    capacity?: number | null
}

export interface Song {
    id: number
    title: string
    slug: string
    original_artist?: string | null
    times_played?: number
    last_played?: string | null
    gap?: number | null
}

export interface Performance {
    id: number
    song: Song
    set_name?: string | null
    position?: number
    seg_audience?: boolean
    transition?: boolean
    notes?: string | null
    youtube_link?: string | null
}

export interface Show {
    id: number
    date: string
    slug: string
    venue_id: number
    vertical_id: number
    venue?: Venue
    vertical?: Vertical
    performances?: Performance[]
    notes?: string | null
    likes_count?: number
    youtube_link?: string | null
}
