ecash-quicksend 1.3.6 → 1.4.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 +48 -0
- package/dist/index.d.ts +18 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -2
- package/dist/index.js.map +1 -1
- package/dist/send/agorabuy.d.ts +15 -0
- package/dist/send/agorabuy.d.ts.map +1 -0
- package/dist/send/agorabuy.js +343 -0
- package/dist/send/agorabuy.js.map +1 -0
- package/dist/types.d.ts +74 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -13,6 +13,11 @@ npm install ecash-quicksend
|
|
|
13
13
|
|
|
14
14
|
## Migration Notes
|
|
15
15
|
|
|
16
|
+
### v1.4.0+
|
|
17
|
+
Added Agora DEX integration for buying tokens directly from the decentralized exchange. Two modes available:
|
|
18
|
+
- `acceptAgoraOffer()` - Buy from a specific offer (manual mode)
|
|
19
|
+
- `buyAgoraTokens()` - Auto-aggregate across multiple offers until target amount reached
|
|
20
|
+
|
|
16
21
|
### v1.3.3+
|
|
17
22
|
`Recipient.amount` unit is now clearly documented: satoshis for XEC (1 XEC = 100 sats), base atoms for SLP/ALP tokens. JSDoc and example comments updated.
|
|
18
23
|
|
|
@@ -88,6 +93,9 @@ await quick.sendAlp([
|
|
|
88
93
|
- `sendSlp(recipients, options)` - Send SLP tokens
|
|
89
94
|
- `sendAlp(recipients, options)` - Send ALP tokens
|
|
90
95
|
- `send(type, recipients, options?)` - Universal send method
|
|
96
|
+
- `fetchAgoraOffers(options)` - Query Agora DEX offers
|
|
97
|
+
- `acceptAgoraOffer(offer, options)` - Buy from specific Agora offer
|
|
98
|
+
- `buyAgoraTokens(options)` - Auto-buy tokens across multiple offers
|
|
91
99
|
|
|
92
100
|
### Options
|
|
93
101
|
|
|
@@ -149,6 +157,46 @@ await quick.sendSlp(recipients, {
|
|
|
149
157
|
});
|
|
150
158
|
```
|
|
151
159
|
|
|
160
|
+
## Agora DEX Integration
|
|
161
|
+
|
|
162
|
+
Buy tokens from Agora DEX with two modes:
|
|
163
|
+
|
|
164
|
+
### Mode 1: Manual (specify offer)
|
|
165
|
+
|
|
166
|
+
```javascript
|
|
167
|
+
// Step 1: Query offers
|
|
168
|
+
const offers = await quick.fetchAgoraOffers({
|
|
169
|
+
tokenId: 'your-token-id',
|
|
170
|
+
maxPrice: 5, // max 5 XEC per token
|
|
171
|
+
tokenDecimals: 2
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
// Step 2: Buy from specific offer
|
|
175
|
+
const result = await quick.acceptAgoraOffer(offers[0], {
|
|
176
|
+
amount: 100, // buy 100 tokens
|
|
177
|
+
tokenDecimals: 2,
|
|
178
|
+
mnemonic: 'your mnemonic'
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
console.log(result.txid);
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Mode 2: Auto-aggregate (multi-order)
|
|
185
|
+
|
|
186
|
+
```javascript
|
|
187
|
+
// Automatically buy across multiple offers
|
|
188
|
+
const result = await quick.buyAgoraTokens({
|
|
189
|
+
tokenId: 'your-token-id',
|
|
190
|
+
amount: 100000, // target amount
|
|
191
|
+
maxPrice: 2.8, // max price per token
|
|
192
|
+
tokenDecimals: 0,
|
|
193
|
+
mnemonic: 'your mnemonic'
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
console.log(`Bought ${result.totalBought} tokens in ${result.transactions.length} orders`);
|
|
197
|
+
console.log(`Avg price: ${result.avgPrice} XEC`);
|
|
198
|
+
```
|
|
199
|
+
|
|
152
200
|
## Error Handling
|
|
153
201
|
|
|
154
202
|
```javascript
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Recipient, TransactionResult, TokenTransactionOptions, XecTransactionOptions, GeneralSendOptions, TransactionType } from './types';
|
|
1
|
+
import { Recipient, TransactionResult, TokenTransactionOptions, XecTransactionOptions, GeneralSendOptions, TransactionType, AgoraFetchOptions, AgoraOffer, AgoraAcceptOptions, AgoraBuyResult, AgoraBuyOptions, AgoraBuyAggregateResult } from './types';
|
|
2
2
|
/**
|
|
3
3
|
* 统一交易管理器
|
|
4
4
|
* 支持 SLP、ALP 和 XEC 交易类型
|
|
@@ -22,6 +22,22 @@ declare class TransactionManager {
|
|
|
22
22
|
* @param options - UTXO选择策略字符串或包含utxoStrategy、addressIndex、mnemonic和chronik的选项对象
|
|
23
23
|
*/
|
|
24
24
|
sendXec(recipients: Recipient[], options?: XecTransactionOptions): Promise<TransactionResult>;
|
|
25
|
+
/**
|
|
26
|
+
* 查询 Agora 报价列表
|
|
27
|
+
* @param options - 查询参数
|
|
28
|
+
*/
|
|
29
|
+
fetchAgoraOffers(options: AgoraFetchOptions): Promise<AgoraOffer[]>;
|
|
30
|
+
/**
|
|
31
|
+
* 执行 Agora 成交购买(单笔模式)
|
|
32
|
+
* @param offer - fetchAgoraOffers 返回的报价对象
|
|
33
|
+
* @param options - 购买选项
|
|
34
|
+
*/
|
|
35
|
+
acceptAgoraOffer(offer: AgoraOffer, options: AgoraAcceptOptions): Promise<AgoraBuyResult>;
|
|
36
|
+
/**
|
|
37
|
+
* 聚合购买 Agora 代币(自动循环多个订单)
|
|
38
|
+
* @param options - 购买选项(指定数量和最大价格)
|
|
39
|
+
*/
|
|
40
|
+
buyAgoraTokens(options: AgoraBuyOptions): Promise<AgoraBuyAggregateResult>;
|
|
25
41
|
/**
|
|
26
42
|
* 通用发送方法
|
|
27
43
|
* @param type - 交易类型
|
|
@@ -33,5 +49,5 @@ declare class TransactionManager {
|
|
|
33
49
|
declare const quick: TransactionManager;
|
|
34
50
|
export default quick;
|
|
35
51
|
export { TransactionManager };
|
|
36
|
-
export declare const sendSlp: (recipients: Recipient[], options: TokenTransactionOptions) => Promise<TransactionResult>, sendAlp: (recipients: Recipient[], options: TokenTransactionOptions) => Promise<TransactionResult>, sendXec: (recipients: Recipient[], options?: XecTransactionOptions) => Promise<TransactionResult>, send: (type: TransactionType, recipients: Recipient[], options?: GeneralSendOptions) => Promise<TransactionResult>;
|
|
52
|
+
export declare const sendSlp: (recipients: Recipient[], options: TokenTransactionOptions) => Promise<TransactionResult>, sendAlp: (recipients: Recipient[], options: TokenTransactionOptions) => Promise<TransactionResult>, sendXec: (recipients: Recipient[], options?: XecTransactionOptions) => Promise<TransactionResult>, send: (type: TransactionType, recipients: Recipient[], options?: GeneralSendOptions) => Promise<TransactionResult>, fetchAgoraOffers: (options: AgoraFetchOptions) => Promise<AgoraOffer[]>, acceptAgoraOffer: (offer: AgoraOffer, options: AgoraAcceptOptions) => Promise<AgoraBuyResult>, buyAgoraTokens: (options: AgoraBuyOptions) => Promise<AgoraBuyAggregateResult>;
|
|
37
53
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,uBAAuB,EACxB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,cAAM,kBAAkB;IACtB;;;;OAIG;IACG,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIpG;;;;OAIG;IACG,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIpG;;;;OAIG;IACG,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKvG;;;OAGG;IACG,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIzE;;;;OAIG;IACG,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IAI/F;;;OAGG;IACG,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAIhF;;;;;OAKG;IACG,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAwCzH;AAGD,QAAA,MAAM,KAAK,oBAA2B,CAAC;AAGvC,eAAe,KAAK,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAG9B,eAAO,MAAQ,OAAO,eAxGM,SAAS,EAAE,WAAW,uBAAuB,KAAG,OAAO,CAAC,iBAAiB,CAAC,EAwG9E,OAAO,eA/FH,SAAS,EAAE,WAAW,uBAAuB,KAAG,OAAO,CAAC,iBAAiB,CAAC,EA+FrE,OAAO,eAtFZ,SAAS,EAAE,YAAW,qBAAqB,KAAQ,OAAO,CAAC,iBAAiB,CAAC,EAsF/D,IAAI,SAlD3B,eAAe,cAAc,SAAS,EAAE,YAAW,kBAAkB,KAAQ,OAAO,CAAC,iBAAiB,CAAC,EAkD1E,gBAAgB,YA7E9B,iBAAiB,KAAG,OAAO,CAAC,UAAU,EAAE,CAAC,EA6ET,gBAAgB,UApElD,UAAU,WAAW,kBAAkB,KAAG,OAAO,CAAC,cAAc,CAAC,EAoEb,cAAc,YA5DlE,eAAe,KAAG,OAAO,CAAC,uBAAuB,CA4D2B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.send = exports.sendXec = exports.sendAlp = exports.sendSlp = exports.TransactionManager = void 0;
|
|
3
|
+
exports.buyAgoraTokens = exports.acceptAgoraOffer = exports.fetchAgoraOffers = exports.send = exports.sendXec = exports.sendAlp = exports.sendSlp = exports.TransactionManager = void 0;
|
|
4
4
|
const tokensend_1 = require("./send/tokensend");
|
|
5
5
|
const xecsend_1 = require("./send/xecsend");
|
|
6
|
+
const agorabuy_1 = require("./send/agorabuy");
|
|
6
7
|
/**
|
|
7
8
|
* 统一交易管理器
|
|
8
9
|
* 支持 SLP、ALP 和 XEC 交易类型
|
|
@@ -33,6 +34,28 @@ class TransactionManager {
|
|
|
33
34
|
const { utxoStrategy = 'all', addressIndex = 0, mnemonic, chronik: chronikClient } = options;
|
|
34
35
|
return await (0, xecsend_1.createRawXecTransaction)(recipients, utxoStrategy, addressIndex, mnemonic, chronikClient);
|
|
35
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* 查询 Agora 报价列表
|
|
39
|
+
* @param options - 查询参数
|
|
40
|
+
*/
|
|
41
|
+
async fetchAgoraOffers(options) {
|
|
42
|
+
return await (0, agorabuy_1.fetchAgoraOffers)(options);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 执行 Agora 成交购买(单笔模式)
|
|
46
|
+
* @param offer - fetchAgoraOffers 返回的报价对象
|
|
47
|
+
* @param options - 购买选项
|
|
48
|
+
*/
|
|
49
|
+
async acceptAgoraOffer(offer, options) {
|
|
50
|
+
return await (0, agorabuy_1.acceptAgoraOffer)(offer, options);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* 聚合购买 Agora 代币(自动循环多个订单)
|
|
54
|
+
* @param options - 购买选项(指定数量和最大价格)
|
|
55
|
+
*/
|
|
56
|
+
async buyAgoraTokens(options) {
|
|
57
|
+
return await (0, agorabuy_1.buyAgoraTokens)(options);
|
|
58
|
+
}
|
|
36
59
|
/**
|
|
37
60
|
* 通用发送方法
|
|
38
61
|
* @param type - 交易类型
|
|
@@ -86,5 +109,5 @@ const quick = new TransactionManager();
|
|
|
86
109
|
// 导出实例和类
|
|
87
110
|
exports.default = quick;
|
|
88
111
|
// 便捷方法导出
|
|
89
|
-
exports.sendSlp = quick.sendSlp, exports.sendAlp = quick.sendAlp, exports.sendXec = quick.sendXec, exports.send = quick.send;
|
|
112
|
+
exports.sendSlp = quick.sendSlp, exports.sendAlp = quick.sendAlp, exports.sendXec = quick.sendXec, exports.send = quick.send, exports.fetchAgoraOffers = quick.fetchAgoraOffers, exports.acceptAgoraOffer = quick.acceptAgoraOffer, exports.buyAgoraTokens = quick.buyAgoraTokens;
|
|
90
113
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,gDAAoF;AACpF,4CAAyD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AgoraFetchOptions, AgoraOffer, AgoraAcceptOptions, AgoraBuyResult, AgoraBuyOptions, AgoraBuyAggregateResult } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* 第一步:查询报价
|
|
4
|
+
*/
|
|
5
|
+
export declare function fetchAgoraOffers(options: AgoraFetchOptions): Promise<AgoraOffer[]>;
|
|
6
|
+
/**
|
|
7
|
+
* 第二步:执行购买
|
|
8
|
+
*/
|
|
9
|
+
export declare function acceptAgoraOffer(agoraOffer: AgoraOffer, options: AgoraAcceptOptions): Promise<AgoraBuyResult>;
|
|
10
|
+
/**
|
|
11
|
+
* 聚合购买:自动循环购买多个订单直到达到目标数量
|
|
12
|
+
* 模式2:指定数量 + 最大价格,自动选择订单
|
|
13
|
+
*/
|
|
14
|
+
export declare function buyAgoraTokens(options: AgoraBuyOptions): Promise<AgoraBuyAggregateResult>;
|
|
15
|
+
//# sourceMappingURL=agorabuy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agorabuy.d.ts","sourceRoot":"","sources":["../../send/agorabuy.ts"],"names":[],"mappings":"AAYA,OAAO,EACH,iBAAiB,EACjB,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,uBAAuB,EAE1B,MAAM,UAAU,CAAC;AAoGlB;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAsCxF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAClC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,kBAAkB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAmIzB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA8E/F"}
|
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchAgoraOffers = fetchAgoraOffers;
|
|
4
|
+
exports.acceptAgoraOffer = acceptAgoraOffer;
|
|
5
|
+
exports.buyAgoraTokens = buyAgoraTokens;
|
|
6
|
+
const ecash_agora_1 = require("ecash-agora");
|
|
7
|
+
const ecash_lib_1 = require("ecash-lib");
|
|
8
|
+
const chronik_client_1 = require("../client/chronik-client");
|
|
9
|
+
const wallet_utils_1 = require("../wallet/wallet-utils");
|
|
10
|
+
const utxo_utils_1 = require("../utxo/utxo-utils");
|
|
11
|
+
const ecc = new ecash_lib_1.Ecc();
|
|
12
|
+
/**
|
|
13
|
+
* Agora 协议使用的固定 covenant 密钥对
|
|
14
|
+
* 这个密钥对不控制任何资金,只用于构建协议脚本
|
|
15
|
+
*/
|
|
16
|
+
const DUMMY_KEYPAIR = {
|
|
17
|
+
sk: (0, ecash_lib_1.fromHex)('33'.repeat(32)),
|
|
18
|
+
pk: (0, ecash_lib_1.fromHex)('023c72addb4fdf09af94f0c94d7fe92a386a7e70cf8a1d85916386bb2535c7b1b1'),
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* 规范化 UTXO 字段,确保兼容 ecash-agora 的 bigint 要求
|
|
22
|
+
*/
|
|
23
|
+
function patchUtxoForAgora(utxo) {
|
|
24
|
+
if (!utxo)
|
|
25
|
+
return utxo;
|
|
26
|
+
const patched = { ...utxo };
|
|
27
|
+
let sats;
|
|
28
|
+
if (typeof utxo.sats !== 'undefined') {
|
|
29
|
+
sats = typeof utxo.sats === 'bigint' ? utxo.sats : BigInt(utxo.sats);
|
|
30
|
+
}
|
|
31
|
+
else if (typeof utxo.value !== 'undefined') {
|
|
32
|
+
sats = typeof utxo.value === 'bigint' ? utxo.value : BigInt(utxo.value);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
sats = 0n;
|
|
36
|
+
}
|
|
37
|
+
patched.sats = sats;
|
|
38
|
+
patched.value = Number(sats);
|
|
39
|
+
if (utxo.slpToken || utxo.token) {
|
|
40
|
+
const token = utxo.slpToken || utxo.token;
|
|
41
|
+
const patchedToken = { ...token };
|
|
42
|
+
let atoms;
|
|
43
|
+
if (typeof token.atoms !== 'undefined') {
|
|
44
|
+
atoms = typeof token.atoms === 'bigint' ? token.atoms : BigInt(token.atoms);
|
|
45
|
+
}
|
|
46
|
+
else if (typeof token.amount !== 'undefined') {
|
|
47
|
+
atoms = typeof token.amount === 'bigint' ? token.amount : BigInt(token.amount);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
atoms = 0n;
|
|
51
|
+
}
|
|
52
|
+
patchedToken.atoms = atoms;
|
|
53
|
+
patchedToken.amount = atoms;
|
|
54
|
+
patched.slpToken = patchedToken;
|
|
55
|
+
patched.token = patchedToken;
|
|
56
|
+
}
|
|
57
|
+
return patched;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* 安全地获取代币原子单位数量
|
|
61
|
+
*/
|
|
62
|
+
function getTokenAtoms(token) {
|
|
63
|
+
if (!token)
|
|
64
|
+
return 0n;
|
|
65
|
+
if (typeof token.atoms !== 'undefined') {
|
|
66
|
+
return typeof token.atoms === 'bigint' ? token.atoms : BigInt(token.atoms);
|
|
67
|
+
}
|
|
68
|
+
if (typeof token.amount !== 'undefined') {
|
|
69
|
+
return typeof token.amount === 'bigint' ? token.amount : BigInt(token.amount);
|
|
70
|
+
}
|
|
71
|
+
return 0n;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* 包装 Chronik 客户端以自动规范化 UTXO 格式
|
|
75
|
+
*/
|
|
76
|
+
function createAgoraChronik(chronik) {
|
|
77
|
+
return {
|
|
78
|
+
plugin(name) {
|
|
79
|
+
const plugin = chronik.plugin(name);
|
|
80
|
+
if (name !== 'agora')
|
|
81
|
+
return plugin;
|
|
82
|
+
const compatPlugin = Object.create(plugin);
|
|
83
|
+
compatPlugin.utxos = async (groupHex) => {
|
|
84
|
+
const res = await plugin.utxos(groupHex);
|
|
85
|
+
if (Array.isArray(res.utxos)) {
|
|
86
|
+
res.utxos = res.utxos.map(patchUtxoForAgora);
|
|
87
|
+
}
|
|
88
|
+
return res;
|
|
89
|
+
};
|
|
90
|
+
return compatPlugin;
|
|
91
|
+
},
|
|
92
|
+
script(type, hash) {
|
|
93
|
+
const scriptApi = chronik.script(type, hash);
|
|
94
|
+
const compatScript = Object.create(scriptApi);
|
|
95
|
+
compatScript.utxos = async () => {
|
|
96
|
+
const res = await scriptApi.utxos();
|
|
97
|
+
if (Array.isArray(res.utxos)) {
|
|
98
|
+
res.utxos = res.utxos.map(patchUtxoForAgora);
|
|
99
|
+
}
|
|
100
|
+
return res;
|
|
101
|
+
};
|
|
102
|
+
return compatScript;
|
|
103
|
+
},
|
|
104
|
+
blockchainInfo: () => chronik.blockchainInfo(),
|
|
105
|
+
broadcastTx: (hex) => chronik.broadcastTx(hex),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* 第一步:查询报价
|
|
110
|
+
*/
|
|
111
|
+
async function fetchAgoraOffers(options) {
|
|
112
|
+
const { tokenId, tokenDecimals = 0, maxPrice = 0, chronik = chronik_client_1.chronik } = options;
|
|
113
|
+
const agora = new ecash_agora_1.Agora(createAgoraChronik(chronik));
|
|
114
|
+
const offers = await agora.activeOffersByTokenId(tokenId);
|
|
115
|
+
const result = offers.map(offer => {
|
|
116
|
+
let totalAtoms;
|
|
117
|
+
let totalSats;
|
|
118
|
+
let offerType;
|
|
119
|
+
if (offer.variant.type === 'PARTIAL') {
|
|
120
|
+
const partial = offer.variant.params;
|
|
121
|
+
totalAtoms = partial.offeredAtoms();
|
|
122
|
+
totalSats = partial.askedSats(totalAtoms);
|
|
123
|
+
offerType = 'PARTIAL';
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
totalAtoms = getTokenAtoms(offer.token);
|
|
127
|
+
totalSats = offer.askedSats();
|
|
128
|
+
offerType = 'ONE_TO_ONE';
|
|
129
|
+
}
|
|
130
|
+
const totalTokensWithDecimals = Number(totalAtoms) / Math.pow(10, tokenDecimals);
|
|
131
|
+
const totalXEC = Number(totalSats) / 100;
|
|
132
|
+
const pricePerToken = totalTokensWithDecimals > 0 ? totalXEC / totalTokensWithDecimals : 0;
|
|
133
|
+
return {
|
|
134
|
+
offer,
|
|
135
|
+
pricePerToken,
|
|
136
|
+
totalTokenAmount: totalTokensWithDecimals,
|
|
137
|
+
totalXEC,
|
|
138
|
+
offerType
|
|
139
|
+
};
|
|
140
|
+
});
|
|
141
|
+
return result
|
|
142
|
+
.filter(o => maxPrice <= 0 || o.pricePerToken <= maxPrice)
|
|
143
|
+
.sort((a, b) => a.pricePerToken - b.pricePerToken);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* 第二步:执行购买
|
|
147
|
+
*/
|
|
148
|
+
async function acceptAgoraOffer(agoraOffer, options) {
|
|
149
|
+
try {
|
|
150
|
+
const { amount, tokenDecimals = 0, addressIndex = 0, mnemonic, chronik = chronik_client_1.chronik } = options;
|
|
151
|
+
if (amount <= 0) {
|
|
152
|
+
return { success: false, reason: 'INVALID_AMOUNT', message: 'Amount must be greater than 0' };
|
|
153
|
+
}
|
|
154
|
+
const scaledAmount = BigInt(Math.floor(amount * Math.pow(10, tokenDecimals)));
|
|
155
|
+
const offer = agoraOffer.offer;
|
|
156
|
+
const availableAtoms = getTokenAtoms(offer.token);
|
|
157
|
+
let acceptedAtoms = scaledAmount;
|
|
158
|
+
if (offer.variant.type === 'PARTIAL') {
|
|
159
|
+
const partial = offer.variant.params;
|
|
160
|
+
const minAccepted = partial.minAcceptedAtoms();
|
|
161
|
+
if (acceptedAtoms < minAccepted) {
|
|
162
|
+
return {
|
|
163
|
+
success: false,
|
|
164
|
+
reason: 'AMOUNT_TOO_SMALL',
|
|
165
|
+
message: `Amount too small. Minimum: ${Number(minAccepted) / Math.pow(10, tokenDecimals)}`,
|
|
166
|
+
details: { minAccepted: Number(minAccepted) }
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
if (acceptedAtoms > availableAtoms) {
|
|
170
|
+
acceptedAtoms = availableAtoms;
|
|
171
|
+
}
|
|
172
|
+
// 调整为符合截断因子的有效数量
|
|
173
|
+
acceptedAtoms = partial.prepareAcceptedAtoms(acceptedAtoms);
|
|
174
|
+
// 如果购买后剩余量太小,则尝试全买(如果总余额允许)
|
|
175
|
+
const remaining = availableAtoms - acceptedAtoms;
|
|
176
|
+
if (remaining > 0n && remaining < minAccepted) {
|
|
177
|
+
// 自动调整为购买全部可用余额
|
|
178
|
+
acceptedAtoms = availableAtoms;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
if (acceptedAtoms !== availableAtoms) {
|
|
183
|
+
return {
|
|
184
|
+
success: false,
|
|
185
|
+
reason: 'ONE_TO_ONE_REQUIRED',
|
|
186
|
+
message: 'This offer requires buying the full amount (ONE_TO_ONE)'
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
const askedSats = offer.askedSats(acceptedAtoms);
|
|
191
|
+
const wallet = (0, wallet_utils_1.initializeWallet)(addressIndex, mnemonic);
|
|
192
|
+
const utxos = await (0, utxo_utils_1.getUtxos)(wallet.address, chronik);
|
|
193
|
+
// 获取区块高度以检查 coinbase 成熟度
|
|
194
|
+
let tipHeight = 0;
|
|
195
|
+
try {
|
|
196
|
+
const info = await chronik.blockchainInfo();
|
|
197
|
+
tipHeight = info.tipHeight;
|
|
198
|
+
}
|
|
199
|
+
catch (e) { }
|
|
200
|
+
const fuelUtxos = utxos.filter(utxo => {
|
|
201
|
+
if (utxo.slpToken)
|
|
202
|
+
return false;
|
|
203
|
+
if (utxo.isCoinbase && tipHeight > 0 && typeof utxo.blockHeight === 'number' && utxo.blockHeight > 0) {
|
|
204
|
+
return (tipHeight - utxo.blockHeight + 1) >= 100;
|
|
205
|
+
}
|
|
206
|
+
return true;
|
|
207
|
+
}).map(patchUtxoForAgora);
|
|
208
|
+
const totalBalance = fuelUtxos.reduce((s, u) => s + u.sats, 0n);
|
|
209
|
+
if (totalBalance < askedSats) {
|
|
210
|
+
return {
|
|
211
|
+
success: false,
|
|
212
|
+
reason: 'INSUFFICIENT_BALANCE',
|
|
213
|
+
message: `Need ${askedSats} sats for price, have ${totalBalance} sats`
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
const fuelInputs = fuelUtxos.map(utxo => ({
|
|
217
|
+
input: {
|
|
218
|
+
prevOut: { txid: utxo.txid, outIdx: utxo.vout },
|
|
219
|
+
signData: { sats: utxo.sats, outputScript: wallet.walletP2pkh }
|
|
220
|
+
},
|
|
221
|
+
signatory: (0, ecash_lib_1.P2PKHSignatory)(wallet.walletSk, wallet.walletPk, ecash_lib_1.ALL_BIP143)
|
|
222
|
+
}));
|
|
223
|
+
const acceptFeeSats = offer.acceptFeeSats({
|
|
224
|
+
recipientScript: wallet.walletP2pkh,
|
|
225
|
+
feePerKb: 1000n,
|
|
226
|
+
acceptedAtoms
|
|
227
|
+
});
|
|
228
|
+
if (totalBalance < (askedSats + acceptFeeSats)) {
|
|
229
|
+
return {
|
|
230
|
+
success: false,
|
|
231
|
+
reason: 'INSUFFICIENT_BALANCE_WITH_FEE',
|
|
232
|
+
message: `Need ${askedSats + acceptFeeSats} sats total, have ${totalBalance} sats`,
|
|
233
|
+
details: { price: askedSats, fee: acceptFeeSats }
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
const acceptTx = offer.acceptTx({
|
|
237
|
+
covenantSk: DUMMY_KEYPAIR.sk,
|
|
238
|
+
covenantPk: DUMMY_KEYPAIR.pk,
|
|
239
|
+
fuelInputs: fuelInputs,
|
|
240
|
+
recipientScript: wallet.walletP2pkh,
|
|
241
|
+
acceptedAtoms,
|
|
242
|
+
dustSats: 546n,
|
|
243
|
+
feePerKb: 1000n,
|
|
244
|
+
allowUnspendable: true
|
|
245
|
+
});
|
|
246
|
+
const broadcastRes = await chronik.broadcastTx((0, ecash_lib_1.toHex)(acceptTx.ser()));
|
|
247
|
+
return {
|
|
248
|
+
success: true,
|
|
249
|
+
reason: 'SUCCESS',
|
|
250
|
+
txid: broadcastRes.txid,
|
|
251
|
+
explorerLink: `https://explorer.e.cash/tx/${broadcastRes.txid}`,
|
|
252
|
+
actualAmount: Number(acceptedAtoms) / Math.pow(10, tokenDecimals),
|
|
253
|
+
totalXECPaid: Number(askedSats + acceptFeeSats) / 100,
|
|
254
|
+
pricePerToken: Number(askedSats) / 100 / (Number(acceptedAtoms) / Math.pow(10, tokenDecimals)),
|
|
255
|
+
networkFee: Number(acceptFeeSats) / 100
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
console.error('Agora accept failed:', error);
|
|
260
|
+
return {
|
|
261
|
+
success: false,
|
|
262
|
+
reason: 'ERROR',
|
|
263
|
+
message: error.message || 'Unknown error during Agora purchase'
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* 聚合购买:自动循环购买多个订单直到达到目标数量
|
|
269
|
+
* 模式2:指定数量 + 最大价格,自动选择订单
|
|
270
|
+
*/
|
|
271
|
+
async function buyAgoraTokens(options) {
|
|
272
|
+
const { tokenId, amount, maxPrice, tokenDecimals = 0, addressIndex, mnemonic, chronik } = options;
|
|
273
|
+
const transactions = [];
|
|
274
|
+
let totalBought = 0;
|
|
275
|
+
let totalXECPaid = 0;
|
|
276
|
+
let skippedOffers = 0;
|
|
277
|
+
try {
|
|
278
|
+
// 获取所有符合价格条件的订单
|
|
279
|
+
const offers = await fetchAgoraOffers({ tokenId, tokenDecimals, maxPrice, chronik });
|
|
280
|
+
if (offers.length === 0) {
|
|
281
|
+
return {
|
|
282
|
+
success: false,
|
|
283
|
+
totalBought: 0,
|
|
284
|
+
totalXECPaid: 0,
|
|
285
|
+
avgPrice: 0,
|
|
286
|
+
transactions: [],
|
|
287
|
+
skippedOffers: 0,
|
|
288
|
+
message: `No offers found below ${maxPrice} XEC`
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
// 循环购买订单
|
|
292
|
+
for (const offer of offers) {
|
|
293
|
+
if (totalBought >= amount)
|
|
294
|
+
break;
|
|
295
|
+
const remaining = amount - totalBought;
|
|
296
|
+
const buyAmount = Math.min(remaining, offer.totalTokenAmount);
|
|
297
|
+
const result = await acceptAgoraOffer(offer, {
|
|
298
|
+
amount: buyAmount,
|
|
299
|
+
tokenDecimals,
|
|
300
|
+
addressIndex,
|
|
301
|
+
mnemonic,
|
|
302
|
+
chronik
|
|
303
|
+
});
|
|
304
|
+
if (result.success && result.txid) {
|
|
305
|
+
transactions.push({
|
|
306
|
+
txid: result.txid,
|
|
307
|
+
amount: result.actualAmount || buyAmount,
|
|
308
|
+
price: result.pricePerToken || offer.pricePerToken,
|
|
309
|
+
fee: result.networkFee || 0
|
|
310
|
+
});
|
|
311
|
+
totalBought += result.actualAmount || buyAmount;
|
|
312
|
+
totalXECPaid += result.totalXECPaid || 0;
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
skippedOffers++;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
const avgPrice = totalBought > 0 ? totalXECPaid / totalBought : 0;
|
|
319
|
+
return {
|
|
320
|
+
success: totalBought > 0,
|
|
321
|
+
totalBought,
|
|
322
|
+
totalXECPaid,
|
|
323
|
+
avgPrice,
|
|
324
|
+
transactions,
|
|
325
|
+
skippedOffers,
|
|
326
|
+
message: totalBought >= amount
|
|
327
|
+
? `Successfully bought ${totalBought} tokens`
|
|
328
|
+
: `Partially filled: bought ${totalBought} of ${amount} tokens`
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
catch (error) {
|
|
332
|
+
return {
|
|
333
|
+
success: false,
|
|
334
|
+
totalBought,
|
|
335
|
+
totalXECPaid,
|
|
336
|
+
avgPrice: totalBought > 0 ? totalXECPaid / totalBought : 0,
|
|
337
|
+
transactions,
|
|
338
|
+
skippedOffers,
|
|
339
|
+
message: error.message || 'Unknown error during aggregate purchase'
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
//# sourceMappingURL=agorabuy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agorabuy.js","sourceRoot":"","sources":["../../send/agorabuy.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,78 @@
|
|
|
1
1
|
import { ChronikClient } from "chronik-client";
|
|
2
|
+
import { AgoraOffer as EcashAgoraOffer } from 'ecash-agora';
|
|
3
|
+
/**
|
|
4
|
+
* fetchAgoraOffers 的查询参数
|
|
5
|
+
*/
|
|
6
|
+
export interface AgoraFetchOptions {
|
|
7
|
+
tokenId: string;
|
|
8
|
+
tokenDecimals?: number;
|
|
9
|
+
maxPrice?: number;
|
|
10
|
+
chronik?: ChronikClient;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 单个报价(包含定价信息,内含原始 offer 对象供后续成交使用)
|
|
14
|
+
*/
|
|
15
|
+
export interface AgoraOffer {
|
|
16
|
+
offer: EcashAgoraOffer;
|
|
17
|
+
pricePerToken: number;
|
|
18
|
+
totalTokenAmount: number;
|
|
19
|
+
totalXEC: number;
|
|
20
|
+
offerType: 'PARTIAL' | 'ONE_TO_ONE';
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* acceptAgoraOffer 的执行参数
|
|
24
|
+
*/
|
|
25
|
+
export interface AgoraAcceptOptions {
|
|
26
|
+
amount: number;
|
|
27
|
+
tokenDecimals?: number;
|
|
28
|
+
addressIndex?: number;
|
|
29
|
+
mnemonic?: string;
|
|
30
|
+
chronik?: ChronikClient;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Agora 购买执行结果
|
|
34
|
+
*/
|
|
35
|
+
export interface AgoraBuyResult {
|
|
36
|
+
success: boolean;
|
|
37
|
+
reason: string;
|
|
38
|
+
message?: string;
|
|
39
|
+
txid?: string;
|
|
40
|
+
explorerLink?: string;
|
|
41
|
+
actualAmount?: number;
|
|
42
|
+
totalXECPaid?: number;
|
|
43
|
+
pricePerToken?: number;
|
|
44
|
+
networkFee?: number;
|
|
45
|
+
details?: Record<string, unknown>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 聚合购买选项(模式2:自动循环购买多个订单)
|
|
49
|
+
*/
|
|
50
|
+
export interface AgoraBuyOptions {
|
|
51
|
+
tokenId: string;
|
|
52
|
+
amount: number;
|
|
53
|
+
maxPrice: number;
|
|
54
|
+
tokenDecimals?: number;
|
|
55
|
+
addressIndex?: number;
|
|
56
|
+
mnemonic?: string;
|
|
57
|
+
chronik?: ChronikClient;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* 聚合购买结果
|
|
61
|
+
*/
|
|
62
|
+
export interface AgoraBuyAggregateResult {
|
|
63
|
+
success: boolean;
|
|
64
|
+
totalBought: number;
|
|
65
|
+
totalXECPaid: number;
|
|
66
|
+
avgPrice: number;
|
|
67
|
+
transactions: Array<{
|
|
68
|
+
txid: string;
|
|
69
|
+
amount: number;
|
|
70
|
+
price: number;
|
|
71
|
+
fee: number;
|
|
72
|
+
}>;
|
|
73
|
+
skippedOffers: number;
|
|
74
|
+
message?: string;
|
|
75
|
+
}
|
|
2
76
|
/**
|
|
3
77
|
* 交易接收方
|
|
4
78
|
*
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ecash-quicksend",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "A unified transaction manager for eCash (XEC), SLP, and ALP token transactions",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
],
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"chronik-client": "^3.1.1",
|
|
48
|
+
"ecash-agora": "^4.0.0",
|
|
48
49
|
"ecash-lib": "^3.2.0",
|
|
49
50
|
"wif": "^5.0.0"
|
|
50
51
|
},
|
|
@@ -54,7 +55,6 @@
|
|
|
54
55
|
"tsx": "^4.20.3",
|
|
55
56
|
"typescript": "^5.8.3"
|
|
56
57
|
},
|
|
57
|
-
"peerDependencies": {},
|
|
58
58
|
"exports": {
|
|
59
59
|
".": {
|
|
60
60
|
"import": "./dist/index.js",
|