/* tslint:disable */
/* eslint-disable */

export type ValueTypes = {
    ["AccountGenderEnum"]:AccountGenderEnum;
	["AccountModel"]: AliasType<{
	_id?:true,
	organisationId?:true,
	createdBy?:true,
	updatedBy?:true,
	deletedBy?:true,
	createdAt?:true,
	updatedAt?:true,
	r?:true,
	w?:true,
	d?:true,
	types?:true,
	organisationIds?:true,
	email?:true,
	userName?:true,
	firstName?:true,
	lastName?:true,
	profilePicture?:ValueTypes["ImageComponent"],
	phoneNumber?:true,
	gender?:true,
	birthDate?:true,
	getAge?:true,
	address?:ValueTypes["AddressComponent"],
	language?:true,
	settings?:ValueTypes["SettingsComponent"],
	paymentInfo?:ValueTypes["AccountPaymentInfo"],
	payoutInfo?:ValueTypes["AccountPayoutInfo"],
	terms?:true,
	favLikes?:ValueTypes["FavoriteComponent"],
		__typename?: true
}>;
	["AccountPaymentInfo"]: AliasType<{
	stripeInfo?:ValueTypes["StripeInfo"],
	paymentMethods?:ValueTypes["PaymentMethodDetail"],
	billingInfos?:ValueTypes["BillingAddressComponent"],
		__typename?: true
}>;
	["AccountPayoutInfo"]: AliasType<{
	stripeInfo?:ValueTypes["StripePayoutInfo"],
		__typename?: true
}>;
	["AccountTypeEnum"]:AccountTypeEnum;
	["AddressComponent"]: AliasType<{
	number?:true,
	street?:true,
	streetBis?:true,
	floor?:true,
	box?:true,
	zip?:true,
	state?:true,
	city?:true,
	country?:true,
		__typename?: true
}>;
	["AddressInput"]: {
	number?:string,
	street?:string,
	streetBis?:string,
	floor?:string,
	box?:string,
	zip?:string,
	state?:string,
	city:string,
	country:string
};
	["AddressStrictComponent"]: AliasType<{
	number?:true,
	street?:true,
	zip?:true,
	city?:true,
	country?:true,
	streetBis?:true,
	floor?:true,
	box?:true,
	state?:true,
		__typename?: true
}>;
	["AvailableTranslation"]:AvailableTranslation;
	["BillingAddressComponent"]: AliasType<{
	firstName?:true,
	lastName?:true,
	address?:ValueTypes["AddressStrictComponent"],
	email?:true,
	default?:true,
	customTags?:true,
	company?:true,
	vatNumber?:true,
	fiscalForm?:true,
	_id?:true,
		__typename?: true
}>;
	["cardBrandEnum"]:cardBrandEnum;
	["CardInfo"]: AliasType<{
	brand?:true,
	country?:true,
	exp_month?:true,
	exp_year?:true,
	last4?:true,
		__typename?: true
}>;
	["cardTypeEnum"]:cardTypeEnum;
	["CategoryModel"]: AliasType<{
	_id?:true,
	organisationId?:true,
	createdBy?:true,
	updatedBy?:true,
	deletedBy?:true,
	createdAt?:true,
	updatedAt?:true,
	r?:true,
	w?:true,
	d?:true,
	title?:ValueTypes["TranslatableComponent"],
	teaser?:ValueTypes["TranslatableComponent"],
	cover?:ValueTypes["ImageComponent"],
	thumbnail?:ValueTypes["ImageComponent"],
	extraImages?:ValueTypes["ImageComponent"],
	content?:ValueTypes["TranslatableComponent"],
	seo?:ValueTypes["SEOField"],
	urls?:ValueTypes["TranslatableComponent"],
	ressourceType?:true,
	colorCode?:true,
		__typename?: true
}>;
	/** The javascript `Date` as string. Type represents date and time as the ISO Date string. */
["DateTime"]:unknown;
	["EditAccountInput"]: {
	userName?:string,
	firstName?:string,
	lastName?:string,
	profilePicture?:ValueTypes["ImageInput"],
	phoneNumber?:string,
	gender?:ValueTypes["AccountGenderEnum"],
	birthDate?:ValueTypes["DateTime"],
	address?:ValueTypes["AddressInput"],
	language?:ValueTypes["AvailableTranslation"],
	settings?:ValueTypes["SettingsInput"][]
};
	["EditCategoryInput"]: {
	ressourceType:ValueTypes["RessourceEnum"],
	title:ValueTypes["TranslatableInput"],
	content?:ValueTypes["TranslatableInput"],
	colorCode?:string
};
	["EditEmailSettingsInput"]: {
	subject?:ValueTypes["TranslatableInput"],
	body?:ValueTypes["TranslatableInput"],
	type?:string,
	custom?:boolean,
	templateId?:ValueTypes["TranslatableInput"],
	fromEmail:string,
	fromName:string,
	replyToEmail:string,
	cci?:string[],
	smsSettings?:ValueTypes["SmsSettingsComponentInput"],
	slackSettings?:ValueTypes["SlackSettingsComponentInput"]
};
	["EditErrorSettingsInput"]: {
	subject?:ValueTypes["TranslatableInput"],
	body?:ValueTypes["TranslatableInput"]
};
	["EditListInput"]: {
	title?:ValueTypes["TranslatableInput"],
	teaser?:ValueTypes["TranslatableInput"],
	cover?:ValueTypes["ImageInput"],
	thumbnail?:ValueTypes["ImageInput"],
	content?:ValueTypes["TranslatableInput"],
	seo?:ValueTypes["SEOInput"],
	urls?:ValueTypes["TranslatableInput"],
	ressourceType?:ValueTypes["ListEnum"],
	colorCode?:string
};
	["EditPageInput"]: {
	title?:string,
	label?:string,
	content?:ValueTypes["JSONObject"],
	position?:number,
	toComplete?:boolean
};
	["EditProjectSettingsInput"]: {
	value?:string
};
	["EmailSettingsModel"]: AliasType<{
	_id?:true,
	organisationId?:true,
	createdBy?:true,
	updatedBy?:true,
	deletedBy?:true,
	createdAt?:true,
	updatedAt?:true,
	r?:true,
	w?:true,
	d?:true,
	type?:true,
	key?:true,
	subject?:ValueTypes["TranslatableComponent"],
	body?:ValueTypes["TranslatableComponent"],
	custom?:true,
	templateId?:ValueTypes["TranslatableComponent"],
	fromEmail?:true,
	fromName?:true,
	replyToEmail?:true,
	cci?:true,
	availableFields?:true,
	templateSample?:true,
	smsSettings?:ValueTypes["SmsSettingsComponent"],
	pushSettings?:ValueTypes["PushNotifComponent"],
	slackSettings?:ValueTypes["SlackSettingsComponent"],
		__typename?: true
}>;
	["EnginePathComponent"]: AliasType<{
	ressourceModel?:true,
	ressourceId?:true,
		__typename?: true
}>;
	["ErrorSettingsModel"]: AliasType<{
	_id?:true,
	organisationId?:true,
	createdBy?:true,
	updatedBy?:true,
	deletedBy?:true,
	createdAt?:true,
	updatedAt?:true,
	r?:true,
	w?:true,
	d?:true,
	type?:true,
	key?:true,
	value?:true,
	subject?:ValueTypes["TranslatableComponent"],
	body?:ValueTypes["TranslatableComponent"],
	availableFields?:true,
		__typename?: true
}>;
	["FavoriteComponent"]: AliasType<{
	ressourceId?:true,
	ressourceType?:true,
	addedAt?:true,
	favorite?:true,
	liked?:true,
		__typename?: true
}>;
	["FirebaseTokenResult"]: AliasType<{
	localId?:true,
	email?:true,
	displayName?:true,
	idToken?:true,
	registered?:true,
	refreshToken?:true,
	expiresIn?:true,
		__typename?: true
}>;
	["GetArgs"]: {
	limit:number,
	skip:number,
	sort?:string
};
	["IEngineSchema"]:AliasType<{
		_id?:true,
	organisationId?:true,
	paths?:ValueTypes["EnginePathComponent"],
	by?:ValueTypes["MetaBy"],
	permissions?:ValueTypes["MetaPermissions"],
	createdAt?:true,
	updatedAt?:true;
		['...on PageSchema']?: Omit<ValueTypes["PageSchema"],keyof ValueTypes["IEngineSchema"]>;
		__typename?: true
}>;
	["ImageComponent"]: AliasType<{
	title?:true,
	fileType?:true,
	large?:true,
	medium?:true,
	small?:true,
		__typename?: true
}>;
	["ImageInput"]: {
	title?:string,
	fileType?:string,
	large:string,
	medium?:string,
	small?:string
};
	/** The `JSONObject` scalar type represents JSON objects as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */
["JSONObject"]:unknown;
	["LinkEmailInput"]: {
	email:string,
	password:string,
	idToken:string
};
	["ListEnum"]:ListEnum;
	["ListModel"]: AliasType<{
	_id?:true,
	organisationId?:true,
	createdBy?:true,
	updatedBy?:true,
	deletedBy?:true,
	createdAt?:true,
	updatedAt?:true,
	r?:true,
	w?:true,
	d?:true,
	title?:ValueTypes["TranslatableComponent"],
	teaser?:ValueTypes["TranslatableComponent"],
	cover?:ValueTypes["ImageComponent"],
	thumbnail?:ValueTypes["ImageComponent"],
	extraImages?:ValueTypes["ImageComponent"],
	content?:ValueTypes["TranslatableComponent"],
	seo?:ValueTypes["SEOField"],
	urls?:ValueTypes["TranslatableComponent"],
	ressourceType?:true,
	colorCode?:true,
		__typename?: true
}>;
	["LoginInput"]: {
	email:string,
	password:string
};
	["MetaBy"]: AliasType<{
	createdBy?:true,
	updatedBy?:true,
	deletedBy?:true,
		__typename?: true
}>;
	["MetaPermissions"]: AliasType<{
	r?:true,
	w?:true,
	d?:true,
		__typename?: true
}>;
	["ModelLoadersEnum"]:ModelLoadersEnum;
	["Mutation"]: AliasType<{
updateMe?: [{	input:ValueTypes["EditAccountInput"]},ValueTypes["AccountModel"]],
updateMeEmail?: [{	input:ValueTypes["NewEmailInput"]},ValueTypes["AccountModel"]],
updateMePassword?: [{	input:ValueTypes["NewPasswordInput"]},ValueTypes["AccountModel"]],
resetPassword?: [{	input:ValueTypes["ResetPasswordInput"]},ValueTypes["SimpleResult"]],
registerGuest?: [{	otherInfo:ValueTypes["EditAccountInput"],	input:ValueTypes["LinkEmailInput"]},ValueTypes["AccountModel"]],
accountsAddOne?: [{	input:ValueTypes["NewAccountInputAdmin"]},ValueTypes["AccountModel"]],
accountsEditOne?: [{	input:ValueTypes["EditAccountInput"],	id:string},ValueTypes["AccountModel"]],
accountsDeleteOne?: [{	userType:ValueTypes["AccountTypeEnum"],	id:string},ValueTypes["AccountModel"]],
register?: [{	input:ValueTypes["NewAccountInput"]},ValueTypes["AccountModel"]],
categoriesAddOne?: [{	input:ValueTypes["NewCategoryInput"]},ValueTypes["CategoryModel"]],
categoriesEditOne?: [{	input:ValueTypes["EditCategoryInput"],	id:string},ValueTypes["CategoryModel"]],
categoriesDeleteOne?: [{	id:string},ValueTypes["CategoryModel"]],
emailsSettingsAddOne?: [{	input:ValueTypes["NewEmailSettingsInput"]},ValueTypes["EmailSettingsModel"]],
emailsSettingsEditOne?: [{	input:ValueTypes["EditEmailSettingsInput"],	id:string},ValueTypes["EmailSettingsModel"]],
emailsSettingsDeleteOne?: [{	id:string},ValueTypes["EmailSettingsModel"]],
projectSettingsAddOne?: [{	input:ValueTypes["NewProjectSettingsInput"]},ValueTypes["ProjectSettingModel"]],
projectSettingsEditOne?: [{	input:ValueTypes["EditProjectSettingsInput"],	id:string},ValueTypes["ProjectSettingModel"]],
projectSettingsDeleteOne?: [{	id:string},ValueTypes["ProjectSettingModel"]],
listsAddOne?: [{	input:ValueTypes["NewListInput"]},ValueTypes["ListModel"]],
listsEditOne?: [{	input:ValueTypes["EditListInput"],	id:string},ValueTypes["ListModel"]],
listsDeleteOne?: [{	id:string},ValueTypes["ListModel"]],
pagesAddOne?: [{	input:ValueTypes["NewPageInput"]},ValueTypes["PageSchema"]],
pagesEditOne?: [{	input:ValueTypes["EditPageInput"],	id:string},ValueTypes["PageSchema"]],
pagesDeleteOne?: [{	id:string},ValueTypes["PageSchema"]],
	refreshCaching?:ValueTypes["SuccessResponse"],
errorSettingsAddOne?: [{	input:ValueTypes["NewErrorSettingsInput"]},ValueTypes["ErrorSettingsModel"]],
errorSettingsEditOne?: [{	input:ValueTypes["EditErrorSettingsInput"],	id:string},ValueTypes["ErrorSettingsModel"]],
errorSettingsDeleteOne?: [{	id:string},ValueTypes["ErrorSettingsModel"]],
		__typename?: true
}>;
	["NewAccountInput"]: {
	email:string,
	password:string,
	passwordConfirmation:string,
	userName?:string,
	firstName?:string,
	lastName?:string,
	profilePicture?:ValueTypes["ImageInput"],
	phoneNumber?:string,
	gender?:ValueTypes["AccountGenderEnum"],
	birthDate?:ValueTypes["DateTime"],
	address?:ValueTypes["AddressInput"],
	language?:ValueTypes["AvailableTranslation"],
	settings?:ValueTypes["SettingsInput"][],
	terms:boolean
};
	["NewAccountInputAdmin"]: {
	type:ValueTypes["AccountTypeEnum"],
	organisationIds?:string[],
	email:string,
	userName?:string,
	firstName?:string,
	lastName?:string,
	profilePicture?:ValueTypes["ImageInput"],
	phoneNumber?:string,
	gender?:ValueTypes["AccountGenderEnum"],
	birthDate?:ValueTypes["DateTime"],
	address?:ValueTypes["AddressInput"],
	language?:ValueTypes["AvailableTranslation"],
	settings?:ValueTypes["SettingsInput"][]
};
	["NewCategoryInput"]: {
	ressourceType:ValueTypes["RessourceEnum"],
	title:ValueTypes["TranslatableInput"],
	content?:ValueTypes["TranslatableInput"],
	colorCode?:string
};
	["NewEmailInput"]: {
	newEmail:string
};
	["NewEmailSettingsInput"]: {
	subject?:ValueTypes["TranslatableInput"],
	body?:ValueTypes["TranslatableInput"],
	type?:string,
	key:string,
	custom?:boolean,
	templateId?:ValueTypes["TranslatableInput"],
	fromEmail:string,
	fromName:string,
	replyToEmail:string,
	cci?:string[],
	smsSettings?:ValueTypes["SmsSettingsComponentInput"],
	slackSettings?:ValueTypes["SlackSettingsComponentInput"]
};
	["NewErrorSettingsInput"]: {
	subject?:ValueTypes["TranslatableInput"],
	body:ValueTypes["TranslatableInput"],
	type?:string,
	key:string,
	value:string
};
	["NewListInput"]: {
	title:ValueTypes["TranslatableInput"],
	teaser?:ValueTypes["TranslatableInput"],
	cover?:ValueTypes["ImageInput"],
	thumbnail?:ValueTypes["ImageInput"],
	content?:ValueTypes["TranslatableInput"],
	seo?:ValueTypes["SEOInput"],
	urls?:ValueTypes["TranslatableInput"],
	ressourceType:ValueTypes["ListEnum"],
	colorCode?:string
};
	["NewPageInput"]: {
	title:string,
	label?:string,
	content?:ValueTypes["JSONObject"],
	position?:number,
	toComplete?:boolean
};
	["NewPasswordInput"]: {
	oldPassword:string,
	newPassword:string,
	newPasswordConfirmation:string
};
	["NewProjectSettingsInput"]: {
	key:string,
	value:string
};
	["PageSchema"]: AliasType<{
	title?:true,
	label?:true,
	content?:true,
	position?:true,
	toComplete?:true,
	_id?:true,
	organisationId?:true,
	paths?:ValueTypes["EnginePathComponent"],
	by?:ValueTypes["MetaBy"],
	permissions?:ValueTypes["MetaPermissions"],
	createdAt?:true,
	updatedAt?:true,
		__typename?: true
}>;
	["PaymentMethodDetail"]: AliasType<{
	_id?:true,
	sPayMethodId?:true,
	default?:true,
	nameOnCard?:true,
	type?:true,
	cardInfo?:ValueTypes["CardInfo"],
		__typename?: true
}>;
	["ProjectSettingModel"]: AliasType<{
	_id?:true,
	organisationId?:true,
	createdBy?:true,
	updatedBy?:true,
	deletedBy?:true,
	createdAt?:true,
	updatedAt?:true,
	r?:true,
	w?:true,
	d?:true,
	type?:true,
	key?:true,
	value?:true,
		__typename?: true
}>;
	["PushNotifComponent"]: AliasType<{
	subject?:ValueTypes["TranslatableComponent"],
	text?:ValueTypes["TranslatableComponent"],
		__typename?: true
}>;
	["Query"]: AliasType<{
	me?:ValueTypes["AccountModel"],
login?: [{	refreshToken?:string,	creds?:ValueTypes["LoginInput"]},ValueTypes["FirebaseTokenResult"]],
magicLink?: [{	input:ValueTypes["ResetPasswordInput"]},ValueTypes["SimpleResult"]],
accountsGetOne?: [{	id:string},ValueTypes["AccountModel"]],
accountsGetMany?: [{	pagination?:ValueTypes["GetArgs"]},ValueTypes["AccountModel"]],
categoriesGetOne?: [{	id:string},ValueTypes["CategoryModel"]],
categoriesGetMany?: [{	search?:string,	ressourceType:ValueTypes["RessourceEnum"],	pagination?:ValueTypes["GetArgs"]},ValueTypes["CategoryModel"]],
categoriesGetCount?: [{	search?:string,	ressourceType:ValueTypes["RessourceEnum"],	pagination?:ValueTypes["GetArgs"]},true],
emailsSettingsGetOne?: [{	id:string},ValueTypes["EmailSettingsModel"]],
emailsSettingsGetMany?: [{	search?:string,	pagination?:ValueTypes["GetArgs"]},ValueTypes["EmailSettingsModel"]],
emailsSettingsGetCount?: [{	search?:string,	pagination?:ValueTypes["GetArgs"]},true],
projectSettingsGetOne?: [{	id:string},ValueTypes["ProjectSettingModel"]],
projectSettingsGetMany?: [{	_ids?:string[],	search?:string,	afterCreatedAt?:ValueTypes["DateTime"],	afterUpdatedAt?:ValueTypes["DateTime"],	pagination?:ValueTypes["GetArgs"],	type?:ValueTypes["SettingsType"]},ValueTypes["ProjectSettingModel"]],
projectSettingsGetCount?: [{	_ids?:string[],	search?:string,	afterCreatedAt?:ValueTypes["DateTime"],	afterUpdatedAt?:ValueTypes["DateTime"],	pagination?:ValueTypes["GetArgs"],	type?:ValueTypes["SettingsType"]},true],
listsGetOne?: [{	id:string},ValueTypes["ListModel"]],
listsGetMany?: [{	search?:string,	ressourceType:ValueTypes["ListEnum"],	pagination?:ValueTypes["GetArgs"]},ValueTypes["ListModel"]],
listsGetCount?: [{	search?:string,	ressourceType:ValueTypes["ListEnum"],	pagination?:ValueTypes["GetArgs"]},true],
pagesGetOne?: [{	id:string},ValueTypes["PageSchema"]],
pagesGetMany?: [{	_ids?:string[],	search?:string,	afterCreatedAt?:ValueTypes["DateTime"],	afterUpdatedAt?:ValueTypes["DateTime"],	pagination?:ValueTypes["GetArgs"]},ValueTypes["PageSchema"]],
pagesGetCount?: [{	_ids?:string[],	search?:string,	afterCreatedAt?:ValueTypes["DateTime"],	afterUpdatedAt?:ValueTypes["DateTime"],	pagination?:ValueTypes["GetArgs"]},true],
errorSettingsGetOne?: [{	id:string},ValueTypes["ErrorSettingsModel"]],
errorSettingsGetMany?: [{	search?:string,	pagination?:ValueTypes["GetArgs"]},ValueTypes["ErrorSettingsModel"]],
errorSettingsGetCount?: [{	search?:string,	pagination?:ValueTypes["GetArgs"]},true],
		__typename?: true
}>;
	["ResetPasswordInput"]: {
	email:string
};
	["RessourceEnum"]:RessourceEnum;
	["SEOField"]: AliasType<{
	title?:ValueTypes["TranslatableComponent"],
	description?:ValueTypes["TranslatableComponent"],
	keywords?:ValueTypes["TranslatableComponent"],
	thumbnail?:ValueTypes["ImageComponent"],
		__typename?: true
}>;
	["SEOInput"]: {
	title:ValueTypes["TranslatableInput"],
	description:ValueTypes["TranslatableInput"],
	keywords?:ValueTypes["TranslatableInput"],
	thumbnail?:ValueTypes["ImageInput"]
};
	["SettingsComponent"]: AliasType<{
	type?:true,
	email?:true,
	pushNotifications?:true,
	sms?:true,
		__typename?: true
}>;
	["SettingsInput"]: {
	type:ValueTypes["SettingsTypeEnum"],
	email?:boolean,
	pushNotifications?:boolean,
	sms?:boolean
};
	["SettingsType"]:SettingsType;
	["SettingsTypeEnum"]:SettingsTypeEnum;
	["SimpleResult"]: AliasType<{
	message?:true,
		__typename?: true
}>;
	["SlackActionInfo"]: AliasType<{
	text?:true,
	url?:true,
	style?:true,
		__typename?: true
}>;
	["SlackActionInfoInput"]: {
	text:string,
	url:string,
	style?:ValueTypes["SlackActionStyleEnum"]
};
	["SlackActionStyleEnum"]:SlackActionStyleEnum;
	["SlackSettingsComponent"]: AliasType<{
	webhookUrls?:true,
	username?:true,
	text?:true,
	icon?:true,
	actions?:ValueTypes["SlackActionInfo"],
		__typename?: true
}>;
	["SlackSettingsComponentInput"]: {
	webhookUrls:string[],
	username?:string,
	text:string,
	icon?:string,
	actions?:ValueTypes["SlackActionInfoInput"][]
};
	["SmsSettingsComponent"]: AliasType<{
	text?:ValueTypes["TranslatableComponent"],
		__typename?: true
}>;
	["SmsSettingsComponentInput"]: {
	text:ValueTypes["TranslatableInput"]
};
	["StripeInfo"]: AliasType<{
	customerId?:true,
		__typename?: true
}>;
	["StripePayoutInfo"]: AliasType<{
	accountId?:true,
	chargesEnabled?:true,
	payoutsEnabled?:true,
	detailsSubmitted?:true,
		__typename?: true
}>;
	["SuccessResponse"]: AliasType<{
	success?:true,
		__typename?: true
}>;
	["TranslatableComponent"]: AliasType<{
	en?:true,
	fr?:true,
	nl?:true,
	de?:true,
		__typename?: true
}>;
	["TranslatableInput"]: {
	en?:string,
	fr:string,
	nl?:string,
	de?:string
}
  }

export type PartialObjects = {
    ["AccountGenderEnum"]:AccountGenderEnum,
	["AccountModel"]: {
		__typename?: "AccountModel";
			_id?:string,
			organisationId?:string,
			createdBy?:string,
			updatedBy?:string,
			deletedBy?:string,
			createdAt?:PartialObjects["DateTime"],
			updatedAt?:PartialObjects["DateTime"],
			r?:string[],
			w?:string[],
			d?:string[],
			types?:PartialObjects["AccountTypeEnum"][],
			organisationIds?:string[],
			email?:string,
			userName?:string,
			firstName?:string,
			lastName?:string,
			profilePicture?:PartialObjects["ImageComponent"],
			phoneNumber?:string,
			gender?:PartialObjects["AccountGenderEnum"],
			birthDate?:PartialObjects["DateTime"],
			getAge?:number,
			address?:PartialObjects["AddressComponent"],
			language?:PartialObjects["AvailableTranslation"],
			settings?:PartialObjects["SettingsComponent"][],
			paymentInfo?:PartialObjects["AccountPaymentInfo"],
			payoutInfo?:PartialObjects["AccountPayoutInfo"],
			terms?:boolean,
			favLikes?:(PartialObjects["FavoriteComponent"] | undefined)[]
	},
	["AccountPaymentInfo"]: {
		__typename?: "AccountPaymentInfo";
			stripeInfo?:PartialObjects["StripeInfo"],
			paymentMethods?:PartialObjects["PaymentMethodDetail"][],
			billingInfos?:PartialObjects["BillingAddressComponent"][]
	},
	["AccountPayoutInfo"]: {
		__typename?: "AccountPayoutInfo";
			stripeInfo?:PartialObjects["StripePayoutInfo"]
	},
	["AccountTypeEnum"]:AccountTypeEnum,
	["AddressComponent"]: {
		__typename?: "AddressComponent";
			number?:string,
			street?:string,
			streetBis?:string,
			floor?:string,
			box?:string,
			zip?:string,
			state?:string,
			city?:string,
			country?:string
	},
	["AddressInput"]: {
	number?:string,
	street?:string,
	streetBis?:string,
	floor?:string,
	box?:string,
	zip?:string,
	state?:string,
	city:string,
	country:string
},
	["AddressStrictComponent"]: {
		__typename?: "AddressStrictComponent";
			number?:string,
			street?:string,
			zip?:string,
			city?:string,
			country?:string,
			streetBis?:string,
			floor?:string,
			box?:string,
			state?:string
	},
	["AvailableTranslation"]:AvailableTranslation,
	["BillingAddressComponent"]: {
		__typename?: "BillingAddressComponent";
			firstName?:string,
			lastName?:string,
			address?:PartialObjects["AddressStrictComponent"],
			email?:string,
			default?:boolean,
			customTags?:PartialObjects["JSONObject"],
			company?:string,
			vatNumber?:string,
			fiscalForm?:string,
			_id?:string
	},
	["cardBrandEnum"]:cardBrandEnum,
	["CardInfo"]: {
		__typename?: "CardInfo";
			brand?:PartialObjects["cardBrandEnum"],
			country?:string,
			exp_month?:number,
			exp_year?:number,
			last4?:string
	},
	["cardTypeEnum"]:cardTypeEnum,
	["CategoryModel"]: {
		__typename?: "CategoryModel";
			_id?:string,
			organisationId?:string,
			createdBy?:string,
			updatedBy?:string,
			deletedBy?:string,
			createdAt?:PartialObjects["DateTime"],
			updatedAt?:PartialObjects["DateTime"],
			r?:string[],
			w?:string[],
			d?:string[],
			title?:PartialObjects["TranslatableComponent"],
			teaser?:PartialObjects["TranslatableComponent"],
			cover?:PartialObjects["ImageComponent"],
			thumbnail?:PartialObjects["ImageComponent"],
			extraImages?:PartialObjects["ImageComponent"][],
			content?:PartialObjects["TranslatableComponent"],
			seo?:PartialObjects["SEOField"],
			urls?:PartialObjects["TranslatableComponent"],
			ressourceType?:PartialObjects["RessourceEnum"],
			colorCode?:string
	},
	/** The javascript `Date` as string. Type represents date and time as the ISO Date string. */
["DateTime"]:any,
	["EditAccountInput"]: {
	userName?:string,
	firstName?:string,
	lastName?:string,
	profilePicture?:PartialObjects["ImageInput"],
	phoneNumber?:string,
	gender?:PartialObjects["AccountGenderEnum"],
	birthDate?:PartialObjects["DateTime"],
	address?:PartialObjects["AddressInput"],
	language?:PartialObjects["AvailableTranslation"],
	settings?:PartialObjects["SettingsInput"][]
},
	["EditCategoryInput"]: {
	ressourceType:PartialObjects["RessourceEnum"],
	title:PartialObjects["TranslatableInput"],
	content?:PartialObjects["TranslatableInput"],
	colorCode?:string
},
	["EditEmailSettingsInput"]: {
	subject?:PartialObjects["TranslatableInput"],
	body?:PartialObjects["TranslatableInput"],
	type?:string,
	custom?:boolean,
	templateId?:PartialObjects["TranslatableInput"],
	fromEmail:string,
	fromName:string,
	replyToEmail:string,
	cci?:string[],
	smsSettings?:PartialObjects["SmsSettingsComponentInput"],
	slackSettings?:PartialObjects["SlackSettingsComponentInput"]
},
	["EditErrorSettingsInput"]: {
	subject?:PartialObjects["TranslatableInput"],
	body?:PartialObjects["TranslatableInput"]
},
	["EditListInput"]: {
	title?:PartialObjects["TranslatableInput"],
	teaser?:PartialObjects["TranslatableInput"],
	cover?:PartialObjects["ImageInput"],
	thumbnail?:PartialObjects["ImageInput"],
	content?:PartialObjects["TranslatableInput"],
	seo?:PartialObjects["SEOInput"],
	urls?:PartialObjects["TranslatableInput"],
	ressourceType?:PartialObjects["ListEnum"],
	colorCode?:string
},
	["EditPageInput"]: {
	title?:string,
	label?:string,
	content?:PartialObjects["JSONObject"],
	position?:number,
	toComplete?:boolean
},
	["EditProjectSettingsInput"]: {
	value?:string
},
	["EmailSettingsModel"]: {
		__typename?: "EmailSettingsModel";
			_id?:string,
			organisationId?:string,
			createdBy?:string,
			updatedBy?:string,
			deletedBy?:string,
			createdAt?:PartialObjects["DateTime"],
			updatedAt?:PartialObjects["DateTime"],
			r?:string[],
			w?:string[],
			d?:string[],
			type?:PartialObjects["SettingsType"],
			key?:string,
			subject?:PartialObjects["TranslatableComponent"],
			body?:PartialObjects["TranslatableComponent"],
			custom?:boolean,
			templateId?:PartialObjects["TranslatableComponent"],
			fromEmail?:string,
			fromName?:string,
			replyToEmail?:string,
			cci?:string[],
			availableFields?:string[],
			templateSample?:string,
			smsSettings?:PartialObjects["SmsSettingsComponent"],
			pushSettings?:PartialObjects["PushNotifComponent"],
			slackSettings?:PartialObjects["SlackSettingsComponent"]
	},
	["EnginePathComponent"]: {
		__typename?: "EnginePathComponent";
			ressourceModel?:PartialObjects["ModelLoadersEnum"],
			ressourceId?:string
	},
	["ErrorSettingsModel"]: {
		__typename?: "ErrorSettingsModel";
			_id?:string,
			organisationId?:string,
			createdBy?:string,
			updatedBy?:string,
			deletedBy?:string,
			createdAt?:PartialObjects["DateTime"],
			updatedAt?:PartialObjects["DateTime"],
			r?:string[],
			w?:string[],
			d?:string[],
			type?:PartialObjects["SettingsType"],
			key?:string,
			value?:string,
			subject?:PartialObjects["TranslatableComponent"],
			body?:PartialObjects["TranslatableComponent"],
			availableFields?:string[]
	},
	["FavoriteComponent"]: {
		__typename?: "FavoriteComponent";
			ressourceId?:string,
			ressourceType?:PartialObjects["RessourceEnum"],
			addedAt?:PartialObjects["DateTime"],
			favorite?:boolean,
			liked?:boolean
	},
	["FirebaseTokenResult"]: {
		__typename?: "FirebaseTokenResult";
			localId?:string,
			email?:string,
			displayName?:string,
			idToken?:string,
			registered?:boolean,
			refreshToken?:string,
			expiresIn?:string
	},
	["GetArgs"]: {
	limit:number,
	skip:number,
	sort?:string
},
	["IEngineSchema"]:{
		_id?:string;
	organisationId?:string;
	paths?:PartialObjects["EnginePathComponent"][];
	by?:PartialObjects["MetaBy"];
	permissions?:PartialObjects["MetaPermissions"];
	createdAt?:PartialObjects["DateTime"];
	updatedAt?:PartialObjects["DateTime"]
} & (PartialObjects["PageSchema"]),
	["ImageComponent"]: {
		__typename?: "ImageComponent";
			title?:string,
			fileType?:string,
			large?:string,
			medium?:string,
			small?:string
	},
	["ImageInput"]: {
	title?:string,
	fileType?:string,
	large:string,
	medium?:string,
	small?:string
},
	/** The `JSONObject` scalar type represents JSON objects as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */
["JSONObject"]:any,
	["LinkEmailInput"]: {
	email:string,
	password:string,
	idToken:string
},
	["ListEnum"]:ListEnum,
	["ListModel"]: {
		__typename?: "ListModel";
			_id?:string,
			organisationId?:string,
			createdBy?:string,
			updatedBy?:string,
			deletedBy?:string,
			createdAt?:PartialObjects["DateTime"],
			updatedAt?:PartialObjects["DateTime"],
			r?:string[],
			w?:string[],
			d?:string[],
			title?:PartialObjects["TranslatableComponent"],
			teaser?:PartialObjects["TranslatableComponent"],
			cover?:PartialObjects["ImageComponent"],
			thumbnail?:PartialObjects["ImageComponent"],
			extraImages?:PartialObjects["ImageComponent"][],
			content?:PartialObjects["TranslatableComponent"],
			seo?:PartialObjects["SEOField"],
			urls?:PartialObjects["TranslatableComponent"],
			ressourceType?:PartialObjects["ListEnum"],
			colorCode?:string
	},
	["LoginInput"]: {
	email:string,
	password:string
},
	["MetaBy"]: {
		__typename?: "MetaBy";
			createdBy?:string,
			updatedBy?:string,
			deletedBy?:string
	},
	["MetaPermissions"]: {
		__typename?: "MetaPermissions";
			r?:string[],
			w?:string[],
			d?:string[]
	},
	["ModelLoadersEnum"]:ModelLoadersEnum,
	["Mutation"]: {
		__typename?: "Mutation";
			updateMe?:PartialObjects["AccountModel"],
			updateMeEmail?:PartialObjects["AccountModel"],
			updateMePassword?:PartialObjects["AccountModel"],
			resetPassword?:PartialObjects["SimpleResult"],
			registerGuest?:PartialObjects["AccountModel"],
			accountsAddOne?:PartialObjects["AccountModel"],
			accountsEditOne?:PartialObjects["AccountModel"],
			accountsDeleteOne?:PartialObjects["AccountModel"],
			register?:PartialObjects["AccountModel"],
			categoriesAddOne?:PartialObjects["CategoryModel"],
			categoriesEditOne?:PartialObjects["CategoryModel"],
			categoriesDeleteOne?:PartialObjects["CategoryModel"],
			emailsSettingsAddOne?:PartialObjects["EmailSettingsModel"],
			emailsSettingsEditOne?:PartialObjects["EmailSettingsModel"],
			emailsSettingsDeleteOne?:PartialObjects["EmailSettingsModel"],
			projectSettingsAddOne?:PartialObjects["ProjectSettingModel"],
			projectSettingsEditOne?:PartialObjects["ProjectSettingModel"],
			projectSettingsDeleteOne?:PartialObjects["ProjectSettingModel"],
			listsAddOne?:PartialObjects["ListModel"],
			listsEditOne?:PartialObjects["ListModel"],
			listsDeleteOne?:PartialObjects["ListModel"],
			pagesAddOne?:PartialObjects["PageSchema"],
			pagesEditOne?:PartialObjects["PageSchema"],
			pagesDeleteOne?:PartialObjects["PageSchema"],
			refreshCaching?:PartialObjects["SuccessResponse"],
			errorSettingsAddOne?:PartialObjects["ErrorSettingsModel"],
			errorSettingsEditOne?:PartialObjects["ErrorSettingsModel"],
			errorSettingsDeleteOne?:PartialObjects["ErrorSettingsModel"]
	},
	["NewAccountInput"]: {
	email:string,
	password:string,
	passwordConfirmation:string,
	userName?:string,
	firstName?:string,
	lastName?:string,
	profilePicture?:PartialObjects["ImageInput"],
	phoneNumber?:string,
	gender?:PartialObjects["AccountGenderEnum"],
	birthDate?:PartialObjects["DateTime"],
	address?:PartialObjects["AddressInput"],
	language?:PartialObjects["AvailableTranslation"],
	settings?:PartialObjects["SettingsInput"][],
	terms:boolean
},
	["NewAccountInputAdmin"]: {
	type:PartialObjects["AccountTypeEnum"],
	organisationIds?:string[],
	email:string,
	userName?:string,
	firstName?:string,
	lastName?:string,
	profilePicture?:PartialObjects["ImageInput"],
	phoneNumber?:string,
	gender?:PartialObjects["AccountGenderEnum"],
	birthDate?:PartialObjects["DateTime"],
	address?:PartialObjects["AddressInput"],
	language?:PartialObjects["AvailableTranslation"],
	settings?:PartialObjects["SettingsInput"][]
},
	["NewCategoryInput"]: {
	ressourceType:PartialObjects["RessourceEnum"],
	title:PartialObjects["TranslatableInput"],
	content?:PartialObjects["TranslatableInput"],
	colorCode?:string
},
	["NewEmailInput"]: {
	newEmail:string
},
	["NewEmailSettingsInput"]: {
	subject?:PartialObjects["TranslatableInput"],
	body?:PartialObjects["TranslatableInput"],
	type?:string,
	key:string,
	custom?:boolean,
	templateId?:PartialObjects["TranslatableInput"],
	fromEmail:string,
	fromName:string,
	replyToEmail:string,
	cci?:string[],
	smsSettings?:PartialObjects["SmsSettingsComponentInput"],
	slackSettings?:PartialObjects["SlackSettingsComponentInput"]
},
	["NewErrorSettingsInput"]: {
	subject?:PartialObjects["TranslatableInput"],
	body:PartialObjects["TranslatableInput"],
	type?:string,
	key:string,
	value:string
},
	["NewListInput"]: {
	title:PartialObjects["TranslatableInput"],
	teaser?:PartialObjects["TranslatableInput"],
	cover?:PartialObjects["ImageInput"],
	thumbnail?:PartialObjects["ImageInput"],
	content?:PartialObjects["TranslatableInput"],
	seo?:PartialObjects["SEOInput"],
	urls?:PartialObjects["TranslatableInput"],
	ressourceType:PartialObjects["ListEnum"],
	colorCode?:string
},
	["NewPageInput"]: {
	title:string,
	label?:string,
	content?:PartialObjects["JSONObject"],
	position?:number,
	toComplete?:boolean
},
	["NewPasswordInput"]: {
	oldPassword:string,
	newPassword:string,
	newPasswordConfirmation:string
},
	["NewProjectSettingsInput"]: {
	key:string,
	value:string
},
	["PageSchema"]: {
		__typename?: "PageSchema";
			title?:string,
			label?:string,
			content?:PartialObjects["JSONObject"],
			position?:number,
			toComplete?:boolean,
			_id?:string,
			organisationId?:string,
			paths?:PartialObjects["EnginePathComponent"][],
			by?:PartialObjects["MetaBy"],
			permissions?:PartialObjects["MetaPermissions"],
			createdAt?:PartialObjects["DateTime"],
			updatedAt?:PartialObjects["DateTime"]
	},
	["PaymentMethodDetail"]: {
		__typename?: "PaymentMethodDetail";
			_id?:string,
			sPayMethodId?:string,
			default?:boolean,
			nameOnCard?:string,
			type?:PartialObjects["cardTypeEnum"],
			cardInfo?:PartialObjects["CardInfo"]
	},
	["ProjectSettingModel"]: {
		__typename?: "ProjectSettingModel";
			_id?:string,
			organisationId?:string,
			createdBy?:string,
			updatedBy?:string,
			deletedBy?:string,
			createdAt?:PartialObjects["DateTime"],
			updatedAt?:PartialObjects["DateTime"],
			r?:string[],
			w?:string[],
			d?:string[],
			type?:PartialObjects["SettingsType"],
			key?:string,
			value?:string
	},
	["PushNotifComponent"]: {
		__typename?: "PushNotifComponent";
			subject?:PartialObjects["TranslatableComponent"],
			text?:PartialObjects["TranslatableComponent"]
	},
	["Query"]: {
		__typename?: "Query";
			me?:PartialObjects["AccountModel"],
			login?:PartialObjects["FirebaseTokenResult"],
			magicLink?:PartialObjects["SimpleResult"],
			accountsGetOne?:PartialObjects["AccountModel"],
			accountsGetMany?:PartialObjects["AccountModel"][],
			categoriesGetOne?:PartialObjects["CategoryModel"],
			categoriesGetMany?:PartialObjects["CategoryModel"][],
			categoriesGetCount?:number,
			emailsSettingsGetOne?:PartialObjects["EmailSettingsModel"],
			emailsSettingsGetMany?:PartialObjects["EmailSettingsModel"][],
			emailsSettingsGetCount?:number,
			projectSettingsGetOne?:PartialObjects["ProjectSettingModel"],
			projectSettingsGetMany?:PartialObjects["ProjectSettingModel"][],
			projectSettingsGetCount?:number,
			listsGetOne?:PartialObjects["ListModel"],
			listsGetMany?:PartialObjects["ListModel"][],
			listsGetCount?:number,
			pagesGetOne?:PartialObjects["PageSchema"],
			pagesGetMany?:PartialObjects["PageSchema"][],
			pagesGetCount?:number,
			errorSettingsGetOne?:PartialObjects["ErrorSettingsModel"],
			errorSettingsGetMany?:PartialObjects["ErrorSettingsModel"][],
			errorSettingsGetCount?:number
	},
	["ResetPasswordInput"]: {
	email:string
},
	["RessourceEnum"]:RessourceEnum,
	["SEOField"]: {
		__typename?: "SEOField";
			title?:PartialObjects["TranslatableComponent"],
			description?:PartialObjects["TranslatableComponent"],
			keywords?:PartialObjects["TranslatableComponent"],
			thumbnail?:PartialObjects["ImageComponent"]
	},
	["SEOInput"]: {
	title:PartialObjects["TranslatableInput"],
	description:PartialObjects["TranslatableInput"],
	keywords?:PartialObjects["TranslatableInput"],
	thumbnail?:PartialObjects["ImageInput"]
},
	["SettingsComponent"]: {
		__typename?: "SettingsComponent";
			type?:PartialObjects["SettingsTypeEnum"],
			email?:boolean,
			pushNotifications?:boolean,
			sms?:boolean
	},
	["SettingsInput"]: {
	type:PartialObjects["SettingsTypeEnum"],
	email?:boolean,
	pushNotifications?:boolean,
	sms?:boolean
},
	["SettingsType"]:SettingsType,
	["SettingsTypeEnum"]:SettingsTypeEnum,
	["SimpleResult"]: {
		__typename?: "SimpleResult";
			message?:string
	},
	["SlackActionInfo"]: {
		__typename?: "SlackActionInfo";
			text?:string,
			url?:string,
			style?:PartialObjects["SlackActionStyleEnum"]
	},
	["SlackActionInfoInput"]: {
	text:string,
	url:string,
	style?:PartialObjects["SlackActionStyleEnum"]
},
	["SlackActionStyleEnum"]:SlackActionStyleEnum,
	["SlackSettingsComponent"]: {
		__typename?: "SlackSettingsComponent";
			webhookUrls?:string[],
			username?:string,
			text?:string,
			icon?:string,
			actions?:PartialObjects["SlackActionInfo"][]
	},
	["SlackSettingsComponentInput"]: {
	webhookUrls:string[],
	username?:string,
	text:string,
	icon?:string,
	actions?:PartialObjects["SlackActionInfoInput"][]
},
	["SmsSettingsComponent"]: {
		__typename?: "SmsSettingsComponent";
			text?:PartialObjects["TranslatableComponent"]
	},
	["SmsSettingsComponentInput"]: {
	text:PartialObjects["TranslatableInput"]
},
	["StripeInfo"]: {
		__typename?: "StripeInfo";
			customerId?:string
	},
	["StripePayoutInfo"]: {
		__typename?: "StripePayoutInfo";
			accountId?:string,
			chargesEnabled?:boolean,
			payoutsEnabled?:boolean,
			detailsSubmitted?:boolean
	},
	["SuccessResponse"]: {
		__typename?: "SuccessResponse";
			success?:boolean
	},
	["TranslatableComponent"]: {
		__typename?: "TranslatableComponent";
			en?:string,
			fr?:string,
			nl?:string,
			de?:string
	},
	["TranslatableInput"]: {
	en?:string,
	fr:string,
	nl?:string,
	de?:string
}
  }

export enum AccountGenderEnum {
	m = "m",
	f = "f",
	other = "other"
}

export type AccountModel = {
	__typename?: "AccountModel",
	_id:string,
	organisationId?:string,
	createdBy?:string,
	updatedBy?:string,
	deletedBy?:string,
	createdAt:DateTime,
	updatedAt:DateTime,
	r:string[],
	w:string[],
	d:string[],
	types:AccountTypeEnum[],
	organisationIds?:string[],
	email:string,
	userName?:string,
	firstName?:string,
	lastName?:string,
	profilePicture?:ImageComponent,
	phoneNumber?:string,
	gender?:AccountGenderEnum,
	birthDate?:DateTime,
	getAge?:number,
	address?:AddressComponent,
	language?:AvailableTranslation,
	settings?:SettingsComponent[],
	paymentInfo?:AccountPaymentInfo,
	payoutInfo?:AccountPayoutInfo,
	terms:boolean,
	favLikes?:(FavoriteComponent | undefined)[]
}

export type AccountPaymentInfo = {
	__typename?: "AccountPaymentInfo",
	stripeInfo?:StripeInfo,
	paymentMethods?:PaymentMethodDetail[],
	billingInfos?:BillingAddressComponent[]
}

export type AccountPayoutInfo = {
	__typename?: "AccountPayoutInfo",
	stripeInfo?:StripePayoutInfo
}

export enum AccountTypeEnum {
	admin = "admin",
	user = "user",
	pro = "pro",
	public = "public",
	organisationOwner = "organisationOwner",
	storeManager = "storeManager"
}

export type AddressComponent = {
	__typename?: "AddressComponent",
	number?:string,
	street?:string,
	streetBis?:string,
	floor?:string,
	box?:string,
	zip?:string,
	state?:string,
	city:string,
	country:string
}

export type AddressInput = {
		number?:string,
	street?:string,
	streetBis?:string,
	floor?:string,
	box?:string,
	zip?:string,
	state?:string,
	city:string,
	country:string
}

export type AddressStrictComponent = {
	__typename?: "AddressStrictComponent",
	number:string,
	street:string,
	zip:string,
	city:string,
	country:string,
	streetBis?:string,
	floor?:string,
	box?:string,
	state?:string
}

export enum AvailableTranslation {
	en = "en",
	fr = "fr",
	nl = "nl",
	de = "de"
}

export type BillingAddressComponent = {
	__typename?: "BillingAddressComponent",
	firstName:string,
	lastName:string,
	address:AddressStrictComponent,
	email?:string,
	default?:boolean,
	customTags?:JSONObject,
	company?:string,
	vatNumber?:string,
	fiscalForm?:string,
	_id:string
}

export enum cardBrandEnum {
	amex = "amex",
	diners = "diners",
	discover = "discover",
	jcb = "jcb",
	mastercard = "mastercard",
	unionpay = "unionpay",
	visa = "visa",
	unknown = "unknown"
}

export type CardInfo = {
	__typename?: "CardInfo",
	brand:cardBrandEnum,
	country:string,
	exp_month:number,
	exp_year:number,
	last4:string
}

export enum cardTypeEnum {
	alipay = "alipay",
	au_becs_debit = "au_becs_debit",
	bacs_debit = "bacs_debit",
	bancontact = "bancontact",
	card = "card",
	eps = "eps",
	fpx = "fpx",
	giropay = "giropay",
	ideal = "ideal",
	p24 = "p24",
	sepa_debit = "sepa_debit",
	sofort = "sofort"
}

export type CategoryModel = {
	__typename?: "CategoryModel",
	_id:string,
	organisationId?:string,
	createdBy?:string,
	updatedBy?:string,
	deletedBy?:string,
	createdAt:DateTime,
	updatedAt:DateTime,
	r:string[],
	w:string[],
	d:string[],
	title:TranslatableComponent,
	teaser?:TranslatableComponent,
	cover?:ImageComponent,
	thumbnail?:ImageComponent,
	extraImages?:ImageComponent[],
	content?:TranslatableComponent,
	seo?:SEOField,
	urls?:TranslatableComponent,
	ressourceType:RessourceEnum,
	colorCode?:string
}

/** The javascript `Date` as string. Type represents date and time as the ISO Date string. */
export type DateTime = any

export type EditAccountInput = {
		userName?:string,
	firstName?:string,
	lastName?:string,
	profilePicture?:ImageInput,
	phoneNumber?:string,
	gender?:AccountGenderEnum,
	birthDate?:DateTime,
	address?:AddressInput,
	language?:AvailableTranslation,
	settings?:SettingsInput[]
}

export type EditCategoryInput = {
		ressourceType:RessourceEnum,
	title:TranslatableInput,
	content?:TranslatableInput,
	colorCode?:string
}

export type EditEmailSettingsInput = {
		subject?:TranslatableInput,
	body?:TranslatableInput,
	type?:string,
	custom?:boolean,
	templateId?:TranslatableInput,
	fromEmail:string,
	fromName:string,
	replyToEmail:string,
	cci?:string[],
	smsSettings?:SmsSettingsComponentInput,
	slackSettings?:SlackSettingsComponentInput
}

export type EditErrorSettingsInput = {
		subject?:TranslatableInput,
	body?:TranslatableInput
}

export type EditListInput = {
		title?:TranslatableInput,
	teaser?:TranslatableInput,
	cover?:ImageInput,
	thumbnail?:ImageInput,
	content?:TranslatableInput,
	seo?:SEOInput,
	urls?:TranslatableInput,
	ressourceType?:ListEnum,
	colorCode?:string
}

export type EditPageInput = {
		title?:string,
	label?:string,
	content?:JSONObject,
	position?:number,
	toComplete?:boolean
}

export type EditProjectSettingsInput = {
		value?:string
}

export type EmailSettingsModel = {
	__typename?: "EmailSettingsModel",
	_id:string,
	organisationId?:string,
	createdBy?:string,
	updatedBy?:string,
	deletedBy?:string,
	createdAt:DateTime,
	updatedAt:DateTime,
	r:string[],
	w:string[],
	d:string[],
	type:SettingsType,
	key:string,
	subject?:TranslatableComponent,
	body?:TranslatableComponent,
	custom:boolean,
	templateId?:TranslatableComponent,
	fromEmail:string,
	fromName:string,
	replyToEmail:string,
	cci?:string[],
	availableFields?:string[],
	templateSample?:string,
	smsSettings?:SmsSettingsComponent,
	pushSettings?:PushNotifComponent,
	slackSettings?:SlackSettingsComponent
}

export type EnginePathComponent = {
	__typename?: "EnginePathComponent",
	ressourceModel:ModelLoadersEnum,
	ressourceId:string
}

export type ErrorSettingsModel = {
	__typename?: "ErrorSettingsModel",
	_id:string,
	organisationId?:string,
	createdBy?:string,
	updatedBy?:string,
	deletedBy?:string,
	createdAt:DateTime,
	updatedAt:DateTime,
	r:string[],
	w:string[],
	d:string[],
	type:SettingsType,
	key:string,
	value:string,
	subject?:TranslatableComponent,
	body?:TranslatableComponent,
	availableFields?:string[]
}

export type FavoriteComponent = {
	__typename?: "FavoriteComponent",
	ressourceId:string,
	ressourceType:RessourceEnum,
	addedAt:DateTime,
	favorite?:boolean,
	liked?:boolean
}

export type FirebaseTokenResult = {
	__typename?: "FirebaseTokenResult",
	localId:string,
	email?:string,
	displayName?:string,
	idToken:string,
	registered?:boolean,
	refreshToken:string,
	expiresIn:string
}

export type GetArgs = {
		limit:number,
	skip:number,
	sort?:string
}

export type IEngineSchema = {
	__interface:{
			_id:string,
	organisationId?:string,
	paths?:EnginePathComponent[],
	by?:MetaBy,
	permissions?:MetaPermissions,
	createdAt:DateTime,
	updatedAt:DateTime
	};
	__resolve:{
		['...on PageSchema']: PageSchema;
	}
}

export type ImageComponent = {
	__typename?: "ImageComponent",
	title?:string,
	fileType?:string,
	large:string,
	medium?:string,
	small?:string
}

export type ImageInput = {
		title?:string,
	fileType?:string,
	large:string,
	medium?:string,
	small?:string
}

/** The `JSONObject` scalar type represents JSON objects as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */
export type JSONObject = any

export type LinkEmailInput = {
		email:string,
	password:string,
	idToken:string
}

export enum ListEnum {
	equipment = "equipment",
	feature = "feature"
}

export type ListModel = {
	__typename?: "ListModel",
	_id:string,
	organisationId?:string,
	createdBy?:string,
	updatedBy?:string,
	deletedBy?:string,
	createdAt:DateTime,
	updatedAt:DateTime,
	r:string[],
	w:string[],
	d:string[],
	title:TranslatableComponent,
	teaser?:TranslatableComponent,
	cover?:ImageComponent,
	thumbnail?:ImageComponent,
	extraImages?:ImageComponent[],
	content?:TranslatableComponent,
	seo?:SEOField,
	urls?:TranslatableComponent,
	ressourceType:ListEnum,
	colorCode?:string
}

export type LoginInput = {
		email:string,
	password:string
}

export type MetaBy = {
	__typename?: "MetaBy",
	createdBy?:string,
	updatedBy?:string,
	deletedBy?:string
}

export type MetaPermissions = {
	__typename?: "MetaPermissions",
	r:string[],
	w:string[],
	d:string[]
}

export enum ModelLoadersEnum {
	streams = "streams",
	accounts = "accounts",
	workspaces = "workspaces",
	bookings = "bookings"
}

export type Mutation = {
	__typename?: "Mutation",
	updateMe:AccountModel,
	updateMeEmail:AccountModel,
	updateMePassword:AccountModel,
	resetPassword:SimpleResult,
	registerGuest:AccountModel,
	accountsAddOne:AccountModel,
	accountsEditOne:AccountModel,
	accountsDeleteOne:AccountModel,
	register:AccountModel,
	categoriesAddOne:CategoryModel,
	categoriesEditOne:CategoryModel,
	categoriesDeleteOne:CategoryModel,
	emailsSettingsAddOne:EmailSettingsModel,
	emailsSettingsEditOne:EmailSettingsModel,
	emailsSettingsDeleteOne:EmailSettingsModel,
	projectSettingsAddOne:ProjectSettingModel,
	projectSettingsEditOne:ProjectSettingModel,
	projectSettingsDeleteOne:ProjectSettingModel,
	listsAddOne:ListModel,
	listsEditOne:ListModel,
	listsDeleteOne:ListModel,
	pagesAddOne:PageSchema,
	pagesEditOne:PageSchema,
	pagesDeleteOne:PageSchema,
	refreshCaching:SuccessResponse,
	errorSettingsAddOne:ErrorSettingsModel,
	errorSettingsEditOne:ErrorSettingsModel,
	errorSettingsDeleteOne:ErrorSettingsModel
}

export type NewAccountInput = {
		email:string,
	password:string,
	passwordConfirmation:string,
	userName?:string,
	firstName?:string,
	lastName?:string,
	profilePicture?:ImageInput,
	phoneNumber?:string,
	gender?:AccountGenderEnum,
	birthDate?:DateTime,
	address?:AddressInput,
	language?:AvailableTranslation,
	settings?:SettingsInput[],
	terms:boolean
}

export type NewAccountInputAdmin = {
		type:AccountTypeEnum,
	organisationIds?:string[],
	email:string,
	userName?:string,
	firstName?:string,
	lastName?:string,
	profilePicture?:ImageInput,
	phoneNumber?:string,
	gender?:AccountGenderEnum,
	birthDate?:DateTime,
	address?:AddressInput,
	language?:AvailableTranslation,
	settings?:SettingsInput[]
}

export type NewCategoryInput = {
		ressourceType:RessourceEnum,
	title:TranslatableInput,
	content?:TranslatableInput,
	colorCode?:string
}

export type NewEmailInput = {
		newEmail:string
}

export type NewEmailSettingsInput = {
		subject?:TranslatableInput,
	body?:TranslatableInput,
	type?:string,
	key:string,
	custom?:boolean,
	templateId?:TranslatableInput,
	fromEmail:string,
	fromName:string,
	replyToEmail:string,
	cci?:string[],
	smsSettings?:SmsSettingsComponentInput,
	slackSettings?:SlackSettingsComponentInput
}

export type NewErrorSettingsInput = {
		subject?:TranslatableInput,
	body:TranslatableInput,
	type?:string,
	key:string,
	value:string
}

export type NewListInput = {
		title:TranslatableInput,
	teaser?:TranslatableInput,
	cover?:ImageInput,
	thumbnail?:ImageInput,
	content?:TranslatableInput,
	seo?:SEOInput,
	urls?:TranslatableInput,
	ressourceType:ListEnum,
	colorCode?:string
}

export type NewPageInput = {
		title:string,
	label?:string,
	content?:JSONObject,
	position?:number,
	toComplete?:boolean
}

export type NewPasswordInput = {
		oldPassword:string,
	newPassword:string,
	newPasswordConfirmation:string
}

export type NewProjectSettingsInput = {
		key:string,
	value:string
}

export type PageSchema = {
	__typename?: "PageSchema",
	title:string,
	label?:string,
	content?:JSONObject,
	position?:number,
	toComplete?:boolean,
	_id:string,
	organisationId?:string,
	paths?:EnginePathComponent[],
	by?:MetaBy,
	permissions?:MetaPermissions,
	createdAt:DateTime,
	updatedAt:DateTime
}

export type PaymentMethodDetail = {
	__typename?: "PaymentMethodDetail",
	_id:string,
	sPayMethodId:string,
	default:boolean,
	nameOnCard:string,
	type:cardTypeEnum,
	cardInfo?:CardInfo
}

export type ProjectSettingModel = {
	__typename?: "ProjectSettingModel",
	_id:string,
	organisationId?:string,
	createdBy?:string,
	updatedBy?:string,
	deletedBy?:string,
	createdAt:DateTime,
	updatedAt:DateTime,
	r:string[],
	w:string[],
	d:string[],
	type:SettingsType,
	key:string,
	value:string
}

export type PushNotifComponent = {
	__typename?: "PushNotifComponent",
	subject?:TranslatableComponent,
	text:TranslatableComponent
}

export type Query = {
	__typename?: "Query",
	me:AccountModel,
	login:FirebaseTokenResult,
	magicLink:SimpleResult,
	accountsGetOne:AccountModel,
	accountsGetMany:AccountModel[],
	categoriesGetOne:CategoryModel,
	categoriesGetMany:CategoryModel[],
	categoriesGetCount:number,
	emailsSettingsGetOne:EmailSettingsModel,
	emailsSettingsGetMany:EmailSettingsModel[],
	emailsSettingsGetCount:number,
	projectSettingsGetOne:ProjectSettingModel,
	projectSettingsGetMany:ProjectSettingModel[],
	projectSettingsGetCount:number,
	listsGetOne:ListModel,
	listsGetMany:ListModel[],
	listsGetCount:number,
	pagesGetOne:PageSchema,
	pagesGetMany:PageSchema[],
	pagesGetCount:number,
	errorSettingsGetOne:ErrorSettingsModel,
	errorSettingsGetMany:ErrorSettingsModel[],
	errorSettingsGetCount:number
}

export type ResetPasswordInput = {
		email:string
}

export enum RessourceEnum {
	workspaces = "workspaces"
}

export type SEOField = {
	__typename?: "SEOField",
	title:TranslatableComponent,
	description:TranslatableComponent,
	keywords?:TranslatableComponent,
	thumbnail?:ImageComponent
}

export type SEOInput = {
		title:TranslatableInput,
	description:TranslatableInput,
	keywords?:TranslatableInput,
	thumbnail?:ImageInput
}

export type SettingsComponent = {
	__typename?: "SettingsComponent",
	type:SettingsTypeEnum,
	email?:boolean,
	pushNotifications?:boolean,
	sms?:boolean
}

export type SettingsInput = {
		type:SettingsTypeEnum,
	email?:boolean,
	pushNotifications?:boolean,
	sms?:boolean
}

export enum SettingsType {
	emails = "emails",
	ac = "ac",
	env = "env",
	instagram = "instagram",
	errors = "errors",
	others = "others"
}

export enum SettingsTypeEnum {
	notifications = "notifications",
	promotions = "promotions",
	reminders = "reminders"
}

export type SimpleResult = {
	__typename?: "SimpleResult",
	message:string
}

export type SlackActionInfo = {
	__typename?: "SlackActionInfo",
	text:string,
	url:string,
	style?:SlackActionStyleEnum
}

export type SlackActionInfoInput = {
		text:string,
	url:string,
	style?:SlackActionStyleEnum
}

export enum SlackActionStyleEnum {
	primary = "primary",
	danger = "danger"
}

export type SlackSettingsComponent = {
	__typename?: "SlackSettingsComponent",
	webhookUrls:string[],
	username?:string,
	text:string,
	icon?:string,
	actions?:SlackActionInfo[]
}

export type SlackSettingsComponentInput = {
		webhookUrls:string[],
	username?:string,
	text:string,
	icon?:string,
	actions?:SlackActionInfoInput[]
}

export type SmsSettingsComponent = {
	__typename?: "SmsSettingsComponent",
	text:TranslatableComponent
}

export type SmsSettingsComponentInput = {
		text:TranslatableInput
}

export type StripeInfo = {
	__typename?: "StripeInfo",
	customerId:string
}

export type StripePayoutInfo = {
	__typename?: "StripePayoutInfo",
	accountId:string,
	chargesEnabled:boolean,
	payoutsEnabled:boolean,
	detailsSubmitted:boolean
}

export type SuccessResponse = {
	__typename?: "SuccessResponse",
	success:boolean
}

export type TranslatableComponent = {
	__typename?: "TranslatableComponent",
	en?:string,
	fr:string,
	nl?:string,
	de?:string
}

export type TranslatableInput = {
		en?:string,
	fr:string,
	nl?:string,
	de?:string
}

export const AllTypesProps: Record<string,any> = {
	AccountGenderEnum: "enum",
	AccountTypeEnum: "enum",
	AddressInput:{
		number:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		street:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		streetBis:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		floor:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		box:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		zip:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		state:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		city:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		country:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		}
	},
	AvailableTranslation: "enum",
	cardBrandEnum: "enum",
	cardTypeEnum: "enum",
	DateTime: "String",
	EditAccountInput:{
		userName:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		firstName:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		lastName:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		profilePicture:{
			type:"ImageInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		phoneNumber:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		gender:{
			type:"AccountGenderEnum",
			array:false,
			arrayRequired:false,
			required:false
		},
		birthDate:{
			type:"DateTime",
			array:false,
			arrayRequired:false,
			required:false
		},
		address:{
			type:"AddressInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		language:{
			type:"AvailableTranslation",
			array:false,
			arrayRequired:false,
			required:false
		},
		settings:{
			type:"SettingsInput",
			array:true,
			arrayRequired:false,
			required:true
		}
	},
	EditCategoryInput:{
		ressourceType:{
			type:"RessourceEnum",
			array:false,
			arrayRequired:false,
			required:true
		},
		title:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:true
		},
		content:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		colorCode:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		}
	},
	EditEmailSettingsInput:{
		subject:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		body:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		type:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		custom:{
			type:"Boolean",
			array:false,
			arrayRequired:false,
			required:false
		},
		templateId:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		fromEmail:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		fromName:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		replyToEmail:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		cci:{
			type:"String",
			array:true,
			arrayRequired:false,
			required:true
		},
		smsSettings:{
			type:"SmsSettingsComponentInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		slackSettings:{
			type:"SlackSettingsComponentInput",
			array:false,
			arrayRequired:false,
			required:false
		}
	},
	EditErrorSettingsInput:{
		subject:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		body:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:false
		}
	},
	EditListInput:{
		title:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		teaser:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		cover:{
			type:"ImageInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		thumbnail:{
			type:"ImageInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		content:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		seo:{
			type:"SEOInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		urls:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		ressourceType:{
			type:"ListEnum",
			array:false,
			arrayRequired:false,
			required:false
		},
		colorCode:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		}
	},
	EditPageInput:{
		title:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		label:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		content:{
			type:"JSONObject",
			array:false,
			arrayRequired:false,
			required:false
		},
		position:{
			type:"Int",
			array:false,
			arrayRequired:false,
			required:false
		},
		toComplete:{
			type:"Boolean",
			array:false,
			arrayRequired:false,
			required:false
		}
	},
	EditProjectSettingsInput:{
		value:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		}
	},
	GetArgs:{
		limit:{
			type:"Int",
			array:false,
			arrayRequired:false,
			required:true
		},
		skip:{
			type:"Int",
			array:false,
			arrayRequired:false,
			required:true
		},
		sort:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		}
	},
	ImageInput:{
		title:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		fileType:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		large:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		medium:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		small:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		}
	},
	JSONObject: "String",
	LinkEmailInput:{
		email:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		password:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		idToken:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		}
	},
	ListEnum: "enum",
	LoginInput:{
		email:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		password:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		}
	},
	ModelLoadersEnum: "enum",
	Mutation:{
		updateMe:{
			input:{
				type:"EditAccountInput",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		updateMeEmail:{
			input:{
				type:"NewEmailInput",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		updateMePassword:{
			input:{
				type:"NewPasswordInput",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		resetPassword:{
			input:{
				type:"ResetPasswordInput",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		registerGuest:{
			otherInfo:{
				type:"EditAccountInput",
				array:false,
				arrayRequired:false,
				required:true
			},
			input:{
				type:"LinkEmailInput",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		accountsAddOne:{
			input:{
				type:"NewAccountInputAdmin",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		accountsEditOne:{
			input:{
				type:"EditAccountInput",
				array:false,
				arrayRequired:false,
				required:true
			},
			id:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		accountsDeleteOne:{
			userType:{
				type:"AccountTypeEnum",
				array:false,
				arrayRequired:false,
				required:true
			},
			id:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		register:{
			input:{
				type:"NewAccountInput",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		categoriesAddOne:{
			input:{
				type:"NewCategoryInput",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		categoriesEditOne:{
			input:{
				type:"EditCategoryInput",
				array:false,
				arrayRequired:false,
				required:true
			},
			id:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		categoriesDeleteOne:{
			id:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		emailsSettingsAddOne:{
			input:{
				type:"NewEmailSettingsInput",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		emailsSettingsEditOne:{
			input:{
				type:"EditEmailSettingsInput",
				array:false,
				arrayRequired:false,
				required:true
			},
			id:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		emailsSettingsDeleteOne:{
			id:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		projectSettingsAddOne:{
			input:{
				type:"NewProjectSettingsInput",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		projectSettingsEditOne:{
			input:{
				type:"EditProjectSettingsInput",
				array:false,
				arrayRequired:false,
				required:true
			},
			id:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		projectSettingsDeleteOne:{
			id:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		listsAddOne:{
			input:{
				type:"NewListInput",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		listsEditOne:{
			input:{
				type:"EditListInput",
				array:false,
				arrayRequired:false,
				required:true
			},
			id:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		listsDeleteOne:{
			id:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		pagesAddOne:{
			input:{
				type:"NewPageInput",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		pagesEditOne:{
			input:{
				type:"EditPageInput",
				array:false,
				arrayRequired:false,
				required:true
			},
			id:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		pagesDeleteOne:{
			id:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		errorSettingsAddOne:{
			input:{
				type:"NewErrorSettingsInput",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		errorSettingsEditOne:{
			input:{
				type:"EditErrorSettingsInput",
				array:false,
				arrayRequired:false,
				required:true
			},
			id:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		errorSettingsDeleteOne:{
			id:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:true
			}
		}
	},
	NewAccountInput:{
		email:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		password:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		passwordConfirmation:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		userName:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		firstName:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		lastName:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		profilePicture:{
			type:"ImageInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		phoneNumber:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		gender:{
			type:"AccountGenderEnum",
			array:false,
			arrayRequired:false,
			required:false
		},
		birthDate:{
			type:"DateTime",
			array:false,
			arrayRequired:false,
			required:false
		},
		address:{
			type:"AddressInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		language:{
			type:"AvailableTranslation",
			array:false,
			arrayRequired:false,
			required:false
		},
		settings:{
			type:"SettingsInput",
			array:true,
			arrayRequired:false,
			required:true
		},
		terms:{
			type:"Boolean",
			array:false,
			arrayRequired:false,
			required:true
		}
	},
	NewAccountInputAdmin:{
		type:{
			type:"AccountTypeEnum",
			array:false,
			arrayRequired:false,
			required:true
		},
		organisationIds:{
			type:"String",
			array:true,
			arrayRequired:false,
			required:true
		},
		email:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		userName:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		firstName:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		lastName:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		profilePicture:{
			type:"ImageInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		phoneNumber:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		gender:{
			type:"AccountGenderEnum",
			array:false,
			arrayRequired:false,
			required:false
		},
		birthDate:{
			type:"DateTime",
			array:false,
			arrayRequired:false,
			required:false
		},
		address:{
			type:"AddressInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		language:{
			type:"AvailableTranslation",
			array:false,
			arrayRequired:false,
			required:false
		},
		settings:{
			type:"SettingsInput",
			array:true,
			arrayRequired:false,
			required:true
		}
	},
	NewCategoryInput:{
		ressourceType:{
			type:"RessourceEnum",
			array:false,
			arrayRequired:false,
			required:true
		},
		title:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:true
		},
		content:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		colorCode:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		}
	},
	NewEmailInput:{
		newEmail:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		}
	},
	NewEmailSettingsInput:{
		subject:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		body:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		type:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		key:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		custom:{
			type:"Boolean",
			array:false,
			arrayRequired:false,
			required:false
		},
		templateId:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		fromEmail:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		fromName:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		replyToEmail:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		cci:{
			type:"String",
			array:true,
			arrayRequired:false,
			required:true
		},
		smsSettings:{
			type:"SmsSettingsComponentInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		slackSettings:{
			type:"SlackSettingsComponentInput",
			array:false,
			arrayRequired:false,
			required:false
		}
	},
	NewErrorSettingsInput:{
		subject:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		body:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:true
		},
		type:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		key:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		value:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		}
	},
	NewListInput:{
		title:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:true
		},
		teaser:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		cover:{
			type:"ImageInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		thumbnail:{
			type:"ImageInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		content:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		seo:{
			type:"SEOInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		urls:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		ressourceType:{
			type:"ListEnum",
			array:false,
			arrayRequired:false,
			required:true
		},
		colorCode:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		}
	},
	NewPageInput:{
		title:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		label:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		content:{
			type:"JSONObject",
			array:false,
			arrayRequired:false,
			required:false
		},
		position:{
			type:"Int",
			array:false,
			arrayRequired:false,
			required:false
		},
		toComplete:{
			type:"Boolean",
			array:false,
			arrayRequired:false,
			required:false
		}
	},
	NewPasswordInput:{
		oldPassword:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		newPassword:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		newPasswordConfirmation:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		}
	},
	NewProjectSettingsInput:{
		key:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		value:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		}
	},
	Query:{
		login:{
			refreshToken:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:false
			},
			creds:{
				type:"LoginInput",
				array:false,
				arrayRequired:false,
				required:false
			}
		},
		magicLink:{
			input:{
				type:"ResetPasswordInput",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		accountsGetOne:{
			id:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		accountsGetMany:{
			pagination:{
				type:"GetArgs",
				array:false,
				arrayRequired:false,
				required:false
			}
		},
		categoriesGetOne:{
			id:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		categoriesGetMany:{
			search:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:false
			},
			ressourceType:{
				type:"RessourceEnum",
				array:false,
				arrayRequired:false,
				required:true
			},
			pagination:{
				type:"GetArgs",
				array:false,
				arrayRequired:false,
				required:false
			}
		},
		categoriesGetCount:{
			search:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:false
			},
			ressourceType:{
				type:"RessourceEnum",
				array:false,
				arrayRequired:false,
				required:true
			},
			pagination:{
				type:"GetArgs",
				array:false,
				arrayRequired:false,
				required:false
			}
		},
		emailsSettingsGetOne:{
			id:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		emailsSettingsGetMany:{
			search:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:false
			},
			pagination:{
				type:"GetArgs",
				array:false,
				arrayRequired:false,
				required:false
			}
		},
		emailsSettingsGetCount:{
			search:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:false
			},
			pagination:{
				type:"GetArgs",
				array:false,
				arrayRequired:false,
				required:false
			}
		},
		projectSettingsGetOne:{
			id:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		projectSettingsGetMany:{
			_ids:{
				type:"String",
				array:true,
				arrayRequired:false,
				required:true
			},
			search:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:false
			},
			afterCreatedAt:{
				type:"DateTime",
				array:false,
				arrayRequired:false,
				required:false
			},
			afterUpdatedAt:{
				type:"DateTime",
				array:false,
				arrayRequired:false,
				required:false
			},
			pagination:{
				type:"GetArgs",
				array:false,
				arrayRequired:false,
				required:false
			},
			type:{
				type:"SettingsType",
				array:false,
				arrayRequired:false,
				required:false
			}
		},
		projectSettingsGetCount:{
			_ids:{
				type:"String",
				array:true,
				arrayRequired:false,
				required:true
			},
			search:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:false
			},
			afterCreatedAt:{
				type:"DateTime",
				array:false,
				arrayRequired:false,
				required:false
			},
			afterUpdatedAt:{
				type:"DateTime",
				array:false,
				arrayRequired:false,
				required:false
			},
			pagination:{
				type:"GetArgs",
				array:false,
				arrayRequired:false,
				required:false
			},
			type:{
				type:"SettingsType",
				array:false,
				arrayRequired:false,
				required:false
			}
		},
		listsGetOne:{
			id:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		listsGetMany:{
			search:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:false
			},
			ressourceType:{
				type:"ListEnum",
				array:false,
				arrayRequired:false,
				required:true
			},
			pagination:{
				type:"GetArgs",
				array:false,
				arrayRequired:false,
				required:false
			}
		},
		listsGetCount:{
			search:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:false
			},
			ressourceType:{
				type:"ListEnum",
				array:false,
				arrayRequired:false,
				required:true
			},
			pagination:{
				type:"GetArgs",
				array:false,
				arrayRequired:false,
				required:false
			}
		},
		pagesGetOne:{
			id:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		pagesGetMany:{
			_ids:{
				type:"String",
				array:true,
				arrayRequired:false,
				required:true
			},
			search:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:false
			},
			afterCreatedAt:{
				type:"DateTime",
				array:false,
				arrayRequired:false,
				required:false
			},
			afterUpdatedAt:{
				type:"DateTime",
				array:false,
				arrayRequired:false,
				required:false
			},
			pagination:{
				type:"GetArgs",
				array:false,
				arrayRequired:false,
				required:false
			}
		},
		pagesGetCount:{
			_ids:{
				type:"String",
				array:true,
				arrayRequired:false,
				required:true
			},
			search:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:false
			},
			afterCreatedAt:{
				type:"DateTime",
				array:false,
				arrayRequired:false,
				required:false
			},
			afterUpdatedAt:{
				type:"DateTime",
				array:false,
				arrayRequired:false,
				required:false
			},
			pagination:{
				type:"GetArgs",
				array:false,
				arrayRequired:false,
				required:false
			}
		},
		errorSettingsGetOne:{
			id:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:true
			}
		},
		errorSettingsGetMany:{
			search:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:false
			},
			pagination:{
				type:"GetArgs",
				array:false,
				arrayRequired:false,
				required:false
			}
		},
		errorSettingsGetCount:{
			search:{
				type:"String",
				array:false,
				arrayRequired:false,
				required:false
			},
			pagination:{
				type:"GetArgs",
				array:false,
				arrayRequired:false,
				required:false
			}
		}
	},
	ResetPasswordInput:{
		email:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		}
	},
	RessourceEnum: "enum",
	SEOInput:{
		title:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:true
		},
		description:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:true
		},
		keywords:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:false
		},
		thumbnail:{
			type:"ImageInput",
			array:false,
			arrayRequired:false,
			required:false
		}
	},
	SettingsInput:{
		type:{
			type:"SettingsTypeEnum",
			array:false,
			arrayRequired:false,
			required:true
		},
		email:{
			type:"Boolean",
			array:false,
			arrayRequired:false,
			required:false
		},
		pushNotifications:{
			type:"Boolean",
			array:false,
			arrayRequired:false,
			required:false
		},
		sms:{
			type:"Boolean",
			array:false,
			arrayRequired:false,
			required:false
		}
	},
	SettingsType: "enum",
	SettingsTypeEnum: "enum",
	SlackActionInfoInput:{
		text:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		url:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		style:{
			type:"SlackActionStyleEnum",
			array:false,
			arrayRequired:false,
			required:false
		}
	},
	SlackActionStyleEnum: "enum",
	SlackSettingsComponentInput:{
		webhookUrls:{
			type:"String",
			array:true,
			arrayRequired:true,
			required:true
		},
		username:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		text:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		icon:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		actions:{
			type:"SlackActionInfoInput",
			array:true,
			arrayRequired:false,
			required:true
		}
	},
	SmsSettingsComponentInput:{
		text:{
			type:"TranslatableInput",
			array:false,
			arrayRequired:false,
			required:true
		}
	},
	TranslatableInput:{
		en:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		fr:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:true
		},
		nl:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		},
		de:{
			type:"String",
			array:false,
			arrayRequired:false,
			required:false
		}
	}
}

export const ReturnTypes: Record<string,any> = {
	AccountModel:{
		_id:"ID",
		organisationId:"ID",
		createdBy:"ID",
		updatedBy:"ID",
		deletedBy:"ID",
		createdAt:"DateTime",
		updatedAt:"DateTime",
		r:"String",
		w:"String",
		d:"String",
		types:"AccountTypeEnum",
		organisationIds:"String",
		email:"String",
		userName:"String",
		firstName:"String",
		lastName:"String",
		profilePicture:"ImageComponent",
		phoneNumber:"String",
		gender:"AccountGenderEnum",
		birthDate:"DateTime",
		getAge:"Int",
		address:"AddressComponent",
		language:"AvailableTranslation",
		settings:"SettingsComponent",
		paymentInfo:"AccountPaymentInfo",
		payoutInfo:"AccountPayoutInfo",
		terms:"Boolean",
		favLikes:"FavoriteComponent"
	},
	AccountPaymentInfo:{
		stripeInfo:"StripeInfo",
		paymentMethods:"PaymentMethodDetail",
		billingInfos:"BillingAddressComponent"
	},
	AccountPayoutInfo:{
		stripeInfo:"StripePayoutInfo"
	},
	AddressComponent:{
		number:"String",
		street:"String",
		streetBis:"String",
		floor:"String",
		box:"String",
		zip:"String",
		state:"String",
		city:"String",
		country:"String"
	},
	AddressStrictComponent:{
		number:"String",
		street:"String",
		zip:"String",
		city:"String",
		country:"String",
		streetBis:"String",
		floor:"String",
		box:"String",
		state:"String"
	},
	BillingAddressComponent:{
		firstName:"String",
		lastName:"String",
		address:"AddressStrictComponent",
		email:"String",
		default:"Boolean",
		customTags:"JSONObject",
		company:"String",
		vatNumber:"String",
		fiscalForm:"String",
		_id:"String"
	},
	CardInfo:{
		brand:"cardBrandEnum",
		country:"String",
		exp_month:"Int",
		exp_year:"Int",
		last4:"String"
	},
	CategoryModel:{
		_id:"ID",
		organisationId:"ID",
		createdBy:"ID",
		updatedBy:"ID",
		deletedBy:"ID",
		createdAt:"DateTime",
		updatedAt:"DateTime",
		r:"String",
		w:"String",
		d:"String",
		title:"TranslatableComponent",
		teaser:"TranslatableComponent",
		cover:"ImageComponent",
		thumbnail:"ImageComponent",
		extraImages:"ImageComponent",
		content:"TranslatableComponent",
		seo:"SEOField",
		urls:"TranslatableComponent",
		ressourceType:"RessourceEnum",
		colorCode:"String"
	},
	EmailSettingsModel:{
		_id:"ID",
		organisationId:"ID",
		createdBy:"ID",
		updatedBy:"ID",
		deletedBy:"ID",
		createdAt:"DateTime",
		updatedAt:"DateTime",
		r:"String",
		w:"String",
		d:"String",
		type:"SettingsType",
		key:"String",
		subject:"TranslatableComponent",
		body:"TranslatableComponent",
		custom:"Boolean",
		templateId:"TranslatableComponent",
		fromEmail:"String",
		fromName:"String",
		replyToEmail:"String",
		cci:"String",
		availableFields:"String",
		templateSample:"String",
		smsSettings:"SmsSettingsComponent",
		pushSettings:"PushNotifComponent",
		slackSettings:"SlackSettingsComponent"
	},
	EnginePathComponent:{
		ressourceModel:"ModelLoadersEnum",
		ressourceId:"String"
	},
	ErrorSettingsModel:{
		_id:"ID",
		organisationId:"ID",
		createdBy:"ID",
		updatedBy:"ID",
		deletedBy:"ID",
		createdAt:"DateTime",
		updatedAt:"DateTime",
		r:"String",
		w:"String",
		d:"String",
		type:"SettingsType",
		key:"String",
		value:"String",
		subject:"TranslatableComponent",
		body:"TranslatableComponent",
		availableFields:"String"
	},
	FavoriteComponent:{
		ressourceId:"String",
		ressourceType:"RessourceEnum",
		addedAt:"DateTime",
		favorite:"Boolean",
		liked:"Boolean"
	},
	FirebaseTokenResult:{
		localId:"String",
		email:"String",
		displayName:"String",
		idToken:"String",
		registered:"Boolean",
		refreshToken:"String",
		expiresIn:"String"
	},
	IEngineSchema:{
		"...on PageSchema": "PageSchema",
		_id:"ID",
		organisationId:"ID",
		paths:"EnginePathComponent",
		by:"MetaBy",
		permissions:"MetaPermissions",
		createdAt:"DateTime",
		updatedAt:"DateTime"
	},
	ImageComponent:{
		title:"String",
		fileType:"String",
		large:"String",
		medium:"String",
		small:"String"
	},
	ListModel:{
		_id:"ID",
		organisationId:"ID",
		createdBy:"ID",
		updatedBy:"ID",
		deletedBy:"ID",
		createdAt:"DateTime",
		updatedAt:"DateTime",
		r:"String",
		w:"String",
		d:"String",
		title:"TranslatableComponent",
		teaser:"TranslatableComponent",
		cover:"ImageComponent",
		thumbnail:"ImageComponent",
		extraImages:"ImageComponent",
		content:"TranslatableComponent",
		seo:"SEOField",
		urls:"TranslatableComponent",
		ressourceType:"ListEnum",
		colorCode:"String"
	},
	MetaBy:{
		createdBy:"ID",
		updatedBy:"ID",
		deletedBy:"ID"
	},
	MetaPermissions:{
		r:"String",
		w:"String",
		d:"String"
	},
	Mutation:{
		updateMe:"AccountModel",
		updateMeEmail:"AccountModel",
		updateMePassword:"AccountModel",
		resetPassword:"SimpleResult",
		registerGuest:"AccountModel",
		accountsAddOne:"AccountModel",
		accountsEditOne:"AccountModel",
		accountsDeleteOne:"AccountModel",
		register:"AccountModel",
		categoriesAddOne:"CategoryModel",
		categoriesEditOne:"CategoryModel",
		categoriesDeleteOne:"CategoryModel",
		emailsSettingsAddOne:"EmailSettingsModel",
		emailsSettingsEditOne:"EmailSettingsModel",
		emailsSettingsDeleteOne:"EmailSettingsModel",
		projectSettingsAddOne:"ProjectSettingModel",
		projectSettingsEditOne:"ProjectSettingModel",
		projectSettingsDeleteOne:"ProjectSettingModel",
		listsAddOne:"ListModel",
		listsEditOne:"ListModel",
		listsDeleteOne:"ListModel",
		pagesAddOne:"PageSchema",
		pagesEditOne:"PageSchema",
		pagesDeleteOne:"PageSchema",
		refreshCaching:"SuccessResponse",
		errorSettingsAddOne:"ErrorSettingsModel",
		errorSettingsEditOne:"ErrorSettingsModel",
		errorSettingsDeleteOne:"ErrorSettingsModel"
	},
	PageSchema:{
		title:"String",
		label:"String",
		content:"JSONObject",
		position:"Int",
		toComplete:"Boolean",
		_id:"ID",
		organisationId:"ID",
		paths:"EnginePathComponent",
		by:"MetaBy",
		permissions:"MetaPermissions",
		createdAt:"DateTime",
		updatedAt:"DateTime"
	},
	PaymentMethodDetail:{
		_id:"String",
		sPayMethodId:"String",
		default:"Boolean",
		nameOnCard:"String",
		type:"cardTypeEnum",
		cardInfo:"CardInfo"
	},
	ProjectSettingModel:{
		_id:"ID",
		organisationId:"ID",
		createdBy:"ID",
		updatedBy:"ID",
		deletedBy:"ID",
		createdAt:"DateTime",
		updatedAt:"DateTime",
		r:"String",
		w:"String",
		d:"String",
		type:"SettingsType",
		key:"String",
		value:"String"
	},
	PushNotifComponent:{
		subject:"TranslatableComponent",
		text:"TranslatableComponent"
	},
	Query:{
		me:"AccountModel",
		login:"FirebaseTokenResult",
		magicLink:"SimpleResult",
		accountsGetOne:"AccountModel",
		accountsGetMany:"AccountModel",
		categoriesGetOne:"CategoryModel",
		categoriesGetMany:"CategoryModel",
		categoriesGetCount:"Float",
		emailsSettingsGetOne:"EmailSettingsModel",
		emailsSettingsGetMany:"EmailSettingsModel",
		emailsSettingsGetCount:"Float",
		projectSettingsGetOne:"ProjectSettingModel",
		projectSettingsGetMany:"ProjectSettingModel",
		projectSettingsGetCount:"Float",
		listsGetOne:"ListModel",
		listsGetMany:"ListModel",
		listsGetCount:"Float",
		pagesGetOne:"PageSchema",
		pagesGetMany:"PageSchema",
		pagesGetCount:"Float",
		errorSettingsGetOne:"ErrorSettingsModel",
		errorSettingsGetMany:"ErrorSettingsModel",
		errorSettingsGetCount:"Float"
	},
	SEOField:{
		title:"TranslatableComponent",
		description:"TranslatableComponent",
		keywords:"TranslatableComponent",
		thumbnail:"ImageComponent"
	},
	SettingsComponent:{
		type:"SettingsTypeEnum",
		email:"Boolean",
		pushNotifications:"Boolean",
		sms:"Boolean"
	},
	SimpleResult:{
		message:"String"
	},
	SlackActionInfo:{
		text:"String",
		url:"String",
		style:"SlackActionStyleEnum"
	},
	SlackSettingsComponent:{
		webhookUrls:"String",
		username:"String",
		text:"String",
		icon:"String",
		actions:"SlackActionInfo"
	},
	SmsSettingsComponent:{
		text:"TranslatableComponent"
	},
	StripeInfo:{
		customerId:"String"
	},
	StripePayoutInfo:{
		accountId:"String",
		chargesEnabled:"Boolean",
		payoutsEnabled:"Boolean",
		detailsSubmitted:"Boolean"
	},
	SuccessResponse:{
		success:"Boolean"
	},
	TranslatableComponent:{
		en:"String",
		fr:"String",
		nl:"String",
		de:"String"
	}
}

export class GraphQLError extends Error {
    constructor(public response: GraphQLResponse) {
      super("");
      console.error(response);
    }
    toString() {
      return "GraphQL Response Error";
    }
  }



export type UnwrapPromise<T> = T extends Promise<infer R> ? R : T;
export type ZeusState<T extends (...args: any[]) => Promise<any>> = NonNullable<
  UnwrapPromise<ReturnType<T>>
>;
export type ZeusHook<
  T extends (
    ...args: any[]
  ) => Record<string, (...args: any[]) => Promise<any>>,
  N extends keyof ReturnType<T>
> = ZeusState<ReturnType<T>[N]>;

type Func<P extends any[], R> = (...args: P) => R;
type AnyFunc = Func<any, any>;

type WithTypeNameValue<T> = T & {
  __typename?: true;
};

type AliasType<T> = WithTypeNameValue<T> & {
  __alias?: Record<string, WithTypeNameValue<T>>;
};

type NotUndefined<T> = T extends undefined ? never : T;

export type ResolverType<F> = NotUndefined<F extends [infer ARGS, any] ? ARGS : undefined>;

export type ArgsType<F extends AnyFunc> = F extends Func<infer P, any> ? P : never;

interface GraphQLResponse {
  data?: Record<string, any>;
  errors?: Array<{
    message: string;
  }>;
}

export type ValuesOf<T> = T[keyof T];

export type MapResolve<SRC, DST> = SRC extends {
    __interface: infer INTERFACE;
    __resolve: Record<string, { __typename?: string }> & infer IMPLEMENTORS;
  }
  ?
  ValuesOf<{
    [k in (keyof SRC['__resolve'] & keyof DST)]: ({
      [rk in (keyof SRC['__resolve'][k] & keyof DST[k])]: LastMapTypeSRCResolver<SRC['__resolve'][k][rk], DST[k][rk]>
    } & {
      __typename: SRC['__resolve'][k]['__typename']
    })
  }>
  :
  never;

export type MapInterface<SRC, DST> = SRC extends {
    __interface: infer INTERFACE;
    __resolve: Record<string, { __typename?: string }> & infer IMPLEMENTORS;
  }
  ?
  (MapResolve<SRC, DST> extends never ? {} : MapResolve<SRC, DST>) & {
  [k in (keyof SRC['__interface'] & keyof DST)]: LastMapTypeSRCResolver<SRC['__interface'][k], DST[k]>
} : never;

export type ValueToUnion<T> = T extends {
  __typename: infer R;
}
  ? {
      [P in keyof Omit<T, '__typename'>]: T[P] & {
        __typename: R;
      };
    }
  : T;

export type ObjectToUnion<T> = {
  [P in keyof T]: T[P];
}[keyof T];

type Anify<T> = { [P in keyof T]?: any };


type LastMapTypeSRCResolver<SRC, DST> = SRC extends undefined
  ? undefined
  : SRC extends Array<infer AR>
  ? LastMapTypeSRCResolver<AR, DST>[]
  : SRC extends { __interface: any; __resolve: any }
  ? MapInterface<SRC, DST>
  : SRC extends { __union: any; __resolve: infer RESOLVE }
  ? ObjectToUnion<MapType<RESOLVE, ValueToUnion<DST>>>
  : DST extends boolean
  ? SRC
  : MapType<SRC, DST>;

export type MapType<SRC extends Anify<DST>, DST> = DST extends boolean
  ? SRC
  : DST extends {
      __alias: any;
    }
  ? {
      [A in keyof DST["__alias"]]: Required<SRC> extends Anify<
        DST["__alias"][A]
      >
        ? MapType<Required<SRC>, DST["__alias"][A]>
        : never;
    } &
      {
        [Key in keyof Omit<DST, "__alias">]: DST[Key] extends [
          any,
          infer PAYLOAD
        ]
          ? LastMapTypeSRCResolver<SRC[Key], PAYLOAD>
          : LastMapTypeSRCResolver<SRC[Key], DST[Key]>;
      }
  : {
      [Key in keyof DST]: DST[Key] extends [any, infer PAYLOAD]
        ? LastMapTypeSRCResolver<SRC[Key], PAYLOAD>
        : LastMapTypeSRCResolver<SRC[Key], DST[Key]>;
    };

type OperationToGraphQL<V, T> = <Z extends V>(o: Z | V, variables?: Record<string, any>) => Promise<MapType<T, Z>>;

type CastToGraphQL<V, T> = (
  resultOfYourQuery: any
) => <Z extends V>(o: Z | V) => MapType<T, Z>;

type fetchOptions = ArgsType<typeof fetch>;

export type SelectionFunction<V> = <T>(t: T | V) => T;
type FetchFunction = (query: string, variables?: Record<string, any>) => Promise<any>;



export const ZeusSelect = <T>() => ((t: any) => t) as SelectionFunction<T>;

export const ScalarResolver = (scalar: string, value: any) => {
  switch (scalar) {
    case 'String':
      return  `${JSON.stringify(value)}`;
    case 'Int':
      return `${value}`;
    case 'Float':
      return `${value}`;
    case 'Boolean':
      return `${value}`;
    case 'ID':
      return `"${value}"`;
    case 'enum':
      return `${value}`;
    case 'scalar':
      return `${value}`;
    default:
      return false;
  }
};


export const TypesPropsResolver = ({
    value,
    type,
    name,
    key,
    blockArrays
}: {
    value: any;
    type: string;
    name: string;
    key?: string;
    blockArrays?: boolean;
}): string => {
    if (value === null) {
        return `null`;
    }
    let resolvedValue = AllTypesProps[type][name];
    if (key) {
        resolvedValue = resolvedValue[key];
    }
    if (!resolvedValue) {
        throw new Error(`Cannot resolve ${type} ${name}${key ? ` ${key}` : ''}`)
    }
    const typeResolved = resolvedValue.type;
    const isArray = resolvedValue.array;
    const isArrayRequired = resolvedValue.arrayRequired;
    if (typeof value === 'string' && value.startsWith(`ZEUS_VAR$`)) {
        const isRequired = resolvedValue.required ? '!' : '';
        let t = `${typeResolved}`;
        if (isArray) {
          if (isRequired) {
              t = `${t}!`;
          }
          t = `[${t}]`;
          if(isArrayRequired){
            t = `${t}!`;
          }
        }else{
          if (isRequired) {
                t = `${t}!`;
          }
        }
        return `\$${value.split(`ZEUS_VAR$`)[1]}__ZEUS_VAR__${t}`;
    }
    if (isArray && !blockArrays) {
        return `[${value
        .map((v: any) => TypesPropsResolver({ value: v, type, name, key, blockArrays: true }))
        .join(',')}]`;
    }
    const reslovedScalar = ScalarResolver(typeResolved, value);
    if (!reslovedScalar) {
        const resolvedType = AllTypesProps[typeResolved];
        if (typeof resolvedType === 'object') {
        const argsKeys = Object.keys(resolvedType);
        return `{${argsKeys
            .filter((ak) => value[ak] !== undefined)
            .map(
            (ak) => `${ak}:${TypesPropsResolver({ value: value[ak], type: typeResolved, name: ak })}`
            )}}`;
        }
        return ScalarResolver(AllTypesProps[typeResolved], value) as string;
    }
    return reslovedScalar;
};


const isArrayFunction = (
  parent: string[],
  a: any[]
) => {
  const [values, r] = a;
  const [mainKey, key, ...keys] = parent;
  const keyValues = Object.keys(values).filter((k) => typeof values[k] !== 'undefined');

  if (!keys.length) {
      return keyValues.length > 0
        ? `(${keyValues
            .map(
              (v) =>
                `${v}:${TypesPropsResolver({
                  value: values[v],
                  type: mainKey,
                  name: key,
                  key: v
                })}`
            )
            .join(',')})${r ? traverseToSeekArrays(parent, r) : ''}`
        : traverseToSeekArrays(parent, r);
    }

  const [typeResolverKey] = keys.splice(keys.length - 1, 1);
  let valueToResolve = ReturnTypes[mainKey][key];
  for (const k of keys) {
    valueToResolve = ReturnTypes[valueToResolve][k];
  }

  const argumentString =
    keyValues.length > 0
      ? `(${keyValues
          .map(
            (v) =>
              `${v}:${TypesPropsResolver({
                value: values[v],
                type: valueToResolve,
                name: typeResolverKey,
                key: v
              })}`
          )
          .join(',')})${r ? traverseToSeekArrays(parent, r) : ''}`
      : traverseToSeekArrays(parent, r);
  return argumentString;
};


const resolveKV = (k: string, v: boolean | string | { [x: string]: boolean | string }) =>
  typeof v === 'boolean' ? k : typeof v === 'object' ? `${k}{${objectToTree(v)}}` : `${k}${v}`;


const objectToTree = (o: { [x: string]: boolean | string }): string =>
  `{${Object.keys(o).map((k) => `${resolveKV(k, o[k])}`).join(' ')}}`;


const traverseToSeekArrays = (parent: string[], a?: any): string => {
  if (!a) return '';
  if (Object.keys(a).length === 0) {
    return '';
  }
  let b: Record<string, any> = {};
  if (Array.isArray(a)) {
    return isArrayFunction([...parent], a);
  } else {
    if (typeof a === 'object') {
      Object.keys(a)
        .filter((k) => typeof a[k] !== 'undefined')
        .map((k) => {
        if (k === '__alias') {
          Object.keys(a[k]).map((aliasKey) => {
            const aliasOperations = a[k][aliasKey];
            const aliasOperationName = Object.keys(aliasOperations)[0];
            const aliasOperation = aliasOperations[aliasOperationName];
            b[
              `${aliasOperationName}__alias__${aliasKey}: ${aliasOperationName}`
            ] = traverseToSeekArrays([...parent, aliasOperationName], aliasOperation);
          });
        } else {
          b[k] = traverseToSeekArrays([...parent, k], a[k]);
        }
      });
    } else {
      return '';
    }
  }
  return objectToTree(b);
};  


const buildQuery = (type: string, a?: Record<any, any>) => 
  traverseToSeekArrays([type], a);


const inspectVariables = (query: string) => {
  const regex = /\$\b\w*__ZEUS_VAR__\[?[^!^\]^\s^,^\)^\}]*[!]?[\]]?[!]?/g;
  let result;
  const AllVariables: string[] = [];
  while ((result = regex.exec(query))) {
    if (AllVariables.includes(result[0])) {
      continue;
    }
    AllVariables.push(result[0]);
  }
  if (!AllVariables.length) {
    return query;
  }
  let filteredQuery = query;
  AllVariables.forEach((variable) => {
    while (filteredQuery.includes(variable)) {
      filteredQuery = filteredQuery.replace(variable, variable.split('__ZEUS_VAR__')[0]);
    }
  });
  return `(${AllVariables.map((a) => a.split('__ZEUS_VAR__'))
    .map(([variableName, variableType]) => `${variableName}:${variableType}`)
    .join(', ')})${filteredQuery}`;
};


const queryConstruct = (t: 'query' | 'mutation' | 'subscription', tName: string) => (o: Record<any, any>) =>
  `${t.toLowerCase()}${inspectVariables(buildQuery(tName, o))}`;
  

const fullChainConstruct = (fn: FetchFunction) => (t: 'query' | 'mutation' | 'subscription', tName: string) => (
  o: Record<any, any>,
  variables?: Record<string, any>,
) => fn(queryConstruct(t, tName)(o), variables).then((r:any) => { 
  seekForAliases(r)
  return r
});


const seekForAliases = (response: any) => {
  const traverseAlias = (value: any) => {
    if (Array.isArray(value)) {
      value.forEach(seekForAliases);
    } else {
      if (typeof value === 'object') {
        seekForAliases(value);
      }
    }
  };
  if (typeof response === 'object' && response) {
    const keys = Object.keys(response);
    if (keys.length < 1) {
      return;
    }
    keys.forEach((k) => {
      const value = response[k];
      if (k.indexOf('__alias__') !== -1) {
        const [operation, alias] = k.split('__alias__');
        response[alias] = {
          [operation]: value,
        };
        delete response[k];
      }
      traverseAlias(value);
    });
  }
};


export const $ = (t: TemplateStringsArray): any => `ZEUS_VAR$${t.join('')}`;


const handleFetchResponse = (
  response: Parameters<Extract<Parameters<ReturnType<typeof fetch>['then']>[0], Function>>[0]
): Promise<GraphQLResponse> => {
  if (!response.ok) {
    return new Promise((_, reject) => {
      response.text().then(text => {
        try { reject(JSON.parse(text)); }
        catch (err) { reject(text); }
      }).catch(reject);
    });
  }
  return response.json();
};

const apiFetch = (options: fetchOptions) => (query: string, variables: Record<string, any> = {}) => {
    let fetchFunction = fetch;
    let queryString = query;
    let fetchOptions = options[1] || {};
    if (fetchOptions.method && fetchOptions.method === 'GET') {
      queryString = encodeURIComponent(query);
      return fetchFunction(`${options[0]}?query=${queryString}`, fetchOptions)
        .then(handleFetchResponse)
        .then((response: GraphQLResponse) => {
          if (response.errors) {
            throw new GraphQLError(response);
          }
          return response.data;
        });
    }
    return fetchFunction(`${options[0]}`, {
      body: JSON.stringify({ query: queryString, variables }),
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      ...fetchOptions
    })
      .then(handleFetchResponse)
      .then((response: GraphQLResponse) => {
        if (response.errors) {
          throw new GraphQLError(response);
        }
        return response.data;
      });
  };
  


export const Thunder = (fn: FetchFunction) => ({
  query: ((o: any, variables) =>
    fullChainConstruct(fn)('query', 'Query')(o, variables).then(
      (response: any) => response
    )) as OperationToGraphQL<ValueTypes["Query"],Query>,
mutation: ((o: any, variables) =>
    fullChainConstruct(fn)('mutation', 'Mutation')(o, variables).then(
      (response: any) => response
    )) as OperationToGraphQL<ValueTypes["Mutation"],Mutation>
});

export const Chain = (...options: fetchOptions) => ({
  query: ((o: any, variables) =>
    fullChainConstruct(apiFetch(options))('query', 'Query')(o, variables).then(
      (response: any) => response
    )) as OperationToGraphQL<ValueTypes["Query"],Query>,
mutation: ((o: any, variables) =>
    fullChainConstruct(apiFetch(options))('mutation', 'Mutation')(o, variables).then(
      (response: any) => response
    )) as OperationToGraphQL<ValueTypes["Mutation"],Mutation>
});
export const Zeus = {
  query: (o:ValueTypes["Query"]) => queryConstruct('query', 'Query')(o),
mutation: (o:ValueTypes["Mutation"]) => queryConstruct('mutation', 'Mutation')(o)
};
export const Cast = {
  query: ((o: any) => (_: any) => o) as CastToGraphQL<
  ValueTypes["Query"],
  Query
>,
mutation: ((o: any) => (_: any) => o) as CastToGraphQL<
  ValueTypes["Mutation"],
  Mutation
>
};
export const Selectors = {
  query: ZeusSelect<ValueTypes["Query"]>(),
mutation: ZeusSelect<ValueTypes["Mutation"]>()
};
  

export const Gql = Chain('https://oxaav8d1i7.execute-api.eu-central-1.amazonaws.com/dev/')