@arkade-os/skill 0.1.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/README.md +116 -0
- package/SKILL.md +269 -0
- package/cli/arkade.mjs +1018 -0
- package/dist/cjs/index.js +88 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/skills/arkadeBitcoin.js +359 -0
- package/dist/cjs/skills/arkadeBitcoin.js.map +1 -0
- package/dist/cjs/skills/index.js +78 -0
- package/dist/cjs/skills/index.js.map +1 -0
- package/dist/cjs/skills/lendaswap.js +458 -0
- package/dist/cjs/skills/lendaswap.js.map +1 -0
- package/dist/cjs/skills/lightning.js +287 -0
- package/dist/cjs/skills/lightning.js.map +1 -0
- package/dist/cjs/skills/types.js +11 -0
- package/dist/cjs/skills/types.js.map +1 -0
- package/dist/esm/index.js +72 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/skills/arkadeBitcoin.js +354 -0
- package/dist/esm/skills/arkadeBitcoin.js.map +1 -0
- package/dist/esm/skills/index.js +69 -0
- package/dist/esm/skills/index.js.map +1 -0
- package/dist/esm/skills/lendaswap.js +453 -0
- package/dist/esm/skills/lendaswap.js.map +1 -0
- package/dist/esm/skills/lightning.js +282 -0
- package/dist/esm/skills/lightning.js.map +1 -0
- package/dist/esm/skills/types.js +10 -0
- package/dist/esm/skills/types.js.map +1 -0
- package/dist/types/index.d.ts +72 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/skills/arkadeBitcoin.d.ts +218 -0
- package/dist/types/skills/arkadeBitcoin.d.ts.map +1 -0
- package/dist/types/skills/index.d.ts +67 -0
- package/dist/types/skills/index.d.ts.map +1 -0
- package/dist/types/skills/lendaswap.d.ts +152 -0
- package/dist/types/skills/lendaswap.d.ts.map +1 -0
- package/dist/types/skills/lightning.d.ts +181 -0
- package/dist/types/skills/lightning.d.ts.map +1 -0
- package/dist/types/skills/types.d.ts +548 -0
- package/dist/types/skills/types.d.ts.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LendaSwapSkill - Swap USDC/USDT from/to Arkade via LendaSwap.
|
|
3
|
+
*
|
|
4
|
+
* This skill provides stablecoin swap capabilities for Arkade wallets
|
|
5
|
+
* using the LendaSwap SDK for non-custodial BTC/stablecoin exchanges.
|
|
6
|
+
*
|
|
7
|
+
* @module skills/lendaswap
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Default LendaSwap API URL.
|
|
11
|
+
*/
|
|
12
|
+
const DEFAULT_API_URL = "https://apilendaswap.lendasat.com/";
|
|
13
|
+
/**
|
|
14
|
+
* Token decimals for stablecoins.
|
|
15
|
+
*/
|
|
16
|
+
const TOKEN_DECIMALS = {
|
|
17
|
+
usdc_pol: 6,
|
|
18
|
+
usdc_eth: 6,
|
|
19
|
+
usdc_arb: 6,
|
|
20
|
+
usdt_pol: 6,
|
|
21
|
+
usdt_eth: 6,
|
|
22
|
+
usdt_arb: 6,
|
|
23
|
+
};
|
|
24
|
+
function parseExpiry(raw, fallbackMs) {
|
|
25
|
+
if (raw === null || raw === undefined) {
|
|
26
|
+
return new Date(Date.now() + fallbackMs);
|
|
27
|
+
}
|
|
28
|
+
if (typeof raw === "string") {
|
|
29
|
+
const parsed = new Date(raw);
|
|
30
|
+
if (!Number.isNaN(parsed.getTime())) {
|
|
31
|
+
return parsed;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (typeof raw === "number") {
|
|
35
|
+
const ms = raw < 1000000000000 ? raw * 1000 : raw;
|
|
36
|
+
return new Date(ms);
|
|
37
|
+
}
|
|
38
|
+
return new Date(Date.now() + fallbackMs);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* LendaSwapSkill provides stablecoin swap capabilities for Arkade wallets
|
|
42
|
+
* using the LendaSwap SDK.
|
|
43
|
+
*
|
|
44
|
+
* This skill enables:
|
|
45
|
+
* - Swapping BTC from Arkade to USDC/USDT on Polygon, Ethereum, or Arbitrum
|
|
46
|
+
* - Receiving USDC/USDT and converting to BTC in your Arkade wallet
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* import { Wallet, SingleKey } from "@arkade-os/sdk";
|
|
51
|
+
* import { LendaSwapSkill } from "@arkade-os/skill";
|
|
52
|
+
*
|
|
53
|
+
* // Create a wallet
|
|
54
|
+
* const wallet = await Wallet.create({
|
|
55
|
+
* identity: SingleKey.fromHex(privateKeyHex),
|
|
56
|
+
* arkServerUrl: "https://arkade.computer",
|
|
57
|
+
* });
|
|
58
|
+
*
|
|
59
|
+
* // Create the LendaSwap skill
|
|
60
|
+
* const lendaswap = new LendaSwapSkill({
|
|
61
|
+
* wallet,
|
|
62
|
+
* apiKey: process.env.LENDASWAP_API_KEY,
|
|
63
|
+
* });
|
|
64
|
+
*
|
|
65
|
+
* // Get a quote for BTC to USDC
|
|
66
|
+
* const quote = await lendaswap.getQuoteBtcToStablecoin(100000, "usdc_pol");
|
|
67
|
+
* console.log("You'll receive:", quote.targetAmount, "USDC");
|
|
68
|
+
*
|
|
69
|
+
* // Execute the swap
|
|
70
|
+
* const result = await lendaswap.swapBtcToStablecoin({
|
|
71
|
+
* targetAddress: "0x...",
|
|
72
|
+
* targetToken: "usdc_pol",
|
|
73
|
+
* targetChain: "polygon",
|
|
74
|
+
* sourceAmount: 100000,
|
|
75
|
+
* });
|
|
76
|
+
* console.log("Swap created:", result.swapId);
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
export class LendaSwapSkill {
|
|
80
|
+
/**
|
|
81
|
+
* Creates a new LendaSwapSkill instance.
|
|
82
|
+
*
|
|
83
|
+
* @param config - Configuration options
|
|
84
|
+
*/
|
|
85
|
+
constructor(config) {
|
|
86
|
+
this.name = "lendaswap";
|
|
87
|
+
this.description = "Swap USDC/USDT from/to Arkade via LendaSwap non-custodial exchange";
|
|
88
|
+
this.version = "1.0.0";
|
|
89
|
+
this.swapStorage = new Map();
|
|
90
|
+
this.wallet = config.wallet;
|
|
91
|
+
this.apiUrl = config.apiUrl || DEFAULT_API_URL;
|
|
92
|
+
this.apiKey = config.apiKey;
|
|
93
|
+
this.referralCode = config.referralCode;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Check if the skill is available and properly configured.
|
|
97
|
+
*/
|
|
98
|
+
async isAvailable() {
|
|
99
|
+
try {
|
|
100
|
+
const response = await this.fetchApi("/pairs");
|
|
101
|
+
return response.ok;
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Get a quote for swapping BTC to stablecoins.
|
|
109
|
+
*/
|
|
110
|
+
async getQuoteBtcToStablecoin(sourceAmount, targetToken) {
|
|
111
|
+
const response = await this.fetchApi("/quote", {
|
|
112
|
+
method: "POST",
|
|
113
|
+
body: JSON.stringify({
|
|
114
|
+
from: "btc_arkade",
|
|
115
|
+
to: targetToken,
|
|
116
|
+
amount: sourceAmount,
|
|
117
|
+
}),
|
|
118
|
+
});
|
|
119
|
+
if (!response.ok) {
|
|
120
|
+
throw new Error(`Failed to get quote: ${response.statusText}`);
|
|
121
|
+
}
|
|
122
|
+
const data = (await response.json());
|
|
123
|
+
return {
|
|
124
|
+
sourceToken: "btc_arkade",
|
|
125
|
+
targetToken,
|
|
126
|
+
sourceAmount,
|
|
127
|
+
targetAmount: data.targetAmount,
|
|
128
|
+
exchangeRate: data.exchangeRate,
|
|
129
|
+
fee: {
|
|
130
|
+
amount: data.fee?.amount || 0,
|
|
131
|
+
percentage: data.fee?.percentage || 0,
|
|
132
|
+
},
|
|
133
|
+
expiresAt: parseExpiry(data.expiresAt, 60000),
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Get a quote for swapping stablecoins to BTC.
|
|
138
|
+
*/
|
|
139
|
+
async getQuoteStablecoinToBtc(sourceAmount, sourceToken) {
|
|
140
|
+
const response = await this.fetchApi("/quote", {
|
|
141
|
+
method: "POST",
|
|
142
|
+
body: JSON.stringify({
|
|
143
|
+
from: sourceToken,
|
|
144
|
+
to: "btc_arkade",
|
|
145
|
+
amount: sourceAmount,
|
|
146
|
+
}),
|
|
147
|
+
});
|
|
148
|
+
if (!response.ok) {
|
|
149
|
+
throw new Error(`Failed to get quote: ${response.statusText}`);
|
|
150
|
+
}
|
|
151
|
+
const data = (await response.json());
|
|
152
|
+
return {
|
|
153
|
+
sourceToken,
|
|
154
|
+
targetToken: "btc_arkade",
|
|
155
|
+
sourceAmount,
|
|
156
|
+
targetAmount: data.targetAmount,
|
|
157
|
+
exchangeRate: data.exchangeRate,
|
|
158
|
+
fee: {
|
|
159
|
+
amount: data.fee?.amount || 0,
|
|
160
|
+
percentage: data.fee?.percentage || 0,
|
|
161
|
+
},
|
|
162
|
+
expiresAt: parseExpiry(data.expiresAt, 60000),
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Swap BTC from Arkade to stablecoins on EVM.
|
|
167
|
+
*/
|
|
168
|
+
async swapBtcToStablecoin(params) {
|
|
169
|
+
const arkAddress = await this.wallet.getAddress();
|
|
170
|
+
const response = await this.fetchApi("/swap/btc-to-evm", {
|
|
171
|
+
method: "POST",
|
|
172
|
+
body: JSON.stringify({
|
|
173
|
+
sourceAddress: arkAddress,
|
|
174
|
+
targetAddress: params.targetAddress,
|
|
175
|
+
targetToken: params.targetToken,
|
|
176
|
+
targetChain: params.targetChain,
|
|
177
|
+
sourceAmount: params.sourceAmount,
|
|
178
|
+
targetAmount: params.targetAmount,
|
|
179
|
+
referralCode: params.referralCode || this.referralCode,
|
|
180
|
+
}),
|
|
181
|
+
});
|
|
182
|
+
if (!response.ok) {
|
|
183
|
+
throw new Error(`Failed to create swap: ${response.statusText}`);
|
|
184
|
+
}
|
|
185
|
+
const data = (await response.json());
|
|
186
|
+
const resolvedSourceAmount = params.sourceAmount ?? data.sourceAmount ?? 0;
|
|
187
|
+
// Store swap locally
|
|
188
|
+
const storedSwap = {
|
|
189
|
+
swapId: data.swapId,
|
|
190
|
+
direction: "btc_to_stablecoin",
|
|
191
|
+
status: "awaiting_funding",
|
|
192
|
+
sourceToken: "btc_arkade",
|
|
193
|
+
targetToken: params.targetToken,
|
|
194
|
+
sourceAmount: resolvedSourceAmount,
|
|
195
|
+
targetAmount: data.targetAmount || 0,
|
|
196
|
+
exchangeRate: data.exchangeRate || 0,
|
|
197
|
+
createdAt: Date.now(),
|
|
198
|
+
response: data,
|
|
199
|
+
};
|
|
200
|
+
this.swapStorage.set(data.swapId, storedSwap);
|
|
201
|
+
return {
|
|
202
|
+
swapId: data.swapId,
|
|
203
|
+
status: "awaiting_funding",
|
|
204
|
+
sourceAmount: resolvedSourceAmount,
|
|
205
|
+
targetAmount: data.targetAmount || 0,
|
|
206
|
+
exchangeRate: data.exchangeRate || 0,
|
|
207
|
+
fee: {
|
|
208
|
+
amount: data.fee?.amount || 0,
|
|
209
|
+
percentage: data.fee?.percentage || 0,
|
|
210
|
+
},
|
|
211
|
+
expiresAt: new Date(data.expiresAt || Date.now() + 3600000),
|
|
212
|
+
paymentDetails: {
|
|
213
|
+
address: data.paymentAddress,
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Swap stablecoins from EVM to BTC on Arkade.
|
|
219
|
+
*/
|
|
220
|
+
async swapStablecoinToBtc(params) {
|
|
221
|
+
const arkAddress = await this.wallet.getAddress();
|
|
222
|
+
const targetAddress = params.targetAddress || arkAddress;
|
|
223
|
+
const response = await this.fetchApi("/swap/evm-to-arkade", {
|
|
224
|
+
method: "POST",
|
|
225
|
+
body: JSON.stringify({
|
|
226
|
+
sourceChain: params.sourceChain,
|
|
227
|
+
sourceToken: params.sourceToken,
|
|
228
|
+
sourceAmount: params.sourceAmount,
|
|
229
|
+
targetAddress,
|
|
230
|
+
userAddress: params.userAddress,
|
|
231
|
+
referralCode: params.referralCode || this.referralCode,
|
|
232
|
+
}),
|
|
233
|
+
});
|
|
234
|
+
if (!response.ok) {
|
|
235
|
+
throw new Error(`Failed to create swap: ${response.statusText}`);
|
|
236
|
+
}
|
|
237
|
+
const data = (await response.json());
|
|
238
|
+
// Store swap locally
|
|
239
|
+
const storedSwap = {
|
|
240
|
+
swapId: data.swapId,
|
|
241
|
+
direction: "stablecoin_to_btc",
|
|
242
|
+
status: "awaiting_funding",
|
|
243
|
+
sourceToken: params.sourceToken,
|
|
244
|
+
targetToken: "btc_arkade",
|
|
245
|
+
sourceAmount: params.sourceAmount,
|
|
246
|
+
targetAmount: data.targetAmount || 0,
|
|
247
|
+
exchangeRate: data.exchangeRate || 0,
|
|
248
|
+
createdAt: Date.now(),
|
|
249
|
+
response: data,
|
|
250
|
+
};
|
|
251
|
+
this.swapStorage.set(data.swapId, storedSwap);
|
|
252
|
+
return {
|
|
253
|
+
swapId: data.swapId,
|
|
254
|
+
status: "awaiting_funding",
|
|
255
|
+
sourceAmount: params.sourceAmount,
|
|
256
|
+
targetAmount: data.targetAmount || 0,
|
|
257
|
+
exchangeRate: data.exchangeRate || 0,
|
|
258
|
+
fee: {
|
|
259
|
+
amount: data.fee?.amount || 0,
|
|
260
|
+
percentage: data.fee?.percentage || 0,
|
|
261
|
+
},
|
|
262
|
+
expiresAt: new Date(data.expiresAt || Date.now() + 3600000),
|
|
263
|
+
paymentDetails: {
|
|
264
|
+
address: data.htlcAddress,
|
|
265
|
+
callData: data.fundingCallData,
|
|
266
|
+
},
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Get the status of a swap.
|
|
271
|
+
*/
|
|
272
|
+
async getSwapStatus(swapId) {
|
|
273
|
+
const response = await this.fetchApi(`/swap/${swapId}`);
|
|
274
|
+
if (!response.ok) {
|
|
275
|
+
throw new Error(`Failed to get swap status: ${response.statusText}`);
|
|
276
|
+
}
|
|
277
|
+
const data = (await response.json());
|
|
278
|
+
// Update local storage
|
|
279
|
+
const stored = this.swapStorage.get(swapId);
|
|
280
|
+
if (stored) {
|
|
281
|
+
stored.status = data.status;
|
|
282
|
+
stored.txid = data.txid;
|
|
283
|
+
if (data.status === "completed") {
|
|
284
|
+
stored.completedAt = Date.now();
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
return {
|
|
288
|
+
id: swapId,
|
|
289
|
+
direction: data.direction || stored?.direction || "btc_to_stablecoin",
|
|
290
|
+
status: data.status,
|
|
291
|
+
sourceToken: data.sourceToken || stored?.sourceToken || "",
|
|
292
|
+
targetToken: data.targetToken || stored?.targetToken || "",
|
|
293
|
+
sourceAmount: data.sourceAmount || stored?.sourceAmount || 0,
|
|
294
|
+
targetAmount: data.targetAmount || stored?.targetAmount || 0,
|
|
295
|
+
exchangeRate: data.exchangeRate || stored?.exchangeRate || 0,
|
|
296
|
+
createdAt: new Date(data.createdAt || stored?.createdAt || Date.now()),
|
|
297
|
+
completedAt: data.completedAt ? new Date(data.completedAt) : undefined,
|
|
298
|
+
txid: data.txid,
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Get pending stablecoin swaps.
|
|
303
|
+
*/
|
|
304
|
+
async getPendingSwaps() {
|
|
305
|
+
const pending = [];
|
|
306
|
+
for (const [id, swap] of this.swapStorage) {
|
|
307
|
+
if (swap.status !== "completed" &&
|
|
308
|
+
swap.status !== "expired" &&
|
|
309
|
+
swap.status !== "refunded" &&
|
|
310
|
+
swap.status !== "failed") {
|
|
311
|
+
try {
|
|
312
|
+
const status = await this.getSwapStatus(id);
|
|
313
|
+
pending.push(status);
|
|
314
|
+
}
|
|
315
|
+
catch {
|
|
316
|
+
// Swap might not exist on server anymore
|
|
317
|
+
pending.push({
|
|
318
|
+
id,
|
|
319
|
+
direction: swap.direction,
|
|
320
|
+
status: swap.status,
|
|
321
|
+
sourceToken: swap.sourceToken,
|
|
322
|
+
targetToken: swap.targetToken,
|
|
323
|
+
sourceAmount: swap.sourceAmount,
|
|
324
|
+
targetAmount: swap.targetAmount,
|
|
325
|
+
exchangeRate: swap.exchangeRate,
|
|
326
|
+
createdAt: new Date(swap.createdAt),
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
return pending;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Get stablecoin swap history.
|
|
335
|
+
*/
|
|
336
|
+
async getSwapHistory() {
|
|
337
|
+
const history = [];
|
|
338
|
+
for (const [id, swap] of this.swapStorage) {
|
|
339
|
+
history.push({
|
|
340
|
+
id,
|
|
341
|
+
direction: swap.direction,
|
|
342
|
+
status: swap.status,
|
|
343
|
+
sourceToken: swap.sourceToken,
|
|
344
|
+
targetToken: swap.targetToken,
|
|
345
|
+
sourceAmount: swap.sourceAmount,
|
|
346
|
+
targetAmount: swap.targetAmount,
|
|
347
|
+
exchangeRate: swap.exchangeRate,
|
|
348
|
+
createdAt: new Date(swap.createdAt),
|
|
349
|
+
completedAt: swap.completedAt ? new Date(swap.completedAt) : undefined,
|
|
350
|
+
txid: swap.txid,
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
return history.sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Get available trading pairs.
|
|
357
|
+
*/
|
|
358
|
+
async getAvailablePairs() {
|
|
359
|
+
const response = await this.fetchApi("/pairs");
|
|
360
|
+
if (!response.ok) {
|
|
361
|
+
throw new Error(`Failed to get pairs: ${response.statusText}`);
|
|
362
|
+
}
|
|
363
|
+
const data = (await response.json());
|
|
364
|
+
return (data.pairs || data || []).map((pair) => ({
|
|
365
|
+
from: pair.from || pair.source,
|
|
366
|
+
to: pair.to || pair.target,
|
|
367
|
+
minAmount: pair.minAmount || pair.min || 0,
|
|
368
|
+
maxAmount: pair.maxAmount || pair.max || 0,
|
|
369
|
+
feePercentage: pair.feePercentage || pair.fee || 0,
|
|
370
|
+
}));
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Claim funds from a completed swap.
|
|
374
|
+
*/
|
|
375
|
+
async claimSwap(swapId) {
|
|
376
|
+
const response = await this.fetchApi(`/swap/${swapId}/claim`, {
|
|
377
|
+
method: "POST",
|
|
378
|
+
});
|
|
379
|
+
if (!response.ok) {
|
|
380
|
+
throw new Error(`Failed to claim swap: ${response.statusText}`);
|
|
381
|
+
}
|
|
382
|
+
const data = (await response.json());
|
|
383
|
+
// Update local storage
|
|
384
|
+
const stored = this.swapStorage.get(swapId);
|
|
385
|
+
if (stored) {
|
|
386
|
+
stored.status = "completed";
|
|
387
|
+
stored.completedAt = Date.now();
|
|
388
|
+
stored.txid = data.txid;
|
|
389
|
+
}
|
|
390
|
+
return { txid: data.txid };
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Refund an expired or failed swap.
|
|
394
|
+
*/
|
|
395
|
+
async refundSwap(swapId) {
|
|
396
|
+
const response = await this.fetchApi(`/swap/${swapId}/refund`, {
|
|
397
|
+
method: "POST",
|
|
398
|
+
});
|
|
399
|
+
if (!response.ok) {
|
|
400
|
+
throw new Error(`Failed to refund swap: ${response.statusText}`);
|
|
401
|
+
}
|
|
402
|
+
const data = (await response.json());
|
|
403
|
+
// Update local storage
|
|
404
|
+
const stored = this.swapStorage.get(swapId);
|
|
405
|
+
if (stored) {
|
|
406
|
+
stored.status = "refunded";
|
|
407
|
+
stored.txid = data.txid;
|
|
408
|
+
}
|
|
409
|
+
return { txid: data.txid };
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* Get the underlying wallet instance.
|
|
413
|
+
*/
|
|
414
|
+
getWallet() {
|
|
415
|
+
return this.wallet;
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* Get token decimals for a stablecoin.
|
|
419
|
+
*/
|
|
420
|
+
getTokenDecimals(token) {
|
|
421
|
+
return TOKEN_DECIMALS[token] || 6;
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Helper to fetch from LendaSwap API.
|
|
425
|
+
*/
|
|
426
|
+
async fetchApi(path, options = {}) {
|
|
427
|
+
const url = `${this.apiUrl.replace(/\/$/, "")}${path}`;
|
|
428
|
+
return fetch(url, {
|
|
429
|
+
...options,
|
|
430
|
+
headers: {
|
|
431
|
+
"Content-Type": "application/json",
|
|
432
|
+
"X-API-Key": this.apiKey,
|
|
433
|
+
...options.headers,
|
|
434
|
+
},
|
|
435
|
+
});
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* Create a LendaSwapSkill from a wallet and API key.
|
|
440
|
+
*
|
|
441
|
+
* @param wallet - The Arkade wallet to use
|
|
442
|
+
* @param apiKey - LendaSwap API key
|
|
443
|
+
* @param options - Optional configuration
|
|
444
|
+
* @returns A new LendaSwapSkill instance
|
|
445
|
+
*/
|
|
446
|
+
export function createLendaSwapSkill(wallet, apiKey, options) {
|
|
447
|
+
return new LendaSwapSkill({
|
|
448
|
+
wallet,
|
|
449
|
+
apiKey,
|
|
450
|
+
...options,
|
|
451
|
+
});
|
|
452
|
+
}
|
|
453
|
+
//# sourceMappingURL=lendaswap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lendaswap.js","sourceRoot":"","sources":["../../../src/skills/lendaswap.ts"],"names":[],"mappings":"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"}
|