@atomiqlabs/sdk 1.2.5 → 1.3.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.
package/dist/index.js CHANGED
@@ -1,20 +1,20 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./MultichainSwapper"), exports);
18
- __exportStar(require("@atomiqlabs/base"), exports);
19
- __exportStar(require("@atomiqlabs/sdk-lib"), exports);
20
- __exportStar(require("@atomiqlabs/chain-solana"), exports);
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./MultichainSwapper"), exports);
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.2.5",
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.2",
25
- "@atomiqlabs/chain-solana": "7.3.3",
26
- "@atomiqlabs/sdk-lib": "10.2.8"
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.3.0",
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.2",
25
+ "@atomiqlabs/chain-solana": "7.3.4",
26
+ "@atomiqlabs/sdk-lib": "10.3.0"
27
+ },
28
+ "devDependencies": {
29
+ "@types/bn.js": "5.1.5",
30
+ "typescript": "4.9.5"
31
+ }
32
+ }
@@ -1,139 +1,145 @@
1
- import {
2
- BitcoinNetwork, BitcoinTokens,
3
- BtcToken, IndexedDBStorageManager, isToken,
4
- MempoolApi,
5
- MempoolBitcoinRpc,
6
- RedundantSwapPrice,
7
- RedundantSwapPriceAssets,
8
- SCToken,
9
- Swapper,
10
- SwapperOptions, Token
11
- } from "@atomiqlabs/sdk-lib";
12
- import {objectMap} from "@atomiqlabs/sdk-lib/dist/utils/Utils";
13
- import {SdkSolana, SdkSolanaType} from "./chains/solana/SolanaChainInitializer";
14
- import {SdkChain} from "./chains/ChainInitializer";
15
- import * as BN from "bn.js";
16
- import {SmartChainAssets} from "./SmartChainAssets";
17
- import {IStorageManager, StorageObject} from "@atomiqlabs/base";
18
- import {SwapperWithChain} from "@atomiqlabs/sdk-lib/dist/swaps/SwapperWithChain";
19
- import {SwapperWithSigner} from "@atomiqlabs/sdk-lib/dist/swaps/SwapperWithSigner";
20
-
21
- type Chains = {
22
- "SOLANA": SdkSolanaType
23
- };
24
-
25
- const Chains: {
26
- [C in keyof Chains]: SdkChain<Chains[C]>
27
- } = {
28
- "SOLANA": SdkSolana
29
- } as const;
30
-
31
- export type SdkMultichain = { [C in keyof Chains]: Chains[C]["ChainType"] };
32
-
33
- export type MultichainSwapperOptions = SwapperOptions & {
34
- chains: {
35
- [C in keyof Chains]: Chains[C]["Options"]
36
- }
37
- } & {
38
- storageCtor?: <T extends StorageObject>(name: string) => IStorageManager<T>,
39
- pricingFeeDifferencePPM?: BN
40
- };
41
-
42
- export class MultichainSwapper extends Swapper<SdkMultichain> {
43
-
44
- constructor(options: MultichainSwapperOptions) {
45
- options.bitcoinNetwork ??= BitcoinNetwork.MAINNET;
46
- options.storagePrefix ??= "atomiqsdk-"+options.bitcoinNetwork;
47
- options.storageCtor ??= (name: string) => new IndexedDBStorageManager(name);
48
-
49
- options.registryUrl ??= options.bitcoinNetwork===BitcoinNetwork.MAINNET ?
50
- "https://api.github.com/repos/adambor/SolLightning-registry/contents/registry-mainnet.json?ref=main" :
51
- "https://api.github.com/repos/adambor/SolLightning-registry/contents/registry.json?ref=main";
52
-
53
- const mempoolApi = new MempoolApi(
54
- options.bitcoinNetwork===BitcoinNetwork.TESTNET ?
55
- "https://mempool.space/testnet/api/" :
56
- "https://mempool.space/api/"
57
- );
58
- const bitcoinRpc = new MempoolBitcoinRpc(mempoolApi);
59
-
60
- const pricingAssets: (RedundantSwapPriceAssets<SdkMultichain>[number] & {ticker: string, name: string})[] = [];
61
- Object.keys(SmartChainAssets).forEach((ticker) => {
62
- const chains: any = {};
63
- for(let chainId in Chains) {
64
- if(Chains[chainId].assets[ticker]!=null) chains[chainId] = Chains[chainId].assets[ticker];
65
- }
66
- const assetData = SmartChainAssets[ticker];
67
- pricingAssets.push({
68
- ...assetData.pricing,
69
- chains,
70
- ticker,
71
- name: assetData.name
72
- })
73
- });
74
-
75
- const ctorChainData = objectMap(Chains, (value, key) => {
76
- return value.getCtorData(options, bitcoinRpc, options.bitcoinNetwork);
77
- });
78
-
79
- super(
80
- bitcoinRpc,
81
- ctorChainData,
82
- RedundantSwapPrice.createFromTokenMap<SdkMultichain>(options.pricingFeeDifferencePPM ?? new BN(10000), pricingAssets),
83
- pricingAssets,
84
- options
85
- );
86
- }
87
-
88
- }
89
-
90
- export const Tokens: {
91
- [C in keyof Chains]: {
92
- [T in keyof Chains[C]["Assets"]]: SCToken<C>
93
- }
94
- } & {
95
- BITCOIN: {
96
- BTC: BtcToken<false>,
97
- BTCLN: BtcToken<true>
98
- }
99
- } = {
100
- ...objectMap(Chains, (value, key) => {
101
- return objectMap(value.assets, (assetData, ticker) => {
102
- return {
103
- chain: "SC",
104
- chainId: value.chainIdentifier,
105
- address: assetData.address,
106
- name: SmartChainAssets[ticker].name,
107
- decimals: assetData.decimals,
108
- ticker
109
- }
110
- });
111
- }),
112
- BITCOIN: BitcoinTokens
113
- };
114
-
115
- export const TokenResolver: {
116
- [C in keyof Chains]: {
117
- getToken(address: string): SCToken<C>
118
- }
119
- } = {
120
- ...objectMap(Chains, (value, key) => {
121
- const addressMap: {[tokenAddress: string]: SCToken} = {};
122
- for(let ticker in value.assets) {
123
- addressMap[value.assets[ticker].address] = {
124
- chain: "SC",
125
- chainId: value.chainIdentifier,
126
- address: value.assets[ticker].address,
127
- ticker,
128
- name: SmartChainAssets[ticker].name,
129
- decimals: value.assets[ticker].decimals
130
- }
131
- }
132
- return {
133
- getToken: (address: string) => addressMap[address]
134
- };
135
- })
136
- };
137
-
138
- export type SolanaSwapper = SwapperWithChain<SdkMultichain, "SOLANA">;
139
- export type SolanaSwapperWithSigner = SwapperWithSigner<SdkMultichain, "SOLANA">;
1
+ import {
2
+ BitcoinNetwork,
3
+ BitcoinTokens,
4
+ BtcToken,
5
+ IndexedDBStorageManager,
6
+ MempoolApi,
7
+ MempoolBitcoinRpc,
8
+ RedundantSwapPrice,
9
+ RedundantSwapPriceAssets,
10
+ SCToken,
11
+ Swapper,
12
+ SwapperOptions
13
+ } from "@atomiqlabs/sdk-lib";
14
+ import {objectMap} from "@atomiqlabs/sdk-lib/dist/utils/Utils";
15
+ import {SdkSolana, SdkSolanaType} from "./chains/solana/SolanaChainInitializer";
16
+ import {SdkChain} from "./chains/ChainInitializer";
17
+ import * as BN from "bn.js";
18
+ import {SmartChainAssets} from "./SmartChainAssets";
19
+ import {IStorageManager, StorageObject} from "@atomiqlabs/base";
20
+ import {SwapperWithChain} from "@atomiqlabs/sdk-lib/dist/swaps/SwapperWithChain";
21
+ import {SwapperWithSigner} from "@atomiqlabs/sdk-lib/dist/swaps/SwapperWithSigner";
22
+
23
+ type Chains = {
24
+ "SOLANA": SdkSolanaType
25
+ };
26
+
27
+ const Chains: {
28
+ [C in keyof Chains]: SdkChain<Chains[C]>
29
+ } = {
30
+ "SOLANA": SdkSolana
31
+ } as const;
32
+
33
+ export type SdkMultichain = { [C in keyof Chains]: Chains[C]["ChainType"] };
34
+
35
+ export type MultichainSwapperOptions = SwapperOptions & {
36
+ chains: {
37
+ [C in keyof Chains]: Chains[C]["Options"]
38
+ }
39
+ } & {
40
+ storageCtor?: <T extends StorageObject>(name: string) => IStorageManager<T>,
41
+ pricingFeeDifferencePPM?: BN
42
+ };
43
+
44
+ export class MultichainSwapper extends Swapper<SdkMultichain> {
45
+
46
+ constructor(options: MultichainSwapperOptions) {
47
+ options.bitcoinNetwork ??= BitcoinNetwork.MAINNET;
48
+ options.storagePrefix ??= "atomiqsdk-"+options.bitcoinNetwork;
49
+ options.storageCtor ??= (name: string) => new IndexedDBStorageManager(name);
50
+
51
+ options.defaultTrustedIntermediaryUrl ??= options.bitcoinNetwork===BitcoinNetwork.MAINNET ?
52
+ "https://node3.gethopa.com:34100" :
53
+ "https://node3.gethopa.com:24100";
54
+
55
+ options.registryUrl ??= options.bitcoinNetwork===BitcoinNetwork.MAINNET ?
56
+ "https://api.github.com/repos/adambor/SolLightning-registry/contents/registry-mainnet.json?ref=main" :
57
+ "https://api.github.com/repos/adambor/SolLightning-registry/contents/registry.json?ref=main";
58
+
59
+ const mempoolApi = new MempoolApi(
60
+ options.bitcoinNetwork===BitcoinNetwork.TESTNET ?
61
+ "https://mempool.space/testnet/api/" :
62
+ "https://mempool.space/api/"
63
+ );
64
+ const bitcoinRpc = new MempoolBitcoinRpc(mempoolApi);
65
+
66
+ const pricingAssets: (RedundantSwapPriceAssets<SdkMultichain>[number] & {ticker: string, name: string})[] = [];
67
+ Object.keys(SmartChainAssets).forEach((ticker) => {
68
+ const chains: any = {};
69
+ for(let chainId in Chains) {
70
+ if(Chains[chainId].assets[ticker]!=null) chains[chainId] = Chains[chainId].assets[ticker];
71
+ }
72
+ const assetData = SmartChainAssets[ticker];
73
+ pricingAssets.push({
74
+ ...assetData.pricing,
75
+ chains,
76
+ ticker,
77
+ name: assetData.name
78
+ })
79
+ });
80
+
81
+ const ctorChainData = objectMap(Chains, (value, key) => {
82
+ return value.getCtorData(options, bitcoinRpc, options.bitcoinNetwork);
83
+ });
84
+
85
+ super(
86
+ bitcoinRpc,
87
+ ctorChainData,
88
+ RedundantSwapPrice.createFromTokenMap<SdkMultichain>(options.pricingFeeDifferencePPM ?? new BN(10000), pricingAssets),
89
+ pricingAssets,
90
+ options
91
+ );
92
+ }
93
+
94
+ }
95
+
96
+ export const Tokens: {
97
+ [C in keyof Chains]: {
98
+ [T in keyof Chains[C]["Assets"]]: SCToken<C>
99
+ }
100
+ } & {
101
+ BITCOIN: {
102
+ BTC: BtcToken<false>,
103
+ BTCLN: BtcToken<true>
104
+ }
105
+ } = {
106
+ ...objectMap(Chains, (value, key) => {
107
+ return objectMap(value.assets, (assetData, ticker) => {
108
+ return {
109
+ chain: "SC",
110
+ chainId: value.chainIdentifier,
111
+ address: assetData.address,
112
+ name: SmartChainAssets[ticker].name,
113
+ decimals: assetData.decimals,
114
+ ticker
115
+ }
116
+ });
117
+ }),
118
+ BITCOIN: BitcoinTokens
119
+ };
120
+
121
+ export const TokenResolver: {
122
+ [C in keyof Chains]: {
123
+ getToken(address: string): SCToken<C>
124
+ }
125
+ } = {
126
+ ...objectMap(Chains, (value, key) => {
127
+ const addressMap: {[tokenAddress: string]: SCToken} = {};
128
+ for(let ticker in value.assets) {
129
+ addressMap[value.assets[ticker].address] = {
130
+ chain: "SC",
131
+ chainId: value.chainIdentifier,
132
+ address: value.assets[ticker].address,
133
+ ticker,
134
+ name: SmartChainAssets[ticker].name,
135
+ decimals: value.assets[ticker].decimals
136
+ }
137
+ }
138
+ return {
139
+ getToken: (address: string) => addressMap[address]
140
+ };
141
+ })
142
+ };
143
+
144
+ export type SolanaSwapper = SwapperWithChain<SdkMultichain, "SOLANA">;
145
+ export type SolanaSwapperWithSigner = SwapperWithSigner<SdkMultichain, "SOLANA">;
@@ -1,57 +1,57 @@
1
-
2
- export const SmartChainAssets = {
3
- WBTC: {
4
- pricing: {
5
- binancePair: "WBTCBTC",
6
- okxPair: "$fixed-1",
7
- coinGeckoCoinId: "wrapped-bitcoin",
8
- coinPaprikaCoinId: "wbtc-wrapped-bitcoin"
9
- },
10
- name: "Wrapped BTC"
11
- },
12
- USDC: {
13
- pricing: {
14
- binancePair: "!BTCUSDC",
15
- okxPair: "!BTC-USDC",
16
- coinGeckoCoinId: "usd-coin",
17
- coinPaprikaCoinId: "usdc-usd-coin"
18
- },
19
- name: "USD Circle"
20
- },
21
- USDT: {
22
- pricing: {
23
- binancePair: "!BTCUSDT",
24
- okxPair: "!BTC-USDT",
25
- coinGeckoCoinId: "tether",
26
- coinPaprikaCoinId: "usdt-tether"
27
- },
28
- name: "Tether USD"
29
- },
30
- SOL: {
31
- pricing: {
32
- binancePair: "SOLBTC",
33
- okxPair: "SOL-BTC",
34
- coinGeckoCoinId: "solana",
35
- coinPaprikaCoinId: "sol-solana"
36
- },
37
- name: "Solana"
38
- },
39
- BONK: {
40
- pricing: {
41
- binancePair: "BONKUSDC;!BTCUSDC",
42
- okxPair: null,
43
- coinGeckoCoinId: "bonk",
44
- coinPaprikaCoinId: "bonk-bonk"
45
- },
46
- name: "Bonk"
47
- }
48
- } as const;
49
-
50
- export type SmartChainAssetTickers = keyof typeof SmartChainAssets;
51
-
52
- export type AssetData = {
53
- [ticker in SmartChainAssetTickers]?: {
54
- address: string,
55
- decimals: number
56
- }
57
- };
1
+
2
+ export const SmartChainAssets = {
3
+ WBTC: {
4
+ pricing: {
5
+ binancePair: "WBTCBTC",
6
+ okxPair: "$fixed-1",
7
+ coinGeckoCoinId: "wrapped-bitcoin",
8
+ coinPaprikaCoinId: "wbtc-wrapped-bitcoin"
9
+ },
10
+ name: "Wrapped BTC"
11
+ },
12
+ USDC: {
13
+ pricing: {
14
+ binancePair: "!BTCUSDC",
15
+ okxPair: "!BTC-USDC",
16
+ coinGeckoCoinId: "usd-coin",
17
+ coinPaprikaCoinId: "usdc-usd-coin"
18
+ },
19
+ name: "USD Circle"
20
+ },
21
+ USDT: {
22
+ pricing: {
23
+ binancePair: "!BTCUSDT",
24
+ okxPair: "!BTC-USDT",
25
+ coinGeckoCoinId: "tether",
26
+ coinPaprikaCoinId: "usdt-tether"
27
+ },
28
+ name: "Tether USD"
29
+ },
30
+ SOL: {
31
+ pricing: {
32
+ binancePair: "SOLBTC",
33
+ okxPair: "SOL-BTC",
34
+ coinGeckoCoinId: "solana",
35
+ coinPaprikaCoinId: "sol-solana"
36
+ },
37
+ name: "Solana"
38
+ },
39
+ BONK: {
40
+ pricing: {
41
+ binancePair: "BONKUSDC;!BTCUSDC",
42
+ okxPair: null,
43
+ coinGeckoCoinId: "bonk",
44
+ coinPaprikaCoinId: "bonk-bonk"
45
+ },
46
+ name: "Bonk"
47
+ }
48
+ } as const;
49
+
50
+ export type SmartChainAssetTickers = keyof typeof SmartChainAssets;
51
+
52
+ export type AssetData = {
53
+ [ticker in SmartChainAssetTickers]?: {
54
+ address: string,
55
+ decimals: number
56
+ }
57
+ };
@@ -1,16 +1,16 @@
1
- import {BitcoinRpc, ChainType} from "@atomiqlabs/base";
2
- import {BitcoinNetwork, CtorChainData, SwapperOptions} from "@atomiqlabs/sdk-lib";
3
- import {AssetData} from "../SmartChainAssets";
4
-
5
-
6
- export type SdkChainType = {
7
- ChainType: ChainType,
8
- Options: {},
9
- Assets: AssetData
10
- }
11
-
12
- export type SdkChain<T extends SdkChainType> = {
13
- getCtorData: (options: SwapperOptions, bitcoinRpc: BitcoinRpc<any>, network: BitcoinNetwork) => CtorChainData<T["ChainType"]>,
14
- assets: AssetData,
15
- chainIdentifier: string
16
- };
1
+ import {BitcoinRpc, ChainType} from "@atomiqlabs/base";
2
+ import {BitcoinNetwork, CtorChainData, SwapperOptions} from "@atomiqlabs/sdk-lib";
3
+ import {AssetData} from "../SmartChainAssets";
4
+
5
+
6
+ export type SdkChainType = {
7
+ ChainType: ChainType,
8
+ Options: {},
9
+ Assets: AssetData
10
+ }
11
+
12
+ export type SdkChain<T extends SdkChainType> = {
13
+ getCtorData: (options: SwapperOptions, bitcoinRpc: BitcoinRpc<any>, network: BitcoinNetwork) => CtorChainData<T["ChainType"]>,
14
+ assets: AssetData,
15
+ chainIdentifier: string
16
+ };