/*
 * SDK Pullenti Lingvo, version 4.33, fabruary 2026. Copyright (c) 2013-2026, Pullenti. All rights reserved. 
 * Non-Commercial Freeware and Commercial Software.
 * This class is generated using the converter Unisharping (www.unisharping.ru) from Pullenti C#.NET project. 
 * The latest version of the code is available on the site www.pullenti.ru
 */


const ProcessorService = require("./ner/ProcessorService");
const DecreeAnalyzer = require("./ner/decree/DecreeAnalyzer");
const TransportAnalyzer = require("./ner/transport/TransportAnalyzer");
const InstrumentAnalyzer = require("./ner/instrument/InstrumentAnalyzer");
const PersonAnalyzer = require("./ner/person/PersonAnalyzer");
const MailAnalyzer = require("./ner/mail/MailAnalyzer");
const GeoAnalyzer = require("./ner/geo/GeoAnalyzer");
const TitlePageAnalyzer = require("./ner/titlepage/TitlePageAnalyzer");
const WeaponAnalyzer = require("./ner/weapon/WeaponAnalyzer");
const SemanticService = require("./semantic/SemanticService");
const MorphLang = require("./morph/MorphLang");
const NamedEntityAnalyzer = require("./ner/named/NamedEntityAnalyzer");
const BookLinkAnalyzer = require("./ner/booklink/BookLinkAnalyzer");
const GoodsAnalyzer = require("./ner/goods/GoodsAnalyzer");
const DateAnalyzer = require("./ner/date/DateAnalyzer");
const UriAnalyzer = require("./ner/uri/UriAnalyzer");
const KeywordAnalyzer = require("./ner/keyword/KeywordAnalyzer");
const MoneyAnalyzer = require("./ner/money/MoneyAnalyzer");
const PhoneAnalyzer = require("./ner/phone/PhoneAnalyzer");
const DefinitionAnalyzer = require("./ner/definition/DefinitionAnalyzer");
const AddressAnalyzer = require("./ner/address/AddressAnalyzer");
const OrganizationAnalyzer = require("./ner/org/OrganizationAnalyzer");
const BankAnalyzer = require("./ner/bank/BankAnalyzer");
const DenominationAnalyzer = require("./ner/denomination/DenominationAnalyzer");
const MeasureAnalyzer = require("./ner/measure/MeasureAnalyzer");

/**
 * Инициализация SDK Pullenti
 * 
 */
class Sdk {
    
    static getVersion() {
        return ProcessorService.getVersion();
    }
    
    static getVersionDate() {
        return ProcessorService.getVersionDate();
    }
    
    /**
     * Инициализация всего SDK и на всех поддержанных языках. 
     * Вызывать в самом начале работы. Инициализируется морфология (MorphologyService), 
     * служба процессоров (ProcessorService), все доступные анализаторы сущностей и 
     * семантический анализ (SemanticService). Так что больше ничего инициализировать не нужно.
     * Полная инициализация
     */
    static initializeAll() {
        Sdk.initialize(MorphLang.ooBitor(MorphLang.RU, MorphLang.ooBitor(MorphLang.UA, MorphLang.EN)));
    }
    
    /**
     * Инициализация SDK. 
     * Вызывать в самом начале работы. Инициализируется морфология (MorphologyService), 
     * служба процессоров (ProcessorService), все доступные анализаторы сущностей и 
     * семантический анализ (SemanticService). Так что больше ничего инициализировать не нужно.
     * @param lang по умолчанию, русский и английский
     * Инициализация конкретных языков
     */
    static initialize(lang = null) {
        // сначала инициализация всего сервиса
        ProcessorService.initialize(lang);
        // а затем конкретные анализаторы (какие нужно, в данном случае - все)
        MoneyAnalyzer.initialize();
        UriAnalyzer.initialize();
        PhoneAnalyzer.initialize();
        DateAnalyzer.initialize();
        KeywordAnalyzer.initialize();
        DefinitionAnalyzer.initialize();
        DenominationAnalyzer.initialize();
        MeasureAnalyzer.initialize();
        BankAnalyzer.initialize();
        GeoAnalyzer.initialize();
        AddressAnalyzer.initialize();
        OrganizationAnalyzer.initialize();
        PersonAnalyzer.initialize();
        MailAnalyzer.initialize();
        TransportAnalyzer.initialize();
        DecreeAnalyzer.initialize();
        InstrumentAnalyzer.initialize();
        TitlePageAnalyzer.initialize();
        BookLinkAnalyzer.initialize();
        GoodsAnalyzer.initialize();
        NamedEntityAnalyzer.initialize();
        WeaponAnalyzer.initialize();
        // ещё инициализируем семантическую обработки (в принципе, она не используется для задачи NER)
        SemanticService.initialize();
    }
}


module.exports = Sdk