/* This file is part of GNU Taler (C) 2019-2023 Taler Systems S.A. GNU Taler is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Taler; see the file COPYING. If not, see */ /** * Type and schema definitions for notifications from the wallet to clients * of the wallet. */ /** * Imports. */ import { WithdrawalOperationStatus } from "./index.node.js"; import { TransactionState } from "./transactions-types.js"; import { ExchangeEntryState, TalerErrorDetail } from "./wallet-types.js"; export enum NotificationType { BalanceChange = "balance-change", BackupOperationError = "backup-error", PendingOperationProcessed = "pending-operation-processed", TransactionStateTransition = "transaction-state-transition", ExchangeStateTransition = "exchange-state-transition", WithdrawalOperationTransition = "withdrawal-state-transition", } export interface ErrorInfoSummary { code: number; hint?: string; message?: string; } export interface TransactionStateTransitionNotification { type: NotificationType.TransactionStateTransition; transactionId: string; oldTxState: TransactionState; newTxState: TransactionState; errorInfo?: ErrorInfoSummary; /** * Additional "user data" that is dependent on the * state transition. * * Usage should be avoided. * * Currently used to notify the iOS app about * the KYC URL. */ experimentalUserData?: any; } export interface ExchangeStateTransitionNotification { type: NotificationType.ExchangeStateTransition; /** * Identification of the exchange entry that this * notification is about. */ exchangeBaseUrl: string; /** * If missing, the notification means that * the exchange entry is newly created. */ oldExchangeState?: ExchangeEntryState; /** * New state of the exchange. */ newExchangeState: ExchangeEntryState; /** * Summary of the error that occurred when trying to update the exchange entry, * if applicable. */ errorInfo?: ErrorInfoSummary; } export interface BalanceChangeNotification { type: NotificationType.BalanceChange; /** * Transaction ID of the transaction that caused the balance update. * * Only used as a hint for debugging, should not be relied upon by clients. */ hintTransactionId: string; } export interface BackupOperationErrorNotification { type: NotificationType.BackupOperationError; error: TalerErrorDetail; } export interface PendingOperationProcessedNotification { type: NotificationType.PendingOperationProcessed; id: string; taskResultType: string; } export interface WithdrawalOperationTransitionNotification { type: NotificationType.WithdrawalOperationTransition; operationId: string; state: WithdrawalOperationStatus; } export type WalletNotification = | BalanceChangeNotification | BackupOperationErrorNotification | ExchangeStateTransitionNotification | PendingOperationProcessedNotification | WithdrawalOperationTransitionNotification | TransactionStateTransitionNotification;