import { Wallet } from '../account'
import { TicketConfig, Event } from '../event'
import { Venue } from '../venue'

export interface ValidatorToken {
	token: string
}

export interface ValidatorWithWallet {
	eventId: number
	organizer: string
	wallet: Wallet
	serverUrl: string
}

export interface GetExportedValidatorsQuery {
	event_id?: number
}

export type ImportDataRequest = {
	eventId: number
	organizerId: string
}

export type ImportData = {
	event: {
		event: Event
		qr_codes: TicketConfig[]
	}
	account: {
		validators: ValidatorWithWallet[]
	}
	venue: {
		venue: Venue
	}
}

/**
 * If a there is no expiration date, the validator will be valid indefinitely.
 */
export type CreateValidator = {
	eventId: number
	expiresAt?: Date
}

export type Validator = {
	id: number
	organizerId: number
	token: string
	qrCodeContent: string
	eventId: number
	expiresAt: Date
}

export type ValidatorId = {
	id: number
	organizerId: number | string
}
