/// import type { AxiosInstance } from "axios"; import { QrGenerator, QrGeneratorOptions } from "./qrgenerator"; export interface AuthRequestV5 { endUserIp: string; personalNumber?: string; requirement?: AuthOptionalRequirements; userVisibleData?: string; userVisibleDataFormat?: "simpleMarkdownV1"; userNonVisibleData?: string; } export interface AuthResponse { /** * Use in deeplink to start BankId on same device. * @example `bankid:///?autostarttoken=[TOKEN]&redirect=[RETURNURL]` */ autoStartToken: string; qrStartSecret: string; qrStartToken: string; orderRef: string; } interface AuthOptionalRequirements { cardReader?: "class1" | "class2"; certificatePolicies?: string[]; issuerCn?: string[]; autoStartTokenRequired?: boolean; allowFingerprint?: boolean; } export interface SignRequest extends AuthRequestV5 { userVisibleData: string; } export interface SignResponse extends AuthResponse { } export interface CollectRequest { orderRef: string; } type CollectResponse = CollectResponseV5 | CollectResponseV6; export interface CollectResponseV5 { orderRef: string; status: "pending" | "failed" | "complete"; hintCode?: FailedHintCode | PendingHintCode; completionData?: CompletionData; } export interface CompletionData { user: { personalNumber: string; name: string; givenName: string; surname: string; }; device: { ipAddress: string; }; cert: { notBefore: string; notAfter: string; }; signature: string; ocspResponse: string; } export type FailedHintCode = "expiredTransaction" | "certificateErr" | "userCancel" | "cancelled" | "startFailed"; export type PendingHintCode = "outstandingTransaction" | "noClient" | "started" | "userSign"; export interface CancelRequest extends CollectRequest { } export interface CancelResponse { } export interface ErrorResponse { errorCode: BankIdErrorCode; details: string; } export declare enum BankIdErrorCode { ALREADY_IN_PROGRESS = "alreadyInProgress", INVALID_PARAMETERS = "invalidParameters", UNAUTHORIZED = "unauthorized", NOT_FOUND = "notFound", METHOD_NOT_ALLOWED = "methodNotAllowed", REQUEST_TIMEOUT = "requestTimeout", UNSUPPORTED_MEDIA_TYPE = "unsupportedMediaType", INTERNAL_ERROR = "internalError", MAINTENANCE = "maintenance" } export declare const REQUEST_FAILED_ERROR = "BANKID_NO_RESPONSE"; export declare enum BankIdMethod { auth = "auth", sign = "sign", collect = "collect", cancel = "cancel" } export type BankIdRequest = AuthRequestV5 | SignRequest | CollectRequest | CancelRequest; export type BankIdResponse = CancelResponse | AuthResponse | SignResponse | CollectResponseV5 | CollectResponseV6; interface BankIdClientSettings { production: boolean; refreshInterval?: number; pfx?: string | Buffer; passphrase?: string; ca?: string | Buffer; } export declare class BankIdError extends Error { readonly code: BankIdErrorCode; readonly details?: string; constructor(code: BankIdErrorCode, details?: string); } export declare class RequestError extends Error { readonly request?: any; constructor(request?: any); } export declare class BankIdClient { #private; readonly options: Required; axios: AxiosInstance; version: string; constructor(options?: BankIdClientSettings); authenticate(parameters: AuthRequestV5): Promise; sign(parameters: SignRequest): Promise; collect(parameters: CollectRequest): Promise; cancel(parameters: CollectRequest): Promise; _awaitPendingCollect(orderRef: string): Promise; authenticateAndCollect(parameters: AuthRequestV5): Promise; signAndCollect(parameters: SignRequest): Promise; awaitPendingCollect(orderRef: string): Promise; createAxiosInstance(): AxiosInstance; } interface AuthOptionalRequirementsV6 { pinCode: boolean; cardReader?: "class1" | "class2"; mrtd: boolean; certificatePolicies?: string[]; personalNumber: string; } export interface AuthRequestV6 { endUserIp: string; requirement?: AuthOptionalRequirementsV6; } interface AuthResponseV6 extends AuthResponse { qr?: QrGenerator; } interface SignResponseV6 extends SignResponse { qr?: QrGenerator; } export interface CompletionDataV6 { user: { personalNumber: string; name: string; givenName: string; surname: string; }; device: { ipAddress: string; uhi?: string; }; /** ISO 8601 date format YYYY-MM-DD with a UTC time zone offset. */ bankIdIssueDate: string; stepUp: boolean; signature: string; ocspResponse: string; } export interface CollectResponseV6 extends Omit { completionData?: CompletionDataV6; } interface BankIdClientSettingsV6 extends BankIdClientSettings { /** Controls whether to attach an instance of {@link QrGenerator} to BankID responses */ qrEnabled?: boolean; qrOptions?: QrGeneratorOptions; } /** * A class for creating a BankId Client based on v6.0 api, extending from BankIdClient * @see https://www.bankid.com/en/utvecklare/guider/teknisk-integrationsguide/webbservice-api */ export declare class BankIdClientV6 extends BankIdClient { version: string; options: Required; constructor(options: BankIdClientSettingsV6); authenticate(parameters: AuthRequestV6): Promise; sign(parameters: SignRequest): Promise; collect(parameters: CollectRequest): Promise; } export {};