// See https://kit.svelte.dev/docs/types#app

interface Subscription {
	id: number | -1;
	name: string | '';
	details: string | '';
	conditions: string | '';
	monthly_fee: number | 0;
	hourly_rate: number | 0;
	included_hours_per_year: number | 0;
	included_hours_per_month: number | 0;
}

interface Membership {
	id: number | -1;
	status: number | -1;
	start_date: string | '';
	end_date: string | '';
	parent_member_id: number | -1;
	subscription_model: Subscription;
}

interface BankAccount {
	id: number | -1;
	mandate_date_signed: string | '';
	bank: string | '';
	account_holder_name: string | '';
	iban: string | '';
	bic: string | '';
	mandate_reference: string | '';
}

interface Licence {
	id: number | -1;
	status: number | -1;
	number: string | '';
	issued_date: string | '';
	expiration_date: string | '';
	country: string | '';
	categories: LicenceCategory[];
}

interface LicenceCategory {
	id: number | -1;
	category: string | '';
}

interface User {
	email: string | '';
	first_name: string | '';
	last_name: string | '';
	password: string | '';
	phone: string | '';
	notes: string | '';
	address: string | '';
	zip_code: string | '';
	city: string | '';
	status: number | -1;
	id: number | -1;
	role_id: number | -1;
	dateofbirth: string | '';
	company: string | '';
	profile_picture: string | '';
	payment_status: number | -1;
	membership: Membership;
	bank_account: BankAccount;
	licence: Licence;
	notes: string | '';
}

declare global {
	namespace App {
		// interface Error {}
		interface Locals {
			user: User;
			users: User[];
			subscriptions: Subscription[];
			licence_categories: LicenceCategory[];
		}
		interface Types {
			licenceCategory: LicenceCategory;
			subscription: Subscription;
		}
		// interface PageData {}
		// interface Platform {}
	}
}

export {};
