/** Тип (признак) платежного агента */
export declare enum AgentType {
    /** Банковский платежный агент */
    BankPaymentAgent = "BANK_PAYMENT_AGENT",
    /** Банковский платежный субагент */
    BankPaymentSubagent = "BANK_PAYMENT_SUBAGENT",
    /** Платежный агент */
    PaymentAgent = "PAYMENT_AGENT",
    /** Платежный субагент */
    PaymentSubagent = "PAYMENT_SUBAGENT",
    /** Поверенный */
    Confidant = "CONFIDANT",
    /** Комиссионер */
    Commissioner = "COMMISSIONER",
    /** Агент */
    Agent = "AGENT"
}

declare interface BaseCreateReceiptRequest {
    /** ИНН компании */
    Inn: string;
    /**
     * Идентификатор ФД в вашей информационной системе.
     *
     * Использование идентификатора предотвращает формирование дублей чеков
     *
     * **Важно!** Изменяйте идентификатор для перепробития неуспешных чеков в Ferma® (`StatusCode`: `3`)
     */
    InvoiceId: string;
    /**
     * Интервал повтора проверки КМ в честном знаке (в секундах).
     *
     * Минимум `1`, максимум `1800`.
     */
    McCheckRetryPeriodSec?: number;
    /**
     * URL адрес для отправки уведомления о статусе ФД
     *
     * Если поле заполнено корректно, то после обработки документа (успешной или неуспешной фискализации в ККТ: статус `CONFIRMED` или `KKT_ERROR`), ответ будет отправлен POST запросом по URL указанному в данном поле. Корректность заполненного поля определяется по регулярному выражению:`^http(s?)\:\/\/[0-9a-zA-Zа-яА-Я]([-.\w]*[0-9a-zA-Zа-яА-Я])*(:(0-9)*)*(\/?)([a-zA-Z0-9а-яА-Я\-\.\?\,\'\/\\\+&=%\$#_]*)?$\\`.
     */
    CallbackUrl?: string;
    /** Информация о кассире */
    Cashier?: {
        /** ФИО кассира */
        Name?: string;
        /** ИНН кассира */
        Inn?: string;
    };
    /** Содержимое клиентского чека */
    CustomerReceipt: {
        /**
         * Параметр проверки кода маркировки.
         *
         * Если вы в запросе не указали параметр CheckMcMode, чек пробьётся при любом результате проверки кода маркировки в ЦРПТ.
         * */
        CheckMcMode?: CheckMcMode;
        /**
         * Система налогообложения.
         *
         * Внимание! Список применения значений систем налогообложения формируется на этапе регистрации кассы. Чтобы изменить список допустимых значений, необходимо выполнить перерегистрацию кассы.
         */
        TaxationSystem: TaxationSystem;
        /** Адрес электронной почты клиента */
        Email?: string;
        /** Контактный телефон клиента */
        Phone?: string;
        /**
         * Признак предмета расчёта для всего чека
         *
         * Если в данном поле значение клиентом не указано, то используется значение по умолчанию, которое устанавливается по умолчанию при заведении учетной записи в информационной системе Ferma®.
         */
        PaymentType: ReceiptPaymentType;
        /**
         * Использование ФА в сервисе Ferma®.
         *
         * Если используется касса ФА в сервисе Ferma® необходимо установить значение true. Если используется касса ФС необходимо установить значение false.
         * Касса ФА может применятся для:
         *
         * – вендингового аппарата, при совершении расчетов за товары или услуги;
         *
         * – совершения расчетов за проезд в автоматизированном режиме (через валидатор) или совершения расчетов через терминал кондуктора.
         */
        KktFA: boolean;
        /** Номер автоматического устройства */
        AutomatNumber?: string;
        /** Место осуществления расчетов */
        BillAddress: string;
        /** Дополнительный реквизит пользователя с учетом особенностей сферы деятельности, в которой осуществляются расчеты */
        CustomUserProperty?: {
            /** Наименование дополнительного реквизита */
            Name: string;
            /** Значение дополнительного реквизита */
            Value: string;
        };
        /**
         * Данные платежного агента .
         *
         * Для касс с ФФД 1.2 параметр должен передаваться только в отдельные позиции и не может быть передан в структуре всего чека.
         *
         * Для касс с ФФД 1.05-1.1 параметр может передаваться как на отдельные позиции, так и в структуре всего чека.
         */
        PaymentAgentInfo?: PaymentAgentInfo;
        /** Данные о покупателе */
        ClientInfo?: {
            /**
             * ФИО или наименование организации, если клиент юр. лицо.
             *
             * Не более 256 символов в поле.
             */
            Name?: string;
            /**
             * ИНН покупателя.
             *
             * Длина 10-12 цифр.
             */
            Inn?: string;
            /**
             * Дата рождения покупателя (клиента).
             *
             * В формате `ДД.ММ.ГГ`, где ДД — день, ММ — месяц, ГГ — год.
             */
            Birthday?: string;
            /** Гражданство покупателя (клиента) */
            Citizenship?: string;
            /** Код вида документа, удостоверяющего личность */
            IdDocType?: IdDocumentType;
            /** Данные документа, удостоверяющего личность покупателя (клиента) */
            IdDocData?: string;
            /** Адрес покупателя (клиента) */
            Address?: string;
        };
        /** Отраслевой реквизит чека */
        IndustryItemRequisite?: IndustryItemRequisite;
        /** Операционный реквизит чека */
        OperationRequisite?: {
            /** Идентификатор операции */
            Id?: string;
            /** Данные операции */
            Details?: string;
            /** Дата и время задается в формате unix timestamp */
            DateTime?: string;
        };
        /** Суммы по типам оплат */
        PaymentItems: {
            /** Тип оплаты */
            PaymentType: PaymentType;
            /** Сумма по типу в рублях */
            Sum: number;
        }[];
        /**
         * Дополнительный реквизит чека (БСО).
         *
         * Применяется в составе кассового чека (БСО). Максимальная длина - 16 символов.
         */
        AdditionalReceiptProp?: string;
        /** Товарные позиции, приобретаемые клиентом */
        Items: ReceiptItem[];
    };
}

/** Режим проверка кода маркировки */
declare enum CheckMcMode {
    /** Вне зависимости от результата проверки, устанавливается по умолчанию, чек пробьётся */
    IgnoreAnyErrors = "IGNORE_ANY_ERRORS",
    /** Касса пробивает чек, если результат проверки КМ в ЦРПТ не равен значению [М-]. Если результат проверки кода окажется равен значению [М-] - касса чек не пробивает */
    RequireNoMMinus = "REQUIRE_NO_M_MINUS"
}

/** Информацию по чеку коррекции */
export declare interface CorrectionInfo {
    /** Описание коррекции и её причин */
    Description: string;
    /** Тип коррекции */
    Type?: CorrectionType;
    /**
     * Дата пробития чека, к которому применяется чек коррекции.
     *
     * В формате `ДД.ММ.ГГ`, где ДД — день, ММ — месяц, ГГ — год.
     */
    ReceiptDate?: string;
    /** Номер предписания налогового органа */
    ReceiptId?: string;
}

export declare type CorrectionReceiptType = ReceiptType.IncomeCorrection | ReceiptType.BuyCorrection | ReceiptType.IncomeReturnCorrection | ReceiptType.ExpenseReturnCorrection;

/** Тип коррекции */
export declare enum CorrectionType {
    /** Коррекция производится самостоятельно */
    Self = "SELF",
    /** Коррекция производится по предписанию */
    INSTRUCTION = "INSTRUCTION"
}

declare type CreateCorrectionReceiptRequest = BaseCreateReceiptRequest & {
    /** Тип ФД */
    Type: CorrectionReceiptType;
    CustomerReceipt: {
        CorrectionInfo: CorrectionInfo;
    };
};

/**
 * Параметры запроса на формирования фискального документа
 *
 * @see https://ofd.ru/razrabotchikam/ferma#%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%BE%D0%B2_items_%D1%82%D0%B5%D0%B3_1059
 */
export declare type CreateReceiptRequest = CreateRegularReceiptRequest | CreateCorrectionReceiptRequest;

declare type CreateRegularReceiptRequest = BaseCreateReceiptRequest & {
    /** Тип ФД */
    Type: RegularReceiptType;
};

/**
 * Ferma®
 *
 * Версия 2.67 от 10.12.2024
 *
 * @see https://ofd.ru/razrabotchikam/ferma
 */
export declare class Ferma {
    private authedFetcher;
    /**
     * Конструктор класса
     *
     * Значения параметров можно получить в личном кабинете клиента в разделе Ferma®, после покупки услуг сервиса Ferma® или узнать у вашего менеджера.
     *
     */
    constructor({ login, password, baseUrl, }: {
        /** Логин для доступа к API */
        login: string;
        /** Пароль API */
        password: string;
        /**
         * Базовый URL API.
         *
         * Для тестового API укажите `FERMA_TEST_OPTIONS.baseUrl`
         *
         * @default `https://ferma.ofd.ru/api`
         */
        baseUrl?: string;
    });
    /**
     * Запрос на формирование фискальных документов.
     *
     * @param data Данные для формирования документа
     * @returns ID документа
     *
     * @see https://ofd.ru/razrabotchikam/ferma#%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81_%D0%BD%D0%B0_%D1%84%D0%BE%D1%80%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%84%D0%B8%D1%81%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2
     */
    createReceipt(data: CreateReceiptRequest): Promise<string>;
    /**
     * Проверка статуса кассового чека.
     *
     * Важно! Информация о статусе кассового чека хранится в оперативной памяти сервиса Ferma® всего сутки. После истечения суток при повторном запросе статуса кассового чека в ответ будет выведена ошибка «Чек не найден». После истечения суток информацию о статусе кассового чека можно получить в запросе реестра кассовых чеков.
     *
     * @param data `InvoiceId` или `ReceiptId` чека
     * @returns Статус чека
     *
     * @see https://ofd.ru/razrabotchikam/ferma#%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D0%B0_%D0%BA%D0%B0%D1%81%D1%81%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%87%D0%B5%D0%BA%D0%B0
     */
    getReceipt(data: {
        /** Идентификатор, присвоенный вашей информационной системой в запросе на формирование кассового чека. */
        InvoiceId: string;
    } | {
        /** Идентификатор, присвоенный сервисом Ferma® */
        ReceiptId: string;
    }): Promise<GetReceiptResponse>;
}

/**
 * Опции для тестирования API
 *
 * @see https://ofd.ru/razrabotchikam/ferma#%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%BE%D0%B5_api_ferma
 */
export declare const FERMA_TEST_OPTIONS: {
    /** Базовый тестовый URL */
    readonly baseUrl: "https://ferma-test.ofd.ru/api";
    /** ИНН тестовой организации */
    readonly inn: "3245001416";
    /** Данные для тестирования ФФД версии 1.1 */
    readonly ffd11: {
        /** Логин */
        readonly login: "fermatest1";
        /** Пароль */
        readonly password: "Hjsf3321klsadfAA";
    };
    /** Данные для тестирования ФФД весрии 1.2 */
    readonly ffd12: {
        /** Логин */
        readonly login: "fermatest2";
        /** Пароль */
        readonly password: "Go2999483Mb";
    };
};

export declare interface FermaErrorResponse {
    Status: "Failed";
    Error: {
        Code: number;
        Message: string;
    };
}

export declare type FermaResponse<T> = FermaSuccessResponse<T> | FermaErrorResponse;

export declare interface FermaSuccessResponse<T> {
    Status: "Success";
    Data: T;
}

/**
 * Идентификатор ФОИВ (ФЕДЕРАЛЬНЫЕ ОРГАНЫ ИСПОЛНИТЕЛЬНОЙ ВЛАСТИ).
 *
 * @see https://ofd.ru/razrabotchikam/ferma#%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D1%8B%D0%B5_%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B0_foivid
 */
export declare enum FoivId {
    /** Министерство внутренних дел Российской Федерации */
    Mvd = "001",
    /** Министерство Российской Федерации по делам гражданской обороны, чрезвычайным ситуациям и ликвидации последствий стихийных бедствий */
    Emercom = "002",
    /** Министерство иностранных дел Российской Федерации */
    Mid = "003",
    /** Федеральное агентство по делам Содружества Независимых Государств, соотечественников, проживающих за рубежом, и по международному гуманитарному сотрудничеству */
    Rossotrudnichestvo = "004",
    /** Министерство обороны Российской Федерации */
    MoD = "005",
    /** Федеральная служба по военно-техническому сотрудничеству */
    Fsvts = "006",
    /** Федеральная служба по техническому и экспортному контролю */
    Fstek = "007",
    /** Министерство юстиции Российской Федерации */
    Minjust = "008",
    /** Федеральная служба исполнения наказаний */
    Fsinn = "009",
    /** Федеральная служба судебных приставов */
    Fssp = "010",
    /** Государственная фельдъегерская служба Российской Федерации (федеральная служба) */
    Gfs = "011",
    /** Служба внешней разведки Российской Федерации (федеральная служба) */
    Svr = "012",
    /** Федеральная служба безопасности Российской Федерации (федеральная служба) */
    Fsb = "013",
    /** Федеральная служба войск национальной гвардии Российской Федерации (федеральная служба) */
    Rosgvardiya = "014",
    /** Федеральная служба охраны Российской Федерации (федеральная служба) */
    Fso = "015",
    /** Федеральная служба по финансовому мониторингу (федеральная служба) */
    Rosfinmonitoring = "016",
    /** Федеральное архивное агентство (федеральное агентство) */
    Rosarkhiv = "017",
    /** Главное управление специальных программ Президента Российской Федерации (федеральное агентство) */
    Gusp = "018",
    /** Управление делами Президента Российской Федерации (федеральное агентство) */
    Udp = "019",
    /** Министерство здравоохранения Российской Федерации */
    Minzdrav = "020",
    /** Федеральная служба по надзору в сфере здравоохранения */
    Roszdravnadzor = "021",
    /** Министерство культуры Российской Федерации */
    Mincult = "022",
    /** Министерство науки и высшего образования Российской Федерации */
    Minobrnauki = "023",
    /** Министерство природных ресурсов и экологии Российской Федерации */
    Minprirody = "024",
    /** Федеральная служба по гидрометеорологии и мониторингу окружающей среды */
    Roshydromet = "025",
    /** Федеральная служба по надзору в сфере природопользования */
    Rosprirodnadzor = "026",
    /** Федеральное агентство водных ресурсов */
    Rosvodresursy = "027",
    /** Федеральное агентство лесного хозяйства */
    Rosleskhoz = "028",
    /** Федеральное агентство по недропользованию */
    Rosnedra = "029",
    /** Министерство промышленности и торговли Российской Федерации */
    Minpromtorg = "030",
    /** Федеральное агентство по техническому регулированию и метрологии */
    Rosstandart = "031",
    /** Министерство просвещения Российской Федерации */
    Minpros = "032",
    /** Министерство Российской Федерации по развитию Дальнего Востока и Арктики */
    Minvostokrazvitiya = "033",
    /** Министерство сельского хозяйства Российской Федерации */
    Minselhoz = "034",
    /** Федеральная служба по ветеринарному и фитосанитарному надзору */
    Rosselkhoznadzor = "035",
    /** Федеральное агентство по рыболовству */
    Rosrybolovstvo = "036",
    /** Министерство спорта Российской Федерации */
    Minsport = "037",
    /** Министерство строительства и жилищно-коммунального хозяйства Российской Федерации */
    Minstroy = "038",
    /** Министерство транспорта Российской Федерации */
    Mintrans = "039",
    /** Федеральная служба по надзору в сфере транспорта */
    Rostransnadzor = "040",
    /** Федеральное агентство воздушного транспорта */
    Rosaviatsiya = "041",
    /** Федеральное дорожное агентство */
    Rosavtodor = "042",
    /** Федеральное агентство железнодорожного транспорта */
    Roszheldor = "043",
    /** Федеральное агентство морского и речного транспорта */
    Rosmorrechflot = "044",
    /** Министерство труда и социальной защиты Российской Федерации */
    Mintrud = "045",
    /** Федеральная служба по труду и занятости */
    Rostrud = "046",
    /** Министерство финансов Российской Федераци */
    Minfin = "047",
    /** Федеральная налоговая служба */
    Fns = "048",
    /** Федеральная пробирная палата (федеральная служба) */
    Probe = "049",
    /** Федеральная служба по регулированию алкогольного рынка */
    Rosalkogol = "050",
    /** Федеральная таможенная служба */
    Fts = "051",
    /** Федеральное казначейство (федеральная служба) */
    Treasury = "052",
    /** Федеральное агентство по управлению государственным имуществом */
    Rosimushchestvo = "053",
    /** Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации */
    Mintsyfra = "054",
    /** Федеральная служба по надзору в сфере связи, информационных технологий и массовых коммуникаций */
    Roskomnadzor = "055",
    /** Федеральное агентство по печати и массовым коммуникациям */
    Rospechat = "056",
    /** Федеральное агентство связи */
    Rossvyaz = "057",
    /** Министерство экономического развития Российской Федерации */
    Minekonomrazvitiya = "058",
    /** Федеральная служба по аккредитации */
    Rosakkreditatsiya = "059",
    /** Федеральная служба государственной статистики */
    Rosstat = "060",
    /** Федеральная служба по интеллектуальной собственности */
    Rospatent = "061",
    /** Федеральное агентство по туризму */
    Rostourism = "062",
    /** Министерство энергетики Российской Федерации */
    Minenergo = "063",
    /** Федеральная антимонопольная служба */
    Fas = "064",
    /** Федеральная служба государственной регистрации, кадастра и картографии */
    Rosreestr = "065",
    /** Федеральная служба по надзору в сфере защиты прав потребителей и благополучия человека */
    Rospotrebnadzor = "066",
    /** Федеральная служба по надзору в сфере образования и науки */
    Rosobrnadzor = "067",
    /** Федеральная служба по экологическому, технологическому и атомному надзору */
    Rostekhnadzor = "068",
    /** Федеральное агентство по государственным резервам */
    Rosrezerv = "069",
    /** Федеральное медико-биологическое агентство */
    Fmba = "070",
    /** Федеральное агентство по делам молодежи */
    Rosmolodezh = "071",
    /** Федеральное агентство по делам национальностей */
    Fadn = "072"
}

/**
 * Ответ на запрос получения информации о чеке
 *
 * @see https://ofd.ru/razrabotchikam/ferma#%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D0%B0_%D0%BA%D0%B0%D1%81%D1%81%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%87%D0%B5%D0%BA%D0%B0
 */
export declare type GetReceiptResponse = (StatusNew | StatusProcessed | StatusConfirmed | StatusKktError) & {
    StatusMessage?: string;
    Description?: string;
    ModifiedDateUtc: string;
    ReceiptDateUtc: string;
    ModifiedDateTimeIso: string;
    ReceiptDateTimeIso: string;
    Device?: {
        DeviceId: string;
        RNM: string;
        ZN: string;
        FN: string;
        FDN: string;
        FPD: string;
        ShiftNumber: number;
        ReceiptNumInShift: number;
        DeviceType: string;
        OfdReceiptUrl: string;
    } | null;
};

/**
 * Тип документа, удостоверяющего личность
 *
 * @see https://ofd.ru/razrabotchikam/ferma#%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D1%8B%D0%B5_%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B0_iddoctype
 */
export declare enum IdDocumentType {
    /** Паспорт гражданина Российской Федерации */
    RfId = "RF_ID",
    /** Паспорт гражданина Российской Федерации, дипломатический паспорт, служебный паспорт, удостоверяющие личность гражданина Российской Федерации за пределами Российской Федерации */
    RfIdEtc = "RF_ID_ETC",
    /** Временное удостоверение личности гражданина Российской Федерации, выдаваемое на период оформления паспорта гражданина Российской Федерации */
    TempRfId = "TEMP_RF_ID",
    /** Свидетельство о рождении гражданина Российской Федерации (для граждан Российской Федерации в возрасте до 14 лет) */
    BirthRfId = "BIRTH_RF_ID",
    /** Иные документы, признаваемые документами, удостоверяющими личность гражданина Российской Федерации в соответствии с законодательством Российской Федерации */
    OtherRfId = "OTHER_RF_ID",
    /** Паспорт иностранного гражданина */
    ForeignId = "FOREIGN_ID",
    /** Иные документы, признаваемые документами, удостоверяющими личность иностранного гражданина в соответствии с законодательством Российской Федерации и международным договором Российской Федерации */
    ForeignIdOther = "FOREIGN_ID_OTHER",
    /** Документ, выданный иностранным государством и признаваемый в соответствии с международным договором Российской Федерации в качестве документа, удостоверяющего личность лица без гражданства. */
    IdForeignStateless = "ID_FOREIGN_STATELESS",
    /** Вид на жительство (для лиц без гражданства) */
    ResidencePermit = "RESIDENCE_PERMIT",
    /** Разрешение на временное проживание (для лиц без гражданства) */
    TempResidencePermit = "TEMP_RESIDENCE_PERMIT",
    /** Свидетельство о рассмотрении ходатайства о признании лица без гражданства беженцем на территории Российской Федерации по существу */
    StatelessReviewId = "STATELESS_REVIEW_ID",
    /** Удостоверение беженца */
    RefugeeId = "REFUGEE_ID",
    /** Иные документы, признаваемые документами, удостоверяющими личность лиц без гражданства в соответствии с законодательством Российской Федерации и международным договором Российской Федерации */
    OtherId = "OTHER_ID",
    /** Документ, удостоверяющий личность лица, не имеющего действительного документа, удостоверяющего личность, на период рассмотрения заявления о признании гражданином Российской Федерации или о приеме в гражданство Российской Федерации */
    StatelessReviewRfId = "STATELESS_REVIEW_RF_ID"
}

/** Отраслевой реквизит */
export declare interface IndustryItemRequisite {
    /** Идентификатор ФОИВ (ФЕДЕРАЛЬНЫЕ ОРГАНЫ ИСПОЛНИТЕЛЬНОЙ ВЛАСТИ). */
    FoivId?: FoivId;
    /**
     * Дата документа основания.
     *
     * Формат `ДД.ММ.ГГГГ`, где ДД — день, ММ — месяц, ГГГГ — год.
     */
    DocDate?: string;
    /** Номер документа основания */
    DocNumber?: string;
    /** Значение отраслевого реквизита */
    Value?: string;
}

/** Планируемый статус товара с КМ */
export declare enum MarkingCodePlannedStatus {
    /** Штучный товар, подлежащий обязательной маркировке средством идентификации, реализован */
    PieceProductIncome = "PIECE_PRODUCT_INCOME",
    /** Мерный товар, подлежащий обязательной маркировке средством идентификации, в стадии реализации */
    MeasuredProductIncome = "MEASURED_PRODUCT_INCOME",
    /** Штучный товар, подлежащий обязательной маркировке средством идентификации, возвращен */
    PieceProductReturn = "PIECE_PRODUCT_RETURN",
    /** Часть товара, подлежащего обязательной маркировке средством идентификации, возвращена */
    MeasuredProductReturn = "MEASURED_PRODUCT_RETURN",
    /** Статус товара, подлежащего обязательной маркировке средством идентификации, не изменился */
    ProductStatusNotChanged = "PRODUCT_STATUS_NOT_CHANGED"
}

/** Формат КМ */
export declare enum MarkingCodeType {
    /** Неизвестный код товара */
    UnknownProductCode = "UNKNOWN_PRODUCT_CODE",
    /** Значение кода маркировки в формате EAN-8 */
    Ean8 = "EAN8",
    /** Значение кода маркировки в формате EAN-13 */
    Ean13 = "EAN13",
    /** Значение кода маркировки в формате ITF-14 */
    Itf14 = "ITF14",
    /** Значение кода маркировки в формате GS1 */
    Gs1 = "GS1",
    /** Значение кода маркировки в формате GS1.M */
    Gs1m = "GS1M",
    /** Значение кода маркировки в формате КМК (Короткий код маркировки) */
    ShortMc = "SHORT_MC",
    /** Контрольно-идентификационный знак мехового изделия */
    Fur = "FUR",
    /** Значение кода маркировки в формате ЕГАИС-2.0 */
    Egais20 = "EGAIS20",
    /** Значение кода маркировки в формате ЕГАИС-3.0 */
    Egais30 = "EGAIS30",
    /** Определяется ФНС России */
    Ktf1 = "KTF1",
    /** Определяется ФНС России */
    Ktf2 = "KTF2",
    /** Определяется ФНС России */
    Ktf3 = "KTF3",
    /** Определяется ФНС России */
    Ktf4 = "KTF4",
    /** Определяется ФНС России */
    Ktf5 = "KTF5",
    /** Определяется ФНС России */
    Ktf6 = "KTF6"
}

/**
 * Единицы измерения
 *
 * @see https://ofd.ru/razrabotchikam/ferma#%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D1%8B%D0%B5_%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B0_measure
 */
export declare enum Measure {
    /** Применяется для предметов расчета, которые могут быть реализованы поштучно или единицами */
    Piece = "PIECE",
    /** Грамм */
    Gram = "GRAM",
    /** Килограмм */
    Kilogram = "KILOGRAM",
    /** Тонна */
    Ton = "TON",
    /** Сантиметр */
    Centimeter = "CENTIMETER",
    /** Дециметр */
    Decimeter = "DECIMETER",
    /** Метр */
    Meter = "METER",
    /** Квадратный сантиметр */
    SquareCentimeter = "SQUARE_CENTIMETER",
    /** Квадратный дециметр */
    SquareDecimeter = "SQUARE_DECIMETER",
    /** Квадратный метр */
    SquareMeter = "SQUARE_METER",
    /** Миллилитр */
    Milliliter = "MILLILITER",
    /** Литр */
    Liter = "LITER",
    /** Кубический метр */
    CubicMeter = "CUBIC_METER",
    /** Киловатт час */
    KilowattHour = "KILOWATT_HOUR",
    /** Гигакалория */
    Gigacalorie = "GIGACALORIE",
    /** Сутки (день) */
    Day = "DAY",
    /** Час */
    Hour = "HOUR",
    /** Минута */
    Minute = "MINUTE",
    /** Секунда */
    Second = "SECOND",
    /** Килобайт */
    Kilobyte = "KILOBYTE",
    /** Мегабайт */
    Megabyte = "MEGABYTE",
    /** Гигабайт */
    Gigabyte = "GIGABYTE",
    /** Терабайт */
    Terabyte = "TERABYTE",
    /** Применяется при использовании иных единиц измерения */
    Other = "OTHER"
}

/** Данные платёжного агента */
declare interface PaymentAgentInfo {
    /** Тип (признак) платежного агента */
    AgentType?: AgentType;
    /** Телефон оператора по переводу денежных средств */
    TransferAgentPhone?: string;
    /** Имя агента */
    TransferAgentName?: string;
    /** Адрес агента */
    TransferAgentAddress?: string;
    /** ИНН агента */
    TransferAgentINN?: string;
    /** Операция платежного агента */
    PaymentAgentOperation?: string;
    /** Телефон платежного агента */
    PaymentAgentPhone?: string;
    /** Телефон потребителя */
    ReceiverPhone?: string;
    /** ИНН поставщика */
    SupplierInn?: string;
    /** Наименование поставщика */
    SupplierName?: string;
    /** Телефон поставщика */
    SupplierPhone?: string;
}

/** Признак способа расчёта */
export declare enum PaymentMethod {
    /** Предоплата 100% */
    FullPrepayment = 1,
    /** Предоплата */
    Prepayment = 2,
    /** Аванс */
    Advance = 3,
    /** Полный расчет */
    FullPayment = 4,
    /** Частичный расчет */
    PartialPayment = 5,
    /** Передача в кредит */
    CreditTransfer = 6,
    /** Оплата в кредит */
    CreditPayment = 7
}

/** Тип оплаты */
export declare enum PaymentType {
    /** Наличными */
    Cash = 0,
    /** Безналичными */
    Cashless = 1,
    /** Предоплата (аванс) */
    Prepayment = 2,
    /** Предоплата (кредит) */
    Credit = 3,
    /** Иная формам оплаты */
    Other = 4
}

/**
 * Товарная позиция в чеке
 *
 * @see https://ofd.ru/razrabotchikam/ferma#%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%BE%D0%B2_items_%D1%82%D0%B5%D0%B3_1059
 * */
export declare interface ReceiptItem {
    /** Здесь могу присутствовать описание товара или описание услуги.
     *
     * Параметр всегда требуется в запросе на формирование фискального документа.
     */
    Label: string;
    /** Цена товарной позиции в рублях */
    Price: number;
    /** Количество товара в товарной позиции */
    Quantity: number;
    /**
     * Общая стоимость товара в товарной позиции в рублях.
     *
     * Правила округления для стоимости товара зависят от типа кассы. В кассах типа Эфир Pro ФС и Эфир Pro ФА стоимость округляется по математическим правилам округления.
     * Результат умножения значений параметров `Price` и `Quantity` должно быть равно значению параметра `Amount`
     */
    Amount: number;
    /**
     * Сумма акциза с учетом копеек.
     *
     * Участвует в запросе, если предмет расчета признается объектом налогообложения акцизами.
     */
    Excise?: number;
    /** Вид вычисляемого НДС */
    Vat: Vat;
    /** Код маркировки товарной позиции */
    MarkingCodeData?: {
        /** Формат КМ */
        Type?: MarkingCodeType;
        /**
         * Код маркировки
         *
         * В параметре передается значение, полученное сканером штрих-кода.
         */
        Code: string;
        /**
         * Планируемый статус товара с КМ.
         *
         * @default `PIECE_PRODUCT_INCOME`
         */
        PlannedStatus?: MarkingCodePlannedStatus;
        /** Тег содержит дробное количество маркированного товара */
        Fractional?: {
            /**
             * Числитель.
             *
             * Должен быть строго меньше знаменателя `Denominator`.
             */
            Numerator: number;
            /** Знаменатель */
            Denominator: number;
        };
    };
    /**
     * Тег содержит единицы измерения количества предмета расчета.
     *
     * Обязателен для ФФД 1.2.
     *
     * @default `PIECE` — если не передан, для ФФД 1.2
     */
    Measure?: Measure;
    /** Признак способа расчёта */
    PaymentMethod: PaymentMethod;
    /** Отраслевой реквизит чека */
    IndustryItemRequisite?: IndustryItemRequisite;
    /**
     * Дополнительный реквизит предмета расчета.
     *
     * Максимальная длина 64 символов.
     */
    AdditionalRequisite?: string;
    /**
     * Код страны происхождения товара.
     *
     * Не более 3 цифр.
     */
    OriginCountryCode?: string;
    /**
     * Номер таможенной декларации.
     *
     * Не более 32 символов.
     */
    CustomsDeclarationNumber?: string;
    /**
     * Признак предмета расчета для конкретной позиции в чеке.
     *
     * Если значение отсутствует, берется значение для всего чека.
     */
    PaymentType?: ReceiptPaymentType;
    /** Данные платёжного агента */
    PaymentAgentInfo?: PaymentAgentInfo;
}

/**
 * Признак предмета расчёта
 *
 * @see https://ofd.ru/razrabotchikam/ferma#%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D1%8B%D0%B5_%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%B7%D0%BD%D0%B0%D0%BA%D0%B0_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%B0_%D1%80%D0%B0%D1%81%D1%87%D0%B5%D1%82%D0%B0_%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B0_paymenttype
 */
export declare enum ReceiptPaymentType {
    /** О реализуемом товаре, за исключением подакцизного товара (наименование и иные сведения, описывающие товар) – «ТОВАР» или «Т» */
    Product = 1,
    /** О реализуемом подакцизном товаре (наименование и иные сведения, описывающие товар) – «ПОДАКЦИЗНЫЙ ТОВАР» или «АТ» */
    ExciseProduct = 2,
    /** О выполняемой работе (наименование и иные сведения, описывающие работу) – «РАБОТА» или «Р» */
    Work = 3,
    /** Об оказываемой услуге (наименование и иные сведения, описывающие услугу) – «УСЛУГА» или «У» или может не печататься */
    Service = 4,
    /** О приеме ставок при осуществлении деятельности по проведению азартных игр – «СТАВКА АЗАРТНОЙ ИГРЫ» или «СТАВКА ИГРЫ» или «СА» */
    GamblingBet = 5,
    /** О выплате денежных средств в виде выигрыша при осуществлении деятельности по проведению азартных игр – «ВЫИГРЫШ АЗАРТНОЙ ИГРЫ» или «ВЫИГРЫШ АИ» или «ВА» */
    GamblingWin = 6,
    /** О приеме денежных средств при реализации лотерейных билетов, электронных лотерейных билетов, приеме лотерейных ставок при осуществлении деятельности по проведению лотерей – «ЛОТЕРЕЙНЫЙ БИЛЕТ» или «СТАВКА ЛОТЕРЕИ» или «СЛ» */
    LotteryTicket = 7,
    /** О выплате денежных средств в виде выигрыша при осуществлении деятельности по проведению лотерей – «ВЫИГРЫШ ЛОТЕРЕИ» или «ВЫИГРЫШ ЛОТЕРЕИ» или «ВЛ» */
    LotteryWin = 8,
    /** О предоставлении прав на использование результатов интеллектуальной деятельности или средств индивидуализации – «ПРЕДОСТАВЛЕНИЕ РИД» или «РИД» */
    IntellectualProperty = 9,
    /** Об авансе, задатке, предоплате, кредите, взносе в счет оплаты, пени, штрафе, вознаграждении, бонусе и ином аналогичном предмете расчета – «ПЛАТЕЖ» или «П», «ВЫПЛАТА» или «В» */
    AdvancePayment = 10,
    /** О вознаграждении пользователя, являющегося платежным агентом (субагентом), банковским платежным агентом (субагентом), комиссионером, поверенным или иным агентом – «АГЕНТСКОЕ ВОЗНАГРАЖДЕНИЕ» или «АВ» */
    AgencyFee = 11,
    /** О предмете расчета, состоящем из предметов, каждому из которых может быть присвоено значение от «1» до «11» – «СОСТАВНОЙ ПРЕДМЕТ РАСЧЕТА» или «СПР» */
    CompositeItem = 12,
    /** О предмете расчета, не относящемуся к предметам расчета, которым может быть присвоено значение от «1» до «12» и от «14» до «18» – «ИНОЙ ПРЕДМЕТ РАСЧЕТА» или «ИПР» */
    OtherItem = 13,
    /** О передаче имущественных прав – «ИМУЩЕСТВЕННОЕ ПРАВО» */
    PropertyTransfer = 14,
    /** О внереализационным доходе – «ВНЕРЕАЛИЗАЦИОННЫЙ ДОХОД» или может не печататься */
    NonOperationalIncome = 15,
    /** О суммах расходов, уменьшающих сумму налога (авансовых платежей) в соответствии с пунктом 3.1 статьи 346.21 Налогового кодекса Российской Федерации – «СТРАХОВЫЕ ВЗНОСЫ» */
    InsuranceContributions = 16,
    /** О суммах уплаченного торгового сбора – «ТОРГОВЫЙ СБОР» */
    TradeFee = 17,
    /** О курортном сборе – «КУРОРТНЫЙ СБОР» */
    ResortFee = 18,
    /** О залоге – «ЗАЛОГ» */
    Pledge = 19,
    /** О суммах произведенных расходов в соответствии со статьей 346.16 Налогового кодекса Российской Федерации, уменьшающих доход */
    ExpenseReduction = 20,
    /** О страховых взносах на обязательное пенсионное страхование, уплачиваемых ИП, не производящими выплаты и иные вознаграждения физическим лицам — «ВЗНОСЫ НА ОБЯЗАТЕЛЬНОЕ ПЕНСИОННОЕ СТРАХОВАНИЕ ИП» или «ВЗНОСЫ НА ОПС ИП» или может не печататься */
    PensionContributionsIP = 21,
    /** О страховых взносах на обязательное пенсионное страхование, уплачиваемых организациями и ИП, производящими выплаты и иные вознаграждения физическим лицам — «ВЗНОСЫ НА ОБЯЗАТЕЛЬНОЕ ПЕНСИОННОЕ СТРАХОВАНИЕ» или «ВЗНОСЫ НА ОПС» или может не печататься */
    PensionContributions = 22,
    /** О страховых взносах на обязательное медицинское страхование, уплачиваемых ИП, не производящими выплаты и иные вознаграждения физическим лицам — «ВЗНОСЫ НА ОБЯЗАТЕЛЬНОЕ МЕДИЦИНСКОЕ СТРАХОВАНИЕ ИП» или «ВЗНОСЫ НА ОМС ИП» или может не печататься */
    MedicalContributionsIP = 23,
    /** О страховых взносах на обязательное медицинское страхование, уплачиваемые организациями и ИП, производящими выплаты и иные вознаграждения физическим лицам — «ВЗНОСЫ НА ОБЯЗАТЕЛЬНОЕ МЕДИЦИНСКОЕ СТРАХОВАНИЕ» или «ВЗНОСЫ НА ОМС» или может не печататься */
    MedicalContributions = 24,
    /** О страховых взносах на обязательное социальное страхование на случай временной нетрудоспособности и в связи с материнством, на обязательное социальное страхование от несчастных случаев на производстве и профессиональных заболеваний — «ВЗНОСЫ НА ОБЯЗАТЕЛЬНОЕ СОЦИАЛЬНОЕ СТРАХОВАНИЕ» или «ВЗНОСЫ НА ОСС» или может не печататься */
    SocialContributions = 25,
    /** О приеме и выплате денежных средств при осуществлении казино и залами игровых автоматов расчетов с использованием обменных знаков игорного заведения — «ПЛАТЕЖ КАЗИНО» или «ПК» или может не печататься */
    CasinoPayment = 26,
    /** О выдаче денежных средств банковским платежным агентом — «ВЫДАЧА ДЕНЕЖНЫХ СРЕДСТВ» или «ВЫДАЧА ДС» или может не печататься */
    CashIssuance = 27,
    /** О реализуемом подакцизном товаре, подлежащем маркировке средством идентификации, не имеющем кода маркировки — «АТНМ» или может не печататься */
    ExciseProductNoMark = 30,
    /** О реализуемом подакцизном товаре, подлежащем маркировке средством идентификации, имеющем код маркировки — «АТМ» или может не печататься */
    ExciseProductMark = 31,
    /** О реализуемом товаре, подлежащем маркировке средством идентификации, не имеющем кода маркировки, за исключением подакцизного товара — «ТНМ» или может не печататься */
    ProductNoMark = 32,
    /** О реализуемом товаре, подлежащем маркировке средством идентификации, имеющем код маркировки, за исключением подакцизного товара — «ТМ» или может не печататься */
    ProductMark = 33
}

/** Тип фискального документа */
export declare enum ReceiptType {
    /** Получение денежных средств от покупателя */
    Income = "Income",
    /** Возврат денежных средств, полученных от покупателя */
    IncomeReturn = "IncomeReturn",
    /** Авансовый платеж от покупателя */
    IncomePrepayment = "IncomePrepayment",
    /** Возврат аванса */
    IncomeReturnPrepayment = "IncomeReturnPrepayment",
    /** Чек коррекции/приход */
    IncomeCorrection = "IncomeCorrection",
    /** Чек коррекции/расход */
    BuyCorrection = "BuyCorrection",
    /** Чек коррекции/Возврат прихода */
    IncomeReturnCorrection = "IncomeReturnCorrection",
    /** Чек коррекции/Возврат расхода */
    ExpenseReturnCorrection = "ExpenseReturnCorrection",
    /** Выдача денежных средств покупателю */
    Expense = "Expense",
    /** Возврат денежных средств, выданных покупателю */
    ExpenseReturn = "ExpenseReturn"
}

export declare type RegularReceiptType = Exclude<ReceiptType, CorrectionReceiptType>;

declare interface StatusConfirmed {
    StatusCode: 2;
    StatusName: "CONFIRMED";
}

declare interface StatusKktError {
    StatusCode: 3;
    StatusName: "KKT_ERROR";
}

declare interface StatusNew {
    StatusCode: 0;
    StatusName: "NEW";
}

declare interface StatusProcessed {
    StatusCode: 1;
    StatusName: "PROCESSED";
}

/** Система налогообложения */
export declare enum TaxationSystem {
    /** ОСН */
    Common = "Common",
    /** УСН доход */
    SimpleIn = "SimpleIn",
    /** УСН доход - расход */
    SimpleInOut = "SimpleInOut",
    /** ЕНВД */
    Unified = "Unified",
    /** ЕСН */
    UnifiedAgricultural = "UnifiedAgricultural",
    /** Патент */
    Patent = "Patent"
}

/** Тип вычисляемого НДС */
export declare enum Vat {
    /** Налог на добавленную стоимость без НДС */
    VatNo = "VatNo",
    /** НДС 5% */
    Vat5 = "Vat5",
    /** Вычисленный НДС 5% от 105% суммы */
    CalculatedVat5105 = "CalculatedVat5105",
    /** НДС 7% */
    Vat7 = "Vat7",
    /** Вычисленный НДС 7% от 107% суммы */
    CalculatedVat7107 = "CalculatedVat7107",
    /** Налог на добавленную стоимость (НДС) 10% */
    Vat10 = "Vat10",
    /** НДС 20% */
    Vat20 = "Vat20",
    /** НДС 0% */
    Vat0 = "Vat0",
    /** Вычисленный НДС 10% от 110% суммы */
    CalculatedVat10110 = "CalculatedVat10110",
    /** Вычисленный НДС 20% от 120% суммы */
    CalculatedVat20120 = "CalculatedVat20120"
}

export { }
