Skip to content

Commit

Permalink
feat: settleHtlc now accepts an object for tokens
Browse files Browse the repository at this point in the history
  • Loading branch information
onmax authored and sisou committed Jun 14, 2024
1 parent 53cf727 commit 1359ef4
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 11 deletions.
10 changes: 6 additions & 4 deletions src/FiatAssetAdapter.ts
Original file line number Diff line number Diff line change
@@ -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<HtlcDetails>;
settleHtlc(id: string, secret: string, settlementJWS: string, authorizationToken?: string): Promise<HtlcDetails>;
settleHtlc(id: string, secret: string, settlementJWS: string, tokens?: Partial<SettleHtlcTokens>): Promise<HtlcDetails>;
}

export class FiatAssetAdapter implements AssetAdapter<FiatSwapAsset> {
Expand Down Expand Up @@ -101,7 +103,7 @@ export class FiatAssetAdapter implements AssetAdapter<FiatSwapAsset> {
settlementJWS: string,
secret: string,
hash: string,
authorizationToken?: string,
tokens?: Partial<SettleHtlcTokens>,
): Promise<HtlcDetails> {
if (this.stopped) throw new Error('FiatAssetAdapter called while stopped');

Expand All @@ -112,7 +114,7 @@ export class FiatAssetAdapter implements AssetAdapter<FiatSwapAsset> {

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);
Expand Down
11 changes: 6 additions & 5 deletions src/IAssetAdapter.ts
Original file line number Diff line number Diff line change
@@ -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 {
Expand Down Expand Up @@ -65,7 +66,7 @@ export interface AssetAdapter<TAsset extends SwapAsset> {
serializedTx: string,
secret: string,
hash: string,
authorizationToken?: string,
tokens?: Partial<SettleHtlcTokens>
): Promise<Transaction<TAsset>>;

awaitSettlementConfirmation(
Expand Down
5 changes: 3 additions & 2 deletions src/SwapHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 };
Expand Down Expand Up @@ -112,13 +113,13 @@ export class SwapHandler<FromAsset extends SwapAsset, ToAsset extends SwapAsset>
public async settleIncoming(
serializedTx: string,
secret: string,
authorizationToken?: string,
tokens?: Partial<SettleHtlcTokens>,
): Promise<Transaction<ToAsset>> {
return this.toAssetAdapter.settleHtlc(
serializedTx,
secret,
this.swap.hash,
{ authorization: authorizationToken },
tokens,
);
}

Expand Down

0 comments on commit 1359ef4

Please sign in to comment.