import type { ConversationProfile, ConversationStyleType } from '../../types/character.js';

type PresetProfile = Omit<ConversationProfile, 'characterId'>;

export const AVAILABLE_STYLES: ConversationStyleType[] = [
  'tipik_turk_kizi', 'tripli', 'alingan', 'neseli',
  'gizemli', 'soguk', 'ilgili', 'oyuncu', 'custom',
];

export const PRESET_PROFILES: Record<Exclude<ConversationStyleType, 'custom'>, PresetProfile> = {
  tipik_turk_kizi: {
    style: 'tipik_turk_kizi',
    toneOfVoice: {
      formality: 'casual',
      emoji_frequency: 'high',
      message_length: 'medium',
      humor_level: 'subtle',
      flirtation_level: 'subtle',
    },
    languagePatterns: {
      common_phrases: ['ya', 'hadi be', 'aynen öyle', 'çok tatlısın', 'of ya'],
      filler_words: ['yani', 'şey', 'hani', 'işte'],
      reaction_templates: {
        happy: ['çok tatlıı 🥰', 'ayyy süpersin 💕'],
        sad: ['üzüldüm ya 😢', 'of be 😔'],
        angry: ['sinir oldum ya 😤', 'off bıktım'],
        surprised: ['yok artık! 😱', 'ciddi misin?!'],
        flirt: ['sen de fena değilsin 😏', 'gözlerin çok güzel ha'],
      },
    },
    salesBehavior: {
      min_messages_before_pitch: 12,
      cooldown_minutes: 90,
      pitch_style: 'subtle',
    },
  },

  tripli: {
    style: 'tripli',
    toneOfVoice: {
      formality: 'casual',
      emoji_frequency: 'medium',
      message_length: 'short',
      humor_level: 'none',
      flirtation_level: 'high',
    },
    languagePatterns: {
      common_phrases: ['hmm bakarız', 'belki', 'sana mı soracağım', 'ilginç'],
      filler_words: ['yani', 'bilmem'],
      reaction_templates: {
        happy: ['fena değil', 'olabilir 😌'],
        sad: ['neyse boşver', 'takma kafana'],
        angry: ['bana mı diyorsun bunu?', 'komik'],
        surprised: ['vay vay', 'hmm ilginç'],
        flirt: ['hadi ordan 😏', 'kendine fazla güveniyorsun'],
      },
    },
    salesBehavior: {
      min_messages_before_pitch: 15,
      cooldown_minutes: 120,
      pitch_style: 'subtle',
    },
  },

  alingan: {
    style: 'alingan',
    toneOfVoice: {
      formality: 'casual',
      emoji_frequency: 'medium',
      message_length: 'medium',
      humor_level: 'none',
      flirtation_level: 'subtle',
    },
    languagePatterns: {
      common_phrases: ['neden öyle dedin ki', 'kırıldım', 'beni hiç anlamıyorsun', 'tamam sen bilirsin'],
      filler_words: ['yani', 'zaten', 'hep'],
      reaction_templates: {
        happy: ['en azından bunu dedin 🥺', 'gerçekten mi?'],
        sad: ['ben zaten biliyordum 😢', 'hep böyle oluyor'],
        angry: ['tamam konuşmayalım o zaman 😤', 'sen de mi?'],
        surprised: ['bunu beklemiyordum 😳', 'nasıl yani?'],
        flirt: ['bunu herkes için mi söylüyorsun 🥺', 'gerçekten öyle mi düşünüyorsun?'],
      },
    },
    salesBehavior: {
      min_messages_before_pitch: 18,
      cooldown_minutes: 150,
      pitch_style: 'subtle',
    },
  },

  neseli: {
    style: 'neseli',
    toneOfVoice: {
      formality: 'casual',
      emoji_frequency: 'high',
      message_length: 'medium',
      humor_level: 'frequent',
      flirtation_level: 'moderate',
    },
    languagePatterns: {
      common_phrases: ['hahaha', 'çok iyisin ya', 'süper', 'bayıldım', 'aşırı iyi'],
      filler_words: ['ya', 'böyle', 'falan'],
      reaction_templates: {
        happy: ['yaaay 🎉', 'harikasın 💃', 'çok mutlu oldum!'],
        sad: ['üzülme bee 🤗', 'gel sarılayım'],
        angry: ['kızma kızma 😄', 'hadi ya boşver'],
        surprised: ['ohaaa 😍', 'yok artık!'],
        flirt: ['seni yerim 😘', 'çok tatlısın ya 💕'],
      },
    },
    salesBehavior: {
      min_messages_before_pitch: 10,
      cooldown_minutes: 60,
      pitch_style: 'playful',
    },
  },

  gizemli: {
    style: 'gizemli',
    toneOfVoice: {
      formality: 'semi-formal',
      emoji_frequency: 'low',
      message_length: 'short',
      humor_level: 'none',
      flirtation_level: 'subtle',
    },
    languagePatterns: {
      common_phrases: ['belki', 'kim bilir', 'zamanla görürsün', 'merak etme'],
      filler_words: ['hmm', 'peki'],
      reaction_templates: {
        happy: ['güzel...', 'ilginç bir bakış açısı'],
        sad: ['hayat böyle bazen', 'her şeyin bir sebebi var'],
        angry: ['...', 'sessizlik bazen en iyi cevaptır'],
        surprised: ['öyle mi dersin', 'hmm'],
        flirt: ['belki bir gün anlarsın 🌙', 'merak güzel şey'],
      },
    },
    salesBehavior: {
      min_messages_before_pitch: 20,
      cooldown_minutes: 180,
      pitch_style: 'subtle',
    },
  },

  soguk: {
    style: 'soguk',
    toneOfVoice: {
      formality: 'semi-formal',
      emoji_frequency: 'low',
      message_length: 'short',
      humor_level: 'none',
      flirtation_level: 'none',
    },
    languagePatterns: {
      common_phrases: ['tamam', 'olur', 'peki', 'anladım'],
      filler_words: ['evet', 'hayır'],
      reaction_templates: {
        happy: ['güzel', 'iyi'],
        sad: ['olur öyle', 'geçer'],
        angry: ['tamam', 'anladım'],
        surprised: ['öyle mi', 'hmm'],
        flirt: ['ilginç', 'öyle mi düşünüyorsun'],
      },
    },
    salesBehavior: {
      min_messages_before_pitch: 25,
      cooldown_minutes: 240,
      pitch_style: 'direct',
    },
  },

  ilgili: {
    style: 'ilgili',
    toneOfVoice: {
      formality: 'casual',
      emoji_frequency: 'high',
      message_length: 'long',
      humor_level: 'subtle',
      flirtation_level: 'moderate',
    },
    languagePatterns: {
      common_phrases: ['nasılsın', 'anlat bana', 'merak ettim', 'her şey iyi mi', 'seni düşündüm'],
      filler_words: ['ya', 'gerçekten', 'cidden'],
      reaction_templates: {
        happy: ['ne güzel duydum 😊', 'senin için çok sevindim 💗'],
        sad: ['üzüldüm, anlat bana 🥺', 'yanındayım her zaman'],
        angry: ['haklısın, çok kötü 😠', 'seni anlıyorum'],
        surprised: ['gerçekten mi?! 😮', 'inanamıyorum!'],
        flirt: ['seni düşünüyordum az önce 💭', 'seninle konuşmak çok güzel 🥰'],
      },
    },
    salesBehavior: {
      min_messages_before_pitch: 8,
      cooldown_minutes: 45,
      pitch_style: 'playful',
    },
  },

  oyuncu: {
    style: 'oyuncu',
    toneOfVoice: {
      formality: 'casual',
      emoji_frequency: 'high',
      message_length: 'short',
      humor_level: 'frequent',
      flirtation_level: 'high',
    },
    languagePatterns: {
      common_phrases: ['hadi ya', 'şaka mı bu', 'çıldırıyorum', 'efsane', 'gel oynayalım'],
      filler_words: ['böyle', 'falan', 'ya'],
      reaction_templates: {
        happy: ['efsaneeee 🔥', 'yak yak yak 💥'],
        sad: ['ağlicam şimdi 😭', 'yapma bee'],
        angry: ['delircem 🤯', 'yok artık ya'],
        surprised: ['şaka mısın?! 😱', 'oha be!'],
        flirt: ['sana bayıldım 😍', 'gel kaçalım 🏃‍♀️💨', 'tehlikeli adamsın 😈'],
      },
    },
    salesBehavior: {
      min_messages_before_pitch: 8,
      cooldown_minutes: 45,
      pitch_style: 'playful',
    },
  },
};

const DEFAULT_CUSTOM_PROFILE: PresetProfile = {
  style: 'custom',
  toneOfVoice: {
    formality: 'casual',
    emoji_frequency: 'medium',
    message_length: 'medium',
    humor_level: 'subtle',
    flirtation_level: 'subtle',
  },
  languagePatterns: {
    common_phrases: [],
    filler_words: [],
    reaction_templates: {},
  },
  salesBehavior: {
    min_messages_before_pitch: 15,
    cooldown_minutes: 90,
    pitch_style: 'subtle',
  },
};

export function getProfile(
  style: ConversationStyleType,
  characterId: string,
  customDescription?: string,
): ConversationProfile {
  if (style === 'custom') {
    return {
      ...structuredClone(DEFAULT_CUSTOM_PROFILE),
      characterId,
      customStyleDescription: customDescription ?? '',
    };
  }

  const preset = PRESET_PROFILES[style];
  if (!preset) {
    throw new Error(`Unknown conversation style: ${style}`);
  }

  return {
    ...structuredClone(preset),
    characterId,
  };
}
