import { Ref } from 'vue';

export interface Dataset {
    [key: string]: string | Ref<string>| boolean | Array<Title> |  Array<Description>|  Array<Person> | number | (IErrorMessage | undefined) | Coverage;
	language: Ref<string>;
	// licenses: Array<number>;
	rights: boolean;
	type: string;
	creating_corporation: string;
    titles: Array<Title>;
    descriptions: Array<Description>;
    authors: Array<Person>;
    contributors: Array<Person>;
    project_id?: number;
    embargo_date?: string,
    coverage: Coverage,
    errors?: IErrorMessage;
	// async (user): Promise<void>;
}

export interface Title {
    value: string;
    type: string;
    language: string | Ref<string>;
}

export interface Description {
    value: string;
    type: string;
    language: string | Ref<string>;
}

export interface Person {
    id: number;
    name: string;
    email: string;
    name_type: string;
    identifier_orcid: string;
    datasetCount: string;
    created_at: string;
}

interface IErrorMessage {
	[key: string]: Array<string>;
}

export interface Coverage {
    x_min?: number;
    y_min?: number;
    x_max?: number;
    y_max?: number;
    elevation_min?: number;
    elevation_max?: number;
    elevation_absolut?: number;

    depth_min?: number;
    depth_max?: number;
    depth_absolut?: number;

    time_min?: number,
    time_max?: number,
    time_absolut?: number
}