import { Query } from './query'

export interface EventAttribute extends Query {
	ticket_format?: boolean
	occurrence?: boolean | OccurrenceAttribute
	ticket_config?: boolean | TicketConfigAttribute
}

export interface OccurrenceAttribute extends Query {
	sector?: boolean
	ticket_discount?: boolean
}

export interface TicketConfigAttribute extends Query {
	ticket_type?: boolean
	ticket_discount?: boolean
	promo_section?: boolean
	depends_on?: boolean
	event?: boolean
}

export interface TicketAttribute extends Query {
	ticket_discount?: boolean
	order_item?: boolean
	ticket_holder?: boolean | TicketHolderAttributes
	ticket_config?: boolean | TicketConfigAttribute
	sector?: boolean
	ticket_asset?: boolean // Sometime maybe a TicketAssetAttribute as well
	timeslot?: boolean
}

export interface TicketHolderAttributes extends Query {
	address?: boolean
}

export interface TimeslotAttribute extends Query {
	ticket: boolean | TicketAttribute
	ticket_config: boolean | TicketConfigAttribute
}

export interface SectorAttribute extends Query {
	ticket_config: boolean | TicketConfigAttribute
}

export interface OrderAttribute extends Query {
	order_item?: boolean | OrderItemAttribute
	order_contact?: boolean
}

export interface OrderItemAttribute extends Query {
	ticket?: boolean | TicketAttribute
}

export interface TicketDiscountAttribute extends Query {
	ticket_config?: boolean
}

export interface InformationEmailAttribute extends Query {
	information_email_filter?: boolean | InformationEmailFilterAttribute;
}

export interface InformationEmailFilterAttribute extends Query {
	ticket_config?: boolean | TicketConfigAttribute;
}

export interface CategoryAttribute extends Query {
	subcategory?: boolean
}

export interface QuestionnaireAttribute extends Query {
	questionnaire_item?: boolean | QuestionnaireItemAttribute
}

export interface QuestionnaireItemAttribute extends Query {
	question?: boolean
}
