zatca-xml-ts
Version:
An implementation of Saudi Arabia ZATCA's E-Invoicing requirements, processes, and standards.
114 lines • 4.46 kB
TypeScript
/**
* 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