/*
Espe | Ein schlichtes Werkzeug zur Mitglieder-Verwaltung | Backend
Copyright (C) 2024 Christian Fraß

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public 
License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later 
version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied 
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see 
<https://www.gnu.org/licenses/>. 
 */

namespace _espe.type
{
	
	/**
	 */
	export type admin_id = int;
	
	
	/**
	 */
	export type admin_object = {
		name : string;
		email_address : (null | string);
		password_image : string;
		password_fail_count : int;
	};
	
	
	/**
	 */
	export type member_id = int;
	
	
	/**
	 */
	export type member_object = {
		membership_number : (null | string);
		name_real_value : string;
		name_real_index : int;
		email_address_private : (null | string);
		groups : Array<string>;
		registered : boolean;
		enabled : boolean;
		email_use_veiled_address : boolean;
		email_use_nominal_address : boolean;
		email_redirect_to_private_address : boolean;
		email_allow_sending : boolean;
		password_image : (null | string);
		password_change_last_attempt : (null | int);
		password_change_token : (null | string);
	};
	
	
	/**
	 */
	export type invite_id = int;
	
	
	/**
	 */
	export type invite_key = string;
	
	
	/**
	 */
	export enum invite_prefill_mode {
		hidden,
		locked,
		free,
	};


	/**
	 * @tood use strings instead of numbers
	 */
	export type invite_prefill_mode_raw = (
		0
		|
		1
		|
		2
	);
	
	
	/**
	 */
	export type invite_object = {
		key : invite_key;
		expiry : (null | int);
		membership_number_mode : invite_prefill_mode;
		membership_number_value : (null | string);
		name_mode : invite_prefill_mode;
		name_value : string;
		email_address_mode : invite_prefill_mode;
		email_address_value : (null | string);
		groups_mode : invite_prefill_mode;
		groups_value : Array<string>;
	};
	
}
