@bitflowlabs/core-sdk 1.0.1 → 2.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.
- package/dist/src/BitflowSDK.d.ts +23 -2
- package/dist/src/BitflowSDK.js +536 -82
- package/dist/src/BitflowSDK.js.map +1 -1
- package/dist/src/config.d.ts +1 -1
- package/dist/src/config.js +6 -4
- package/dist/src/config.js.map +1 -1
- package/dist/src/helpers/callReadOnlyHelper.js +10 -4
- package/dist/src/helpers/callReadOnlyHelper.js.map +1 -1
- package/dist/src/helpers/callSwapHelper.d.ts +2 -2
- package/dist/src/helpers/callSwapHelper.js +48 -7
- package/dist/src/helpers/callSwapHelper.js.map +1 -1
- package/dist/src/helpers/fetchDataHelper.d.ts +1 -1
- package/dist/src/helpers/fetchDataHelper.js +50 -17
- package/dist/src/helpers/fetchDataHelper.js.map +1 -1
- package/dist/src/helpers/fetchPossibleSwap.d.ts +2 -2
- package/dist/src/helpers/fetchPossibleSwap.js +10 -2
- package/dist/src/helpers/fetchPossibleSwap.js.map +1 -1
- package/dist/src/helpers/handleResultHelper.js +15 -15
- package/dist/src/helpers/handleResultHelper.js.map +1 -1
- package/dist/src/helpers/newPostConditionsHelper.d.ts +2 -0
- package/dist/src/helpers/newPostConditionsHelper.js +145 -0
- package/dist/src/helpers/newPostConditionsHelper.js.map +1 -0
- package/dist/src/helpers/postConditionsHelper.js +38 -13
- package/dist/src/helpers/postConditionsHelper.js.map +1 -1
- package/dist/src/index.d.ts +3 -2
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/keeper/keeperAPI.d.ts +10 -0
- package/dist/src/keeper/keeperAPI.js +332 -0
- package/dist/src/keeper/keeperAPI.js.map +1 -0
- package/dist/src/keeper/types.d.ts +253 -0
- package/dist/src/keeper/types.js +65 -0
- package/dist/src/keeper/types.js.map +1 -0
- package/dist/src/test-keeper-routes.d.ts +1 -0
- package/dist/src/test-keeper-routes.js +67 -0
- package/dist/src/test-keeper-routes.js.map +1 -0
- package/dist/src/test-raw-token-response.d.ts +1 -0
- package/dist/src/test-raw-token-response.js +79 -0
- package/dist/src/test-raw-token-response.js.map +1 -0
- package/dist/src/test-sdk.d.ts +1 -0
- package/dist/src/test-sdk.js +229 -0
- package/dist/src/test-sdk.js.map +1 -0
- package/dist/src/test-token.fetch.d.ts +1 -0
- package/dist/src/test-token.fetch.js +63 -0
- package/dist/src/test-token.fetch.js.map +1 -0
- package/dist/src/types.d.ts +27 -2
- package/package.json +6 -5
- package/src/BitflowSDK.ts +675 -97
- package/src/config.ts +9 -6
- package/src/helpers/callReadOnlyHelper.ts +12 -7
- package/src/helpers/callSwapHelper.ts +21 -7
- package/src/helpers/fetchDataHelper.ts +58 -19
- package/src/helpers/fetchPossibleSwap.ts +18 -4
- package/src/helpers/handleResultHelper.ts +17 -16
- package/src/helpers/newPostConditionsHelper.ts +172 -0
- package/src/helpers/postConditionsHelper.ts +71 -19
- package/src/index.ts +3 -2
- package/src/keeper/keeperAPI.ts +435 -0
- package/src/keeper/types.ts +293 -0
- package/src/test-keeper-routes.ts +76 -0
- package/src/test-raw-token-response.ts +124 -0
- package/src/test-sdk.ts +262 -0
- package/src/test-token.fetch.ts +72 -0
- package/src/types.ts +29 -2
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const BitflowSDK_1 = require("./BitflowSDK");
|
|
5
|
+
const types_1 = require("./keeper/types");
|
|
6
|
+
const dotenv_1 = tslib_1.__importDefault(require("dotenv"));
|
|
7
|
+
dotenv_1.default.config();
|
|
8
|
+
async function testBitflowSDK() {
|
|
9
|
+
const sdk = new BitflowSDK_1.BitflowSDK({
|
|
10
|
+
BITFLOW_API_HOST: process.env.BITFLOW_API_HOST,
|
|
11
|
+
BITFLOW_API_KEY: process.env.BITFLOW_API_KEY,
|
|
12
|
+
READONLY_CALL_API_HOST: process.env.READONLY_CALL_API_HOST,
|
|
13
|
+
});
|
|
14
|
+
const stacksAddress = "SP228WEAEMYX21RW0TT5T38THPNDYPPGGVW2RP570";
|
|
15
|
+
const orderId = "cf4bb181-33e7-498a-9eb5-3d120abab9cf";
|
|
16
|
+
console.log("Starting BitflowSDK tests...\n");
|
|
17
|
+
// // 1) Test getUser
|
|
18
|
+
// console.log("1. Testing getUser...");
|
|
19
|
+
// try {
|
|
20
|
+
// const userResponse = await sdk.getUser(stacksAddress);
|
|
21
|
+
// console.log("User data:", JSON.stringify(userResponse, null, 2));
|
|
22
|
+
// } catch (error) {
|
|
23
|
+
// console.error("Error in getUser:", error);
|
|
24
|
+
// }
|
|
25
|
+
// console.log("----------------------------------------\n");
|
|
26
|
+
// // 2) Test getOrder
|
|
27
|
+
// console.log("2. Testing getOrder...");
|
|
28
|
+
// try {
|
|
29
|
+
// const orderResponse = await sdk.getOrder(orderId);
|
|
30
|
+
// console.log("Order data:", JSON.stringify(orderResponse, null, 2));
|
|
31
|
+
// } catch (error) {
|
|
32
|
+
// console.error("Error in getOrder:", error);
|
|
33
|
+
// }
|
|
34
|
+
// console.log("----------------------------------------\n");
|
|
35
|
+
// // 3) Test getOrCreateKeeperContract
|
|
36
|
+
// console.log("3. Testing getOrCreateKeeperContract...");
|
|
37
|
+
// try {
|
|
38
|
+
// const keeperContractResponse = await sdk.getOrCreateKeeperContract({
|
|
39
|
+
// stacksAddress,
|
|
40
|
+
// keeperType: KeeperType.MULTI_ACTION_V1,
|
|
41
|
+
// deployContract: true,
|
|
42
|
+
// allActionsApproved: true,
|
|
43
|
+
// });
|
|
44
|
+
// console.log(
|
|
45
|
+
// "Keeper contract data:",
|
|
46
|
+
// JSON.stringify(keeperContractResponse, null, 2)
|
|
47
|
+
// );
|
|
48
|
+
// } catch (error) {
|
|
49
|
+
// console.error("Error in getOrCreateKeeperContract:", error);
|
|
50
|
+
// }
|
|
51
|
+
// console.log("----------------------------------------\n");
|
|
52
|
+
// 4) Test getKeeperAggregatorRouteData
|
|
53
|
+
console.log("\n4. Testing getKeeperAggregatorRouteData (pBTC -> STX)...");
|
|
54
|
+
try {
|
|
55
|
+
const aggregatorData = await sdk.getKeeperAggregatorRouteData("token-aeusdc", "token-stx", 100000000);
|
|
56
|
+
console.log("Aggregator route data:", JSON.stringify(aggregatorData, null, 2));
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.error("Error getting keeper aggregator route data:", error);
|
|
60
|
+
}
|
|
61
|
+
console.log("----------------------------------------\n");
|
|
62
|
+
// 5) Test getQuote
|
|
63
|
+
console.log("\n5. Testing MULTI_ACTION_V1 quote...");
|
|
64
|
+
try {
|
|
65
|
+
const multiActionParams = {
|
|
66
|
+
stacksAddress: "SP228WEAEMYX21RW0TT5T38THPNDYPPGGVW2RP570",
|
|
67
|
+
actionAmount: "100000000",
|
|
68
|
+
keeperType: types_1.KeeperType.MULTI_ACTION_V1,
|
|
69
|
+
actionType: types_1.ActionType.SWAP_XYK_SWAP_HELPER,
|
|
70
|
+
tokenXId: "token-pbtc",
|
|
71
|
+
tokenYId: "token-stx",
|
|
72
|
+
};
|
|
73
|
+
const quoteResponseMultiAction = await sdk.getQuote(multiActionParams);
|
|
74
|
+
console.log("MULTI_ACTION_V1 Quote Response:", JSON.stringify(quoteResponseMultiAction, null, 2));
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
console.error("Error in getQuote:", error);
|
|
78
|
+
}
|
|
79
|
+
console.log("----------------------------------------\n");
|
|
80
|
+
// // 6) Test createOrder
|
|
81
|
+
// console.log("6. Testing createOrder...");
|
|
82
|
+
// let keeperContractIdentifier: string | undefined;
|
|
83
|
+
// try {
|
|
84
|
+
// const keeperContractResponse = await sdk.getOrCreateKeeperContract({
|
|
85
|
+
// stacksAddress,
|
|
86
|
+
// keeperType: KeeperType.MULTI_ACTION_V1,
|
|
87
|
+
// allActionsApproved: true,
|
|
88
|
+
// });
|
|
89
|
+
// keeperContractIdentifier =
|
|
90
|
+
// keeperContractResponse.keeperContract.contractIdentifier;
|
|
91
|
+
// const orderParams: CreateOrderParams = {
|
|
92
|
+
// stacksAddress,
|
|
93
|
+
// actionAmount: "5000",
|
|
94
|
+
// feeRecipient: "SP16BPKS1DN5AYQ5MDHFEYXTSP352QG6JS2E0N8YP",
|
|
95
|
+
// tokenOrder: ["BTC", "PBTC"],
|
|
96
|
+
// keeperType: KeeperType.MULTI_ACTION_V1,
|
|
97
|
+
// contractIdentifier: keeperContractIdentifier,
|
|
98
|
+
// actionType: "SWAP_XYK_STABLESWAP_SWAP_HELPER",
|
|
99
|
+
// bitcoinTxId:
|
|
100
|
+
// "73e7cd80138044f73b7f08c881c51e1818acba0a3afab763724e399f33f89975",
|
|
101
|
+
// minReceived: {
|
|
102
|
+
// amount: "1734",
|
|
103
|
+
// autoAdjust: true,
|
|
104
|
+
// },
|
|
105
|
+
// actionFunctionArgs: {
|
|
106
|
+
// tokenList: {
|
|
107
|
+
// a: "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token",
|
|
108
|
+
// b: "SP14NS8MVBRHXMM96BQY0727AJ59SWPV7RMHC0NCG.pontis-bridge-pBTC",
|
|
109
|
+
// c: "SP14NS8MVBRHXMM96BQY0727AJ59SWPV7RMHC0NCG.pontis-bridge-pBTC",
|
|
110
|
+
// d: "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.token-stx-v-1-2",
|
|
111
|
+
// },
|
|
112
|
+
// xykPoolList: {
|
|
113
|
+
// a: "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-pbtc-stx-v-1-1",
|
|
114
|
+
// },
|
|
115
|
+
// stableswapPoolList: {
|
|
116
|
+
// a: "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.stableswap-pool-sbtc-pbtc-v-1-1",
|
|
117
|
+
// },
|
|
118
|
+
// boolList: {
|
|
119
|
+
// a: "true",
|
|
120
|
+
// },
|
|
121
|
+
// },
|
|
122
|
+
// };
|
|
123
|
+
// const createOrderResponse = await sdk.createOrder(orderParams);
|
|
124
|
+
// console.log(
|
|
125
|
+
// "Create order response:",
|
|
126
|
+
// JSON.stringify(createOrderResponse, null, 2)
|
|
127
|
+
// );
|
|
128
|
+
// } catch (error) {
|
|
129
|
+
// console.error("Error creating order:", error);
|
|
130
|
+
// }
|
|
131
|
+
// console.log("----------------------------------------\n");
|
|
132
|
+
// // 7) Test createGroupOrder
|
|
133
|
+
// console.log("\n7. Testing createGroupOrder...");
|
|
134
|
+
// try {
|
|
135
|
+
// const now = new Date();
|
|
136
|
+
// const tomorrow = new Date(now.getTime() + 24 * 60 * 60 * 1000);
|
|
137
|
+
// const createGroupOrderParams: CreateGroupOrderParams = {
|
|
138
|
+
// stacksAddress: "SP228WEAEMYX21RW0TT5T38THPNDYPPGGVW2RP570",
|
|
139
|
+
// amountPerOrder: 500000,
|
|
140
|
+
// numberOfOrders: 4,
|
|
141
|
+
// executionFrequency: 300000,
|
|
142
|
+
// feeRecipient: "SP16BPKS1DN5AYQ5MDHFEYXTSP352QG6JS2E0N8YP",
|
|
143
|
+
// fundingTokens: {
|
|
144
|
+
// STX: "1000000",
|
|
145
|
+
// },
|
|
146
|
+
// bitcoinTxId:
|
|
147
|
+
// "cbf1c87f2b81f6bcd6c83bcf512b6178edc0fcdf7a1595b174ecbad45660a3b7",
|
|
148
|
+
// keeperType: KeeperType.MULTI_ACTION_V1,
|
|
149
|
+
// actionType: "SWAP_XYK_SWAP_HELPER",
|
|
150
|
+
// actionFunctionArgs: {
|
|
151
|
+
// tokenList: {
|
|
152
|
+
// a: "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.token-stx-v-1-2",
|
|
153
|
+
// b: "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token",
|
|
154
|
+
// },
|
|
155
|
+
// xykPoolList: {
|
|
156
|
+
// a: "SM1793C4R5PZ4NS4VQ4WMP7SKKYVH8JZEWSZ9HCCR.xyk-pool-sbtc-stx-v-1-1",
|
|
157
|
+
// },
|
|
158
|
+
// },
|
|
159
|
+
// nextExecutionAfter: tomorrow,
|
|
160
|
+
// };
|
|
161
|
+
// const createGroupOrderResponse = await sdk.createGroupOrder(
|
|
162
|
+
// createGroupOrderParams
|
|
163
|
+
// );
|
|
164
|
+
// console.log(
|
|
165
|
+
// "Create Group Order Response:",
|
|
166
|
+
// JSON.stringify(createGroupOrderResponse, null, 2)
|
|
167
|
+
// );
|
|
168
|
+
// console.log("----------------------------------------\n");
|
|
169
|
+
// } catch (error) {
|
|
170
|
+
// console.error("Error creating group order:", error);
|
|
171
|
+
// }
|
|
172
|
+
// // 8) Test getGroupOrder (without includeOrders)
|
|
173
|
+
// console.log("\n8. Testing getGroupOrder without includeOrders...");
|
|
174
|
+
// try {
|
|
175
|
+
// const groupId = "e415a039-b1f1-4730-a66c-3d0c46f1f148";
|
|
176
|
+
// const getGroupOrderResponse = await sdk.getGroupOrder(groupId);
|
|
177
|
+
// console.log(
|
|
178
|
+
// "Get Group Order Response (without orders):",
|
|
179
|
+
// JSON.stringify(getGroupOrderResponse, null, 2)
|
|
180
|
+
// );
|
|
181
|
+
// } catch (error) {
|
|
182
|
+
// console.error("Error getting group order:", error);
|
|
183
|
+
// }
|
|
184
|
+
// console.log("----------------------------------------\n");
|
|
185
|
+
// // 9) Test getGroupOrder (with includeOrders)
|
|
186
|
+
// console.log("\n9. Testing getGroupOrder with includeOrders...");
|
|
187
|
+
// try {
|
|
188
|
+
// const groupId = "e415a039-b1f1-4730-a66c-3d0c46f1f148";
|
|
189
|
+
// const getGroupOrderWithOrdersResponse = await sdk.getGroupOrder(
|
|
190
|
+
// groupId,
|
|
191
|
+
// true
|
|
192
|
+
// );
|
|
193
|
+
// console.log(
|
|
194
|
+
// "Get Group Order Response (with orders):",
|
|
195
|
+
// JSON.stringify(getGroupOrderWithOrdersResponse, null, 2)
|
|
196
|
+
// );
|
|
197
|
+
// } catch (error) {
|
|
198
|
+
// console.error("Error getting group order (with orders):", error);
|
|
199
|
+
// }
|
|
200
|
+
// console.log("----------------------------------------\n");
|
|
201
|
+
// // 10) Test cancelOrder
|
|
202
|
+
// console.log("\n10. Testing cancelOrder...");
|
|
203
|
+
// try {
|
|
204
|
+
// const firstOrderId = "c50cee19-911c-4645-9562-cbf89f765687";
|
|
205
|
+
// const cancelOrderResponse = await sdk.cancelOrder(firstOrderId);
|
|
206
|
+
// console.log(
|
|
207
|
+
// "Cancel Order Response:",
|
|
208
|
+
// JSON.stringify(cancelOrderResponse, null, 2)
|
|
209
|
+
// );
|
|
210
|
+
// } catch (error) {
|
|
211
|
+
// console.error("Error cancelling order:", error);
|
|
212
|
+
// }
|
|
213
|
+
// console.log("----------------------------------------\n");
|
|
214
|
+
// 11) Test cancelGroupOrder
|
|
215
|
+
console.log("\n11. Testing cancelGroupOrder...");
|
|
216
|
+
try {
|
|
217
|
+
const groupIdToCancel = "dc277cd7-c3f9-472b-b607-3b6698f052f6";
|
|
218
|
+
const cancelGroupOrderResponse = await sdk.cancelGroupOrder(groupIdToCancel);
|
|
219
|
+
console.log("Cancel Group Order Response:", JSON.stringify(cancelGroupOrderResponse, null, 2));
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
console.error("Error cancelling group order:", error);
|
|
223
|
+
}
|
|
224
|
+
console.log("----------------------------------------\n");
|
|
225
|
+
}
|
|
226
|
+
testBitflowSDK()
|
|
227
|
+
.then(() => console.log("All tests completed"))
|
|
228
|
+
.catch(console.error);
|
|
229
|
+
//# sourceMappingURL=test-sdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-sdk.js","sourceRoot":"","sources":["../../src/test-sdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const BitflowSDK_1 = require("./BitflowSDK");
|
|
5
|
+
const dotenv_1 = tslib_1.__importDefault(require("dotenv"));
|
|
6
|
+
dotenv_1.default.config();
|
|
7
|
+
async function testGetKeeperTokens() {
|
|
8
|
+
console.log("Starting getKeeperTokens test...\n");
|
|
9
|
+
// Initialize SDK with environment variables
|
|
10
|
+
const sdk = new BitflowSDK_1.BitflowSDK({
|
|
11
|
+
BITFLOW_API_HOST: process.env.BITFLOW_API_HOST,
|
|
12
|
+
BITFLOW_API_KEY: process.env.BITFLOW_API_KEY,
|
|
13
|
+
READONLY_CALL_API_HOST: process.env.READONLY_CALL_API_HOST,
|
|
14
|
+
});
|
|
15
|
+
try {
|
|
16
|
+
// Get all tokens for comparison
|
|
17
|
+
console.log("Fetching all available tokens...");
|
|
18
|
+
const allTokens = await sdk.getAvailableTokens();
|
|
19
|
+
console.log(`Total number of tokens: ${allTokens.length}`);
|
|
20
|
+
// Get keeper tokens
|
|
21
|
+
console.log("\nFetching keeper tokens...");
|
|
22
|
+
const keeperTokens = await sdk.getKeeperTokens();
|
|
23
|
+
console.log(`Number of keeper tokens: ${keeperTokens.length}`);
|
|
24
|
+
// Verify all returned tokens are actually keeper tokens
|
|
25
|
+
const allAreKeeperTokens = keeperTokens.every((token) => token.isKeeperToken);
|
|
26
|
+
console.log("\nValidation:");
|
|
27
|
+
console.log(`All returned tokens are keeper tokens: ${allAreKeeperTokens}`);
|
|
28
|
+
// Compare with manual filtering
|
|
29
|
+
const manuallyFilteredKeeperTokens = allTokens.filter((token) => token.isKeeperToken);
|
|
30
|
+
const countMatch = keeperTokens.length === manuallyFilteredKeeperTokens.length;
|
|
31
|
+
console.log(`Count matches manual filtering: ${countMatch}`);
|
|
32
|
+
// Print some details about the keeper tokens
|
|
33
|
+
console.log("\nKeeper Tokens Details:");
|
|
34
|
+
keeperTokens.forEach((token) => {
|
|
35
|
+
console.log(`- ${token.name} (${token.symbol})`);
|
|
36
|
+
console.log(` Token ID: ${token.tokenId}`);
|
|
37
|
+
console.log(` Contract: ${token.tokenContract}`);
|
|
38
|
+
console.log(` Decimals: ${token.tokenDecimals}`);
|
|
39
|
+
console.log(" ---------------");
|
|
40
|
+
});
|
|
41
|
+
if (allAreKeeperTokens && countMatch) {
|
|
42
|
+
console.log("\n✅ getKeeperTokens test passed successfully!");
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
console.log("\n❌ getKeeperTokens test failed!");
|
|
46
|
+
if (!allAreKeeperTokens) {
|
|
47
|
+
console.error("Error: Some returned tokens are not keeper tokens");
|
|
48
|
+
}
|
|
49
|
+
if (!countMatch) {
|
|
50
|
+
console.error("Error: Token count doesn't match manual filtering");
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
console.error("\n❌ Test failed with error:", error);
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Run the test
|
|
60
|
+
testGetKeeperTokens()
|
|
61
|
+
.then(() => console.log("\nTest execution completed"))
|
|
62
|
+
.catch(console.error);
|
|
63
|
+
//# sourceMappingURL=test-token.fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-token.fetch.js","sourceRoot":"","sources":["../../src/test-token.fetch.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -1,16 +1,37 @@
|
|
|
1
|
-
import { ClarityValue, PostCondition } from
|
|
2
|
-
import { StacksNetwork } from
|
|
1
|
+
import { ClarityValue, PostCondition } from "@stacks/transactions";
|
|
2
|
+
import { StacksNetwork } from "@stacks/network";
|
|
3
3
|
export type BitflowSDKConfig = {
|
|
4
4
|
BITFLOW_API_HOST: string;
|
|
5
5
|
BITFLOW_API_KEY: string;
|
|
6
6
|
READONLY_CALL_API_HOST: string;
|
|
7
7
|
};
|
|
8
|
+
export interface PriceData {
|
|
9
|
+
"1h_change": number | null;
|
|
10
|
+
"1yr_change": number | null;
|
|
11
|
+
"24h_change": number | null;
|
|
12
|
+
"30d_change": number | null;
|
|
13
|
+
"7d_change": number | null;
|
|
14
|
+
last_price: number | null;
|
|
15
|
+
last_updated: string | null;
|
|
16
|
+
}
|
|
17
|
+
export interface LayerOneAsset {
|
|
18
|
+
address: string;
|
|
19
|
+
divisibility: number;
|
|
20
|
+
icon: string;
|
|
21
|
+
isBitcoin: boolean;
|
|
22
|
+
runeid: string;
|
|
23
|
+
spacedRune: string;
|
|
24
|
+
symbol: string | null;
|
|
25
|
+
}
|
|
8
26
|
export type Token = {
|
|
27
|
+
base: string;
|
|
28
|
+
type: string;
|
|
9
29
|
icon: string;
|
|
10
30
|
name: string;
|
|
11
31
|
status: string;
|
|
12
32
|
symbol: string;
|
|
13
33
|
tokenId: string;
|
|
34
|
+
"token-id": string;
|
|
14
35
|
tokenContract: string | null;
|
|
15
36
|
tokenDecimals: number;
|
|
16
37
|
tokenName: string | null;
|
|
@@ -21,6 +42,10 @@ export type Token = {
|
|
|
21
42
|
tokenName: string | null;
|
|
22
43
|
};
|
|
23
44
|
} | null;
|
|
45
|
+
isKeeperToken: boolean;
|
|
46
|
+
bridge: "TRUE" | "FALSE";
|
|
47
|
+
layerOneAsset: LayerOneAsset | null;
|
|
48
|
+
priceData: PriceData;
|
|
24
49
|
};
|
|
25
50
|
export type SwapOptions = {
|
|
26
51
|
[tokenY: string]: SelectedSwapRoute[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitflowlabs/core-sdk",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "SDK for interacting with Bitflow Protocol",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"types": "dist/src/index.d.ts",
|
|
@@ -37,12 +37,13 @@
|
|
|
37
37
|
"jest": "^29.7.0",
|
|
38
38
|
"ts-jest": "^29.2.5",
|
|
39
39
|
"ts-node": "^10.9.2",
|
|
40
|
-
"typescript": "^5.
|
|
40
|
+
"typescript": "^5.7.3"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@stacks/connect": "^7.
|
|
44
|
-
"@stacks/network": "^
|
|
45
|
-
"@stacks/transactions": "^
|
|
43
|
+
"@stacks/connect": "^7.8.0",
|
|
44
|
+
"@stacks/network": "^7.0.2",
|
|
45
|
+
"@stacks/transactions": "^7.0.2",
|
|
46
|
+
"dotenv": "^16.4.7"
|
|
46
47
|
},
|
|
47
48
|
"engines": {
|
|
48
49
|
"node": ">=20.0.0"
|