@atomiqlabs/sdk 1.0.0-beta0 → 1.0.0-beta10

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.
@@ -1,6 +1,7 @@
1
- import { BtcToken, SCToken, Swapper, SwapperOptions } from "crosslightning-sdk-base";
1
+ import { BtcToken, SCToken, Swapper, SwapperOptions, Token } from "crosslightning-sdk-base";
2
2
  import { SdkSolanaType } from "./chains/solana/SolanaChainInitializer";
3
3
  import { SdkChain } from "./chains/ChainInitializer";
4
+ import * as BN from "bn.js";
4
5
  import { IStorageManager, StorageObject } from "crosslightning-base";
5
6
  type Chains = {
6
7
  "SOLANA": SdkSolanaType;
@@ -17,29 +18,46 @@ export type MultichainSwapperOptions = SwapperOptions & {
17
18
  };
18
19
  } & {
19
20
  storageCtor?: <T extends StorageObject>(name: string) => IStorageManager<T>;
21
+ pricingFeeDifferencePPM?: BN;
20
22
  };
21
23
  export declare class MultichainSwapper extends Swapper<SdkMultichain> {
22
24
  constructor(options: MultichainSwapperOptions);
23
25
  }
26
+ export type TokenExtended<C extends string = string, T extends string = string> = Token<C> & {
27
+ name: string;
28
+ decimals: number;
29
+ ticker: T;
30
+ };
31
+ export type SCTokenExtended<C extends string = string, T extends string = string> = SCToken<C> & {
32
+ name: string;
33
+ decimals: number;
34
+ ticker: T;
35
+ };
24
36
  export declare const Tokens: {
25
37
  [C in keyof Chains]: {
26
- [T in keyof Chains[C]["Assets"]]: SCToken<Chains[C]["ChainType"]["ChainId"]> & {
38
+ [T in keyof Chains[C]["Assets"]]: SCToken<C> & {
27
39
  name: string;
28
40
  decimals: number;
41
+ ticker: T;
29
42
  };
30
43
  };
31
44
  } & {
32
45
  BITCOIN: {
33
- BTC: BtcToken<false>;
34
- BTCLN: BtcToken<true>;
46
+ BTC: BtcToken<false> & {
47
+ name: "Bitcoin (on-chain)";
48
+ decimals: 8;
49
+ ticker: "BTC";
50
+ };
51
+ BTCLN: BtcToken<true> & {
52
+ name: "Bitcoin (lightning L2)";
53
+ decimals: 8;
54
+ ticker: "BTCLN";
55
+ };
35
56
  };
36
57
  };
37
58
  export declare const TokenResolver: {
38
59
  [C in keyof Chains]: {
39
- getToken(address: string): {
40
- ticker: string;
41
- name: string;
42
- };
60
+ getToken(address: string): SCTokenExtended<C>;
43
61
  };
44
62
  };
45
63
  export {};
@@ -11,7 +11,7 @@ const Chains = {
11
11
  };
12
12
  class MultichainSwapper extends crosslightning_sdk_base_1.Swapper {
13
13
  constructor(options) {
14
- var _a, _b, _c, _d;
14
+ var _a, _b, _c, _d, _e;
15
15
  (_a = options.bitcoinNetwork) !== null && _a !== void 0 ? _a : (options.bitcoinNetwork = crosslightning_sdk_base_1.BitcoinNetwork.MAINNET);
16
16
  (_b = options.storagePrefix) !== null && _b !== void 0 ? _b : (options.storagePrefix = "atomiqsdk-" + options.bitcoinNetwork);
17
17
  (_c = options.storageCtor) !== null && _c !== void 0 ? _c : (options.storageCtor = (name) => new crosslightning_sdk_base_1.IndexedDBStorageManager(name));
@@ -34,7 +34,7 @@ class MultichainSwapper extends crosslightning_sdk_base_1.Swapper {
34
34
  const ctorChainData = (0, Utils_1.objectMap)(Chains, (value, key) => {
35
35
  return value.getCtorData(options, bitcoinRpc, options.bitcoinNetwork);
36
36
  });
37
- super(bitcoinRpc, ctorChainData, crosslightning_sdk_base_1.RedundantSwapPrice.createFromTokenMap(new BN(10000), pricingAssets), options);
37
+ super(bitcoinRpc, ctorChainData, crosslightning_sdk_base_1.RedundantSwapPrice.createFromTokenMap((_e = options.pricingFeeDifferencePPM) !== null && _e !== void 0 ? _e : new BN(10000), pricingAssets), options);
38
38
  }
39
39
  }
40
40
  exports.MultichainSwapper = MultichainSwapper;
@@ -45,23 +45,33 @@ exports.Tokens = Object.assign(Object.assign({}, (0, Utils_1.objectMap)(Chains,
45
45
  chainId: value.chainIdentifier,
46
46
  address: assetData.address,
47
47
  name: SmartChainAssets_1.SmartChainAssets[ticker].name,
48
- decimals: assetData.decimals
48
+ decimals: assetData.decimals,
49
+ ticker
49
50
  };
50
51
  });
51
52
  })), { BITCOIN: {
52
53
  BTC: {
53
54
  chain: "BTC",
54
- lightning: false
55
+ lightning: false,
56
+ decimals: 8,
57
+ name: "Bitcoin (on-chain)",
58
+ ticker: "BTC"
55
59
  },
56
60
  BTCLN: {
57
61
  chain: "BTC",
58
- lightning: true
62
+ lightning: true,
63
+ decimals: 8,
64
+ name: "Bitcoin (lightning L2)",
65
+ ticker: "BTCLN"
59
66
  }
60
67
  } });
61
68
  exports.TokenResolver = (0, Utils_1.objectMap)(Chains, (value, key) => {
62
69
  const addressMap = {};
63
70
  for (let ticker in value.assets) {
64
71
  addressMap[value.assets[ticker].address] = {
72
+ chain: "SC",
73
+ chainId: value.chainIdentifier,
74
+ address: value.assets[ticker].address,
65
75
  ticker,
66
76
  name: SmartChainAssets_1.SmartChainAssets[ticker].name,
67
77
  decimals: value.assets[ticker].decimals
@@ -1,13 +1,15 @@
1
- import { SolanaChainType, SolanaRetryPolicy, StoredDataAccount } from "crosslightning-solana";
1
+ import { SolanaChainType, SolanaFees, SolanaRetryPolicy, StoredDataAccount } from "crosslightning-solana";
2
2
  import { IStorageManager } from "crosslightning-base";
3
+ import { Connection } from "@solana/web3.js";
3
4
  import { SdkChain } from "../ChainInitializer";
4
5
  type SolanaSwapperOptions = {
5
- rpcUrl: string;
6
+ rpcUrl: string | Connection;
6
7
  dataAccountStorage?: IStorageManager<StoredDataAccount>;
7
8
  retryPolicy?: SolanaRetryPolicy;
8
9
  btcRelayContract?: string;
9
10
  swapContract?: string;
10
11
  trustedIntermediary?: string;
12
+ fees?: SolanaFees;
11
13
  };
12
14
  declare const SolanaAssets: {
13
15
  readonly WBTC: {
@@ -7,17 +7,20 @@ const SolanaChains_1 = require("./SolanaChains");
7
7
  const SolanaChainEventsBrowser_1 = require("crosslightning-solana/dist/solana/events/SolanaChainEventsBrowser");
8
8
  const chainId = "SOLANA";
9
9
  function getSolanaCtorData(options, bitcoinRpc, network) {
10
- var _a, _b, _c, _d;
11
- const connection = new web3_js_1.Connection(options.chains.SOLANA.rpcUrl);
12
- const btcRelay = new crosslightning_solana_1.SolanaBtcRelay(connection, bitcoinRpc, (_a = options.chains.SOLANA.btcRelayContract) !== null && _a !== void 0 ? _a : SolanaChains_1.SolanaChains[network].addresses.btcRelayContract);
13
- const swapContract = new crosslightning_solana_1.SolanaSwapProgram(connection, btcRelay, options.chains.SOLANA.dataAccountStorage || options.storageCtor("solAccounts"), (_b = options.chains.SOLANA.swapContract) !== null && _b !== void 0 ? _b : SolanaChains_1.SolanaChains[network].addresses.swapContract, (_c = options.chains.SOLANA.retryPolicy) !== null && _c !== void 0 ? _c : { transactionResendInterval: 1000 }, btcRelay.Fees);
10
+ var _a, _b, _c, _d, _e;
11
+ const connection = typeof (options.chains.SOLANA.rpcUrl) === "string" ?
12
+ new web3_js_1.Connection(options.chains.SOLANA.rpcUrl) :
13
+ options.chains.SOLANA.rpcUrl;
14
+ const Fees = (_a = options.chains.SOLANA.fees) !== null && _a !== void 0 ? _a : new crosslightning_solana_1.SolanaFees(connection, 200000, 4, 100);
15
+ const btcRelay = new crosslightning_solana_1.SolanaBtcRelay(connection, bitcoinRpc, (_b = options.chains.SOLANA.btcRelayContract) !== null && _b !== void 0 ? _b : SolanaChains_1.SolanaChains[network].addresses.btcRelayContract, Fees);
16
+ const swapContract = new crosslightning_solana_1.SolanaSwapProgram(connection, btcRelay, options.chains.SOLANA.dataAccountStorage || options.storageCtor("solAccounts"), (_c = options.chains.SOLANA.swapContract) !== null && _c !== void 0 ? _c : SolanaChains_1.SolanaChains[network].addresses.swapContract, (_d = options.chains.SOLANA.retryPolicy) !== null && _d !== void 0 ? _d : { transactionResendInterval: 1000 }, Fees);
14
17
  const chainEvents = new SolanaChainEventsBrowser_1.SolanaChainEventsBrowser(connection, swapContract);
15
18
  return {
16
19
  btcRelay,
17
20
  swapContract,
18
21
  chainEvents,
19
22
  swapDataConstructor: crosslightning_solana_1.SolanaSwapData,
20
- defaultTrustedIntermediaryUrl: (_d = options.chains.SOLANA.trustedIntermediary) !== null && _d !== void 0 ? _d : SolanaChains_1.SolanaChains[network].trustedSwapForGasUrl,
23
+ defaultTrustedIntermediaryUrl: (_e = options.chains.SOLANA.trustedIntermediary) !== null && _e !== void 0 ? _e : SolanaChains_1.SolanaChains[network].trustedSwapForGasUrl,
21
24
  //These are defined here to keep the data from old SolLightning-sdk, not needed for other chains
22
25
  storage: {
23
26
  toBtc: options.storageCtor("SOLv4-" + options.bitcoinNetwork + "-Swaps-ToBTC"),
package/dist/index.d.ts CHANGED
@@ -1 +1,4 @@
1
1
  export * from "./MultichainSwapper";
2
+ export * from "crosslightning-base";
3
+ export * from "crosslightning-sdk-base";
4
+ export * from "crosslightning-solana";
package/dist/index.js CHANGED
@@ -15,3 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./MultichainSwapper"), exports);
18
+ __exportStar(require("crosslightning-base"), exports);
19
+ __exportStar(require("crosslightning-sdk-base"), exports);
20
+ __exportStar(require("crosslightning-solana"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atomiqlabs/sdk",
3
- "version": "1.0.0-beta0",
3
+ "version": "1.0.0-beta10",
4
4
  "description": "atomiq labs SDK for cross-chain swaps between smart chains and bitcoin",
5
5
  "main": "./dist/index.js",
6
6
  "types:": "./dist/index.d.ts",
@@ -22,8 +22,8 @@
22
22
  "license": "ISC",
23
23
  "dependencies": {
24
24
  "crosslightning-base": "7.0.0-beta1",
25
- "crosslightning-sdk-base": "10.0.5-beta3",
26
- "crosslightning-solana": "7.0.0-beta2"
25
+ "crosslightning-sdk-base": "10.0.5-beta10",
26
+ "crosslightning-solana": "7.0.0-beta4"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@types/bn.js": "5.1.5",
@@ -7,7 +7,7 @@ import {
7
7
  RedundantSwapPriceAssets,
8
8
  SCToken,
9
9
  Swapper,
10
- SwapperOptions
10
+ SwapperOptions, Token
11
11
  } from "crosslightning-sdk-base";
12
12
  import {objectMap} from "crosslightning-sdk-base/dist/utils/Utils";
13
13
  import {SdkSolana, SdkSolanaType} from "./chains/solana/SolanaChainInitializer";
@@ -33,7 +33,8 @@ export type MultichainSwapperOptions = SwapperOptions & {
33
33
  [C in keyof Chains]: Chains[C]["Options"]
34
34
  }
35
35
  } & {
36
- storageCtor?: <T extends StorageObject>(name: string) => IStorageManager<T>
36
+ storageCtor?: <T extends StorageObject>(name: string) => IStorageManager<T>,
37
+ pricingFeeDifferencePPM?: BN
37
38
  };
38
39
 
39
40
  export class MultichainSwapper extends Swapper<SdkMultichain> {
@@ -70,19 +71,27 @@ export class MultichainSwapper extends Swapper<SdkMultichain> {
70
71
  return value.getCtorData(options, bitcoinRpc, options.bitcoinNetwork);
71
72
  });
72
73
 
73
- super(bitcoinRpc, ctorChainData, RedundantSwapPrice.createFromTokenMap<SdkMultichain>(new BN(10000), pricingAssets), options);
74
+ super(bitcoinRpc, ctorChainData, RedundantSwapPrice.createFromTokenMap<SdkMultichain>(options.pricingFeeDifferencePPM ?? new BN(10000), pricingAssets), options);
74
75
  }
75
76
 
76
77
  }
77
78
 
79
+ export type TokenExtended<C extends string = string, T extends string = string> = Token<C> & {
80
+ name: string, decimals: number, ticker: T
81
+ };
82
+
83
+ export type SCTokenExtended<C extends string = string, T extends string = string> = SCToken<C> & {
84
+ name: string, decimals: number, ticker: T
85
+ };
86
+
78
87
  export const Tokens: {
79
88
  [C in keyof Chains]: {
80
- [T in keyof Chains[C]["Assets"]]: SCToken<Chains[C]["ChainType"]["ChainId"]> & {name: string, decimals: number}
89
+ [T in keyof Chains[C]["Assets"]]: SCToken<C> & {name: string, decimals: number, ticker: T}
81
90
  }
82
91
  } & {
83
92
  BITCOIN: {
84
- BTC: BtcToken<false>,
85
- BTCLN: BtcToken<true>
93
+ BTC: BtcToken<false> & {name: "Bitcoin (on-chain)", decimals: 8, ticker: "BTC"},
94
+ BTCLN: BtcToken<true> & {name: "Bitcoin (lightning L2)", decimals: 8, ticker: "BTCLN"}
86
95
  }
87
96
  } = {
88
97
  ...objectMap(Chains, (value, key) => {
@@ -92,30 +101,40 @@ export const Tokens: {
92
101
  chainId: value.chainIdentifier,
93
102
  address: assetData.address,
94
103
  name: SmartChainAssets[ticker].name,
95
- decimals: assetData.decimals
104
+ decimals: assetData.decimals,
105
+ ticker
96
106
  }
97
107
  });
98
108
  }),
99
109
  BITCOIN: {
100
110
  BTC: {
101
111
  chain: "BTC",
102
- lightning: false
112
+ lightning: false,
113
+ decimals: 8,
114
+ name: "Bitcoin (on-chain)",
115
+ ticker: "BTC"
103
116
  },
104
117
  BTCLN: {
105
118
  chain: "BTC",
106
- lightning: true
119
+ lightning: true,
120
+ decimals: 8,
121
+ name: "Bitcoin (lightning L2)",
122
+ ticker: "BTCLN"
107
123
  }
108
124
  }
109
125
  };
110
126
 
111
127
  export const TokenResolver: {
112
128
  [C in keyof Chains]: {
113
- getToken(address: string): {ticker: string, name: string}
129
+ getToken(address: string): SCTokenExtended<C>
114
130
  }
115
131
  } = objectMap(Chains, (value, key) => {
116
- const addressMap: {[tokenAddress: string]: {ticker: string, name: string, decimals: number}} = {};
132
+ const addressMap: {[tokenAddress: string]: SCTokenExtended} = {};
117
133
  for(let ticker in value.assets) {
118
134
  addressMap[value.assets[ticker].address] = {
135
+ chain: "SC",
136
+ chainId: value.chainIdentifier,
137
+ address: value.assets[ticker].address,
119
138
  ticker,
120
139
  name: SmartChainAssets[ticker].name,
121
140
  decimals: value.assets[ticker].decimals
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SolanaBtcRelay,
3
- SolanaChainType, SolanaRetryPolicy,
3
+ SolanaChainType, SolanaFees, SolanaRetryPolicy,
4
4
  SolanaSwapData,
5
5
  SolanaSwapProgram,
6
6
  StoredDataAccount
@@ -19,27 +19,32 @@ import {MultichainSwapperOptions} from "../../MultichainSwapper";
19
19
  const chainId = "SOLANA" as const;
20
20
 
21
21
  type SolanaSwapperOptions = {
22
- rpcUrl: string,
22
+ rpcUrl: string | Connection,
23
23
  dataAccountStorage?: IStorageManager<StoredDataAccount>,
24
24
  retryPolicy?: SolanaRetryPolicy,
25
25
 
26
26
  btcRelayContract?: string,
27
27
  swapContract?: string,
28
28
 
29
- trustedIntermediary?: string
29
+ trustedIntermediary?: string,
30
+
31
+ fees?: SolanaFees
30
32
  };
31
33
 
32
34
  function getSolanaCtorData(options: MultichainSwapperOptions, bitcoinRpc: BitcoinRpc<any>, network: BitcoinNetwork): CtorChainData<SolanaChainType> {
33
- const connection = new Connection(options.chains.SOLANA.rpcUrl);
35
+ const connection = typeof(options.chains.SOLANA.rpcUrl)==="string" ?
36
+ new Connection(options.chains.SOLANA.rpcUrl) :
37
+ options.chains.SOLANA.rpcUrl;
34
38
 
35
- const btcRelay = new SolanaBtcRelay(connection, bitcoinRpc, options.chains.SOLANA.btcRelayContract ?? SolanaChains[network].addresses.btcRelayContract);
39
+ const Fees = options.chains.SOLANA.fees ?? new SolanaFees(connection, 200000, 4, 100);
40
+ const btcRelay = new SolanaBtcRelay(connection, bitcoinRpc, options.chains.SOLANA.btcRelayContract ?? SolanaChains[network].addresses.btcRelayContract, Fees);
36
41
  const swapContract = new SolanaSwapProgram(
37
42
  connection,
38
43
  btcRelay,
39
44
  options.chains.SOLANA.dataAccountStorage || options.storageCtor("solAccounts"),
40
45
  options.chains.SOLANA.swapContract ?? SolanaChains[network].addresses.swapContract,
41
46
  options.chains.SOLANA.retryPolicy ?? {transactionResendInterval: 1000},
42
- btcRelay.Fees
47
+ Fees
43
48
  )
44
49
  const chainEvents = new SolanaChainEventsBrowser(connection, swapContract);
45
50
 
package/src/index.ts CHANGED
@@ -1 +1,4 @@
1
1
  export * from "./MultichainSwapper";
2
+ export * from "crosslightning-base";
3
+ export * from "crosslightning-sdk-base";
4
+ export * from "crosslightning-solana";