UNPKG

nav-connect

Version:

Nav Online Invoice connection module

84 lines (83 loc) 3.51 kB
import type { AnnulmentOperationType, DateTimeIntervalParamType, InvoiceChainQueryType, InvoiceDigestType, InvoiceDirectionType, InvoiceNumberQueryType, InvoiceOperationType, ManageAnnulmentResponse, ManageInvoiceResponse, QueryInvoiceChainDigestResponse, QueryInvoiceCheckResponse, QueryInvoiceDataResponse, QueryInvoiceDigestResponse, QueryTaxpayerResponse, QueryTransactionListResponse, QueryTransactionStatusResponse, RequestStatusType } from "nav-osa-types"; import type { NavApiConfig } from "./configValidator.js"; export interface NavApiResponse<T> { data: T; xmlValidationWarnings?: string[]; } export interface DigestAllProgress { currentChunk: number; totalChunks: number; currentPage: number; availablePages: number; chunkFrom: string; chunkTo: string; digestsCollected: number; } export declare class NavConnect { private _config; private _baseUrl; private _client; private _validateResponse; private _httpTimeoutMs; private _queue; static create(config: NavApiConfig): NavConnect; constructor(config: NavApiConfig); get taxNumber(): string; get testSystem(): boolean; get technicalUser(): string; /** * Builds the request XML, posts it through the rate limiter, validates * the response (unless disabled), parses it and checks the result * field. All public operations share this single error-transformation * chain. */ private sendRequest; queryInvoiceDigest(params: { page: number; insDate: DateTimeIntervalParamType; invoiceDirectionType: InvoiceDirectionType; }): Promise<NavApiResponse<QueryInvoiceDigestResponse>>; queryInvoiceDigestAll(params: { insDate: DateTimeIntervalParamType; invoiceDirectionType: InvoiceDirectionType; throttleMs?: number; onProgress?: (progress: DigestAllProgress) => void; }): Promise<InvoiceDigestType[]>; private buildInvoiceNumberQueryRequest; queryInvoiceData(params: InvoiceNumberQueryType): Promise<NavApiResponse<QueryInvoiceDataResponse>>; queryInvoiceCheck(params: InvoiceNumberQueryType): Promise<NavApiResponse<QueryInvoiceCheckResponse>>; private validateResponseXml; private validateSequentialIndices; tokenExchange(): Promise<{ token: string; tokenValidityFrom: string; tokenValidityTo: string; serverTimestamp?: string; }>; manageInvoice(params: { invoiceOperation: InvoiceOperationType[]; compressedContent: boolean; skipXmlValidation: boolean; exchangeToken?: string; }): Promise<NavApiResponse<ManageInvoiceResponse>>; manageAnnulment(params: { annulmentOperations: AnnulmentOperationType[]; exchangeToken?: string; }): Promise<NavApiResponse<ManageAnnulmentResponse>>; queryTransactionStatus(params: { transactionId: string; returnOriginalRequest?: boolean; }): Promise<NavApiResponse<QueryTransactionStatusResponse>>; queryTransactionList(params: { page: number; insDate: DateTimeIntervalParamType; requestStatus?: RequestStatusType; }): Promise<NavApiResponse<QueryTransactionListResponse>>; queryTaxpayer(params: { taxNumber: string; }): Promise<NavApiResponse<QueryTaxpayerResponse>>; queryInvoiceChainDigest(params: { page: number; invoiceChainQuery: InvoiceChainQueryType; }): Promise<NavApiResponse<QueryInvoiceChainDigestResponse>>; }