@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.
- package/dist/MultichainSwapper.d.ts +26 -8
- package/dist/MultichainSwapper.js +15 -5
- package/dist/chains/solana/SolanaChainInitializer.d.ts +4 -2
- package/dist/chains/solana/SolanaChainInitializer.js +8 -5
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/package.json +3 -3
- package/src/MultichainSwapper.ts +30 -11
- package/src/chains/solana/SolanaChainInitializer.ts +11 -6
- package/src/index.ts +3 -0
|
@@ -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<
|
|
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
|
-
|
|
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 =
|
|
12
|
-
|
|
13
|
-
|
|
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: (
|
|
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
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-
|
|
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-
|
|
26
|
-
"crosslightning-solana": "7.0.0-
|
|
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",
|
package/src/MultichainSwapper.ts
CHANGED
|
@@ -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<
|
|
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):
|
|
129
|
+
getToken(address: string): SCTokenExtended<C>
|
|
114
130
|
}
|
|
115
131
|
} = objectMap(Chains, (value, key) => {
|
|
116
|
-
const addressMap: {[tokenAddress: string]:
|
|
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 =
|
|
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
|
|
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
|
-
|
|
47
|
+
Fees
|
|
43
48
|
)
|
|
44
49
|
const chainEvents = new SolanaChainEventsBrowser(connection, swapContract);
|
|
45
50
|
|
package/src/index.ts
CHANGED