export default interface Config {
	id: number;
	basic: BasicForm;
	images: ImagesForm;
	meta: MetaForm;
	company: CompanyForm;
	account: AccountForm;
	emailTemplate: EmailTemplate;
	external: ExternalApiForm;
	// payment: PaymentForm;
}

export interface BasicForm {
	siteName: string|null;
	siteURL: string|null;
	rootID: string|null;
	fromEmail: string|null;
	fromName: string|null;
	smtpServer: string|null;
	smtpPort: number|null;
	smtpEnableSSL: boolean;
	smtpUsername: string|null;
	smtpPassword: string|null;
	adminWhiteIPList: string|null;
	frontWhiteIPList: string|null;
	blockAlertTitle: string|null;
	blockAlertContent: string|null;
	isMaintenance: boolean;
	maintenanceContent: string|null;
}

export interface ImagesForm {
	faviconPath: string|null;
	logoSquarePath: string|null;
	logoHorizontalPath: string|null;
	ogDefaultPath: string|null;
	twitterImagePath: string|null;
	appleTouchIconPath: string|null;
	appIcon192Path: string|null;
	appIcon512Path: string|null;
}

export interface MetaForm {
	keywords: string|null;
	description: string|null;
	author: string|null;
	viewport: string|null;
	applicationName: string|null;
	generator: string|null;
	robots: string|null;
	adds: string|null;
}

export interface CompanyForm {
	name: string|null;
	regNo: string|null;
	address: string|null;
	zipCode: string|null;
	owner: string|null;
	tel: string|null;
	fax: string|null;
	retailSaleNo: string|null;
	addedSaleNo: string|null;
	hosting: string|null;
	adminName: string|null;
	adminEmail: string|null;
	siteUrl: string|null;
	bankCode: string|null;
	bankOwner: string|null;
	bankNumber: string|null;
}

export interface AccountForm {
	isRegisterBlock: boolean;
	isRegisterEmailAuth: boolean;
	passwordMinLength: number|null;
	passwordUppercaseLength: number|null;
	passwordNumbersLength: number|null;
	passwordSpecialcharsLength: number|null;
	deniedEmailList: string|null;
	deniedNameList: string|null;
	changeEmailDay: number|null;
	changeNameDay: number|null;
	changeSummaryDay: number|null;
	changeIntroDay: number|null;
	changePasswordDay: number|null;
	isLoginEmailVerifiedOnly: boolean;
	maxLoginTryCount: number|null;
	maxLoginTryLimitSecond: number|null;
}

export interface EmailTemplate {
	registerEmailFormTitle: string|null;
	registerEmailFormContent: string|null;
	registrationEmailFormTitle: string|null;
	registrationEmailFormContent: string|null;
	resetPasswordEmailFormTitle: string|null;
	resetPasswordEmailFormContent: string|null;
	changedPasswordEmailFormTitle: string|null;
	changedPasswordEmailFormContent: string|null;
	withdrawEmailFormTitle: string|null;
	withdrawEmailFormContent: string|null;
	emailVerifyFormTitle: string|null;
	emailVerifyFormContent: string|null;
	changedEmailFormTitle: string|null;
	changedEmailFormContent: string|null;
}

export interface ExternalApiForm {
	youTubeApiKeyEnc: string|null;
	youTubeApiName: string|null;
	googleClientId: string|null;
	googleClientSecretEnc: string|null;
	googleAppId: string|null;
}

// export interface PaymentForm {

// }
