diff options
Diffstat (limited to 'packages/taler-wallet-core/src/types')
-rw-r--r-- | packages/taler-wallet-core/src/types/backupTypes.ts | 82 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/types/cryptoTypes.ts | 6 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/types/dbTypes.ts | 114 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/types/notifications.ts | 6 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/types/pending.ts | 276 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/types/transactions.ts | 337 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/types/walletTypes.ts | 2 |
7 files changed, 35 insertions, 788 deletions
diff --git a/packages/taler-wallet-core/src/types/backupTypes.ts b/packages/taler-wallet-core/src/types/backupTypes.ts index 09bc4670c..a3261ae35 100644 --- a/packages/taler-wallet-core/src/types/backupTypes.ts +++ b/packages/taler-wallet-core/src/types/backupTypes.ts @@ -53,12 +53,6 @@ * Imports. */ import { Timestamp } from "../util/time"; -import { - ReserveClosingTransaction, - ReserveCreditTransaction, - ReserveRecoupTransaction, - ReserveWithdrawTransaction, -} from "./ReserveTransaction"; /** * Type alias for strings that are to be treated like amounts. @@ -1128,82 +1122,6 @@ export interface BackupExchange { tos_etag_accepted: string | undefined; } -export enum WalletReserveHistoryItemType { - Credit = "credit", - Withdraw = "withdraw", - Closing = "closing", - Recoup = "recoup", -} - -export interface BackupReserveHistoryCreditItem { - type: WalletReserveHistoryItemType.Credit; - - /** - * Amount we expect to see credited. - */ - expected_amount?: BackupAmountString; - - /** - * Item from the reserve transaction history that this - * wallet reserve history item matches up with. - */ - matched_exchange_transaction?: ReserveCreditTransaction; -} - -/** - * Reserve history item for a withdrawal - */ -export interface BackupReserveHistoryWithdrawItem { - type: WalletReserveHistoryItemType.Withdraw; - - expected_amount?: BackupAmountString; - - /** - * Hash of the blinded coin. - * - * When this value is set, it indicates that a withdrawal is active - * in the wallet for the reserve. - */ - expected_coin_ev_hash?: string; - - /** - * Item from the reserve transaction history that this - * wallet reserve history item matches up with. - */ - matched_exchange_transaction?: ReserveWithdrawTransaction; -} - -export interface BackupReserveHistoryClosingItem { - type: WalletReserveHistoryItemType.Closing; - - /** - * Item from the reserve transaction history that this - * wallet reserve history item matches up with. - */ - matched_exchange_transaction?: ReserveClosingTransaction; -} - -export interface BackupReserveHistoryRecoupItem { - type: WalletReserveHistoryItemType.Recoup; - - /** - * Amount we expect to see recouped. - */ - expected_amount?: BackupAmountString; - - /** - * Item from the reserve transaction history that this - * wallet reserve history item matches up with. - */ - matched_exchange_transaction?: ReserveRecoupTransaction; -} - -export type BackupReserveHistoryItem = - | BackupReserveHistoryCreditItem - | BackupReserveHistoryWithdrawItem - | BackupReserveHistoryRecoupItem - | BackupReserveHistoryClosingItem; - export enum BackupProposalStatus { /** * Proposed (and either downloaded or not, diff --git a/packages/taler-wallet-core/src/types/cryptoTypes.ts b/packages/taler-wallet-core/src/types/cryptoTypes.ts index 98bdf92ec..eb18d83fc 100644 --- a/packages/taler-wallet-core/src/types/cryptoTypes.ts +++ b/packages/taler-wallet-core/src/types/cryptoTypes.ts @@ -84,6 +84,11 @@ export interface DerivedRefreshSession { coinEv: string; /** + * Hash of the blinded public key. + */ + coinEvHash: string; + + /** * Blinding key used. */ blindingKey: string; @@ -122,6 +127,7 @@ export interface DeriveTipRequest { export interface DerivedTipPlanchet { blindingKey: string; coinEv: string; + coinEvHash: string; coinPriv: string; coinPub: string; } diff --git a/packages/taler-wallet-core/src/types/dbTypes.ts b/packages/taler-wallet-core/src/types/dbTypes.ts index 3a42b8dbc..71a591310 100644 --- a/packages/taler-wallet-core/src/types/dbTypes.ts +++ b/packages/taler-wallet-core/src/types/dbTypes.ts @@ -66,12 +66,6 @@ export enum ReserveRecordStatus { QUERYING_STATUS = "querying-status", /** - * Status is queried, the wallet must now select coins - * and start withdrawing. - */ - WITHDRAWING = "withdrawing", - - /** * The corresponding withdraw record has been created. * No further processing is done, unless explicitly requested * by the user. @@ -84,76 +78,6 @@ export enum ReserveRecordStatus { BANK_ABORTED = "bank-aborted", } -export enum WalletReserveHistoryItemType { - Credit = "credit", - Withdraw = "withdraw", - Closing = "closing", - Recoup = "recoup", -} - -export interface WalletReserveHistoryCreditItem { - type: WalletReserveHistoryItemType.Credit; - - /** - * Amount we expect to see credited. - */ - expectedAmount?: AmountJson; - - /** - * Item from the reserve transaction history that this - * wallet reserve history item matches up with. - */ - matchedExchangeTransaction?: ReserveCreditTransaction; -} - -export interface WalletReserveHistoryWithdrawItem { - expectedAmount?: AmountJson; - - type: WalletReserveHistoryItemType.Withdraw; - - /** - * Item from the reserve transaction history that this - * wallet reserve history item matches up with. - */ - matchedExchangeTransaction?: ReserveWithdrawTransaction; -} - -export interface WalletReserveHistoryClosingItem { - type: WalletReserveHistoryItemType.Closing; - - /** - * Item from the reserve transaction history that this - * wallet reserve history item matches up with. - */ - matchedExchangeTransaction?: ReserveClosingTransaction; -} - -export interface WalletReserveHistoryRecoupItem { - type: WalletReserveHistoryItemType.Recoup; - - /** - * Amount we expect to see recouped. - */ - expectedAmount?: AmountJson; - - /** - * Item from the reserve transaction history that this - * wallet reserve history item matches up with. - */ - matchedExchangeTransaction?: ReserveRecoupTransaction; -} - -export type WalletReserveHistoryItem = - | WalletReserveHistoryCreditItem - | WalletReserveHistoryWithdrawItem - | WalletReserveHistoryRecoupItem - | WalletReserveHistoryClosingItem; - -export interface ReserveHistoryRecord { - reservePub: string; - reserveTransactions: WalletReserveHistoryItem[]; -} - export interface ReserveBankInfo { /** * Status URL that the wallet will use to query the status @@ -667,6 +591,8 @@ export interface RefreshPlanchet { */ coinEv: string; + coinEvHash: string; + /** * Blinding key used. */ @@ -783,6 +709,14 @@ export interface CoinRecord { blindingKey: string; /** + * Hash of the coin envelope. + * + * Stored here for indexing purposes, so that when looking at a + * reserve history, we can quickly find the coin for a withdrawal transaction. + */ + coinEvHash: string; + + /** * Status of the coin. */ status: CoinStatus; @@ -1536,6 +1470,12 @@ class CoinsStore extends Store<"coins", CoinRecord> { string, CoinRecord >(this, "denomPubHashIndex", "denomPubHash"); + + coinEvHashIndex = new Index<"coins", "coinEvHashIndex", string, CoinRecord>( + this, + "coinEvHashIndex", + "coinEvHash", + ); } class ProposalsStore extends Store<"proposals", ProposalRecord> { @@ -1602,15 +1542,6 @@ class ReservesStore extends Store<"reserves", ReserveRecord> { } } -class ReserveHistoryStore extends Store< - "reserveHistory", - ReserveHistoryRecord -> { - constructor() { - super("reserveHistory", { keyPath: "reservePub" }); - } -} - class TipsStore extends Store<"tips", TipRecord> { constructor() { super("tips", { keyPath: "walletTipId" }); @@ -1638,6 +1569,12 @@ class WithdrawalGroupsStore extends Store< constructor() { super("withdrawals", { keyPath: "withdrawalGroupId" }); } + byReservePub = new Index< + "withdrawals", + "withdrawalsByReserveIndex", + string, + WithdrawalGroupRecord + >(this, "withdrawalsByReserveIndex", "reservePub"); } class PlanchetsStore extends Store<"planchets", PlanchetRecord> { @@ -1656,6 +1593,12 @@ class PlanchetsStore extends Store<"planchets", PlanchetRecord> { string, PlanchetRecord >(this, "withdrawalGroupIndex", "withdrawalGroupId"); + + coinEvHashIndex = new Index<"planchets", "coinEvHashIndex", string, PlanchetRecord>( + this, + "coinEvHashIndex", + "coinEvHash", + ); } /** @@ -1702,7 +1645,6 @@ export const Stores = { keyPath: "recoupGroupId", }), reserves: new ReservesStore(), - reserveHistory: new ReserveHistoryStore(), purchases: new PurchasesStore(), tips: new TipsStore(), withdrawalGroups: new WithdrawalGroupsStore(), diff --git a/packages/taler-wallet-core/src/types/notifications.ts b/packages/taler-wallet-core/src/types/notifications.ts index 533223cc0..9ddcf4fa2 100644 --- a/packages/taler-wallet-core/src/types/notifications.ts +++ b/packages/taler-wallet-core/src/types/notifications.ts @@ -23,7 +23,6 @@ * Imports. */ import { TalerErrorDetails } from "./walletTypes"; -import { ReserveHistorySummary } from "../util/reserveHistoryUtil"; export enum NotificationType { CoinWithdrawn = "coin-withdrawn", @@ -125,10 +124,6 @@ export interface RefreshRefusedNotification { type: NotificationType.RefreshUnwarranted; } -export interface ReserveUpdatedNotification { - type: NotificationType.ReserveUpdated; - updateSummary?: ReserveHistorySummary; -} export interface ReserveConfirmedNotification { type: NotificationType.ReserveConfirmed; @@ -252,7 +247,6 @@ export type WalletNotification = | RefreshRevealedNotification | RefreshStartedNotification | RefreshRefusedNotification - | ReserveUpdatedNotification | ReserveCreatedNotification | ReserveConfirmedNotification | WithdrawalGroupFinishedNotification diff --git a/packages/taler-wallet-core/src/types/pending.ts b/packages/taler-wallet-core/src/types/pending.ts deleted file mode 100644 index 18d9a2fa4..000000000 --- a/packages/taler-wallet-core/src/types/pending.ts +++ /dev/null @@ -1,276 +0,0 @@ -/* - This file is part of GNU Taler - (C) 2019 GNUnet e.V. - - 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 <http://www.gnu.org/licenses/> - */ - -/** - * Type and schema definitions for pending operations in the wallet. - */ - -/** - * Imports. - */ -import { TalerErrorDetails, BalancesResponse } from "./walletTypes"; -import { ReserveRecordStatus } from "./dbTypes"; -import { Timestamp, Duration } from "../util/time"; -import { RetryInfo } from "../util/retries"; - -export enum PendingOperationType { - Bug = "bug", - ExchangeUpdate = "exchange-update", - ExchangeCheckRefresh = "exchange-check-refresh", - Pay = "pay", - ProposalChoice = "proposal-choice", - ProposalDownload = "proposal-download", - Refresh = "refresh", - Reserve = "reserve", - Recoup = "recoup", - RefundQuery = "refund-query", - TipChoice = "tip-choice", - TipPickup = "tip-pickup", - Withdraw = "withdraw", -} - -/** - * Information about a pending operation. - */ -export type PendingOperationInfo = PendingOperationInfoCommon & - ( - | PendingBugOperation - | PendingExchangeUpdateOperation - | PendingExchangeCheckRefreshOperation - | PendingPayOperation - | PendingProposalChoiceOperation - | PendingProposalDownloadOperation - | PendingRefreshOperation - | PendingRefundQueryOperation - | PendingReserveOperation - | PendingTipChoiceOperation - | PendingTipPickupOperation - | PendingWithdrawOperation - | PendingRecoupOperation - ); - -/** - * The wallet is currently updating information about an exchange. - */ -export interface PendingExchangeUpdateOperation { - type: PendingOperationType.ExchangeUpdate; - stage: ExchangeUpdateOperationStage; - reason: string; - exchangeBaseUrl: string; - lastError: TalerErrorDetails | undefined; -} - -/** - * The wallet should check whether coins from this exchange - * need to be auto-refreshed. - */ -export interface PendingExchangeCheckRefreshOperation { - type: PendingOperationType.ExchangeCheckRefresh; - exchangeBaseUrl: string; -} - -/** - * Some interal error happened in the wallet. This pending operation - * should *only* be reported for problems in the wallet, not when - * a problem with a merchant/exchange/etc. occurs. - */ -export interface PendingBugOperation { - type: PendingOperationType.Bug; - message: string; - details: any; -} - -/** - * Current state of an exchange update operation. - */ -export enum ExchangeUpdateOperationStage { - FetchKeys = "fetch-keys", - FetchWire = "fetch-wire", - FinalizeUpdate = "finalize-update", -} - -export enum ReserveType { - /** - * Manually created. - */ - Manual = "manual", - /** - * Withdrawn from a bank that has "tight" Taler integration - */ - TalerBankWithdraw = "taler-bank-withdraw", -} - -/** - * Status of processing a reserve. - * - * Does *not* include the withdrawal operation that might result - * from this. - */ -export interface PendingReserveOperation { - type: PendingOperationType.Reserve; - retryInfo: RetryInfo | undefined; - stage: ReserveRecordStatus; - timestampCreated: Timestamp; - reserveType: ReserveType; - reservePub: string; - bankWithdrawConfirmUrl?: string; -} - -/** - * Status of an ongoing withdrawal operation. - */ -export interface PendingRefreshOperation { - type: PendingOperationType.Refresh; - lastError?: TalerErrorDetails; - refreshGroupId: string; - finishedPerCoin: boolean[]; - retryInfo: RetryInfo; -} - -/** - * Status of downloading signed contract terms from a merchant. - */ -export interface PendingProposalDownloadOperation { - type: PendingOperationType.ProposalDownload; - merchantBaseUrl: string; - proposalTimestamp: Timestamp; - proposalId: string; - orderId: string; - lastError?: TalerErrorDetails; - retryInfo: RetryInfo; -} - -/** - * User must choose whether to accept or reject the merchant's - * proposed contract terms. - */ -export interface PendingProposalChoiceOperation { - type: PendingOperationType.ProposalChoice; - merchantBaseUrl: string; - proposalTimestamp: Timestamp; - proposalId: string; -} - -/** - * The wallet is picking up a tip that the user has accepted. - */ -export interface PendingTipPickupOperation { - type: PendingOperationType.TipPickup; - tipId: string; - merchantBaseUrl: string; - merchantTipId: string; -} - -/** - * The wallet has been offered a tip, and the user now needs to - * decide whether to accept or reject the tip. - */ -export interface PendingTipChoiceOperation { - type: PendingOperationType.TipChoice; - tipId: string; - merchantBaseUrl: string; - merchantTipId: string; -} - -/** - * The wallet is signing coins and then sending them to - * the merchant. - */ -export interface PendingPayOperation { - type: PendingOperationType.Pay; - proposalId: string; - isReplay: boolean; - retryInfo: RetryInfo; - lastError: TalerErrorDetails | undefined; -} - -/** - * The wallet is querying the merchant about whether any refund - * permissions are available for a purchase. - */ -export interface PendingRefundQueryOperation { - type: PendingOperationType.RefundQuery; - proposalId: string; - retryInfo: RetryInfo; - lastError: TalerErrorDetails | undefined; -} - -export interface PendingRecoupOperation { - type: PendingOperationType.Recoup; - recoupGroupId: string; - retryInfo: RetryInfo; - lastError: TalerErrorDetails | undefined; -} - -/** - * Status of an ongoing withdrawal operation. - */ -export interface PendingWithdrawOperation { - type: PendingOperationType.Withdraw; - lastError: TalerErrorDetails | undefined; - retryInfo: RetryInfo; - withdrawalGroupId: string; - numCoinsWithdrawn: number; - numCoinsTotal: number; -} - -/** - * Fields that are present in every pending operation. - */ -export interface PendingOperationInfoCommon { - /** - * Type of the pending operation. - */ - type: PendingOperationType; - - /** - * Set to true if the operation indicates that something is really in progress, - * as opposed to some regular scheduled operation or a permanent failure. - */ - givesLifeness: boolean; - - /** - * Retry info, not available on all pending operations. - * If it is available, it must have the same name. - */ - retryInfo?: RetryInfo; -} - -/** - * Response returned from the pending operations API. - */ -export interface PendingOperationsResponse { - /** - * List of pending operations. - */ - pendingOperations: PendingOperationInfo[]; - - /** - * Current wallet balance, including pending balances. - */ - walletBalance: BalancesResponse; - - /** - * When is the next pending operation due to be re-tried? - */ - nextRetryDelay: Duration; - - /** - * Does this response only include pending operations that - * are due to be executed right now? - */ - onlyDue: boolean; -} diff --git a/packages/taler-wallet-core/src/types/transactions.ts b/packages/taler-wallet-core/src/types/transactions.ts deleted file mode 100644 index 0a683f298..000000000 --- a/packages/taler-wallet-core/src/types/transactions.ts +++ /dev/null @@ -1,337 +0,0 @@ -/* - This file is part of GNU Taler - (C) 2019 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 <http://www.gnu.org/licenses/> - */ - -/** - * Type and schema definitions for the wallet's transaction list. - * - * @author Florian Dold - * @author Torsten Grote - */ - -/** - * Imports. - */ -import { Timestamp } from "../util/time"; -import { - AmountString, - Product, - InternationalizedString, - MerchantInfo, - codecForInternationalizedString, - codecForMerchantInfo, - codecForProduct, -} from "./talerTypes"; -import { - Codec, - buildCodecForObject, - codecOptional, - codecForString, - codecForList, - codecForAny, -} from "../util/codec"; -import { TalerErrorDetails } from "./walletTypes"; - -export interface TransactionsRequest { - /** - * return only transactions in the given currency - */ - currency?: string; - - /** - * if present, results will be limited to transactions related to the given search string - */ - search?: string; -} - -export interface TransactionsResponse { - // a list of past and pending transactions sorted by pending, timestamp and transactionId. - // In case two events are both pending and have the same timestamp, - // they are sorted by the transactionId - // (lexically ascending and locale-independent comparison). - transactions: Transaction[]; -} - -export interface TransactionCommon { - // opaque unique ID for the transaction, used as a starting point for paginating queries - // and for invoking actions on the transaction (e.g. deleting/hiding it from the history) - transactionId: string; - - // the type of the transaction; different types might provide additional information - type: TransactionType; - - // main timestamp of the transaction - timestamp: Timestamp; - - // true if the transaction is still pending, false otherwise - // If a transaction is not longer pending, its timestamp will be updated, - // but its transactionId will remain unchanged - pending: boolean; - - // Raw amount of the transaction (exclusive of fees or other extra costs) - amountRaw: AmountString; - - // Amount added or removed from the wallet's balance (including all fees and other costs) - amountEffective: AmountString; - - error?: TalerErrorDetails; -} - -export type Transaction = - | TransactionWithdrawal - | TransactionPayment - | TransactionRefund - | TransactionTip - | TransactionRefresh; - -export enum TransactionType { - Withdrawal = "withdrawal", - Payment = "payment", - Refund = "refund", - Refresh = "refresh", - Tip = "tip", -} - -export enum WithdrawalType { - TalerBankIntegrationApi = "taler-bank-integration-api", - ManualTransfer = "manual-transfer", -} - -export type WithdrawalDetails = - | WithdrawalDetailsForManualTransfer - | WithdrawalDetailsForTalerBankIntegrationApi; - -interface WithdrawalDetailsForManualTransfer { - type: WithdrawalType.ManualTransfer; - - /** - * Payto URIs that the exchange supports. - * - * Already contains the amount and message. - */ - exchangePaytoUris: string[]; -} - -interface WithdrawalDetailsForTalerBankIntegrationApi { - type: WithdrawalType.TalerBankIntegrationApi; - - /** - * Set to true if the bank has confirmed the withdrawal, false if not. - * An unconfirmed withdrawal usually requires user-input and should be highlighted in the UI. - * See also bankConfirmationUrl below. - */ - confirmed: boolean; - - /** - * If the withdrawal is unconfirmed, this can include a URL for user - * initiated confirmation. - */ - bankConfirmationUrl?: string; -} - -// This should only be used for actual withdrawals -// and not for tips that have their own transactions type. -interface TransactionWithdrawal extends TransactionCommon { - type: TransactionType.Withdrawal; - - /** - * Exchange of the withdrawal. - */ - exchangeBaseUrl: string; - - /** - * Amount that got subtracted from the reserve balance. - */ - amountRaw: AmountString; - - /** - * Amount that actually was (or will be) added to the wallet's balance. - */ - amountEffective: AmountString; - - withdrawalDetails: WithdrawalDetails; -} - -export enum PaymentStatus { - /** - * Explicitly aborted after timeout / failure - */ - Aborted = "aborted", - - /** - * Payment failed, wallet will auto-retry. - * User should be given the option to retry now / abort. - */ - Failed = "failed", - - /** - * Paid successfully - */ - Paid = "paid", - - /** - * User accepted, payment is processing. - */ - Accepted = "accepted", -} - -export interface TransactionPayment extends TransactionCommon { - type: TransactionType.Payment; - - /** - * Additional information about the payment. - */ - info: OrderShortInfo; - - /** - * Wallet-internal end-to-end identifier for the payment. - */ - proposalId: string; - - /** - * How far did the wallet get with processing the payment? - */ - status: PaymentStatus; - - /** - * Amount that must be paid for the contract - */ - amountRaw: AmountString; - - /** - * Amount that was paid, including deposit, wire and refresh fees. - */ - amountEffective: AmountString; -} - -export interface OrderShortInfo { - /** - * Order ID, uniquely identifies the order within a merchant instance - */ - orderId: string; - - /** - * Hash of the contract terms. - */ - contractTermsHash: string; - - /** - * More information about the merchant - */ - merchant: MerchantInfo; - - /** - * Summary of the order, given by the merchant - */ - summary: string; - - /** - * Map from IETF BCP 47 language tags to localized summaries - */ - summary_i18n?: InternationalizedString; - - /** - * List of products that are part of the order - */ - products: Product[] | undefined; - - /** - * URL of the fulfillment, given by the merchant - */ - fulfillmentUrl?: string; - - /** - * Plain text message that should be shown to the user - * when the payment is complete. - */ - fulfillmentMessage?: string; - - /** - * Translations of fulfillmentMessage. - */ - fulfillmentMessage_i18n?: InternationalizedString; -} - -interface TransactionRefund extends TransactionCommon { - type: TransactionType.Refund; - - // ID for the transaction that is refunded - refundedTransactionId: string; - - // Additional information about the refunded payment - info: OrderShortInfo; - - // Amount that has been refunded by the merchant - amountRaw: AmountString; - - // Amount will be added to the wallet's balance after fees and refreshing - amountEffective: AmountString; -} - -interface TransactionTip extends TransactionCommon { - type: TransactionType.Tip; - - // Raw amount of the tip, without extra fees that apply - amountRaw: AmountString; - - // Amount will be (or was) added to the wallet's balance after fees and refreshing - amountEffective: AmountString; - - merchantBaseUrl: string; -} - -// A transaction shown for refreshes that are not associated to other transactions -// such as a refresh necessary before coin expiration. -// It should only be returned by the API if the effective amount is different from zero. -interface TransactionRefresh extends TransactionCommon { - type: TransactionType.Refresh; - - // Exchange that the coins are refreshed with - exchangeBaseUrl: string; - - // Raw amount that is refreshed - amountRaw: AmountString; - - // Amount that will be paid as fees for the refresh - amountEffective: AmountString; -} - -export const codecForTransactionsRequest = (): Codec<TransactionsRequest> => - buildCodecForObject<TransactionsRequest>() - .property("currency", codecOptional(codecForString())) - .property("search", codecOptional(codecForString())) - .build("TransactionsRequest"); - -// FIXME: do full validation here! -export const codecForTransactionsResponse = (): Codec<TransactionsResponse> => - buildCodecForObject<TransactionsResponse>() - .property("transactions", codecForList(codecForAny())) - .build("TransactionsResponse"); - -export const codecForOrderShortInfo = (): Codec<OrderShortInfo> => - buildCodecForObject<OrderShortInfo>() - .property("contractTermsHash", codecForString()) - .property("fulfillmentMessage", codecOptional(codecForString())) - .property( - "fulfillmentMessage_i18n", - codecOptional(codecForInternationalizedString()), - ) - .property("fulfillmentUrl", codecOptional(codecForString())) - .property("merchant", codecForMerchantInfo()) - .property("orderId", codecForString()) - .property("products", codecOptional(codecForList(codecForProduct()))) - .property("summary", codecForString()) - .property("summary_i18n", codecOptional(codecForInternationalizedString())) - .build("OrderShortInfo"); diff --git a/packages/taler-wallet-core/src/types/walletTypes.ts b/packages/taler-wallet-core/src/types/walletTypes.ts index d0e72b289..7dc675b38 100644 --- a/packages/taler-wallet-core/src/types/walletTypes.ts +++ b/packages/taler-wallet-core/src/types/walletTypes.ts @@ -55,7 +55,7 @@ import { codecForContractTerms, ContractTerms, } from "./talerTypes"; -import { OrderShortInfo, codecForOrderShortInfo } from "./transactions"; +import { OrderShortInfo, codecForOrderShortInfo } from "./transactionsTypes"; /** * Response for the create reserve request to the wallet. |