taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 0e733d30458b6e2ffed015f1add906ddda586a79
parent 2ea52bc8370d4c4cc75f5123dd1572fa17f53a3c
Author: Florian Dold <florian@dold.me>
Date:   Wed,  7 May 2025 00:37:52 +0200

comments, dce, explicit types

Diffstat:
Mpackages/taler-util/src/http-client/exchange-client.ts | 478+++++++++++++++++--------------------------------------------------------------
Mpackages/taler-util/src/http-client/exchange.ts | 396+------------------------------------------------------------------------------
2 files changed, 108 insertions(+), 766 deletions(-)

diff --git a/packages/taler-util/src/http-client/exchange-client.ts b/packages/taler-util/src/http-client/exchange-client.ts @@ -14,12 +14,12 @@ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> */ -import { Codec, codecForAny } from "../codec.js"; +import { codecForAny } from "../codec.js"; import { HttpRequestLibrary, HttpRequestOptions, HttpResponse, - readSuccessResponseJsonOrThrow + readSuccessResponseJsonOrThrow, } from "../http-common.js"; import { HttpStatusCode } from "../http-status-codes.js"; import { createPlatformHttpLib } from "../http.js"; @@ -35,7 +35,7 @@ import { opKnownAlternativeHttpFailure, opKnownHttpFailure, opSuccessFromHttp, - opUnknownHttpFailure + opUnknownHttpFailure, } from "../operation.js"; import { EddsaPrivP, encodeCrock } from "../taler-crypto.js"; import { @@ -49,21 +49,28 @@ import { import { AccountKycStatus, AmlDecisionRequest, - BatchWithdrawResponse, + AmlDecisionsResponse, + AvailableMeasureSummary, + EventCounter, ExchangeGetContractResponse, + ExchangeKeysResponse, ExchangeKycUploadFormRequest, - ExchangeLegacyBatchWithdrawRequest, ExchangeMergeConflictResponse, ExchangeMergeSuccessResponse, ExchangePurseDeposits, ExchangePurseMergeRequest, ExchangePurseStatus, ExchangeReservePurseRequest, + ExchangeTransferList, ExchangeVersionResponse, + KycAttributes, + KycProcessClientInformation, + KycProcessStartInformation, KycRequirementInformationId, LegitimizationNeededResponse, PurseConflict, PurseConflictPartial, + WalletKycCheckResponse, WalletKycRequest, codecForAccountKycStatus, codecForAmlDecisionsResponse, @@ -92,7 +99,6 @@ import { Amounts, CancellationToken, LongpollQueue, - ReservePub, signAmlDecision, signAmlQuery, signKycAuth, @@ -100,7 +106,7 @@ import { } from "../index.js"; import { TalerErrorCode } from "../taler-error-codes.js"; import { AbsoluteTime } from "../time.js"; -import { codecForEmptyObject } from "../types-taler-wallet.js"; +import { EmptyObject, codecForEmptyObject } from "../types-taler-wallet.js"; export type TalerExchangeResultByMethod2< prop extends keyof TalerExchangeHttpClient2, @@ -180,19 +186,6 @@ export class TalerExchangeHttpClient2 { } } - // TERMS - - /** - * https://docs.taler.net/core/api-exchange.html#get--seed - * - */ - /** - * https://docs.taler.net/core/api-exchange.html#get--seed - * - */ - - // EXCHANGE INFORMATION - /** * https://docs.taler.net/core/api-exchange.html#get--seed * @@ -264,7 +257,7 @@ export class TalerExchangeHttpClient2 { * * PARTIALLY IMPLEMENTED!! */ - async getKeys() { + async getKeys(): Promise<OperationOk<ExchangeKeysResponse>> { const resp = await this.fetch("keys"); switch (resp.status) { case HttpStatusCode.Ok: @@ -274,306 +267,6 @@ export class TalerExchangeHttpClient2 { } } - // - // MANAGEMENT - // - - /** - * https://docs.taler.net/core/api-exchange.html#get--management-keys - * - */ - async getFutureKeys(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-keys - * - */ - async signFutureKeys(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-denominations-$H_DENOM_PUB-revoke - * - */ - async revokeFutureDenominationKeys(): Promise<never> { - throw Error("not yet implemented"); - } - /** - * https://docs.taler.net/core/api-exchange.html#post--management-signkeys-$EXCHANGE_PUB-revoke - * - */ - async revokeFutureSigningKeys(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-auditors - * - */ - async enableAuditor(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-auditors-$AUDITOR_PUB-disable - * - */ - async disableAuditor(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-wire-fee - * - */ - async configWireFee(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-global-fees - * - */ - async configGlobalFees(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-wire - * - */ - async enableWireMethod(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-wire-disable - * - */ - async disableWireMethod(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-drain - * - */ - async drainProfits(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-aml-officers - * - */ - async updateOfficer(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-partners - * - */ - async enablePartner(): Promise<never> { - throw Error("not yet implemented"); - } - - // - // AUDITOR - // - - /** - * https://docs.taler.net/core/api-exchange.html#post--auditors-$AUDITOR_PUB-$H_DENOM_PUB - * - */ - async addAuditor(): Promise<never> { - throw Error("not yet implemented"); - } - - // - // WITHDRAWAL - // - - /** - * https://docs.taler.net/core/api-exchange.html#get--reserves-$RESERVE_PUB - * - */ - async getReserveInfo(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--csr-withdraw - * - */ - async prepareCsrWithdawal(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--reserves-$RESERVE_PUB-batch-withdraw - * - */ - async withdraw(rid: ReservePub, body: ExchangeLegacyBatchWithdrawRequest) { - const resp = await this.fetch(`reserves/${rid}/batch-withdraw`, { - method: "POST", - body, - }); - - switch (resp.status) { - case HttpStatusCode.Ok: - return opSuccessFromHttp( - resp, - codecForAny() as Codec<BatchWithdrawResponse>, - ); - case HttpStatusCode.Forbidden: - case HttpStatusCode.BadRequest: - case HttpStatusCode.NotFound: - case HttpStatusCode.Conflict: - case HttpStatusCode.Gone: - return opKnownHttpFailure(resp.status, resp); - case HttpStatusCode.UnavailableForLegalReasons: - return opKnownAlternativeHttpFailure( - resp, - resp.status, - codecForLegitimizationNeededResponse(), - ); - default: - return opUnknownHttpFailure(resp); - } - } - - /** - * https://docs.taler.net/core/api-exchange.html#withdraw-with-age-restriction - * - */ - async withdrawWithAge(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--age-withdraw-$ACH-reveal - * - */ - async revealCoinsForAge(): Promise<never> { - throw Error("not yet implemented"); - } - - // - // RESERVE HISTORY - // - - /** - * https://docs.taler.net/core/api-exchange.html#get--reserves-$RESERVE_PUB-history - * - */ - async getResverveHistory(): Promise<never> { - throw Error("not yet implemented"); - } - - // - // COIN HISTORY - // - - /** - * https://docs.taler.net/core/api-exchange.html#get--coins-$COIN_PUB-history - * - */ - async getCoinHistory(): Promise<never> { - throw Error("not yet implemented"); - } - - // - // DEPOSIT - // - - /** - * https://docs.taler.net/core/api-exchange.html#post--batch-deposit - * - */ - async deposit(): Promise<never> { - throw Error("not yet implemented"); - } - - // - // REFRESH - // - - /** - * https://docs.taler.net/core/api-exchange.html#post--csr-melt - * - */ - async prepareCsrMelt(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--coins-$COIN_PUB-melt - * - */ - async meltCoin(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#get--coins-$COIN_PUB-link - * - */ - async linkCoin(): Promise<never> { - throw Error("not yet implemented"); - } - - // - // RECOUP - // - - /** - * https://docs.taler.net/core/api-exchange.html#post--coins-$COIN_PUB-recoup - * - */ - async recoupReserveCoin(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--coins-$COIN_PUB-recoup-refresh - * - */ - async recoupRefreshCoin(): Promise<never> { - throw Error("not yet implemented"); - } - - // WIRE TRANSFER - - /** - * https://docs.taler.net/core/api-exchange.html#get--transfers-$WTID - * - */ - async getWireTransferInfo(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#get--deposits-$H_WIRE-$MERCHANT_PUB-$H_CONTRACT_TERMS-$COIN_PUB - * - */ - async getWireTransferIdForDeposit(): Promise<never> { - throw Error("not yet implemented"); - } - - // REFUND - - /** - * https://docs.taler.net/core/api-exchange.html#post--coins-$COIN_PUB-refund - * - */ - async refund(): Promise<never> { - throw Error("not yet implemented"); - } - // WALLET TO WALLET /** @@ -867,7 +560,18 @@ export class TalerExchangeHttpClient2 { * https://docs.taler.net/core/api-exchange.html#post--kyc-wallet * */ - async notifyKycBalanceLimit(account: ReserveAccount, balance: AmountString) { + async notifyKycBalanceLimit( + account: ReserveAccount, + balance: AmountString, + ): Promise< + | OperationOk<void> + | OperationFail<HttpStatusCode.Forbidden> + | OperationAlternative< + HttpStatusCode.UnavailableForLegalReasons, + LegitimizationNeededResponse + > + | OperationOk<WalletKycCheckResponse> + > { const body: WalletKycRequest = { balance, reserve_pub: account.id as any, @@ -964,7 +668,12 @@ export class TalerExchangeHttpClient2 { token: AccessToken, known: KycRequirementInformationId[], longpoll: boolean = false, - ) { + ): Promise< + | OperationOk<KycProcessClientInformation> + | OperationAlternative<HttpStatusCode.Accepted, EmptyObject> + | OperationAlternative<HttpStatusCode.NoContent, EmptyObject> + | OperationFail<HttpStatusCode.NotModified> + > { const resp = await this.fetch( `kyc-info/${token}`, { @@ -999,7 +708,12 @@ export class TalerExchangeHttpClient2 { async uploadKycForm<T extends ExchangeKycUploadFormRequest>( requirement: KycRequirementInformationId, body: T, - ) { + ): Promise< + | OperationOk<void> + | OperationFail<HttpStatusCode.Conflict> + | OperationFail<HttpStatusCode.NotFound> + | OperationFail<HttpStatusCode.PayloadTooLarge> + > { const resp = await this.fetch(`kyc-upload/${requirement}`, { method: "POST", body, @@ -1028,7 +742,14 @@ export class TalerExchangeHttpClient2 { async startExternalKycProcess( requirement: KycRequirementInformationId, body: object = {}, - ) { + ): Promise< + | OperationFail< + | HttpStatusCode.NotFound + | HttpStatusCode.Conflict + | HttpStatusCode.PayloadTooLarge + > + | OperationOk<KycProcessStartInformation> + > { const resp = await this.fetch(`kyc-start/${requirement}`, { method: "POST", body, @@ -1080,7 +801,16 @@ export class TalerExchangeHttpClient2 { * https://docs.taler.net/core/api-exchange.html#get--aml-$OFFICER_PUB-measures * */ - async getAmlMesasures(auth: OfficerAccount) { + async getAmlMeasures( + auth: OfficerAccount, + ): Promise< + | OperationOk<AvailableMeasureSummary> + | OperationFail< + | HttpStatusCode.Forbidden + | HttpStatusCode.NotFound + | HttpStatusCode.Conflict + > + > { const resp = await this.fetch(`aml/${auth.id}/measures`, { method: "GET", headers: { @@ -1113,7 +843,14 @@ export class TalerExchangeHttpClient2 { since?: AbsoluteTime; until?: AbsoluteTime; } = {}, - ) { + ): Promise< + | OperationFail< + | HttpStatusCode.Forbidden + | HttpStatusCode.NotFound + | HttpStatusCode.Conflict + > + | OperationOk<EventCounter> + > { const url = new URL(`aml/${auth.id}/kyc-statistics/${name}`, this.baseUrl); if (filter.since !== undefined && filter.since.t_ms !== "never") { @@ -1154,7 +891,14 @@ export class TalerExchangeHttpClient2 { active?: boolean; investigation?: boolean; } = {}, - ) { + ): Promise< + | OperationFail< + | HttpStatusCode.Forbidden + | HttpStatusCode.NotFound + | HttpStatusCode.Conflict + > + | OperationOk<AmlDecisionsResponse> + > { const url = new URL(`aml/${auth.id}/decisions`, this.baseUrl); addPaginationParams(url, params); @@ -1201,7 +945,14 @@ export class TalerExchangeHttpClient2 { auth: OfficerAccount, account: string, params: PaginationParams = {}, - ) { + ): Promise< + | OperationOk<KycAttributes> + | OperationFail< + | HttpStatusCode.Forbidden + | HttpStatusCode.NotFound + | HttpStatusCode.Conflict + > + > { const url = new URL(`aml/${auth.id}/attributes/${account}`, this.baseUrl); addPaginationParams(url, params); @@ -1234,7 +985,14 @@ export class TalerExchangeHttpClient2 { async makeAmlDesicion( auth: OfficerAccount, decision: Omit<AmlDecisionRequest, "officer_sig">, - ) { + ): Promise< + | OperationOk<void> + | OperationFail< + | HttpStatusCode.Forbidden + | HttpStatusCode.NotFound + | HttpStatusCode.Conflict + > + > { const body: AmlDecisionRequest = { officer_sig: encodeCrock( signAmlDecision(auth.signingKey, decision), @@ -1275,7 +1033,14 @@ export class TalerExchangeHttpClient2 { async getTransfersCredit( auth: OfficerAccount, params: PaginationParams & { threshold?: AmountJson } = {}, - ) { + ): Promise< + | OperationOk<ExchangeTransferList> + | OperationFail< + | HttpStatusCode.Forbidden + | HttpStatusCode.NotFound + | HttpStatusCode.Conflict + > + > { const url = new URL(`aml/${auth.id}/transfers-credit`, this.baseUrl); addPaginationParams(url, params); @@ -1313,7 +1078,14 @@ export class TalerExchangeHttpClient2 { async getTransfersDebit( auth: OfficerAccount, params: PaginationParams & { threshold?: AmountJson } = {}, - ) { + ): Promise< + | OperationOk<ExchangeTransferList> + | OperationFail< + | HttpStatusCode.Forbidden + | HttpStatusCode.NotFound + | HttpStatusCode.Conflict + > + > { const url = new URL(`aml/${auth.id}/transfers-debit`, this.baseUrl); addPaginationParams(url, params); @@ -1343,46 +1115,4 @@ export class TalerExchangeHttpClient2 { return opUnknownHttpFailure(resp); } } - - // RESERVE control - - /** - * https://docs.taler.net/core/api-exchange.html#post--reserves-$RESERVE_PUB-open - * - */ - async reserveOpen(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#get--reserves-attest-$RESERVE_PUB - * - */ - async getReserveAttributes(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--reserves-attest-$RESERVE_PUB - * - */ - async signReserveAttributes(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--reserves-$RESERVE_PUB-close - * - */ - async closeReserve(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#delete--reserves-$RESERVE_PUB - * - */ - async deleteReserve(): Promise<never> { - throw Error("not yet implemented"); - } } diff --git a/packages/taler-util/src/http-client/exchange.ts b/packages/taler-util/src/http-client/exchange.ts @@ -14,7 +14,7 @@ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> */ -import { Codec, codecForAny } from "../codec.js"; +import { codecForAny } from "../codec.js"; import { HttpRequestLibrary, readSuccessResponseJsonOrThrow, @@ -49,9 +49,7 @@ import { import { AmlDecisionRequest, AmlDecisionsResponse, - BatchWithdrawResponse, ExchangeKycUploadFormRequest, - ExchangeLegacyBatchWithdrawRequest, ExchangePurseDeposits, ExchangePurseMergeRequest, ExchangeReservePurseRequest, @@ -119,14 +117,15 @@ export type KycProcessClientInformationWithEtag = /** * Client library for the GNU Taler exchange service. + * + * FIXME: This client library is currently used by the SPA. + * However, we should merge it with the other exchange client implementation. */ export class TalerExchangeHttpClient { public static readonly PROTOCOL_VERSION = "27:0:2"; private httpLib: HttpRequestLibrary; private cacheEvictor: CacheEvictor<TalerExchangeCacheEviction>; private preventCompression: boolean; - private cancelationToken: CancellationToken; - // private longPollQueue: LongpollQueue; constructor( readonly baseUrl: string, @@ -141,9 +140,6 @@ export class TalerExchangeHttpClient { this.httpLib = params.httpClient ?? createPlatformHttpLib(); this.cacheEvictor = params.cacheEvictor ?? nullEvictor; this.preventCompression = !!params.preventCompression; - this.cancelationToken = - params.cancelationToken ?? CancellationToken.CONTINUE; - // this.longPollQueue = params.longPollQueue ?? new LongpollQueue(); } isCompatible(version: string): boolean { @@ -154,46 +150,6 @@ export class TalerExchangeHttpClient { return compare?.compatible ?? false; } - // private async fetch( - // url_or_path: URL | string, - // opts: HttpRequestOptions = {}, - // longpoll: boolean = false, - // ): Promise<HttpResponse> { - // const url = - // typeof url_or_path == "string" - // ? new URL(url_or_path, this.baseUrl) - // : url_or_path; - // if (longpoll || url.searchParams.has("timeout_ms")) { - // return this.longPollQueue.run( - // url, - // this.cancelationToken, - // async (timeoutMs) => { - // url.searchParams.set("timeout_ms", String(timeoutMs)); - // return this.httpLib.fetch(url.href, { - // cancellationToken: this.cancelationToken, - // ...opts, - // }); - // }, - // ); - // } else { - // return this.httpLib.fetch(url.href, { - // cancellationToken: this.cancelationToken, - // ...opts, - // }); - // } - // } - - // TERMS - - /** - * https://docs.taler.net/core/api-exchange.html#get--seed - * - */ - /** - * https://docs.taler.net/core/api-exchange.html#get--seed - * - */ - // EXCHANGE INFORMATION /** @@ -283,308 +239,6 @@ export class TalerExchangeHttpClient { } } - // - // MANAGEMENT - // - - /** - * https://docs.taler.net/core/api-exchange.html#get--management-keys - * - */ - async getFutureKeys(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-keys - * - */ - async signFutureKeys(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-denominations-$H_DENOM_PUB-revoke - * - */ - async revokeFutureDenominationKeys(): Promise<never> { - throw Error("not yet implemented"); - } - /** - * https://docs.taler.net/core/api-exchange.html#post--management-signkeys-$EXCHANGE_PUB-revoke - * - */ - async revokeFutureSigningKeys(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-auditors - * - */ - async enableAuditor(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-auditors-$AUDITOR_PUB-disable - * - */ - async disableAuditor(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-wire-fee - * - */ - async configWireFee(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-global-fees - * - */ - async configGlobalFees(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-wire - * - */ - async enableWireMethod(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-wire-disable - * - */ - async disableWireMethod(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-drain - * - */ - async drainProfits(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-aml-officers - * - */ - async updateOfficer(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--management-partners - * - */ - async enablePartner(): Promise<never> { - throw Error("not yet implemented"); - } - - // - // AUDITOR - // - - /** - * https://docs.taler.net/core/api-exchange.html#post--auditors-$AUDITOR_PUB-$H_DENOM_PUB - * - */ - async addAuditor(): Promise<never> { - throw Error("not yet implemented"); - } - - // - // WITHDRAWAL - // - - /** - * https://docs.taler.net/core/api-exchange.html#get--reserves-$RESERVE_PUB - * - */ - async getReserveInfo(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--csr-withdraw - * - */ - async prepareCsrWithdawal(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--reserves-$RESERVE_PUB-batch-withdraw - * - */ - async withdraw(rid: ReservePub, body: ExchangeLegacyBatchWithdrawRequest) { - const url = new URL(`reserves/${rid}/batch-withdraw`, this.baseUrl); - const resp = await this.httpLib.fetch(url.href, { - method: "POST", - body, - }); - - switch (resp.status) { - case HttpStatusCode.Ok: - return opSuccessFromHttp( - resp, - //FIXME: missing codec for BWR - codecForAny() as Codec<BatchWithdrawResponse>, - ); - case HttpStatusCode.Forbidden: - case HttpStatusCode.BadRequest: - case HttpStatusCode.NotFound: - case HttpStatusCode.Conflict: - case HttpStatusCode.Gone: - return opKnownHttpFailure(resp.status, resp); - case HttpStatusCode.UnavailableForLegalReasons: - return opKnownAlternativeHttpFailure( - resp, - resp.status, - codecForLegitimizationNeededResponse(), - ); - default: - return opUnknownHttpFailure(resp); - } - } - - /** - * https://docs.taler.net/core/api-exchange.html#withdraw-with-age-restriction - * - */ - async withdrawWithAge(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--age-withdraw-$ACH-reveal - * - */ - async revealCoinsForAge(): Promise<never> { - throw Error("not yet implemented"); - } - - // - // RESERVE HISTORY - // - - /** - * https://docs.taler.net/core/api-exchange.html#get--reserves-$RESERVE_PUB-history - * - */ - async getResverveHistory(): Promise<never> { - throw Error("not yet implemented"); - } - - // - // COIN HISTORY - // - - /** - * https://docs.taler.net/core/api-exchange.html#get--coins-$COIN_PUB-history - * - */ - async getCoinHistory(): Promise<never> { - throw Error("not yet implemented"); - } - - // - // DEPOSIT - // - - /** - * https://docs.taler.net/core/api-exchange.html#post--batch-deposit - * - */ - async deposit(): Promise<never> { - throw Error("not yet implemented"); - } - - // - // REFRESH - // - - /** - * https://docs.taler.net/core/api-exchange.html#post--csr-melt - * - */ - async prepareCsrMelt(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--coins-$COIN_PUB-melt - * - */ - async meltCoin(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#get--coins-$COIN_PUB-link - * - */ - async linkCoin(): Promise<never> { - throw Error("not yet implemented"); - } - - // - // RECOUP - // - - /** - * https://docs.taler.net/core/api-exchange.html#post--coins-$COIN_PUB-recoup - * - */ - async recoupReserveCoin(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--coins-$COIN_PUB-recoup-refresh - * - */ - async recoupRefreshCoin(): Promise<never> { - throw Error("not yet implemented"); - } - - // WIRE TRANSFER - - /** - * https://docs.taler.net/core/api-exchange.html#get--transfers-$WTID - * - */ - async getWireTransferInfo(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#get--deposits-$H_WIRE-$MERCHANT_PUB-$H_CONTRACT_TERMS-$COIN_PUB - * - */ - async getWireTransferIdForDeposit(): Promise<never> { - throw Error("not yet implemented"); - } - - // REFUND - - /** - * https://docs.taler.net/core/api-exchange.html#post--coins-$COIN_PUB-refund - * - */ - async refund(): Promise<never> { - throw Error("not yet implemented"); - } - // WALLET TO WALLET /** @@ -1340,46 +994,4 @@ export class TalerExchangeHttpClient { return opUnknownHttpFailure(resp); } } - - // RESERVE control - - /** - * https://docs.taler.net/core/api-exchange.html#post--reserves-$RESERVE_PUB-open - * - */ - async reserveOpen(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#get--reserves-attest-$RESERVE_PUB - * - */ - async getReserveAttributes(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--reserves-attest-$RESERVE_PUB - * - */ - async signReserveAttributes(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#post--reserves-$RESERVE_PUB-close - * - */ - async closeReserve(): Promise<never> { - throw Error("not yet implemented"); - } - - /** - * https://docs.taler.net/core/api-exchange.html#delete--reserves-$RESERVE_PUB - * - */ - async deleteReserve(): Promise<never> { - throw Error("not yet implemented"); - } }