import {
	IAuthenticateGeneric,
	ICredentialType,
	INodeProperties,
} from 'n8n-workflow';

export class KeitaroApi implements ICredentialType {
	name = 'keitaroApi';
	displayName = 'Keitaro API';
	documentationUrl = 'https://admin-api.docs.keitaro.io/';
	properties: INodeProperties[] = [
		{
			displayName: 'Домен',
			name: 'domain',
			type: 'string',
			default: '',
			required: true,
			placeholder: 'https://your-domain.com',
			description: 'Полный URL вашего Keitaro без слеша в конце (например, https://your-domain.com)',
		},
		{
			displayName: 'API Ключ',
			name: 'apiKey',
			type: 'string',
			typeOptions: {
				password: true,
			},
			default: '',
			required: true,
			description: 'API ключ для доступа к Keitaro. Можно найти в Настройки -> Интеграции -> Admin API',
		},

		{
			displayName: 'Postback URL',
			name: 'postbackUrl',
			type: 'string',
			default: '',
			required: true,
			placeholder: 'https://your-domain.com/postback',
			description: 'Базовый URL для постбеков. Используется в разделе "Обслуживание → Postback URL"',
		},
		{
			displayName: 'Postback Key',
			name: 'postbackKey',
			type: 'string',
			typeOptions: {
				password: true,
			},
			default: '',
			required: true,
			description: 'Ключ постбека для аутентификации запросов. Указан в конфиге как POSTBACK_KEY или TRACKER_POSTBACK_KEY',
		},
		{
			displayName: 'Настройки Трансформации Статусов',
			name: 'statusTransformation',
			type: 'boolean',
			default: false,
			description: 'Настроить глобальную трансформацию статусов конверсий',
		},
		{
			displayName: 'Статусы Лидов',
			name: 'leadStatuses',
			type: 'string',
			default: 'lead,registration,new',
			required: false,
			displayOptions: {
				show: {
					statusTransformation: [true],
				},
			},
			description: 'Статусы, которые будут трансформированы в "Лид". Через запятую.',
		},
		{
			displayName: 'Статусы Продаж',
			name: 'saleStatuses',
			type: 'string',
			default: 'sale,paid,billed,completed',
			required: false,
			displayOptions: {
				show: {
					statusTransformation: [true],
				},
			},
			description: 'Статусы, которые будут трансформированы в "Продажа". Через запятую.',
		},
		{
			displayName: 'Статусы Отклонений',
			name: 'rejectedStatuses',
			type: 'string',
			default: 'rejected,canceled,fake,fraud',
			required: false,
			displayOptions: {
				show: {
					statusTransformation: [true],
				},
			},
			description: 'Статусы, которые будут трансформированы в "Отклонено". Через запятую.',
		},
		{
			displayName: 'Статусы Регистраций',
			name: 'regStatuses',
			type: 'string',
			default: 'reg,registration',
			required: false,
			displayOptions: {
				show: {
					statusTransformation: [true],
				},
			},
			description: 'Статусы для отслеживания регистраций. Через запятую. Для Keitaro 10.3+.',
		},
		{
			displayName: 'Статусы Депозитов',
			name: 'depStatuses',
			type: 'string',
			default: 'dep,deposit',
			required: false,
			displayOptions: {
				show: {
					statusTransformation: [true],
				},
			},
			description: 'Статусы для отслеживания депозитов. Через запятую. Для Keitaro 10.3+.',
		},
		{
			displayName: 'Валюта по умолчанию',
			name: 'defaultCurrency',
			type: 'string',
			default: 'USD',
			required: false,
			description: 'Валюта, используемая по умолчанию для выплат и затрат',
		},
	];

	authenticate: IAuthenticateGeneric = {
		type: 'generic',
		properties: {
			headers: {
				'Api-Key': '={{$credentials.apiKey}}',
				'Content-Type': 'application/json',
				'Accept': 'application/json',
			},
		},
	};
} 