UNPKG

zatca-xml-ts

Version:

An implementation of Saudi Arabia ZATCA's E-Invoicing requirements, processes, and standards.

114 lines 4.46 kB
/** * This module requires OpenSSL to be installed on the system. * Using an OpenSSL In order to generate secp256k1 key pairs, a CSR and sign it. * I was unable to find a working library that supports the named curve `secp256k1` and do not want to implement my own JS based crypto. * Any crypto expert contributions to move away from OpenSSL to JS will be appreciated. */ import { ZATCAInvoice } from "../ZATCASimplifiedTaxInvoice"; export interface EGSUnitLocation { city?: string; city_subdivision?: string; street?: string; plot_identification?: string; building?: string; postal_zone?: string; } export interface EGSUnitCustomerInfo { city?: string; city_subdivision?: string; street?: string; additional_street?: string; plot_identification?: string; building?: string; postal_zone?: string; country_sub_entity?: string; buyer_name: string; customer_crn_number?: string; vat_number?: string; } export interface EGSUnitInfo { uuid: string; custom_id: string; model: string; CRN_number: string; VAT_name: string; VAT_number: string; branch_name: string; branch_industry: string; location?: EGSUnitLocation; customer_info?: EGSUnitCustomerInfo; private_key?: string; csr?: string; compliance_certificate?: string; compliance_api_secret?: string; production_certificate?: string; production_api_secret?: string; } export declare class EGS { private egs_info; private api; constructor(egs_info: EGSUnitInfo, env?: "production" | "simulation" | "development"); /** * @returns EGSUnitInfo */ get(): EGSUnitInfo; /** * Sets/Updates an EGS info field. * @param egs_info Partial<EGSUnitInfo> */ set(egs_info: Partial<EGSUnitInfo>): void; /** * Generates a new secp256k1 Public/Private key pair for the EGS. * Also generates and signs a new CSR. * `Note`: This functions uses OpenSSL thus requires it to be installed on whatever system the package is running in. * @param production Boolean CSR or Compliance CSR * @param solution_name String name of solution generating certs. * @returns Promise void on success, throws error on fail. */ generateNewKeysAndCSR(production: boolean, solution_name: string): Promise<any>; /** * Generates a new compliance certificate through ZATCA API. * @param OTP String Tax payer provided from Fatoora portal to link to this EGS. * @returns Promise String compliance request id on success to be used in production CSID request, throws error on fail. */ issueComplianceCertificate(OTP: string): Promise<string>; /** * Generates a new production certificate through ZATCA API. * @param compliance_request_id String compliance request ID generated from compliance CSID request. * @returns Promise String request id on success, throws error on fail. */ issueProductionCertificate(compliance_request_id: string): Promise<string>; /** * Checks Invoice compliance with ZATCA API. * @param signed_invoice_string String. * @param invoice_hash String. * @returns Promise compliance data on success, throws error on fail. */ checkInvoiceCompliance(signed_invoice_string: string, invoice_hash: string): Promise<any>; /** * Reports invoice with ZATCA API. * @param signed_invoice_string String. * @param invoice_hash String. * @returns Promise reporting data on success, throws error on fail. */ reportInvoice(signed_invoice_string: string, invoice_hash: string): Promise<any>; /** * Reports invoice with ZATCA API. * @param signed_invoice_string String. * @param invoice_hash String. * @returns Promise reporting data on success, throws error on fail. */ clearanceInvoice(signed_invoice_string: string, invoice_hash: string): Promise<any>; /** * Signs a given invoice using the EGS certificate and keypairs. * @param invoice Invoice to sign * @param production Boolean production or compliance certificate. * @returns Promise void on success (signed_invoice_string: string, invoice_hash: string, qr: string), throws error on fail. */ signInvoice(invoice: ZATCAInvoice, production?: boolean): { signed_invoice_string: string; invoice_hash: string; qr: string; }; } //# sourceMappingURL=index.d.ts.map