@nimiq/libswap
Version:
Typed Javascript library to handle atomic swaps.
42 lines (41 loc) • 1.94 kB
TypeScript
import { AssetAdapter, SwapAsset } from './IAssetAdapter';
import type { Client, Transaction } from './IAssetAdapter';
export { Client, SwapAsset, Transaction };
export type Contract<TAsset extends SwapAsset> = {
htlc: {
address: string;
data: TAsset extends SwapAsset.NIM ? string : never;
script: TAsset extends SwapAsset.BTC ? string : never;
contract: TAsset extends SwapAsset.USDC | SwapAsset.USDC_MATIC | SwapAsset.USDT_MATIC ? string : never;
};
};
export type Swap<FromAsset extends SwapAsset, ToAsset extends SwapAsset> = {
from: {
asset: FromAsset;
amount: number;
};
to: {
asset: ToAsset;
amount: number;
serviceEscrowFee: number;
};
hash: string;
contracts: {
[asset in FromAsset | ToAsset]: Contract<FromAsset | ToAsset>;
};
};
export declare class SwapHandler<FromAsset extends SwapAsset, ToAsset extends SwapAsset> {
private swap;
fromAssetAdapter: AssetAdapter<FromAsset>;
toAssetAdapter: AssetAdapter<ToAsset>;
private static makeAssetAdapter;
constructor(swap: Swap<FromAsset, ToAsset>, fromClient: Client<FromAsset>, toClient: Client<ToAsset>);
setSwap(swap: Swap<FromAsset, ToAsset>): void;
awaitIncoming(onUpdate: (tx: Transaction<ToAsset>) => any, confirmations?: number): Promise<Transaction<ToAsset>>;
createOutgoing(serializedTx: string, onPending: (tx: Transaction<FromAsset>) => any, serializedProxyTx?: string): Promise<Transaction<FromAsset>>;
awaitOutgoing(onUpdate: (tx: Transaction<FromAsset>) => any, confirmations?: number): Promise<Transaction<FromAsset>>;
awaitSecret(): Promise<string>;
settleIncoming(serializedTx: string, secret: string, authorizationToken?: string): Promise<Transaction<ToAsset>>;
awaitIncomingConfirmation(onUpdate?: (tx: Transaction<ToAsset>) => any): Promise<Transaction<ToAsset>>;
stop(reason: Error): void;
}