nav-connect
Version:
Nav Online Invoice connection module
84 lines (83 loc) • 3.51 kB
TypeScript
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>>;
}