From 1359ef45acd3abb77d30b314921bea040ebdbcd2 Mon Sep 17 00:00:00 2001 From: Maxi Date: Wed, 5 Jun 2024 20:01:52 +0200 Subject: [PATCH] feat: settleHtlc now accepts an object for tokens --- src/FiatAssetAdapter.ts | 10 ++++++---- src/IAssetAdapter.ts | 11 ++++++----- src/SwapHandler.ts | 5 +++-- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/FiatAssetAdapter.ts b/src/FiatAssetAdapter.ts index 1166443..ce54fde 100644 --- a/src/FiatAssetAdapter.ts +++ b/src/FiatAssetAdapter.ts @@ -1,11 +1,13 @@ import { Htlc as OasisHtlc, HtlcStatus, SettlementInstruction, SettlementStatus } from '@nimiq/oasis-api'; -import { AssetAdapter, FiatSwapAsset, SwapAsset, Transaction } from './IAssetAdapter'; +import type { AssetAdapter, FiatSwapAsset } from './IAssetAdapter'; export type HtlcDetails = OasisHtlc; +export type SettleHtlcTokens = { authorization: string, smsApi: string }; + export interface OasisClient { getHtlc(id: string): Promise; - settleHtlc(id: string, secret: string, settlementJWS: string, authorizationToken?: string): Promise; + settleHtlc(id: string, secret: string, settlementJWS: string, tokens?: Partial): Promise; } export class FiatAssetAdapter implements AssetAdapter { @@ -101,7 +103,7 @@ export class FiatAssetAdapter implements AssetAdapter { settlementJWS: string, secret: string, hash: string, - authorizationToken?: string, + tokens?: Partial, ): Promise { if (this.stopped) throw new Error('FiatAssetAdapter called while stopped'); @@ -112,7 +114,7 @@ export class FiatAssetAdapter implements AssetAdapter { let htlc: HtlcDetails; try { - htlc = await this.client.settleHtlc(payload.contractId, secret, settlementJWS, { authorization: authorizationToken }); + htlc = await this.client.settleHtlc(payload.contractId, secret, settlementJWS, tokens); } catch (error) { console.error(error); // eslint-disable-line no-console htlc = await this.client.getHtlc(payload.contractId); diff --git a/src/IAssetAdapter.ts b/src/IAssetAdapter.ts index 868a9d5..2f23552 100644 --- a/src/IAssetAdapter.ts +++ b/src/IAssetAdapter.ts @@ -1,18 +1,19 @@ -import { +import type { TransactionDetails as NimiqTransactionDetails, NimiqClient, } from './NimiqAssetAdapter'; -import { +import type { TransactionDetails as BitcoinTransactionDetails, BitcoinClient, } from './BitcoinAssetAdapter'; -import { +import type { GenericEvent as UsdcTransactionDetails, Web3Client, } from './UsdcAssetAdapter'; -import { +import type { HtlcDetails, OasisClient, + SettleHtlcTokens, } from './FiatAssetAdapter'; export enum SwapAsset { @@ -65,7 +66,7 @@ export interface AssetAdapter { serializedTx: string, secret: string, hash: string, - authorizationToken?: string, + tokens?: Partial ): Promise>; awaitSettlementConfirmation( diff --git a/src/SwapHandler.ts b/src/SwapHandler.ts index 758aba9..b50dfa6 100644 --- a/src/SwapHandler.ts +++ b/src/SwapHandler.ts @@ -4,6 +4,7 @@ import { NimiqAssetAdapter } from './NimiqAssetAdapter'; import { BitcoinAssetAdapter } from './BitcoinAssetAdapter'; import { UsdcAssetAdapter } from './UsdcAssetAdapter'; import { FiatAssetAdapter } from './FiatAssetAdapter'; +import type { SettleHtlcTokens } from './FiatAssetAdapter'; // Re-export to centralize exports export { SwapAsset, Client, Transaction }; @@ -112,13 +113,13 @@ export class SwapHandler public async settleIncoming( serializedTx: string, secret: string, - authorizationToken?: string, + tokens?: Partial, ): Promise> { return this.toAssetAdapter.settleHtlc( serializedTx, secret, this.swap.hash, - { authorization: authorizationToken }, + tokens, ); }