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 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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EAChB,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;;;;;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,eA/EM,SAAS,EAAE,WAAW,uBAAuB,KAAG,OAAO,CAAC,iBAAiB,CAAC,EA+E9E,OAAO,eAtEH,SAAS,EAAE,WAAW,uBAAuB,KAAG,OAAO,CAAC,iBAAiB,CAAC,EAsErE,OAAO,eA7DZ,SAAS,EAAE,YAAW,qBAAqB,KAAQ,OAAO,CAAC,iBAAiB,CAAC,EA6D/D,IAAI,SAlD3B,eAAe,cAAc,SAAS,EAAE,YAAW,kBAAkB,KAAQ,OAAO,CAAC,iBAAiB,CAkDjE,CAAC"}
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":"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"}
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
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,eAAe,CAAC;AAE/D;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,SAAS,GAAG,eAAe,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,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.6",
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",