commit 62843c15344c2fbbd84d5589ec50fab0734ca09d
parent 807bb00e42ede21d559746f6f43f11378638efbf
Author: Florian Dold <florian@dold.me>
Date: Tue, 16 Dec 2025 14:28:45 +0100
update wallet-core docs
Diffstat:
| M | wallet/wallet-core.md | | | 281 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- |
1 file changed, 267 insertions(+), 14 deletions(-)
diff --git a/wallet/wallet-core.md b/wallet/wallet-core.md
@@ -123,10 +123,12 @@ This file is auto-generated from the [taler-typescript-core](https://git.taler.n
* [InitiatePeerPullCreditOp](#initiatepeerpullcreditop)
* [PreparePeerPullDebitOp](#preparepeerpulldebitop)
* [ConfirmPeerPullDebitOp](#confirmpeerpulldebitop)
-### Data Validation
+### Data Validation and Conversion
* [ValidateIbanOp](#validateibanop)
* [CanonicalizeBaseUrlOp](#canonicalizebaseurlop)
* [GetQrCodesForPaytoOp](#getqrcodesforpaytoop)
+* [ConvertIbanAccountFieldToPaytoOp](#convertibanaccountfieldtopaytoop)
+* [ConvertIbanPaytoToAccountFieldOp](#convertibanpaytotoaccountfieldop)
* [GetBankingChoicesForPaytoOp](#getbankingchoicesforpaytoop)
### Database Management
* [ExportDbOp](#exportdbop)
@@ -545,20 +547,20 @@ export interface WalletBalance {
available: AmountString;
pendingIncoming: AmountString;
pendingOutgoing: AmountString;
+ flags: BalanceFlag[];
/**
- * Does the balance for this currency have a pending
- * transaction?
- *
- * @deprecated use flags and pendingIncoming/pendingOutgoing instead
+ * Available URLs for pages that list
+ * where money in this scope can be spent.
*/
- hasPendingTransactions: boolean;
+ shoppingUrls?: string[];
/**
- * Is there a transaction that requires user input?
- *
- * @deprecated use flags instead
+ * Are p2p payments disabled for this scope?
*/
- requiresUserInput: boolean;
- flags: BalanceFlag[];
+ disablePeerPayments?: boolean;
+ /**
+ * Are wallet deposits enabled for this scope?
+ */
+ disableDirectDeposits?: boolean;
}
```
@@ -630,9 +632,23 @@ export interface PaymentBalanceDetails {
balanceAgeAcceptable: AmountJson;
/**
* Balance of type "receiver-acceptable" (see balance.ts for definition).
+ *
+ * @deprecated (2025-12-05) use balanceReceiver[...]Acceptable instead.
*/
balanceReceiverAcceptable: AmountJson;
/**
+ * Balance of type "receiver-exchange-url-acceptable" (see balance.ts for definition).
+ */
+ balanceReceiverExchangeUrlAcceptable: AmountJson;
+ /**
+ * Balance of type "receiver-exchange-pub-acceptable" (see balance.ts for definition).
+ */
+ balanceReceiverExchangePubAcceptable: AmountJson;
+ /**
+ * Balance of type "receiver-auditor-url-acceptable" (see balance.ts for definition).
+ */
+ balanceReceiverAuditorUrlAcceptable: AmountJson;
+ /**
* Balance of type "receiver-depositable" (see balance.ts for definition).
*/
balanceReceiverDepositable: AmountJson;
@@ -894,8 +910,20 @@ export interface GetTransactionsV2Request {
* Filter transactions by their state / state category.
*
* If not specified, all transactions are returned.
+ *
+ * final: Transactions in any final state
+ * nonfinal: Transactions in any state but the final states
+ * nonfinal-dialog: nonfinal transactions that require confirmation / some
+ * choice by the user
+ * nonfinal-approved: nonfinal transactions that need no further user approval
+ * done: Transactions in the "done" major state
*/
- filterByState?: "final" | "nonfinal" | "done";
+ filterByState?:
+ | "final"
+ | "nonfinal"
+ | "done"
+ | "nonfinal-approved"
+ | "nonfinal-dialog";
}
```
@@ -3360,6 +3388,10 @@ export interface PreparePeerPushCreditResponse {
amountRaw: AmountString;
amountEffective: AmountString;
transactionId: TransactionIdStr;
+ /**
+ * State of the existing or newly created transaction.
+ */
+ txState: TransactionState;
exchangeBaseUrl: string;
scopeInfo: ScopeInfo;
/**
@@ -3505,6 +3537,10 @@ export interface PreparePeerPullDebitResponse {
amountRaw: AmountString;
amountEffective: AmountString;
transactionId: TransactionIdStr;
+ /**
+ * State of the existing or newly created transaction.
+ */
+ txState: TransactionState;
exchangeBaseUrl: string;
scopeInfo: ScopeInfo;
/**
@@ -3629,6 +3665,60 @@ export interface QrCodeSpec {
```
+### ConvertIbanAccountFieldToPaytoOp
+```typescript
+export type ConvertIbanAccountFieldToPaytoOp = {
+ op: WalletApiOperation.ConvertIbanAccountFieldToPayto;
+ request: ConvertIbanAccountFieldToPaytoRequest;
+ response: ConvertIbanAccountFieldToPaytoResponse;
+};
+// ConvertIbanAccountFieldToPayto = "convertIbanAccountFieldToPayto"
+
+```
+```typescript
+export interface ConvertIbanAccountFieldToPaytoRequest {
+ value: string;
+ currency: string;
+}
+
+```
+```typescript
+export type ConvertIbanAccountFieldToPaytoResponse =
+ | {
+ ok: true;
+ type: "iban" | "bban";
+ paytoUri: string;
+ }
+ | {
+ ok: false;
+ };
+
+```
+
+### ConvertIbanPaytoToAccountFieldOp
+```typescript
+export type ConvertIbanPaytoToAccountFieldOp = {
+ op: WalletApiOperation.ConvertIbanPaytoToAccountField;
+ request: ConvertIbanPaytoToAccountFieldRequest;
+ response: ConvertIbanPaytoToAccountFieldResponse;
+};
+// ConvertIbanPaytoToAccountField = "convertIbanPaytoToAccountField"
+
+```
+```typescript
+export interface ConvertIbanPaytoToAccountFieldRequest {
+ paytoUri: string;
+}
+
+```
+```typescript
+export interface ConvertIbanPaytoToAccountFieldResponse {
+ type: "iban" | "bban";
+ value: string;
+}
+
+```
+
### GetBankingChoicesForPaytoOp
```typescript
export type GetBankingChoicesForPaytoOp = {
@@ -4514,6 +4604,10 @@ export interface ContactEntry {
* may be a URI
*/
source: string;
+ /**
+ * The local petname of the contact
+ */
+ petname: string;
}
```
```typescript
@@ -4522,6 +4616,7 @@ export interface MailboxConfiguration {
privateKey: EddsaPrivateKeyString;
privateEncryptionKey: string;
expiration: Timestamp;
+ payUri?: TalerUri;
}
```
```typescript
@@ -4535,6 +4630,129 @@ export interface TalerProtocolTimestamp {
```
```typescript
/**
+ * A parsed taler URI.
+ */
+export type TalerUri =
+ | PayUriResult
+ | PayTemplateUriResult
+ | DevExperimentUri
+ | PayPullUriResult
+ | PayPushUriResult
+ | BackupRestoreUri
+ | RefundUriResult
+ | WithdrawUriResult
+ | WithdrawExchangeUri
+ | AddExchangeUri
+ | WithdrawalTransferResultUri
+ | AddContactUri;
+```
+```typescript
+/**
+ *
+ */
+export interface PayUriResult {
+ type: TalerUriAction.Pay;
+ merchantBaseUrl: HostPortPath;
+ orderId: string;
+ sessionId: string;
+ claimToken?: string;
+ /**
+ * Nonce priv, only present in the
+ * "continue on mobile" payment flow.
+ */
+ noncePriv?: string;
+}
+```
+```typescript
+export type HostPortPath = string & {
+ [__hostport_str]: true;
+};
+```
+```typescript
+export interface PayTemplateUriResult {
+ type: TalerUriAction.PayTemplate;
+ merchantBaseUrl: HostPortPath;
+ templateId: string;
+}
+```
+```typescript
+export interface DevExperimentUri {
+ type: TalerUriAction.DevExperiment;
+ devExperimentId: string;
+ query?: URLSearchParams;
+}
+```
+```typescript
+interface URLSearchParams extends _URLSearchParams {}
+```
+```typescript
+export interface PayPullUriResult {
+ type: TalerUriAction.PayPull;
+ exchangeBaseUrl: HostPortPath;
+ contractPriv: string;
+}
+```
+```typescript
+export interface PayPushUriResult {
+ type: TalerUriAction.PayPush;
+ exchangeBaseUrl: HostPortPath;
+ contractPriv: string;
+}
+```
+```typescript
+export interface BackupRestoreUri {
+ type: TalerUriAction.Restore;
+ walletRootPriv: string;
+ providers: Array<HostPortPath>;
+}
+```
+```typescript
+export interface RefundUriResult {
+ type: TalerUriAction.Refund;
+ merchantBaseUrl: HostPortPath;
+ orderId: string;
+}
+```
+```typescript
+export interface WithdrawUriResult {
+ type: TalerUriAction.Withdraw;
+ bankIntegrationApiBaseUrl: HostPortPath;
+ withdrawalOperationId: string;
+ externalConfirmation?: boolean;
+}
+```
+```typescript
+export interface WithdrawExchangeUri {
+ type: TalerUriAction.WithdrawExchange;
+ exchangeBaseUrl: HostPortPath;
+ amount?: AmountString;
+}
+```
+```typescript
+export interface AddExchangeUri {
+ type: TalerUriAction.AddExchange;
+ exchangeBaseUrl: HostPortPath;
+}
+```
+```typescript
+export interface WithdrawalTransferResultUri {
+ type: TalerUriAction.WithdrawalTransferResult;
+ ref: string;
+ status?: "success" | "aborted";
+}
+```
+```typescript
+export interface AddContactUri {
+ type: TalerUriAction.AddContact;
+ alias: string;
+ aliasType: string;
+ mailboxBaseUri: string;
+ mailboxIdentity: HashCodeString;
+ sourceBaseUrl: string;
+}
+```
+```typescript
+/**
* Record metadata for mailbox messages
*/
export interface MailboxMessageRecord {
@@ -5599,6 +5817,7 @@ export interface ExchangeListItem {
* (e.g. because no global fees are configured).
*/
peerPaymentsDisabled: boolean;
+ directDepositsDisabled: boolean;
/** Set to true if this exchange doesn't charge any fees. */
noFees: boolean;
/** Most general scope that the exchange is a part of. */
@@ -5615,7 +5834,6 @@ export interface ExchangeListItem {
* to update the exchange info.
*/
lastUpdateErrorInfo?: OperationErrorInfo;
- unavailableReason?: TalerErrorDetail;
}
```
```typescript
@@ -5738,10 +5956,24 @@ export interface PaymentInsufficientBalanceDetails {
*/
balanceAgeAcceptable: AmountString;
/**
- * Balance of type "merchant-acceptable" (see balance.ts for definition).
+ * Balance of type "receiver-acceptable" (see balance.ts for definition).
+ *
+ * @deprecated (2025-12-05) use balanceReceiver[...]Acceptable instead.
*/
balanceReceiverAcceptable: AmountString;
/**
+ * Balance of type "receiver-exchange-url-acceptable" (see balance.ts for definition).
+ */
+ balanceReceiverExchangeUrlAcceptable: AmountString;
+ /**
+ * Balance of type "receiver-exchange-pub-acceptable" (see balance.ts for definition).
+ */
+ balanceReceiverExchangePubAcceptable: AmountString;
+ /**
+ * Balance of type "receiver-auditor-url-acceptable" (see balance.ts for definition).
+ */
+ balanceReceiverAuditorUrlAcceptable: AmountString;
+ /**
* Balance of type "merchant-depositable" (see balance.ts for definition).
*/
balanceReceiverDepositable: AmountString;
@@ -5757,10 +5989,21 @@ export interface PaymentInsufficientBalanceDetails {
balanceMaterial: AmountString;
balanceExchangeDepositable: AmountString;
balanceAgeAcceptable: AmountString;
+ /**
+ * @deprecated (2025-12-05) use balanceReceiver[...]Acceptable instead.
+ */
balanceReceiverAcceptable: AmountString;
+ balanceReceiverExchangeUrlAcceptable: AmountString;
+ balanceReceiverExchangePubAcceptable: AmountString;
+ balanceReceiverAuditorUrlAcceptable: AmountString;
balanceReceiverDepositable: AmountString;
maxEffectiveSpendAmount: AmountString;
/**
+ * The exchange master public key configured by the merchant
+ * backend differs from the one of the coins stored in the wallet.
+ */
+ exchangeMasterPubMismatch: boolean;
+ /**
* Exchange doesn't have global fees configured for the relevant year,
* p2p payments aren't possible.
*
@@ -5962,6 +6205,16 @@ export interface AcceptExchangeTosRequest {
export interface WireTypeDetails {
paymentTargetType: string;
/**
+ * Only applicable for payment target type IBAN.
+ *
+ * Specifies whether the user wants to preferably
+ * enter their bank account details as an IBAN
+ * or as a BBAN.
+ *
+ * Mandatory for paymentTargetType="iban".
+ */
+ preferredEntryType?: "iban" | "bban";
+ /**
* Allowed hostnames for the deposit payto URI.
* Only applicable to x-taler-bank.
*/