@atomiqlabs/sdk 1.0.0-beta9 → 1.1.1
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.
- package/dist/MultichainSwapper.d.ts +6 -18
- package/dist/MultichainSwapper.js +20 -27
- package/dist/chains/ChainInitializer.d.ts +2 -2
- package/dist/chains/solana/SolanaChainInitializer.d.ts +2 -2
- package/dist/chains/solana/SolanaChainInitializer.js +6 -6
- package/dist/chains/solana/SolanaChains.js +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/package.json +32 -32
- package/src/MultichainSwapper.ts +43 -41
- package/src/chains/ChainInitializer.ts +2 -2
- package/src/chains/solana/SolanaChainInitializer.ts +4 -4
- package/src/chains/solana/SolanaChains.ts +1 -1
- package/src/index.ts +3 -3
- package/dist/chains/solana/ChainInitializer.d.ts +0 -22
- package/dist/chains/solana/ChainInitializer.js +0 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { BtcToken, SCToken, Swapper, SwapperOptions } from "
|
|
1
|
+
import { BtcToken, SCToken, Swapper, SwapperOptions } from "@atomiqlabs/sdk-lib";
|
|
2
2
|
import { SdkSolanaType } from "./chains/solana/SolanaChainInitializer";
|
|
3
3
|
import { SdkChain } from "./chains/ChainInitializer";
|
|
4
4
|
import * as BN from "bn.js";
|
|
5
|
-
import { IStorageManager, StorageObject } from "
|
|
5
|
+
import { IStorageManager, StorageObject } from "@atomiqlabs/base";
|
|
6
6
|
type Chains = {
|
|
7
7
|
"SOLANA": SdkSolanaType;
|
|
8
8
|
};
|
|
@@ -25,29 +25,17 @@ export declare class MultichainSwapper extends Swapper<SdkMultichain> {
|
|
|
25
25
|
}
|
|
26
26
|
export declare const Tokens: {
|
|
27
27
|
[C in keyof Chains]: {
|
|
28
|
-
[T in keyof Chains[C]["Assets"]]: SCToken<
|
|
29
|
-
name: string;
|
|
30
|
-
decimals: number;
|
|
31
|
-
};
|
|
28
|
+
[T in keyof Chains[C]["Assets"]]: SCToken<C>;
|
|
32
29
|
};
|
|
33
30
|
} & {
|
|
34
31
|
BITCOIN: {
|
|
35
|
-
BTC: BtcToken<false
|
|
36
|
-
|
|
37
|
-
decimals: 8;
|
|
38
|
-
};
|
|
39
|
-
BTCLN: BtcToken<true> & {
|
|
40
|
-
name: "Bitcoin (lightning L2)";
|
|
41
|
-
decimals: 8;
|
|
42
|
-
};
|
|
32
|
+
BTC: BtcToken<false>;
|
|
33
|
+
BTCLN: BtcToken<true>;
|
|
43
34
|
};
|
|
44
35
|
};
|
|
45
36
|
export declare const TokenResolver: {
|
|
46
37
|
[C in keyof Chains]: {
|
|
47
|
-
getToken(address: string):
|
|
48
|
-
ticker: string;
|
|
49
|
-
name: string;
|
|
50
|
-
};
|
|
38
|
+
getToken(address: string): SCToken<C>;
|
|
51
39
|
};
|
|
52
40
|
};
|
|
53
41
|
export {};
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TokenResolver = exports.Tokens = exports.MultichainSwapper = void 0;
|
|
4
|
-
const
|
|
5
|
-
const Utils_1 = require("
|
|
4
|
+
const sdk_lib_1 = require("@atomiqlabs/sdk-lib");
|
|
5
|
+
const Utils_1 = require("@atomiqlabs/sdk-lib/dist/utils/Utils");
|
|
6
6
|
const SolanaChainInitializer_1 = require("./chains/solana/SolanaChainInitializer");
|
|
7
7
|
const BN = require("bn.js");
|
|
8
8
|
const SmartChainAssets_1 = require("./SmartChainAssets");
|
|
9
9
|
const Chains = {
|
|
10
10
|
"SOLANA": SolanaChainInitializer_1.SdkSolana
|
|
11
11
|
};
|
|
12
|
-
class MultichainSwapper extends
|
|
12
|
+
class MultichainSwapper extends sdk_lib_1.Swapper {
|
|
13
13
|
constructor(options) {
|
|
14
14
|
var _a, _b, _c, _d, _e;
|
|
15
|
-
(_a = options.bitcoinNetwork) !== null && _a !== void 0 ? _a : (options.bitcoinNetwork =
|
|
15
|
+
(_a = options.bitcoinNetwork) !== null && _a !== void 0 ? _a : (options.bitcoinNetwork = sdk_lib_1.BitcoinNetwork.MAINNET);
|
|
16
16
|
(_b = options.storagePrefix) !== null && _b !== void 0 ? _b : (options.storagePrefix = "atomiqsdk-" + options.bitcoinNetwork);
|
|
17
|
-
(_c = options.storageCtor) !== null && _c !== void 0 ? _c : (options.storageCtor = (name) => new
|
|
18
|
-
(_d = options.registryUrl) !== null && _d !== void 0 ? _d : (options.registryUrl = options.bitcoinNetwork ===
|
|
17
|
+
(_c = options.storageCtor) !== null && _c !== void 0 ? _c : (options.storageCtor = (name) => new sdk_lib_1.IndexedDBStorageManager(name));
|
|
18
|
+
(_d = options.registryUrl) !== null && _d !== void 0 ? _d : (options.registryUrl = options.bitcoinNetwork === sdk_lib_1.BitcoinNetwork.MAINNET ?
|
|
19
19
|
"https://api.github.com/repos/adambor/SolLightning-registry/contents/registry-mainnet.json?ref=main" :
|
|
20
20
|
"https://api.github.com/repos/adambor/SolLightning-registry/contents/registry.json?ref=main");
|
|
21
|
-
const mempoolApi = new
|
|
21
|
+
const mempoolApi = new sdk_lib_1.MempoolApi(options.bitcoinNetwork === sdk_lib_1.BitcoinNetwork.TESTNET ?
|
|
22
22
|
"https://mempool.space/testnet/api/" :
|
|
23
23
|
"https://mempool.space/api/");
|
|
24
|
-
const bitcoinRpc = new
|
|
24
|
+
const bitcoinRpc = new sdk_lib_1.MempoolBitcoinRpc(mempoolApi);
|
|
25
25
|
const pricingAssets = [];
|
|
26
26
|
Object.keys(SmartChainAssets_1.SmartChainAssets).forEach((ticker) => {
|
|
27
27
|
const chains = {};
|
|
@@ -29,12 +29,14 @@ class MultichainSwapper extends crosslightning_sdk_base_1.Swapper {
|
|
|
29
29
|
if (Chains[chainId].assets[ticker] != null)
|
|
30
30
|
chains[chainId] = Chains[chainId].assets[ticker];
|
|
31
31
|
}
|
|
32
|
-
|
|
32
|
+
const assetData = SmartChainAssets_1.SmartChainAssets[ticker];
|
|
33
|
+
pricingAssets.push(Object.assign(Object.assign({}, assetData.pricing), { chains,
|
|
34
|
+
ticker, name: assetData.name }));
|
|
33
35
|
});
|
|
34
36
|
const ctorChainData = (0, Utils_1.objectMap)(Chains, (value, key) => {
|
|
35
37
|
return value.getCtorData(options, bitcoinRpc, options.bitcoinNetwork);
|
|
36
38
|
});
|
|
37
|
-
super(bitcoinRpc, ctorChainData,
|
|
39
|
+
super(bitcoinRpc, ctorChainData, sdk_lib_1.RedundantSwapPrice.createFromTokenMap((_e = options.pricingFeeDifferencePPM) !== null && _e !== void 0 ? _e : new BN(10000), pricingAssets), pricingAssets, options);
|
|
38
40
|
}
|
|
39
41
|
}
|
|
40
42
|
exports.MultichainSwapper = MultichainSwapper;
|
|
@@ -45,27 +47,18 @@ exports.Tokens = Object.assign(Object.assign({}, (0, Utils_1.objectMap)(Chains,
|
|
|
45
47
|
chainId: value.chainIdentifier,
|
|
46
48
|
address: assetData.address,
|
|
47
49
|
name: SmartChainAssets_1.SmartChainAssets[ticker].name,
|
|
48
|
-
decimals: assetData.decimals
|
|
50
|
+
decimals: assetData.decimals,
|
|
51
|
+
ticker
|
|
49
52
|
};
|
|
50
53
|
});
|
|
51
|
-
})), { BITCOIN:
|
|
52
|
-
|
|
53
|
-
chain: "BTC",
|
|
54
|
-
lightning: false,
|
|
55
|
-
decimals: 8,
|
|
56
|
-
name: "Bitcoin (on-chain)"
|
|
57
|
-
},
|
|
58
|
-
BTCLN: {
|
|
59
|
-
chain: "BTC",
|
|
60
|
-
lightning: true,
|
|
61
|
-
decimals: 8,
|
|
62
|
-
name: "Bitcoin (lightning L2)"
|
|
63
|
-
}
|
|
64
|
-
} });
|
|
65
|
-
exports.TokenResolver = (0, Utils_1.objectMap)(Chains, (value, key) => {
|
|
54
|
+
})), { BITCOIN: sdk_lib_1.BitcoinTokens });
|
|
55
|
+
exports.TokenResolver = Object.assign({}, (0, Utils_1.objectMap)(Chains, (value, key) => {
|
|
66
56
|
const addressMap = {};
|
|
67
57
|
for (let ticker in value.assets) {
|
|
68
58
|
addressMap[value.assets[ticker].address] = {
|
|
59
|
+
chain: "SC",
|
|
60
|
+
chainId: value.chainIdentifier,
|
|
61
|
+
address: value.assets[ticker].address,
|
|
69
62
|
ticker,
|
|
70
63
|
name: SmartChainAssets_1.SmartChainAssets[ticker].name,
|
|
71
64
|
decimals: value.assets[ticker].decimals
|
|
@@ -74,4 +67,4 @@ exports.TokenResolver = (0, Utils_1.objectMap)(Chains, (value, key) => {
|
|
|
74
67
|
return {
|
|
75
68
|
getToken: (address) => addressMap[address]
|
|
76
69
|
};
|
|
77
|
-
});
|
|
70
|
+
}));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BitcoinRpc, ChainType } from "
|
|
2
|
-
import { BitcoinNetwork, CtorChainData, SwapperOptions } from "
|
|
1
|
+
import { BitcoinRpc, ChainType } from "@atomiqlabs/base";
|
|
2
|
+
import { BitcoinNetwork, CtorChainData, SwapperOptions } from "@atomiqlabs/sdk-lib";
|
|
3
3
|
import { AssetData } from "../SmartChainAssets";
|
|
4
4
|
export type SdkChainType = {
|
|
5
5
|
ChainType: ChainType;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { SolanaChainType, SolanaFees, SolanaRetryPolicy, StoredDataAccount } from "
|
|
2
|
-
import { IStorageManager } from "
|
|
1
|
+
import { SolanaChainType, SolanaFees, SolanaRetryPolicy, StoredDataAccount } from "@atomiqlabs/chain-solana";
|
|
2
|
+
import { IStorageManager } from "@atomiqlabs/base";
|
|
3
3
|
import { Connection } from "@solana/web3.js";
|
|
4
4
|
import { SdkChain } from "../ChainInitializer";
|
|
5
5
|
type SolanaSwapperOptions = {
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SdkSolana = void 0;
|
|
4
|
-
const
|
|
4
|
+
const chain_solana_1 = require("@atomiqlabs/chain-solana");
|
|
5
5
|
const web3_js_1 = require("@solana/web3.js");
|
|
6
6
|
const SolanaChains_1 = require("./SolanaChains");
|
|
7
|
-
const SolanaChainEventsBrowser_1 = require("
|
|
7
|
+
const SolanaChainEventsBrowser_1 = require("@atomiqlabs/chain-solana/dist/solana/events/SolanaChainEventsBrowser");
|
|
8
8
|
const chainId = "SOLANA";
|
|
9
9
|
function getSolanaCtorData(options, bitcoinRpc, network) {
|
|
10
10
|
var _a, _b, _c, _d, _e;
|
|
11
11
|
const connection = typeof (options.chains.SOLANA.rpcUrl) === "string" ?
|
|
12
12
|
new web3_js_1.Connection(options.chains.SOLANA.rpcUrl) :
|
|
13
13
|
options.chains.SOLANA.rpcUrl;
|
|
14
|
-
const Fees = (_a = options.chains.SOLANA.fees) !== null && _a !== void 0 ? _a : new
|
|
15
|
-
const btcRelay = new
|
|
16
|
-
const swapContract = new
|
|
14
|
+
const Fees = (_a = options.chains.SOLANA.fees) !== null && _a !== void 0 ? _a : new chain_solana_1.SolanaFees(connection, 200000, 4, 100);
|
|
15
|
+
const btcRelay = new chain_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 chain_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);
|
|
17
17
|
const chainEvents = new SolanaChainEventsBrowser_1.SolanaChainEventsBrowser(connection, swapContract);
|
|
18
18
|
return {
|
|
19
19
|
btcRelay,
|
|
20
20
|
swapContract,
|
|
21
21
|
chainEvents,
|
|
22
|
-
swapDataConstructor:
|
|
22
|
+
swapDataConstructor: chain_solana_1.SolanaSwapData,
|
|
23
23
|
defaultTrustedIntermediaryUrl: (_e = options.chains.SOLANA.trustedIntermediary) !== null && _e !== void 0 ? _e : SolanaChains_1.SolanaChains[network].trustedSwapForGasUrl,
|
|
24
24
|
//These are defined here to keep the data from old SolLightning-sdk, not needed for other chains
|
|
25
25
|
storage: {
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SolanaChains = void 0;
|
|
4
|
-
const
|
|
4
|
+
const sdk_lib_1 = require("@atomiqlabs/sdk-lib");
|
|
5
5
|
exports.SolanaChains = {
|
|
6
|
-
[
|
|
6
|
+
[sdk_lib_1.BitcoinNetwork.TESTNET]: {
|
|
7
7
|
addresses: {
|
|
8
8
|
swapContract: "4hfUykhqmD7ZRvNh1HuzVKEY7ToENixtdUKZspNDCrEM",
|
|
9
9
|
btcRelayContract: "3KHSHFpEK6bsjg3bqcxQ9qssJYtRCMi2S9TYVe4q6CQc"
|
|
10
10
|
},
|
|
11
11
|
trustedSwapForGasUrl: "https://node3.gethopa.com:24100"
|
|
12
12
|
},
|
|
13
|
-
[
|
|
13
|
+
[sdk_lib_1.BitcoinNetwork.MAINNET]: {
|
|
14
14
|
addresses: {
|
|
15
15
|
swapContract: "4hfUykhqmD7ZRvNh1HuzVKEY7ToENixtdUKZspNDCrEM",
|
|
16
16
|
btcRelayContract: "3KHSHFpEK6bsjg3bqcxQ9qssJYtRCMi2S9TYVe4q6CQc"
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export * from "./MultichainSwapper";
|
|
2
|
-
export * from "
|
|
3
|
-
export * from "
|
|
4
|
-
export * from "
|
|
2
|
+
export * from "@atomiqlabs/base";
|
|
3
|
+
export * from "@atomiqlabs/sdk-lib";
|
|
4
|
+
export * from "@atomiqlabs/chain-solana";
|
package/dist/index.js
CHANGED
|
@@ -15,6 +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("
|
|
19
|
-
__exportStar(require("
|
|
20
|
-
__exportStar(require("
|
|
18
|
+
__exportStar(require("@atomiqlabs/base"), exports);
|
|
19
|
+
__exportStar(require("@atomiqlabs/sdk-lib"), exports);
|
|
20
|
+
__exportStar(require("@atomiqlabs/chain-solana"), exports);
|
package/package.json
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@atomiqlabs/sdk",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "atomiq labs SDK for cross-chain swaps between smart chains and bitcoin",
|
|
5
|
-
"main": "./dist/index.js",
|
|
6
|
-
"types:": "./dist/index.d.ts",
|
|
7
|
-
"scripts": {
|
|
8
|
-
"test": "echo \"Error: no test specified\" && exit 1"
|
|
9
|
-
},
|
|
10
|
-
"files": [
|
|
11
|
-
"/dist",
|
|
12
|
-
"/src"
|
|
13
|
-
],
|
|
14
|
-
"keywords": [
|
|
15
|
-
"Bitcoin",
|
|
16
|
-
"Cross-chain",
|
|
17
|
-
"Cryptocurrency",
|
|
18
|
-
"Bridge",
|
|
19
|
-
"Trustless"
|
|
20
|
-
],
|
|
21
|
-
"author": "adambor",
|
|
22
|
-
"license": "ISC",
|
|
23
|
-
"dependencies": {
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
},
|
|
28
|
-
"devDependencies": {
|
|
29
|
-
"@types/bn.js": "5.1.5",
|
|
30
|
-
"typescript": "4.9.5"
|
|
31
|
-
}
|
|
32
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@atomiqlabs/sdk",
|
|
3
|
+
"version": "1.1.1",
|
|
4
|
+
"description": "atomiq labs SDK for cross-chain swaps between smart chains and bitcoin",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types:": "./dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"/dist",
|
|
12
|
+
"/src"
|
|
13
|
+
],
|
|
14
|
+
"keywords": [
|
|
15
|
+
"Bitcoin",
|
|
16
|
+
"Cross-chain",
|
|
17
|
+
"Cryptocurrency",
|
|
18
|
+
"Bridge",
|
|
19
|
+
"Trustless"
|
|
20
|
+
],
|
|
21
|
+
"author": "adambor",
|
|
22
|
+
"license": "ISC",
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@atomiqlabs/base": "7.2.0",
|
|
25
|
+
"@atomiqlabs/chain-solana": "7.2.0",
|
|
26
|
+
"@atomiqlabs/sdk-lib": "10.2.0"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@types/bn.js": "5.1.5",
|
|
30
|
+
"typescript": "4.9.5"
|
|
31
|
+
}
|
|
32
|
+
}
|
package/src/MultichainSwapper.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
|
-
BitcoinNetwork,
|
|
3
|
-
BtcToken, IndexedDBStorageManager,
|
|
2
|
+
BitcoinNetwork, BitcoinTokens,
|
|
3
|
+
BtcToken, IndexedDBStorageManager, isToken,
|
|
4
4
|
MempoolApi,
|
|
5
5
|
MempoolBitcoinRpc,
|
|
6
6
|
RedundantSwapPrice,
|
|
7
7
|
RedundantSwapPriceAssets,
|
|
8
8
|
SCToken,
|
|
9
9
|
Swapper,
|
|
10
|
-
SwapperOptions
|
|
11
|
-
} from "
|
|
12
|
-
import {objectMap} from "
|
|
10
|
+
SwapperOptions, Token
|
|
11
|
+
} from "@atomiqlabs/sdk-lib";
|
|
12
|
+
import {objectMap} from "@atomiqlabs/sdk-lib/dist/utils/Utils";
|
|
13
13
|
import {SdkSolana, SdkSolanaType} from "./chains/solana/SolanaChainInitializer";
|
|
14
14
|
import {SdkChain} from "./chains/ChainInitializer";
|
|
15
15
|
import * as BN from "bn.js";
|
|
16
16
|
import {SmartChainAssets} from "./SmartChainAssets";
|
|
17
|
-
import {IStorageManager, StorageObject} from "
|
|
17
|
+
import {IStorageManager, StorageObject} from "@atomiqlabs/base";
|
|
18
18
|
|
|
19
19
|
type Chains = {
|
|
20
20
|
"SOLANA": SdkSolanaType
|
|
@@ -55,15 +55,18 @@ export class MultichainSwapper extends Swapper<SdkMultichain> {
|
|
|
55
55
|
);
|
|
56
56
|
const bitcoinRpc = new MempoolBitcoinRpc(mempoolApi);
|
|
57
57
|
|
|
58
|
-
const pricingAssets: RedundantSwapPriceAssets<SdkMultichain> = [];
|
|
58
|
+
const pricingAssets: (RedundantSwapPriceAssets<SdkMultichain>[number] & {ticker: string, name: string})[] = [];
|
|
59
59
|
Object.keys(SmartChainAssets).forEach((ticker) => {
|
|
60
60
|
const chains: any = {};
|
|
61
61
|
for(let chainId in Chains) {
|
|
62
62
|
if(Chains[chainId].assets[ticker]!=null) chains[chainId] = Chains[chainId].assets[ticker];
|
|
63
63
|
}
|
|
64
|
+
const assetData = SmartChainAssets[ticker];
|
|
64
65
|
pricingAssets.push({
|
|
65
|
-
...
|
|
66
|
-
chains
|
|
66
|
+
...assetData.pricing,
|
|
67
|
+
chains,
|
|
68
|
+
ticker,
|
|
69
|
+
name: assetData.name
|
|
67
70
|
})
|
|
68
71
|
});
|
|
69
72
|
|
|
@@ -71,19 +74,25 @@ export class MultichainSwapper extends Swapper<SdkMultichain> {
|
|
|
71
74
|
return value.getCtorData(options, bitcoinRpc, options.bitcoinNetwork);
|
|
72
75
|
});
|
|
73
76
|
|
|
74
|
-
super(
|
|
77
|
+
super(
|
|
78
|
+
bitcoinRpc,
|
|
79
|
+
ctorChainData,
|
|
80
|
+
RedundantSwapPrice.createFromTokenMap<SdkMultichain>(options.pricingFeeDifferencePPM ?? new BN(10000), pricingAssets),
|
|
81
|
+
pricingAssets,
|
|
82
|
+
options
|
|
83
|
+
);
|
|
75
84
|
}
|
|
76
85
|
|
|
77
86
|
}
|
|
78
87
|
|
|
79
88
|
export const Tokens: {
|
|
80
89
|
[C in keyof Chains]: {
|
|
81
|
-
[T in keyof Chains[C]["Assets"]]: SCToken<
|
|
90
|
+
[T in keyof Chains[C]["Assets"]]: SCToken<C>
|
|
82
91
|
}
|
|
83
92
|
} & {
|
|
84
93
|
BITCOIN: {
|
|
85
|
-
BTC: BtcToken<false
|
|
86
|
-
BTCLN: BtcToken<true>
|
|
94
|
+
BTC: BtcToken<false>,
|
|
95
|
+
BTCLN: BtcToken<true>
|
|
87
96
|
}
|
|
88
97
|
} = {
|
|
89
98
|
...objectMap(Chains, (value, key) => {
|
|
@@ -93,40 +102,33 @@ export const Tokens: {
|
|
|
93
102
|
chainId: value.chainIdentifier,
|
|
94
103
|
address: assetData.address,
|
|
95
104
|
name: SmartChainAssets[ticker].name,
|
|
96
|
-
decimals: assetData.decimals
|
|
105
|
+
decimals: assetData.decimals,
|
|
106
|
+
ticker
|
|
97
107
|
}
|
|
98
108
|
});
|
|
99
109
|
}),
|
|
100
|
-
BITCOIN:
|
|
101
|
-
BTC: {
|
|
102
|
-
chain: "BTC",
|
|
103
|
-
lightning: false,
|
|
104
|
-
decimals: 8,
|
|
105
|
-
name: "Bitcoin (on-chain)"
|
|
106
|
-
},
|
|
107
|
-
BTCLN: {
|
|
108
|
-
chain: "BTC",
|
|
109
|
-
lightning: true,
|
|
110
|
-
decimals: 8,
|
|
111
|
-
name: "Bitcoin (lightning L2)"
|
|
112
|
-
}
|
|
113
|
-
}
|
|
110
|
+
BITCOIN: BitcoinTokens
|
|
114
111
|
};
|
|
115
112
|
|
|
116
113
|
export const TokenResolver: {
|
|
117
114
|
[C in keyof Chains]: {
|
|
118
|
-
getToken(address: string):
|
|
115
|
+
getToken(address: string): SCToken<C>
|
|
119
116
|
}
|
|
120
|
-
} =
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
ticker
|
|
125
|
-
|
|
126
|
-
|
|
117
|
+
} = {
|
|
118
|
+
...objectMap(Chains, (value, key) => {
|
|
119
|
+
const addressMap: {[tokenAddress: string]: SCToken} = {};
|
|
120
|
+
for(let ticker in value.assets) {
|
|
121
|
+
addressMap[value.assets[ticker].address] = {
|
|
122
|
+
chain: "SC",
|
|
123
|
+
chainId: value.chainIdentifier,
|
|
124
|
+
address: value.assets[ticker].address,
|
|
125
|
+
ticker,
|
|
126
|
+
name: SmartChainAssets[ticker].name,
|
|
127
|
+
decimals: value.assets[ticker].decimals
|
|
128
|
+
}
|
|
127
129
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
}
|
|
130
|
+
return {
|
|
131
|
+
getToken: (address: string) => addressMap[address]
|
|
132
|
+
};
|
|
133
|
+
})
|
|
134
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {BitcoinRpc, ChainType} from "
|
|
2
|
-
import {BitcoinNetwork, CtorChainData, SwapperOptions} from "
|
|
1
|
+
import {BitcoinRpc, ChainType} from "@atomiqlabs/base";
|
|
2
|
+
import {BitcoinNetwork, CtorChainData, SwapperOptions} from "@atomiqlabs/sdk-lib";
|
|
3
3
|
import {AssetData} from "../SmartChainAssets";
|
|
4
4
|
|
|
5
5
|
|
|
@@ -4,15 +4,15 @@ import {
|
|
|
4
4
|
SolanaSwapData,
|
|
5
5
|
SolanaSwapProgram,
|
|
6
6
|
StoredDataAccount
|
|
7
|
-
} from "
|
|
7
|
+
} from "@atomiqlabs/chain-solana";
|
|
8
8
|
import {
|
|
9
9
|
BitcoinNetwork,
|
|
10
10
|
CtorChainData
|
|
11
|
-
} from "
|
|
12
|
-
import {BitcoinRpc, IStorageManager} from "
|
|
11
|
+
} from "@atomiqlabs/sdk-lib";
|
|
12
|
+
import {BitcoinRpc, IStorageManager} from "@atomiqlabs/base";
|
|
13
13
|
import {Connection} from "@solana/web3.js";
|
|
14
14
|
import {SolanaChains} from "./SolanaChains";
|
|
15
|
-
import {SolanaChainEventsBrowser} from "
|
|
15
|
+
import {SolanaChainEventsBrowser} from "@atomiqlabs/chain-solana/dist/solana/events/SolanaChainEventsBrowser";
|
|
16
16
|
import {SdkChain} from "../ChainInitializer";
|
|
17
17
|
import {MultichainSwapperOptions} from "../../MultichainSwapper";
|
|
18
18
|
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export * from "./MultichainSwapper";
|
|
2
|
-
export * from "
|
|
3
|
-
export * from "
|
|
4
|
-
export * from "
|
|
2
|
+
export * from "@atomiqlabs/base";
|
|
3
|
+
export * from "@atomiqlabs/sdk-lib";
|
|
4
|
+
export * from "@atomiqlabs/chain-solana";
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { BitcoinRpc, ChainType } from "crosslightning-base";
|
|
2
|
-
import { BitcoinNetwork, CtorChainData } from "crosslightning-sdk-base";
|
|
3
|
-
export type SdkChainType = {
|
|
4
|
-
ChainType: ChainType;
|
|
5
|
-
Options: {};
|
|
6
|
-
Assets: {
|
|
7
|
-
[ticker: string]: {
|
|
8
|
-
address: string;
|
|
9
|
-
decimals: number;
|
|
10
|
-
};
|
|
11
|
-
};
|
|
12
|
-
};
|
|
13
|
-
export type SdkChain<T extends SdkChainType> = {
|
|
14
|
-
getCtorData: (options: T["Options"], bitcoinRpc: BitcoinRpc<any>, network: BitcoinNetwork) => CtorChainData<T["ChainType"]>;
|
|
15
|
-
assets: {
|
|
16
|
-
[ticker: string]: {
|
|
17
|
-
address: string;
|
|
18
|
-
decimals: number;
|
|
19
|
-
};
|
|
20
|
-
};
|
|
21
|
-
chainIdentifier: string;
|
|
22
|
-
};
|