@atomiqlabs/base 7.2.2 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/btc/BitcoinNetwork.d.ts +4 -0
  2. package/dist/btc/BitcoinNetwork.js +8 -0
  3. package/dist/btcrelay/BtcRelay.d.ts +4 -3
  4. package/dist/btcrelay/rpc/BitcoinRpc.d.ts +1 -0
  5. package/dist/btcrelay/synchronizer/RelaySynchronizer.d.ts +1 -1
  6. package/dist/btcrelay/types/BtcBlock.d.ts +1 -0
  7. package/dist/btcrelay/types/BtcHeader.d.ts +1 -0
  8. package/dist/btcrelay/types/BtcStoredHeader.d.ts +1 -0
  9. package/dist/btcrelay/utils/StatePredictorUtils.d.ts +2 -0
  10. package/dist/btcrelay/utils/StatePredictorUtils.js +10 -3
  11. package/dist/chains/ChainData.d.ts +29 -0
  12. package/dist/chains/ChainData.js +2 -0
  13. package/dist/chains/ChainType.d.ts +15 -0
  14. package/dist/chains/ChainType.js +2 -0
  15. package/dist/events/types/ClaimEvent.d.ts +2 -3
  16. package/dist/events/types/ClaimEvent.js +3 -3
  17. package/dist/events/types/InitializeEvent.d.ts +1 -3
  18. package/dist/events/types/InitializeEvent.js +2 -3
  19. package/dist/events/types/RefundEvent.d.ts +0 -2
  20. package/dist/events/types/RefundEvent.js +0 -3
  21. package/dist/events/types/SwapEvent.d.ts +2 -4
  22. package/dist/events/types/SwapEvent.js +2 -3
  23. package/dist/index.d.ts +4 -1
  24. package/dist/index.js +4 -26
  25. package/dist/swaps/SwapContract.d.ts +60 -70
  26. package/dist/swaps/SwapData.d.ts +15 -13
  27. package/dist/swaps/SwapData.js +0 -5
  28. package/dist/utils/BigIntBufferUtils.d.ts +6 -0
  29. package/dist/utils/BigIntBufferUtils.js +31 -0
  30. package/package.json +2 -3
  31. package/src/btc/BitcoinNetwork.ts +5 -0
  32. package/src/btcrelay/BtcRelay.ts +4 -3
  33. package/src/btcrelay/rpc/BitcoinRpc.ts +1 -0
  34. package/src/btcrelay/synchronizer/RelaySynchronizer.ts +1 -1
  35. package/src/btcrelay/types/BtcBlock.ts +1 -0
  36. package/src/btcrelay/types/BtcHeader.ts +1 -1
  37. package/src/btcrelay/types/BtcStoredHeader.ts +1 -0
  38. package/src/btcrelay/utils/StatePredictorUtils.ts +10 -2
  39. package/src/chains/ChainData.ts +38 -0
  40. package/src/{ChainType.ts → chains/ChainType.ts} +4 -4
  41. package/src/events/types/ClaimEvent.ts +4 -5
  42. package/src/events/types/InitializeEvent.ts +2 -5
  43. package/src/events/types/RefundEvent.ts +1 -8
  44. package/src/events/types/SwapEvent.ts +3 -7
  45. package/src/index.ts +5 -26
  46. package/src/swaps/SwapContract.ts +90 -81
  47. package/src/swaps/SwapData.ts +17 -18
  48. package/src/utils/BigIntBufferUtils.ts +31 -0
@@ -0,0 +1,4 @@
1
+ export declare enum BitcoinNetwork {
2
+ MAINNET = 0,
3
+ TESTNET = 1
4
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BitcoinNetwork = void 0;
4
+ var BitcoinNetwork;
5
+ (function (BitcoinNetwork) {
6
+ BitcoinNetwork[BitcoinNetwork["MAINNET"] = 0] = "MAINNET";
7
+ BitcoinNetwork[BitcoinNetwork["TESTNET"] = 1] = "TESTNET";
8
+ })(BitcoinNetwork = exports.BitcoinNetwork || (exports.BitcoinNetwork = {}));
@@ -1,14 +1,15 @@
1
1
  /// <reference types="node" />
2
2
  import { BtcStoredHeader } from "./types/BtcStoredHeader";
3
3
  import { BtcBlock } from "./types/BtcBlock";
4
- import * as BN from "bn.js";
5
4
  import { AbstractSigner } from "../swaps/SwapContract";
5
+ import { Buffer } from "buffer";
6
6
  export interface BtcRelay<V extends BtcStoredHeader<any>, T, B extends BtcBlock, Signer extends AbstractSigner = AbstractSigner> {
7
7
  maxHeadersPerTx: number;
8
8
  maxForkHeadersPerTx: number;
9
9
  maxShortForkHeadersPerTx?: number;
10
10
  getTipData(): Promise<{
11
11
  blockheight: number;
12
+ blockhash: string;
12
13
  commitHash: string;
13
14
  chainWork: Buffer;
14
15
  }>;
@@ -54,7 +55,7 @@ export interface BtcRelay<V extends BtcStoredHeader<any>, T, B extends BtcBlock,
54
55
  }>;
55
56
  getMainFeeRate?(signer: string): Promise<string>;
56
57
  getForkFeeRate?(signer: string, forkId: number): Promise<string>;
57
- estimateSynchronizeFee(requiredBlockheight: number, feeRate?: string): Promise<BN>;
58
- getFeePerBlock(feeRate?: any): Promise<BN>;
58
+ estimateSynchronizeFee(requiredBlockheight: number, feeRate?: string): Promise<bigint>;
59
+ getFeePerBlock(feeRate?: any): Promise<bigint>;
59
60
  sweepForkData?(signer: Signer, lastSweepTimestamp?: number): Promise<number | null>;
60
61
  }
@@ -1,5 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  import { BtcBlock } from "../types/BtcBlock";
3
+ import { Buffer } from "buffer";
3
4
  export type BtcVout = {
4
5
  value: number;
5
6
  n: number;
@@ -1,7 +1,7 @@
1
1
  import { BtcStoredHeader } from "../types/BtcStoredHeader";
2
2
  import { BtcBlock } from "../types/BtcBlock";
3
3
  export interface RelaySynchronizer<V extends BtcStoredHeader<any>, T, B extends BtcBlock> {
4
- syncToLatestTxs(signer: string): Promise<{
4
+ syncToLatestTxs(signer: string, feeRate?: string): Promise<{
5
5
  txs: T[];
6
6
  targetCommitedHeader: V;
7
7
  computedHeaderMap: {
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ import { Buffer } from "buffer";
2
3
  export interface BtcBlock {
3
4
  getVersion(): number;
4
5
  getPrevBlockhash(): string;
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ import { Buffer } from "buffer";
2
3
  export interface BtcHeader {
3
4
  getVersion(): number;
4
5
  getReversedPrevBlockhash(): Buffer;
@@ -1,5 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  import { BtcHeader } from "./BtcHeader";
3
+ import { Buffer } from "buffer";
3
4
  export interface BtcStoredHeader<T extends BtcHeader> {
4
5
  getChainWork(): Buffer;
5
6
  getHeader(): T;
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ import { Buffer } from "buffer";
2
3
  export declare class StatePredictorUtils {
3
4
  static readonly DIFF_ADJUSTMENT_PERIOD = 2016;
4
5
  static gtBuffer(a: Buffer, b: Buffer): boolean;
@@ -6,4 +7,5 @@ export declare class StatePredictorUtils {
6
7
  static addInPlace(arr: number[], add: number[]): void;
7
8
  static nbitsToTarget(nbits: number): Buffer;
8
9
  static getDifficulty(nbits: number): Buffer;
10
+ static getChainwork(nbits: number): Buffer;
9
11
  }
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StatePredictorUtils = void 0;
4
+ const buffer_1 = require("buffer");
5
+ const BigIntBufferUtils_1 = require("../../utils/BigIntBufferUtils");
4
6
  class StatePredictorUtils {
5
7
  static gtBuffer(a, b) {
6
8
  for (let i = 0; i < a.length; i++) {
@@ -31,7 +33,7 @@ class StatePredictorUtils {
31
33
  }
32
34
  }
33
35
  static nbitsToTarget(nbits) {
34
- const target = Buffer.alloc(32, 0);
36
+ const target = buffer_1.Buffer.alloc(32, 0);
35
37
  const nSize = (nbits >> 24) & 0xFF;
36
38
  const nWord = [
37
39
  ((nbits >> 16) & 0x7F),
@@ -60,14 +62,19 @@ class StatePredictorUtils {
60
62
  for (let i = 0; i < 3; i++) {
61
63
  num |= target[start + i] << ((2 - i) * 8);
62
64
  }
63
- const arr = Buffer.from("00000000FFFF0000000000000000000000000000000000000000000000000000", "hex");
65
+ const arr = buffer_1.Buffer.from("00000000FFFF0000000000000000000000000000000000000000000000000000", "hex");
64
66
  StatePredictorUtils.divInPlace(arr, num);
65
- const result = Buffer.alloc(32, 0);
67
+ const result = buffer_1.Buffer.alloc(32, 0);
66
68
  for (let i = 0; i < 32 - shift; i++) {
67
69
  result[i + shift] = arr[i];
68
70
  }
69
71
  return result;
70
72
  }
73
+ static getChainwork(nbits) {
74
+ const target = StatePredictorUtils.nbitsToTarget(nbits);
75
+ const targetBN = BigIntBufferUtils_1.BigIntBufferUtils.fromBuffer(target);
76
+ return BigIntBufferUtils_1.BigIntBufferUtils.toBuffer(((~targetBN & 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffn) / (targetBN + 1n)) + 1n, "be", 32);
77
+ }
71
78
  }
72
79
  exports.StatePredictorUtils = StatePredictorUtils;
73
80
  StatePredictorUtils.DIFF_ADJUSTMENT_PERIOD = 2016;
@@ -0,0 +1,29 @@
1
+ import { ChainType } from "./ChainType";
2
+ import { BtcRelay } from "../btcrelay/BtcRelay";
3
+ import { BitcoinRpc } from "../btcrelay/rpc/BitcoinRpc";
4
+ import { BitcoinNetwork } from "../btc/BitcoinNetwork";
5
+ import { IStorageManager } from "../storage/IStorageManager";
6
+ import { StorageObject } from "../storage/StorageObject";
7
+ export type BaseTokenType<T extends string = string> = {
8
+ [ticker in T]: {
9
+ address: string;
10
+ decimals: number;
11
+ displayDecimals?: number;
12
+ };
13
+ };
14
+ export type ChainData<T extends ChainType> = {
15
+ chainId: ChainType["ChainId"];
16
+ btcRelay: BtcRelay<any, T["TX"], any, T["Signer"]>;
17
+ swapContract: T["Contract"];
18
+ chainEvents: T["Events"];
19
+ swapDataConstructor: new (data: any) => T["Data"];
20
+ storagePrefix?: string;
21
+ };
22
+ export type ChainInitializerFn<O, C extends ChainType> = (options: O, bitcoinRelay: BitcoinRpc<any>, network: BitcoinNetwork, storageCtor: <T extends StorageObject>(name: string) => IStorageManager<T>) => ChainData<C>;
23
+ export type ChainInitializer<O, C extends ChainType, T extends BaseTokenType> = {
24
+ chainId: C["ChainId"];
25
+ chainType: C;
26
+ initializer: ChainInitializerFn<O, C>;
27
+ tokens: T;
28
+ options: O;
29
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,15 @@
1
+ import { SwapData } from "../swaps/SwapData";
2
+ import { ChainEvents } from "../events/ChainEvents";
3
+ import { AbstractSigner, SwapContract } from "../swaps/SwapContract";
4
+ import { BtcRelay } from "../btcrelay/BtcRelay";
5
+ export type ChainType<ChainId extends string = string, PreFetchData = any, PreFetchVerification = any, TXType = any, Signer extends AbstractSigner = AbstractSigner, T extends SwapData = SwapData, C extends SwapContract<T, TXType, PreFetchData, PreFetchVerification, Signer, ChainId> = SwapContract<T, TXType, PreFetchData, PreFetchVerification, Signer, ChainId>, E extends ChainEvents<T> = ChainEvents<T>, B extends BtcRelay<any, TXType, any, Signer> = BtcRelay<any, TXType, any, Signer>> = {
6
+ ChainId: ChainId;
7
+ PreFetchData: PreFetchData;
8
+ PreFetchVerification: PreFetchVerification;
9
+ TX: TXType;
10
+ Signer: Signer;
11
+ Data: T;
12
+ Contract: C;
13
+ Events: E;
14
+ BtcRelay: B;
15
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,7 +1,6 @@
1
1
  import { SwapEvent } from "./SwapEvent";
2
2
  import { SwapData } from "../../swaps/SwapData";
3
- import * as BN from "bn.js";
4
3
  export declare class ClaimEvent<T extends SwapData> extends SwapEvent<T> {
5
- secret: string;
6
- constructor(paymentHash: string, sequence: BN, secret: string);
4
+ result: string;
5
+ constructor(escrowHash: string, result: string);
7
6
  }
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ClaimEvent = void 0;
4
4
  const SwapEvent_1 = require("./SwapEvent");
5
5
  class ClaimEvent extends SwapEvent_1.SwapEvent {
6
- constructor(paymentHash, sequence, secret) {
7
- super(paymentHash, sequence);
8
- this.secret = secret;
6
+ constructor(escrowHash, result) {
7
+ super(escrowHash);
8
+ this.result = result;
9
9
  }
10
10
  }
11
11
  exports.ClaimEvent = ClaimEvent;
@@ -1,10 +1,8 @@
1
1
  import { SwapEvent } from "./SwapEvent";
2
2
  import { SwapData } from "../../swaps/SwapData";
3
- import * as BN from "bn.js";
4
3
  import { ChainSwapType } from "../../swaps/ChainSwapType";
5
4
  export declare class InitializeEvent<T extends SwapData> extends SwapEvent<T> {
6
- txoHash: string;
7
5
  swapType: ChainSwapType;
8
6
  swapData: () => Promise<T>;
9
- constructor(paymentHash: string, sequence: BN, txoHash: string, swapType: ChainSwapType, swapData: () => Promise<T>);
7
+ constructor(escrowHash: string, swapType: ChainSwapType, swapData: () => Promise<T>);
10
8
  }
@@ -3,9 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.InitializeEvent = void 0;
4
4
  const SwapEvent_1 = require("./SwapEvent");
5
5
  class InitializeEvent extends SwapEvent_1.SwapEvent {
6
- constructor(paymentHash, sequence, txoHash, swapType, swapData) {
7
- super(paymentHash, sequence);
8
- this.txoHash = txoHash;
6
+ constructor(escrowHash, swapType, swapData) {
7
+ super(escrowHash);
9
8
  this.swapType = swapType;
10
9
  this.swapData = swapData;
11
10
  }
@@ -1,6 +1,4 @@
1
1
  import { SwapEvent } from "./SwapEvent";
2
2
  import { SwapData } from "../../swaps/SwapData";
3
- import * as BN from "bn.js";
4
3
  export declare class RefundEvent<T extends SwapData> extends SwapEvent<T> {
5
- constructor(paymentHash: string, sequence: BN);
6
4
  }
@@ -3,8 +3,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RefundEvent = void 0;
4
4
  const SwapEvent_1 = require("./SwapEvent");
5
5
  class RefundEvent extends SwapEvent_1.SwapEvent {
6
- constructor(paymentHash, sequence) {
7
- super(paymentHash, sequence);
8
- }
9
6
  }
10
7
  exports.RefundEvent = RefundEvent;
@@ -1,11 +1,9 @@
1
1
  import { SwapData } from "../../swaps/SwapData";
2
- import * as BN from "bn.js";
3
2
  export declare class SwapEvent<T extends SwapData> {
4
3
  meta?: {
5
4
  blockTime: number;
6
5
  txId: string;
7
6
  };
8
- paymentHash: string;
9
- sequence: BN;
10
- constructor(paymentHash: string, sequence: BN);
7
+ escrowHash: string;
8
+ constructor(escrowHash: string);
11
9
  }
@@ -2,9 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SwapEvent = void 0;
4
4
  class SwapEvent {
5
- constructor(paymentHash, sequence) {
6
- this.paymentHash = paymentHash;
7
- this.sequence = sequence;
5
+ constructor(escrowHash) {
6
+ this.escrowHash = escrowHash;
8
7
  }
9
8
  }
10
9
  exports.SwapEvent = SwapEvent;
package/dist/index.d.ts CHANGED
@@ -20,4 +20,7 @@ export * from "./swaps/SwapCommitStatus";
20
20
  export * from "./errors/SignatureVerificationError";
21
21
  export * from "./errors/CannotInitializeATAError";
22
22
  export * from "./errors/SwapDataVerificationError";
23
- export * from "./ChainType";
23
+ export * from "./chains/ChainType";
24
+ export * from "./chains/ChainData";
25
+ export * from "./utils/BigIntBufferUtils";
26
+ export * from "./btc/BitcoinNetwork";
package/dist/index.js CHANGED
@@ -36,29 +36,7 @@ __exportStar(require("./swaps/SwapCommitStatus"), exports);
36
36
  __exportStar(require("./errors/SignatureVerificationError"), exports);
37
37
  __exportStar(require("./errors/CannotInitializeATAError"), exports);
38
38
  __exportStar(require("./errors/SwapDataVerificationError"), exports);
39
- __exportStar(require("./ChainType"), exports);
40
- // export {
41
- // BitcoinRpc,
42
- // RelaySynchronizer,
43
- // BtcBlock,
44
- // BtcHeader,
45
- // BtcStoredHeader,
46
- // StatePredictorUtils,
47
- // BtcRelay,
48
- //
49
- // ClaimEvent,
50
- // InitializeEvent,
51
- // RefundEvent,
52
- // SwapEvent,
53
- // ChainEvents,
54
- //
55
- // Lockable,
56
- //
57
- // StorageObject,
58
- //
59
- // ISwapNonce,
60
- // SwapContract,
61
- // SwapData,
62
- // SwapType,
63
- // TokenAddress,
64
- // }
39
+ __exportStar(require("./chains/ChainType"), exports);
40
+ __exportStar(require("./chains/ChainData"), exports);
41
+ __exportStar(require("./utils/BigIntBufferUtils"), exports);
42
+ __exportStar(require("./btc/BitcoinNetwork"), exports);