export type VegaTranslationConfig = {
	resources?: VegaTranslationResources;
	language?: string;
};

export interface VegaTranslationResources {
	[language: string]: Record<string, string>;
}

export type TranslationKeyType = 'static' | 'dynamic';

export interface TranslationKeyMap {
	static: StaticTranslationKey;
	dynamic: string;
}

export type PreservedTranslationOutput = {
	content: string;
	isPreserved: boolean;
};

/* eslint-disable @typescript-eslint/naming-convention */
export type StaticTranslationKey =
	// Form validation rule
	| 'This field is required'
	| 'The minimum input value is {0}'
	| 'The maximum input value is {0}'
	| 'The end value should be greater than the start value'
	| 'The end date should be later than start date'
	| 'Credit card number is invalid'
	| 'Please enter the correct email format.'
	| 'The maximum input length is {0}'
	| 'The start date should be later than {0}'
	| 'The start date should be earlier than {0}'
	| 'The end date should be earlier than {0}'
	| 'The date should be later than {0}'
	| 'The date should be earlier than {0}'
	| 'The minimum input length is {0}'
	| 'The end time should be later than start time'
	| 'Phone number is not valid'
	| 'Phone number is valid but it belongs to country {0}, not country {1}'
	| 'The value does not exist in the source'
	| 'There are values that do not exist in the source'
	// Component internal text
	// Common start
	| 'January'
	| 'February'
	| 'March'
	| 'April'
	| 'May'
	| 'June'
	| 'July'
	| 'August'
	| 'September'
	| 'October'
	| 'November'
	| 'December'
	| 'Jan'
	| 'Feb'
	| 'Mar'
	| 'Apr'
	| 'Jun'
	| 'Jul'
	| 'Aug'
	| 'Sep'
	| 'Oct'
	| 'Nov'
	| 'Dec'
	| 'Sun'
	| 'Mon'
	| 'Tue'
	| 'Wed'
	| 'Thu'
	| 'Fri'
	| 'Sat'
	| 'Sun-short'
	| 'Mon-short'
	| 'Tue-short'
	| 'Wed-short'
	| 'Thu-short'
	| 'Fri-short'
	| 'Sat-short'
	| 'Sun-full'
	| 'Mon-full'
	| 'Tue-full'
	| 'Wed-full'
	| 'Thu-full'
	| 'Fri-full'
	| 'Sat-full'
	| 'Day'
	| 'Week'
	| 'Month'
	| 'Today'
	| 'Clear'
	| 'Previous month'
	| 'Next month'
	// Common end
	| 'Viewing'
	| 'Show'
	| 'Go To'
	| 'Viewing {0}-{1} of {2}'
	| 'Viewing [{0}-{1}] of {2}'
	| 'Show [{0} items / page]'
	| 'Items Per Page'
	| 'Upload'
	| 'All Day'
	| 'Select or drop your file here'
	| 'Please sign here'
	| 'Clear Signature'
	| 'Start Date'
	| 'End Date'
	| 'Please select'
	| 'No options'
	| 'No results found'
	| 'Minimum'
	| 'Maximum'
	| 'Select Time'
	| 'Start Time'
	| 'End Time'
	| 'There is no data to display'
	| 'Reset Selection'
	| 'Text Styles'
	| 'Bold'
	| 'Italic'
	| 'Underline'
	| 'Strikethrough'
	| 'Code'
	| 'Text Color'
	| 'Left Align'
	| 'Center Align'
	| 'Right Align'
	| 'Justified'
	| 'Bullets'
	| 'Numbers'
	| 'More Indent'
	| 'Less Indent'
	| 'Link'
	| 'Image'
	| 'Upload from computer'
	| 'Insert via URL'
	| 'Image via URL'
	| 'Insert'
	| 'Clear Style'
	| 'URL'
	| 'Text'
	| 'Edit'
	| 'Unlink'
	| 'Size'
	| 'Alt Text'
	| 'Delete Image'
	| 'Sm'
	| 'Md'
	| 'Lg'
	| 'Title'
	| 'Subtitle'
	| 'Heading 1'
	| 'Heading 2'
	| 'Heading 3'
	| 'Paragraph'
	| 'Reset Selection'
	| 'Select Language'
	| 'Delete Code'
	| 'Copy Code'
	| 'Code Block'
	| 'Copied'
	| 'date picker'
	| 'Selected result'
	| 'Repeat every {0} days'
	| 'Repeat daily'
	| 'Repeat every {0} weeks on {1}'
	| 'Repeat weekly on {0}'
	| 'Repeat every {0} months on day {1}'
	| 'Repeat monthly on day {0}'
	| 'Repeat every {0} years on {1} {2}'
	| 'Repeat yearly on {0} {1}'
	| 'until {0}'
	| 'after {0} occurrences'
	| 'Sunday'
	| 'Monday'
	| 'Tuesday'
	| 'Wednesday'
	| 'Thursday'
	| 'Friday'
	| 'Saturday'
	| 'am'
	| 'pm'
	| '{0} Selected'
	| 'Close event preview detail'
	| 'More actions'
	| 'Clear color'
	| 'Color swatch'
	| 'Color {0}';
