import { ArchonShard, SteelPath } from "../types.mjs";
import { Locale } from "../exports.mjs";

//#region tools/translation.d.ts
/**
 * Rough Titlecase!
 * @param {string} str string to be titlecased
 * @returns {string} titlecased string
 */
declare const toTitleCase: (str: string) => string;
/**
 * Utility function to split the resource name and return somewhat human-readable string
 * @param {string} str localization resource key
 * @returns {string} human-readable string
 */
declare const splitResourceName: (str: string) => string;
declare const lastResourceName: (str: string | undefined) => string | undefined;
/**
 *
 * @param {string} color - The internal color name
 * @param {string} dataOverride locale for use with translation
 * @returns {Object | undefined}
 */
declare const archonShard: (color: string, dataOverride?: Locale) => ArchonShard;
/**
 *
 * @param {string} color - The internal color name
 * @param {string} dataOverride locale for use with translation
 * @returns {string}
 */
declare const archonShardColor: (color: string, dataOverride?: Locale) => string;
/**
 *
 * @param {string} color - The internal color name
 * @param {string} upgradeType - The upgrade type
 * @param {string} dataOverride locale for use with translation
 * @returns {string}
 */
declare const archonShardUpgradeType: (color: string, upgradeType: string, dataOverride?: Locale) => string;
/**
 *
 * @param {string} key - The data key
 * @param {string} dataOverride locale for use with translation
 * @returns {string} faction name
 */
declare const faction: (key: string, dataOverride?: Locale) => string;
/**
 *
 * @param {string} key - The data key
 * @param {string} dataOverride locale for use with translation
 * @returns {string} node name
 */
declare const node: (key: string, dataOverride?: Locale) => string;
/**
 *
 * @param {string} key - The data key
 * @param {string} dataOverride locale for use with translation
 * @returns {string} mission type of the node
 */
declare const nodeMissionType: (key: string, dataOverride?: Locale) => string;
/**
 *
 * @param {string} key - The data key
 * @param {string} dataOverride locale for use with translation
 * @returns {string} faction that controls the node
 */
declare const nodeEnemy: (key: string, dataOverride?: Locale) => string;
/**
 *
 * @param {string} key - The data key
 * @param {string} dataOverride locale for use with translation
 * @returns {string} localization for language string
 */
declare const languageString: (key: string, dataOverride?: Locale) => string;
/**
 *
 * @param {string} key - The data key
 * @param {string} dataOverride locale for use with translation
 * @returns {string} localization for language description
 */
declare const languageDesc: (key: string, dataOverride?: Locale) => string;
/**
 *
 * @param {string} key - The data key
 * @param {string} dataOverride locale for use with translation
 * @returns {string} translation for mission type
 */
declare const missionType: (key: string, dataOverride?: Locale) => string;
/**
 *
 * @param {string} key - The data key
 * @param {string} dataOverride locale for use with translation
 * @returns {string} conclave mode
 */
declare const conclaveMode: (key: string, dataOverride?: Locale) => string;
/**
 *
 * @param {string} key - The data key
 * @param {string} dataOverride locale for use with translation
 * @returns {{ value: string; description: string }} conclave category
 */
declare const conclaveCategory: (key: string, dataOverride?: Locale) => string;
/**
 *
 * @param {string} key - The data key
 * @param {string} dataOverride locale for use with translation
 * @returns {string} fissure modifier data
 */
declare const fissureModifier: (key: string, dataOverride?: Locale) => string;
/**
 *
 * @param {string} key - The data key
 * @param {string} dataOverride locale for use with translation
 * @returns {number | string} fissure tier
 */
declare const fissureTier: (key: string, dataOverride?: Locale) => number | string;
/**
 *
 * @param {string} key - The data key
 * @param {string} dataOverride locale for use with translation
 * @returns {string} syndicate name
 */
declare const syndicate: (key: string, dataOverride?: Locale) => string;
/**
 *
 * @param {string} key - The data key
 * @param {string} dataOverride locale for use with translation
 * @returns {string} upgrade type
 */
declare const upgrade: (key: string, dataOverride?: Locale) => string;
/**
 *
 * @param {string} key - The data key
 * @param {string} dataOverride locale for use with translation
 * @returns {string} mathematical operation value
 */
declare const operation: (key: string, dataOverride?: Locale) => string;
/**
 *
 * @param {string} key - The data key
 * @param {string} dataOverride locale for use with translation
 * @returns {string} symbol of mathematical operation
 */
declare const operationSymbol: (key: string, dataOverride?: Locale) => string;
/**
 * @param {string} key - The data key
 * @param {string} dataOverride locale for use with translation
 * @returns {string} sortie boss name
 */
declare const sortieBoss: (key: string, dataOverride?: Locale) => string;
/**
 * @param {string} key - The data key
 * @param {string} dataOverride locale for use with translation
 * @returns {string} faction for a sortie based on the boss
 */
declare const sortieFaction: (key: string, dataOverride?: Locale) => string;
/**
 *
 * @param {string} key - The data key
 * @param {string} dataOverride locale for use with translation
 * @returns {string} sortie modifier data
 */
declare const sortieModifier: (key: string, dataOverride?: Locale) => string;
/**
 * @param {string} key - The data key
 * @param {string} dataOverride locale for use with translation
 * @returns {string} sortie modifier description
 */
declare const sortieModDesc: (key: string, dataOverride?: Locale) => string;
/**
 * Retrieve the localized region for a given key
 * @param {string | number} key - The region key
 * @param {string} dataOverride - The locale to use for translations
 * @returns {string} localized region name
 */
declare const region: (key: number, dataOverride?: Locale) => string | number;
/**
 * Retrieve conclave challenge name for the given key and locale
 * @param {string} key key to retrieve
 * @param {string} dataOverride locale key override
 * @returns {{
 *   title: string,
 *   description: string,
 *   standing: number,
 * }} - The conclave challenge name for the given key
 */
declare const conclaveChallenge: (key: string, dataOverride?: Locale) => {
  title: string;
  description: string;
  standing: number;
};
/**
 * Get the steel path data for given key
 * @param {string} dataOverride - The locale to use for translations
 * @returns {string} - The steel path data for the given key
 */
declare const steelPath: (dataOverride?: Locale) => SteelPath;
/**
 * Translate the given focus school
 * @param {string} focus The focus school to translate
 * @returns {string} The translated focus school
 */
declare const translateFocus: (focus?: string) => string;
/**
 * Translate the given polarity
 * @param {string?} pol The polarity to translate
 * @returns {string} The translated polarity
 */
declare const translatePolarity: (pol?: string) => string;
/**
 * Translate the given event key
 * @param {string} key Unique event type
 * @returns {string}
 */
declare const translateCalendarEvent: (key: string) => string;
/**
 * Translate the given season name to a non-unique string
 * @param {string} season Unique season name
 * @returns {string}
 */
declare const translateSeason: (season: string) => string;
declare const translateArchimedeaType: (type: string) => string;
/**
 * An object containing functions to convert in-game names to their localizations
 * @typedef {Record<string, function>} Translator
 * @property {function} faction          - Converts faction names
 * @property {function} node             - Converts star map node names
 * @property {function} nodeMissionType  - Returns the mission type of given node
 * @property {function} nodeEnemy        - Returns the faction that controls a given node
 * @property {function} languageString   - Converts generic language strings
 * @property {function} languageDesc     - Converts generic language strings
 *                                          and retrieves the description
 * @property {function} missionType      - Converts mission types
 * @property {function} conclaveMode     - Converts conclave modes
 * @property {function} conclaveCategory - Converts conclave challenge categories
 * @property {function} fissureModifier  - Converts fissure mission modifiers
 * @property {function} syndicate        - Converts syndicate names
 * @property {function} upgrade          - Converts upgrade types
 * @property {function} operation        - Converts operation types
 * @property {function} sortieBoss       - Converts sortie boss names
 * @property {function} sortieModifier    - Converts sortie modifier types
 * @property {function} sortieModDesc    - Converts sortie modifier type descriptions
 * @property {function} region           - Converts persistent enemy region indicies
 * @property {function} conclaveChallenge - Convert conclave identifiers into standing data
 * @property {function} steelPath        -  Retrieve Steel Path rotation data for locale
 * @property {function} toTitleCase      - Format provided string as titlecase
 * @property {function} translateFocus   - Translate focus schools
 * @property {function} translatePolarity - Translate polarities
 * @property {function} archonShard      - Converts archon shard names
 * @property {function} archonShardColor - Converts archon shard names to in-game color values
 * @property {function} archonShardUpgradeType - Convert archon shard upgrade type
 * @property {function} translateCalendarEvent - Translate the given event key
 * @property {function} translateSeason - Translate the given season name to a non-unique string
 */
declare const _default: {
  faction: (key: string, dataOverride?: Locale) => string;
  node: (key: string, dataOverride?: Locale) => string;
  nodeMissionType: (key: string, dataOverride?: Locale) => string;
  nodeEnemy: (key: string, dataOverride?: Locale) => string;
  languageString: (key: string, dataOverride?: Locale) => string;
  languageDesc: (key: string, dataOverride?: Locale) => string;
  missionType: (key: string, dataOverride?: Locale) => string;
  conclaveMode: (key: string, dataOverride?: Locale) => string;
  conclaveCategory: (key: string, dataOverride?: Locale) => string;
  fissureModifier: (key: string, dataOverride?: Locale) => string;
  fissureTier: (key: string, dataOverride?: Locale) => number | string;
  syndicate: (key: string, dataOverride?: Locale) => string;
  upgrade: (key: string, dataOverride?: Locale) => string;
  operation: (key: string, dataOverride?: Locale) => string;
  operationSymbol: (key: string, dataOverride?: Locale) => string;
  sortieBoss: (key: string, dataOverride?: Locale) => string;
  sortieModifier: (key: string, dataOverride?: Locale) => string;
  sortieModDesc: (key: string, dataOverride?: Locale) => string;
  sortieFaction: (key: string, dataOverride?: Locale) => string;
  region: (key: number, dataOverride?: Locale) => string | number;
  conclaveChallenge: (key: string, dataOverride?: Locale) => {
    title: string;
    description: string;
    standing: number;
  };
  steelPath: (dataOverride?: Locale) => SteelPath;
  toTitleCase: (str: string) => string;
  translateFocus: (focus?: string) => string;
  translatePolarity: (pol?: string) => string;
  archonShard: (color: string, dataOverride?: Locale) => ArchonShard;
  archonShardColor: (color: string, dataOverride?: Locale) => string;
  archonShardUpgradeType: (color: string, upgradeType: string, dataOverride?: Locale) => string;
  translateCalendarEvent: (key: string) => string;
  translateSeason: (season: string) => string;
};
//#endregion
export { archonShard, archonShardColor, archonShardUpgradeType, conclaveCategory, conclaveChallenge, conclaveMode, _default as default, faction, fissureModifier, fissureTier, languageDesc, languageString, lastResourceName, missionType, node, nodeEnemy, nodeMissionType, operation, operationSymbol, region, sortieBoss, sortieFaction, sortieModDesc, sortieModifier, splitResourceName, steelPath, syndicate, toTitleCase, translateArchimedeaType, translateCalendarEvent, translateFocus, translatePolarity, translateSeason, upgrade };