@ickb/sdk 1000.0.26 → 1000.0.40

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.
@@ -1,13 +1,15 @@
1
1
  import { ccc, type Epoch } from "@ckb-ccc/core";
2
2
  import { SmartTransaction, type ScriptDeps, type UdtCell, type CapacityCell } from "@ickb/utils";
3
- import { IckbManager, LogicManager, OwnedOwnerManager, type IckbDepositCell, type ReceiptCell, type WithdrawalGroups } from "@ickb/core";
4
- import { OrderManager, Ratio, type OrderCell, type OrderGroup } from "@ickb/order";
3
+ import { IckbUdtManager, LogicManager, OwnedOwnerManager, type IckbDepositCell, type ReceiptCell, type WithdrawalGroups } from "@ickb/core";
4
+ import { DaoManager, type DaoCell } from "@ickb/dao";
5
+ import { OrderManager, type OrderCell, type OrderGroup, type RatioLike } from "@ickb/order";
5
6
  export declare class IckbController {
6
- ickbManager: IckbManager;
7
- logicManager: LogicManager;
8
- ownedOwnerManager: OwnedOwnerManager;
9
- orderManager: OrderManager;
10
- constructor(ickbManager: IckbManager, logicManager: LogicManager, ownedOwnerManager: OwnedOwnerManager, orderManager: OrderManager);
7
+ readonly ickbUdtManager: IckbUdtManager;
8
+ readonly logicManager: LogicManager;
9
+ readonly ownedOwnerManager: OwnedOwnerManager;
10
+ readonly orderManager: OrderManager;
11
+ readonly daoManager: DaoManager;
12
+ constructor(ickbUdtManager: IckbUdtManager, logicManager: LogicManager, ownedOwnerManager: OwnedOwnerManager, orderManager: OrderManager, daoManager: DaoManager);
11
13
  static fromDeps({ xudt, dao, ickbLogic, ownedOwner, order, }: {
12
14
  xudt: ScriptDeps;
13
15
  dao: ScriptDeps;
@@ -15,15 +17,9 @@ export declare class IckbController {
15
17
  ownedOwner: ScriptDeps;
16
18
  order: ScriptDeps;
17
19
  }): IckbController;
18
- previewConversion(isCkb2Udt: boolean, amount: ccc.FixedPoint, options: ({
19
- ratio: Ratio;
20
- } | {
21
- tip: ccc.ClientBlockHeader;
22
- }) & {
23
- fee?: {
24
- numerator: ccc.Num;
25
- denominator: ccc.Num;
26
- };
20
+ previewConversion(isCkb2Udt: boolean, amount: ccc.FixedPoint, rate: RatioLike | ccc.ClientBlockHeader, fee?: {
21
+ numerator: ccc.Num;
22
+ denominator: ccc.Num;
27
23
  }): ccc.FixedPoint;
28
24
  convert(options: {
29
25
  signer: ccc.Signer;
@@ -39,7 +35,7 @@ export declare class IckbController {
39
35
  };
40
36
  }): Promise<Conversion | undefined>;
41
37
  private attemptConversion;
42
- getL1State(client: ccc.Client, locks: ccc.ScriptLike[], options?: {
38
+ getL1State(client: ccc.Client, locks: ccc.Script[], options?: {
43
39
  minLockUp?: ccc.Epoch;
44
40
  maxLockUp?: ccc.Epoch;
45
41
  }): Promise<{
@@ -72,6 +68,8 @@ export interface UserCells {
72
68
  receipts: ReceiptCell[];
73
69
  withdrawalGroups: WithdrawalGroups[];
74
70
  orders: OrderGroup[];
71
+ deposits: DaoCell[];
72
+ withdrawalRequests: DaoCell[];
75
73
  }
76
74
  export interface Conversion {
77
75
  tx: SmartTransaction;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAIL,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,YAAY,EAGlB,MAAM,aAAa,CAAC;AACrB,OAAO,EAIL,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACtB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAEL,YAAY,EACZ,KAAK,EACL,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAErB,qBAAa,cAAc;IAEhB,WAAW,EAAE,WAAW;IACxB,YAAY,EAAE,YAAY;IAC1B,iBAAiB,EAAE,iBAAiB;IACpC,YAAY,EAAE,YAAY;gBAH1B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,YAAY;IAGnC,MAAM,CAAC,QAAQ,CAAC,EACd,IAAI,EACJ,GAAG,EACH,SAAS,EACT,UAAU,EACV,KAAK,GACN,EAAE;QACD,IAAI,EAAE,UAAU,CAAC;QACjB,GAAG,EAAE,UAAU,CAAC;QAChB,SAAS,EAAE,UAAU,CAAC;QACtB,UAAU,EAAE,UAAU,CAAC;QACvB,KAAK,EAAE,UAAU,CAAC;KACnB,GAAG,cAAc;IAyBlB,iBAAiB,CACf,SAAS,EAAE,OAAO,EAClB,MAAM,EAAE,GAAG,CAAC,UAAU,EACtB,OAAO,EAAE,CAAC;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,GAAG;QAAE,GAAG,EAAE,GAAG,CAAC,iBAAiB,CAAA;KAAE,CAAC,GAAG;QAC7D,GAAG,CAAC,EAAE;YACJ,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC;YACnB,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC;SACtB,CAAC;KACH,GACA,GAAG,CAAC,UAAU;IAmBX,OAAO,CAAC,OAAO,EAAE;QACrB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC;QACnB,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC;QACvB,SAAS,EAAE,SAAS,CAAC;QACrB,YAAY,EAAE,GAAG,CAAC,UAAU,CAAC;QAC7B,MAAM,EAAE,WAAW,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,GAAG,CAAC,EAAE;YACJ,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC;YACnB,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC;SACtB,CAAC;KACH,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;YAuBrB,iBAAiB;IA4GzB,UAAU,CACd,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,EACvB,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC;QACtB,SAAS,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC;KACvB,GACA,OAAO,CAAC;QACT,MAAM,EAAE,WAAW,CAAC;QACpB,IAAI,EAAE,SAAS,CAAC;KACjB,CAAC;IAsEF,MAAM,CAAC,UAAU,CAAC,EAChB,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,gBAAgB,EAChB,MAAM,GACP,EAAE,SAAS,GAAG,OAAO;CAuBvB;AAED,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC;IACpB,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC;IACjB,GAAG,EAAE,GAAG,CAAC,iBAAiB,CAAC;IAC3B,aAAa,EAAE;QACb,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC;QAClB,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC;KACnB,CAAC;IACF,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC;IAC9B,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC;IAC9B,QAAQ,EAAE,CAAC,eAAe,GAAG;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;IAC1D,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,gBAAgB,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC;CACjB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/cjs/index.js CHANGED
@@ -7,11 +7,12 @@ const core_2 = require("@ickb/core");
7
7
  const dao_1 = require("@ickb/dao");
8
8
  const order_1 = require("@ickb/order");
9
9
  class IckbController {
10
- constructor(ickbManager, logicManager, ownedOwnerManager, orderManager) {
11
- this.ickbManager = ickbManager;
10
+ constructor(ickbUdtManager, logicManager, ownedOwnerManager, orderManager, daoManager) {
11
+ this.ickbUdtManager = ickbUdtManager;
12
12
  this.logicManager = logicManager;
13
13
  this.ownedOwnerManager = ownedOwnerManager;
14
14
  this.orderManager = orderManager;
15
+ this.daoManager = daoManager;
15
16
  }
16
17
  static fromDeps({ xudt, dao, ickbLogic, ownedOwner, order, }) {
17
18
  const daoManager = dao_1.DaoManager.fromDeps(dao);
@@ -20,17 +21,13 @@ class IckbController {
20
21
  script: new core_1.ccc.Script(codeHash, hashType, [ickbLogic.script.hash(), "00000080"].join("")),
21
22
  cellDeps,
22
23
  };
23
- const ickbManager = core_2.IckbManager.fromDeps(ickbXudt, daoManager);
24
- return new IckbController(ickbManager, core_2.LogicManager.fromDeps(ickbLogic, daoManager, ickbManager), core_2.OwnedOwnerManager.fromDeps(ownedOwner, daoManager, ickbManager), order_1.OrderManager.fromDeps(order, ickbManager));
24
+ const ickbUdtManager = core_2.IckbUdtManager.fromDeps(ickbXudt, daoManager);
25
+ return new IckbController(ickbUdtManager, core_2.LogicManager.fromDeps(ickbLogic, daoManager, ickbUdtManager), core_2.OwnedOwnerManager.fromDeps(ownedOwner, daoManager, ickbUdtManager), order_1.OrderManager.fromDeps(order, ickbUdtManager), daoManager);
25
26
  }
26
- previewConversion(isCkb2Udt, amount, options) {
27
- // TODO: make compatible with logic.convert(isCkb2Udt, amount, options)!!!
28
- const { ckbScale, udtScale } = "ratio" in options ? options.ratio : (0, core_2.ickbExchangeRatio)(options.tip);
29
- let convertedAmount = isCkb2Udt
30
- ? (amount * ckbScale) / udtScale
31
- : (amount * udtScale) / ckbScale;
32
- if (options.fee) {
33
- const { numerator, denominator } = options.fee;
27
+ previewConversion(isCkb2Udt, amount, rate, fee) {
28
+ let convertedAmount = (0, core_2.convert)(isCkb2Udt, amount, rate);
29
+ if (fee) {
30
+ const { numerator, denominator } = fee;
34
31
  convertedAmount -= (convertedAmount * numerator) / denominator;
35
32
  }
36
33
  return convertedAmount;
@@ -51,96 +48,89 @@ class IckbController {
51
48
  return (cache[n] =
52
49
  cache[n] ?? this.attemptConversion(n, info, address, options));
53
50
  };
54
- return attempt(await asyncBinarySearch(N, async (n) => (await attempt(n)) !== undefined));
51
+ return attempt(await (0, utils_1.asyncBinarySearch)(N, async (n) => (await attempt(n)) !== undefined));
55
52
  }
56
53
  async attemptConversion(n, info, address, { signer, isCkb2Udt, amount, userCells, system: { feeRate, tip, deposits, ckbDepositCap, exchangeRatio }, }) {
57
- let tx = OfflineTransaction.default();
58
- const maturities = [];
59
- let ckbFee = core_1.ccc.Zero;
60
- if (n > 0) {
61
- if (isCkb2Udt) {
62
- amount -= ckbDepositCap * BigInt(n);
63
- if (amount < 0n) {
64
- // Too many Deposits respectfully to the amount
65
- return undefined;
54
+ try {
55
+ const tx = utils_1.SmartTransaction.default();
56
+ const maturities = [];
57
+ let ckbFee = core_1.ccc.Zero;
58
+ if (n > 0) {
59
+ if (isCkb2Udt) {
60
+ amount -= ckbDepositCap * BigInt(n);
61
+ if (amount < 0n) {
62
+ // Too many Deposits respectfully to the amount
63
+ return undefined;
64
+ }
65
+ this.logicManager.deposit(tx, n, ckbDepositCap, address.script);
66
66
  }
67
- this.logicManager.deposit(tx, n, ckbDepositCap, address.script);
68
- }
69
- else {
70
- const myDeposits = deposits.slice(0, n);
71
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
72
- amount -= myDeposits.slice(-1)[0].udtCumulative;
73
- if (amount < 0n) {
74
- // Too many Withdrawal Requests respectfully to the amount
75
- return undefined;
67
+ else {
68
+ const myDeposits = deposits.slice(0, n);
69
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
70
+ amount -= myDeposits.slice(-1)[0].udtCumulative;
71
+ if (amount < 0n) {
72
+ // Too many Withdrawal Requests respectfully to the amount
73
+ return undefined;
74
+ }
75
+ this.ownedOwnerManager.requestWithdrawal(tx, myDeposits, address.script);
76
+ maturities.push(...myDeposits.map((d) => d.maturity));
76
77
  }
77
- this.ownedOwnerManager.requestWithdrawal(tx, myDeposits, address.script);
78
- maturities.push(...myDeposits.map((d) => d.maturity));
79
78
  }
80
- }
81
- if (amount > 0n) {
82
- this.orderManager.mint(tx, address.script, info, isCkb2Udt ? amount : core_1.ccc.Zero, isCkb2Udt ? core_1.ccc.Zero : amount);
83
- const ratio = isCkb2Udt ? info.ckbToUdt : info.udtToCkb;
84
- const convertedAmount = (0, core_2.convert)(isCkb2Udt, amount, ratio);
85
- ckbFee = isCkb2Udt
86
- ? amount - (0, core_2.convert)(false, convertedAmount, exchangeRatio)
87
- : (0, core_2.convert)(true, amount, exchangeRatio) - convertedAmount;
88
- maturities.push(
89
- // TODO: use real world data from deposits, open orders and bot balances
90
- orderMaturityEstimate(isCkb2Udt, amount, tip));
91
- }
92
- // Check that order provides enough fee to the bot for being matched
93
- // feeRate is a good approximation of the bot tx size matching the order
94
- if (10n * (feeRate - ckbFee) > ckbFee) {
95
- return undefined;
96
- }
97
- const { receipts, withdrawalGroups, orders, udts, capacities } = userCells;
98
- this.logicManager.completeDeposit(tx, receipts);
99
- this.ownedOwnerManager.withdraw(tx, withdrawalGroups); //TODO: ignore not isReady cells in method!!!
100
- for (const order of orders) {
101
- this.orderManager.melt(tx, order); //TODO: allow melting multiple groups and give choices!!!
102
- }
103
- // const outputLen = tx.inputs.length;??
104
- // Give choice that let user add this cells the way he prefer!! (Either here or at completeFeeBy)
105
- this.ickbManager.addUdts(tx, udts);
106
- utils_1.CapacityManager.addCapacities(tx, capacities);
107
- const outputLen = tx.outputs.length;
108
- try {
109
- await tx.completeFeeBy(signer, feeRate);
110
- // TODO: check in SmartTransaction for 64 output cells in DAO transactions
111
- if (tx.outputs.length > 64) {
79
+ if (amount > 0n) {
80
+ this.orderManager.mint(tx, address.script, info, isCkb2Udt ? amount : core_1.ccc.Zero, isCkb2Udt ? core_1.ccc.Zero : amount);
81
+ const ratio = isCkb2Udt ? info.ckbToUdt : info.udtToCkb;
82
+ const convertedAmount = (0, core_2.convert)(isCkb2Udt, amount, ratio);
83
+ ckbFee = isCkb2Udt
84
+ ? amount - (0, core_2.convert)(false, convertedAmount, exchangeRatio)
85
+ : (0, core_2.convert)(true, amount, exchangeRatio) - convertedAmount;
86
+ maturities.push(
87
+ // TODO: use real world data from deposits, open orders and bot balances
88
+ orderMaturityEstimate(isCkb2Udt, amount, tip));
89
+ }
90
+ // Check that order provides enough fee to the bot for being matched
91
+ // feeRate is a good approximation of the bot tx size matching the order
92
+ if (10n * (feeRate - ckbFee) > ckbFee) {
112
93
  return undefined;
113
94
  }
95
+ const { receipts, withdrawalGroups, orders, udts, capacities } = userCells;
96
+ this.logicManager.completeDeposit(tx, receipts);
97
+ this.ownedOwnerManager.withdraw(tx, withdrawalGroups, {
98
+ isReadyOnly: true,
99
+ });
100
+ this.orderManager.melt(tx, orders);
101
+ this.ickbUdtManager.addUdts(tx, udts);
102
+ utils_1.CapacityManager.addCapacities(tx, capacities);
103
+ // Throw an error if inputs do not cover for outputs
104
+ await new utils_1.RestrictedTransaction(tx).completeFeeBy(signer, feeRate);
105
+ // Find the maturity most distant in the future
106
+ const maturity = maturities.reduce((a, b) => (0, utils_1.epochCompare)(a, b) === -1 ? b : a);
107
+ return {
108
+ tx,
109
+ ckbFee,
110
+ maturity,
111
+ };
114
112
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
115
113
  }
116
114
  catch (_) {
117
115
  return undefined;
118
116
  }
119
- // Revert any change cells
120
- tx.outputs = tx.outputs.slice(outputLen);
121
- tx = utils_1.SmartTransaction.from(tx);
122
- const maturity = maturities.reduce((a, b) => (0, utils_1.epochCompare)(a, b) === -1 ? b : a);
123
- return {
124
- tx,
125
- ckbFee,
126
- maturity,
127
- };
128
117
  }
129
118
  // TODO: Allow filtering which cells are fetched
130
119
  async getL1State(client, locks, options) {
131
120
  const tip = await client.getTipHeader();
132
121
  const onChain = true;
133
122
  const opts = { ...options, tip, onChain };
134
- const [feeRate, depositPool, capacities, udts, receipts, withdrawalGroups, orders,] = await Promise.all([
135
- // TODO: fetch user NervosDAO cells
136
- // TODO: fetch bot cells for estimating timings
123
+ const [feeRate, depositPool, capacities, udts, receipts, withdrawalGroups, orders, deposits, withdrawalRequests,] = await Promise.all([
137
124
  client.getFeeRate(),
138
- (0, utils_1.arrayFrom)(this.logicManager.findDeposits(client, opts)),
139
- (0, utils_1.arrayFrom)(utils_1.CapacityManager.findCapacities(client, locks, opts)),
140
- (0, utils_1.arrayFrom)(this.ickbManager.findUdts(client, locks, opts)),
141
- (0, utils_1.arrayFrom)(this.logicManager.findReceipts(client, locks, opts)),
142
- (0, utils_1.arrayFrom)(this.ownedOwnerManager.findWithdrawalGroups(client, locks, opts)),
143
- this.orderManager.findOrders(client),
125
+ (0, utils_1.collect)(this.logicManager.findDeposits(client, opts)),
126
+ (0, utils_1.collect)(utils_1.CapacityManager.findCapacities(client, locks, opts)),
127
+ (0, utils_1.collect)(this.ickbUdtManager.findUdts(client, locks, opts)),
128
+ (0, utils_1.collect)(this.logicManager.findReceipts(client, locks, opts)),
129
+ (0, utils_1.collect)(this.ownedOwnerManager.findWithdrawalGroups(client, locks, opts)),
130
+ (0, utils_1.collect)(this.orderManager.findOrders(client)),
131
+ (0, utils_1.collect)(this.daoManager.findDeposits(client, locks, opts)),
132
+ (0, utils_1.collect)(this.daoManager.findWithdrawalRequests(client, locks, opts)),
133
+ // TODO: fetch bot cells for estimating timings
144
134
  ]);
145
135
  // Sort depositPool by maturity
146
136
  depositPool.sort((a, b) => (0, utils_1.epochCompare)(a.maturity, b.maturity));
@@ -162,7 +152,7 @@ class IckbController {
162
152
  }
163
153
  }
164
154
  const exchangeRatio = (0, core_2.ickbExchangeRatio)(tip);
165
- const ckbDepositCap = (0, core_2.convert)(false, core_2.ICKB_DEPOSIT_CAP, exchangeRatio); // TODO: Remove export from core
155
+ const ckbDepositCap = (0, core_2.convert)(false, core_2.ICKB_DEPOSIT_CAP, exchangeRatio);
166
156
  return {
167
157
  system: {
168
158
  feeRate,
@@ -179,6 +169,8 @@ class IckbController {
179
169
  receipts,
180
170
  withdrawalGroups,
181
171
  orders: userOrders,
172
+ deposits,
173
+ withdrawalRequests,
182
174
  },
183
175
  };
184
176
  }
@@ -218,51 +210,4 @@ function orderMaturityEstimate(isCkb2Udt, amount, tip) {
218
210
  4n * 60n,
219
211
  ]);
220
212
  }
221
- class OfflineTransaction extends utils_1.SmartTransaction {
222
- clone() {
223
- const result = super.clone();
224
- // Keep inputs metadata when cloning, so it will not refetch that data
225
- result.inputs = [...this.inputs];
226
- return new OfflineTransaction(result);
227
- }
228
- // eslint-disable-next-line @typescript-eslint/require-await
229
- async completeInputs(_0, _1, _2, init) {
230
- // Disable completeInputs, so it will not fetch additional cells
231
- return {
232
- addedCount: 0,
233
- accumulated: init,
234
- };
235
- }
236
- // Reimplement the rest of transformations
237
- constructor(tx) {
238
- super(tx.version, tx.cellDeps, tx.headerDeps, tx.inputs, tx.outputs, tx.outputsData, tx.witnesses, tx.udtHandlers, tx.headers);
239
- }
240
- static default() {
241
- return new OfflineTransaction(super.default());
242
- }
243
- static fromLumosSkeleton(skeleton) {
244
- return new OfflineTransaction(super.fromLumosSkeleton(skeleton));
245
- }
246
- static from(txLike) {
247
- return new OfflineTransaction(utils_1.SmartTransaction.from(txLike));
248
- }
249
- }
250
- // TODO: utils.binarySearch is sync, need an async one for await the result!!!!!!!!!!!!
251
- async function asyncBinarySearch(n, f) {
252
- // Define f(-1) == false and f(n) == true.
253
- // Invariant: f(i-1) == false, f(j) == true.
254
- let [i, j] = [0, n];
255
- while (i < j) {
256
- const h = Math.trunc((i + j) / 2);
257
- // i ≤ h < j
258
- if (!(await f(h))) {
259
- i = h + 1; // preserves f(i-1) == false
260
- }
261
- else {
262
- j = h; // preserves f(j) == true
263
- }
264
- }
265
- // i == j, f(i-1) == false, and f(j) (= f(i)) == true => answer is i.
266
- return i;
267
- }
268
213
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,15 @@
1
1
  import { ccc, type Epoch } from "@ckb-ccc/core";
2
2
  import { SmartTransaction, type ScriptDeps, type UdtCell, type CapacityCell } from "@ickb/utils";
3
- import { IckbManager, LogicManager, OwnedOwnerManager, type IckbDepositCell, type ReceiptCell, type WithdrawalGroups } from "@ickb/core";
4
- import { OrderManager, Ratio, type OrderCell, type OrderGroup } from "@ickb/order";
3
+ import { IckbUdtManager, LogicManager, OwnedOwnerManager, type IckbDepositCell, type ReceiptCell, type WithdrawalGroups } from "@ickb/core";
4
+ import { DaoManager, type DaoCell } from "@ickb/dao";
5
+ import { OrderManager, type OrderCell, type OrderGroup, type RatioLike } from "@ickb/order";
5
6
  export declare class IckbController {
6
- ickbManager: IckbManager;
7
- logicManager: LogicManager;
8
- ownedOwnerManager: OwnedOwnerManager;
9
- orderManager: OrderManager;
10
- constructor(ickbManager: IckbManager, logicManager: LogicManager, ownedOwnerManager: OwnedOwnerManager, orderManager: OrderManager);
7
+ readonly ickbUdtManager: IckbUdtManager;
8
+ readonly logicManager: LogicManager;
9
+ readonly ownedOwnerManager: OwnedOwnerManager;
10
+ readonly orderManager: OrderManager;
11
+ readonly daoManager: DaoManager;
12
+ constructor(ickbUdtManager: IckbUdtManager, logicManager: LogicManager, ownedOwnerManager: OwnedOwnerManager, orderManager: OrderManager, daoManager: DaoManager);
11
13
  static fromDeps({ xudt, dao, ickbLogic, ownedOwner, order, }: {
12
14
  xudt: ScriptDeps;
13
15
  dao: ScriptDeps;
@@ -15,15 +17,9 @@ export declare class IckbController {
15
17
  ownedOwner: ScriptDeps;
16
18
  order: ScriptDeps;
17
19
  }): IckbController;
18
- previewConversion(isCkb2Udt: boolean, amount: ccc.FixedPoint, options: ({
19
- ratio: Ratio;
20
- } | {
21
- tip: ccc.ClientBlockHeader;
22
- }) & {
23
- fee?: {
24
- numerator: ccc.Num;
25
- denominator: ccc.Num;
26
- };
20
+ previewConversion(isCkb2Udt: boolean, amount: ccc.FixedPoint, rate: RatioLike | ccc.ClientBlockHeader, fee?: {
21
+ numerator: ccc.Num;
22
+ denominator: ccc.Num;
27
23
  }): ccc.FixedPoint;
28
24
  convert(options: {
29
25
  signer: ccc.Signer;
@@ -39,7 +35,7 @@ export declare class IckbController {
39
35
  };
40
36
  }): Promise<Conversion | undefined>;
41
37
  private attemptConversion;
42
- getL1State(client: ccc.Client, locks: ccc.ScriptLike[], options?: {
38
+ getL1State(client: ccc.Client, locks: ccc.Script[], options?: {
43
39
  minLockUp?: ccc.Epoch;
44
40
  maxLockUp?: ccc.Epoch;
45
41
  }): Promise<{
@@ -72,6 +68,8 @@ export interface UserCells {
72
68
  receipts: ReceiptCell[];
73
69
  withdrawalGroups: WithdrawalGroups[];
74
70
  orders: OrderGroup[];
71
+ deposits: DaoCell[];
72
+ withdrawalRequests: DaoCell[];
75
73
  }
76
74
  export interface Conversion {
77
75
  tx: SmartTransaction;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -1,14 +1,15 @@
1
1
  import { ccc } from "@ckb-ccc/core";
2
- import { arrayFrom, epochCompare, CapacityManager, SmartTransaction, epochAdd, } from "@ickb/utils";
3
- import { convert, ICKB_DEPOSIT_CAP, ickbExchangeRatio, IckbManager, LogicManager, OwnedOwnerManager, } from "@ickb/core";
2
+ import { collect, epochCompare, CapacityManager, SmartTransaction, epochAdd, asyncBinarySearch, RestrictedTransaction, } from "@ickb/utils";
3
+ import { convert, ICKB_DEPOSIT_CAP, ickbExchangeRatio, IckbUdtManager, LogicManager, OwnedOwnerManager, } from "@ickb/core";
4
4
  import { DaoManager } from "@ickb/dao";
5
5
  import { Info, OrderManager, Ratio, } from "@ickb/order";
6
6
  export class IckbController {
7
- constructor(ickbManager, logicManager, ownedOwnerManager, orderManager) {
8
- this.ickbManager = ickbManager;
7
+ constructor(ickbUdtManager, logicManager, ownedOwnerManager, orderManager, daoManager) {
8
+ this.ickbUdtManager = ickbUdtManager;
9
9
  this.logicManager = logicManager;
10
10
  this.ownedOwnerManager = ownedOwnerManager;
11
11
  this.orderManager = orderManager;
12
+ this.daoManager = daoManager;
12
13
  }
13
14
  static fromDeps({ xudt, dao, ickbLogic, ownedOwner, order, }) {
14
15
  const daoManager = DaoManager.fromDeps(dao);
@@ -17,17 +18,13 @@ export class IckbController {
17
18
  script: new ccc.Script(codeHash, hashType, [ickbLogic.script.hash(), "00000080"].join("")),
18
19
  cellDeps,
19
20
  };
20
- const ickbManager = IckbManager.fromDeps(ickbXudt, daoManager);
21
- return new IckbController(ickbManager, LogicManager.fromDeps(ickbLogic, daoManager, ickbManager), OwnedOwnerManager.fromDeps(ownedOwner, daoManager, ickbManager), OrderManager.fromDeps(order, ickbManager));
21
+ const ickbUdtManager = IckbUdtManager.fromDeps(ickbXudt, daoManager);
22
+ return new IckbController(ickbUdtManager, LogicManager.fromDeps(ickbLogic, daoManager, ickbUdtManager), OwnedOwnerManager.fromDeps(ownedOwner, daoManager, ickbUdtManager), OrderManager.fromDeps(order, ickbUdtManager), daoManager);
22
23
  }
23
- previewConversion(isCkb2Udt, amount, options) {
24
- // TODO: make compatible with logic.convert(isCkb2Udt, amount, options)!!!
25
- const { ckbScale, udtScale } = "ratio" in options ? options.ratio : ickbExchangeRatio(options.tip);
26
- let convertedAmount = isCkb2Udt
27
- ? (amount * ckbScale) / udtScale
28
- : (amount * udtScale) / ckbScale;
29
- if (options.fee) {
30
- const { numerator, denominator } = options.fee;
24
+ previewConversion(isCkb2Udt, amount, rate, fee) {
25
+ let convertedAmount = convert(isCkb2Udt, amount, rate);
26
+ if (fee) {
27
+ const { numerator, denominator } = fee;
31
28
  convertedAmount -= (convertedAmount * numerator) / denominator;
32
29
  }
33
30
  return convertedAmount;
@@ -51,93 +48,86 @@ export class IckbController {
51
48
  return attempt(await asyncBinarySearch(N, async (n) => (await attempt(n)) !== undefined));
52
49
  }
53
50
  async attemptConversion(n, info, address, { signer, isCkb2Udt, amount, userCells, system: { feeRate, tip, deposits, ckbDepositCap, exchangeRatio }, }) {
54
- let tx = OfflineTransaction.default();
55
- const maturities = [];
56
- let ckbFee = ccc.Zero;
57
- if (n > 0) {
58
- if (isCkb2Udt) {
59
- amount -= ckbDepositCap * BigInt(n);
60
- if (amount < 0n) {
61
- // Too many Deposits respectfully to the amount
62
- return undefined;
51
+ try {
52
+ const tx = SmartTransaction.default();
53
+ const maturities = [];
54
+ let ckbFee = ccc.Zero;
55
+ if (n > 0) {
56
+ if (isCkb2Udt) {
57
+ amount -= ckbDepositCap * BigInt(n);
58
+ if (amount < 0n) {
59
+ // Too many Deposits respectfully to the amount
60
+ return undefined;
61
+ }
62
+ this.logicManager.deposit(tx, n, ckbDepositCap, address.script);
63
63
  }
64
- this.logicManager.deposit(tx, n, ckbDepositCap, address.script);
65
- }
66
- else {
67
- const myDeposits = deposits.slice(0, n);
68
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
69
- amount -= myDeposits.slice(-1)[0].udtCumulative;
70
- if (amount < 0n) {
71
- // Too many Withdrawal Requests respectfully to the amount
72
- return undefined;
64
+ else {
65
+ const myDeposits = deposits.slice(0, n);
66
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
67
+ amount -= myDeposits.slice(-1)[0].udtCumulative;
68
+ if (amount < 0n) {
69
+ // Too many Withdrawal Requests respectfully to the amount
70
+ return undefined;
71
+ }
72
+ this.ownedOwnerManager.requestWithdrawal(tx, myDeposits, address.script);
73
+ maturities.push(...myDeposits.map((d) => d.maturity));
73
74
  }
74
- this.ownedOwnerManager.requestWithdrawal(tx, myDeposits, address.script);
75
- maturities.push(...myDeposits.map((d) => d.maturity));
76
75
  }
77
- }
78
- if (amount > 0n) {
79
- this.orderManager.mint(tx, address.script, info, isCkb2Udt ? amount : ccc.Zero, isCkb2Udt ? ccc.Zero : amount);
80
- const ratio = isCkb2Udt ? info.ckbToUdt : info.udtToCkb;
81
- const convertedAmount = convert(isCkb2Udt, amount, ratio);
82
- ckbFee = isCkb2Udt
83
- ? amount - convert(false, convertedAmount, exchangeRatio)
84
- : convert(true, amount, exchangeRatio) - convertedAmount;
85
- maturities.push(
86
- // TODO: use real world data from deposits, open orders and bot balances
87
- orderMaturityEstimate(isCkb2Udt, amount, tip));
88
- }
89
- // Check that order provides enough fee to the bot for being matched
90
- // feeRate is a good approximation of the bot tx size matching the order
91
- if (10n * (feeRate - ckbFee) > ckbFee) {
92
- return undefined;
93
- }
94
- const { receipts, withdrawalGroups, orders, udts, capacities } = userCells;
95
- this.logicManager.completeDeposit(tx, receipts);
96
- this.ownedOwnerManager.withdraw(tx, withdrawalGroups); //TODO: ignore not isReady cells in method!!!
97
- for (const order of orders) {
98
- this.orderManager.melt(tx, order); //TODO: allow melting multiple groups and give choices!!!
99
- }
100
- // const outputLen = tx.inputs.length;??
101
- // Give choice that let user add this cells the way he prefer!! (Either here or at completeFeeBy)
102
- this.ickbManager.addUdts(tx, udts);
103
- CapacityManager.addCapacities(tx, capacities);
104
- const outputLen = tx.outputs.length;
105
- try {
106
- await tx.completeFeeBy(signer, feeRate);
107
- // TODO: check in SmartTransaction for 64 output cells in DAO transactions
108
- if (tx.outputs.length > 64) {
76
+ if (amount > 0n) {
77
+ this.orderManager.mint(tx, address.script, info, isCkb2Udt ? amount : ccc.Zero, isCkb2Udt ? ccc.Zero : amount);
78
+ const ratio = isCkb2Udt ? info.ckbToUdt : info.udtToCkb;
79
+ const convertedAmount = convert(isCkb2Udt, amount, ratio);
80
+ ckbFee = isCkb2Udt
81
+ ? amount - convert(false, convertedAmount, exchangeRatio)
82
+ : convert(true, amount, exchangeRatio) - convertedAmount;
83
+ maturities.push(
84
+ // TODO: use real world data from deposits, open orders and bot balances
85
+ orderMaturityEstimate(isCkb2Udt, amount, tip));
86
+ }
87
+ // Check that order provides enough fee to the bot for being matched
88
+ // feeRate is a good approximation of the bot tx size matching the order
89
+ if (10n * (feeRate - ckbFee) > ckbFee) {
109
90
  return undefined;
110
91
  }
92
+ const { receipts, withdrawalGroups, orders, udts, capacities } = userCells;
93
+ this.logicManager.completeDeposit(tx, receipts);
94
+ this.ownedOwnerManager.withdraw(tx, withdrawalGroups, {
95
+ isReadyOnly: true,
96
+ });
97
+ this.orderManager.melt(tx, orders);
98
+ this.ickbUdtManager.addUdts(tx, udts);
99
+ CapacityManager.addCapacities(tx, capacities);
100
+ // Throw an error if inputs do not cover for outputs
101
+ await new RestrictedTransaction(tx).completeFeeBy(signer, feeRate);
102
+ // Find the maturity most distant in the future
103
+ const maturity = maturities.reduce((a, b) => epochCompare(a, b) === -1 ? b : a);
104
+ return {
105
+ tx,
106
+ ckbFee,
107
+ maturity,
108
+ };
111
109
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
112
110
  }
113
111
  catch (_) {
114
112
  return undefined;
115
113
  }
116
- // Revert any change cells
117
- tx.outputs = tx.outputs.slice(outputLen);
118
- tx = SmartTransaction.from(tx);
119
- const maturity = maturities.reduce((a, b) => epochCompare(a, b) === -1 ? b : a);
120
- return {
121
- tx,
122
- ckbFee,
123
- maturity,
124
- };
125
114
  }
126
115
  // TODO: Allow filtering which cells are fetched
127
116
  async getL1State(client, locks, options) {
128
117
  const tip = await client.getTipHeader();
129
118
  const onChain = true;
130
119
  const opts = { ...options, tip, onChain };
131
- const [feeRate, depositPool, capacities, udts, receipts, withdrawalGroups, orders,] = await Promise.all([
132
- // TODO: fetch user NervosDAO cells
133
- // TODO: fetch bot cells for estimating timings
120
+ const [feeRate, depositPool, capacities, udts, receipts, withdrawalGroups, orders, deposits, withdrawalRequests,] = await Promise.all([
134
121
  client.getFeeRate(),
135
- arrayFrom(this.logicManager.findDeposits(client, opts)),
136
- arrayFrom(CapacityManager.findCapacities(client, locks, opts)),
137
- arrayFrom(this.ickbManager.findUdts(client, locks, opts)),
138
- arrayFrom(this.logicManager.findReceipts(client, locks, opts)),
139
- arrayFrom(this.ownedOwnerManager.findWithdrawalGroups(client, locks, opts)),
140
- this.orderManager.findOrders(client),
122
+ collect(this.logicManager.findDeposits(client, opts)),
123
+ collect(CapacityManager.findCapacities(client, locks, opts)),
124
+ collect(this.ickbUdtManager.findUdts(client, locks, opts)),
125
+ collect(this.logicManager.findReceipts(client, locks, opts)),
126
+ collect(this.ownedOwnerManager.findWithdrawalGroups(client, locks, opts)),
127
+ collect(this.orderManager.findOrders(client)),
128
+ collect(this.daoManager.findDeposits(client, locks, opts)),
129
+ collect(this.daoManager.findWithdrawalRequests(client, locks, opts)),
130
+ // TODO: fetch bot cells for estimating timings
141
131
  ]);
142
132
  // Sort depositPool by maturity
143
133
  depositPool.sort((a, b) => epochCompare(a.maturity, b.maturity));
@@ -159,7 +149,7 @@ export class IckbController {
159
149
  }
160
150
  }
161
151
  const exchangeRatio = ickbExchangeRatio(tip);
162
- const ckbDepositCap = convert(false, ICKB_DEPOSIT_CAP, exchangeRatio); // TODO: Remove export from core
152
+ const ckbDepositCap = convert(false, ICKB_DEPOSIT_CAP, exchangeRatio);
163
153
  return {
164
154
  system: {
165
155
  feeRate,
@@ -176,6 +166,8 @@ export class IckbController {
176
166
  receipts,
177
167
  withdrawalGroups,
178
168
  orders: userOrders,
169
+ deposits,
170
+ withdrawalRequests,
179
171
  },
180
172
  };
181
173
  }
@@ -214,51 +206,4 @@ function orderMaturityEstimate(isCkb2Udt, amount, tip) {
214
206
  4n * 60n,
215
207
  ]);
216
208
  }
217
- class OfflineTransaction extends SmartTransaction {
218
- clone() {
219
- const result = super.clone();
220
- // Keep inputs metadata when cloning, so it will not refetch that data
221
- result.inputs = [...this.inputs];
222
- return new OfflineTransaction(result);
223
- }
224
- // eslint-disable-next-line @typescript-eslint/require-await
225
- async completeInputs(_0, _1, _2, init) {
226
- // Disable completeInputs, so it will not fetch additional cells
227
- return {
228
- addedCount: 0,
229
- accumulated: init,
230
- };
231
- }
232
- // Reimplement the rest of transformations
233
- constructor(tx) {
234
- super(tx.version, tx.cellDeps, tx.headerDeps, tx.inputs, tx.outputs, tx.outputsData, tx.witnesses, tx.udtHandlers, tx.headers);
235
- }
236
- static default() {
237
- return new OfflineTransaction(super.default());
238
- }
239
- static fromLumosSkeleton(skeleton) {
240
- return new OfflineTransaction(super.fromLumosSkeleton(skeleton));
241
- }
242
- static from(txLike) {
243
- return new OfflineTransaction(SmartTransaction.from(txLike));
244
- }
245
- }
246
- // TODO: utils.binarySearch is sync, need an async one for await the result!!!!!!!!!!!!
247
- async function asyncBinarySearch(n, f) {
248
- // Define f(-1) == false and f(n) == true.
249
- // Invariant: f(i-1) == false, f(j) == true.
250
- let [i, j] = [0, n];
251
- while (i < j) {
252
- const h = Math.trunc((i + j) / 2);
253
- // i ≤ h < j
254
- if (!(await f(h))) {
255
- i = h + 1; // preserves f(i-1) == false
256
- }
257
- else {
258
- j = h; // preserves f(j) == true
259
- }
260
- }
261
- // i == j, f(i-1) == false, and f(j) (= f(i)) == true => answer is i.
262
- return i;
263
- }
264
209
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ickb/sdk",
3
- "version": "1000.0.26",
3
+ "version": "1000.0.40",
4
4
  "description": "iCKB SDK built on top of CCC",
5
5
  "author": "phroi",
6
6
  "license": "MIT",
@@ -31,10 +31,10 @@
31
31
  },
32
32
  "dependencies": {
33
33
  "@ckb-ccc/core": "^1.8.0",
34
- "@ickb/core": "^1000.0.26",
35
- "@ickb/dao": "^1000.0.26",
36
- "@ickb/order": "^1000.0.26",
37
- "@ickb/utils": "^1000.0.24"
34
+ "@ickb/core": "^1000.0.39",
35
+ "@ickb/dao": "^1000.0.35",
36
+ "@ickb/order": "^1000.0.36",
37
+ "@ickb/utils": "^1000.0.40"
38
38
  },
39
39
  "scripts": {
40
40
  "build": "pnpm run build:esm && pnpm run build:cjs && node dist/cjs/index.js",
package/src/index.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { ccc, type Epoch } from "@ckb-ccc/core";
2
2
  import {
3
- arrayFrom,
3
+ collect,
4
4
  epochCompare,
5
5
  CapacityManager,
6
6
  SmartTransaction,
@@ -8,34 +8,37 @@ import {
8
8
  type UdtCell,
9
9
  type CapacityCell,
10
10
  epochAdd,
11
- type SmartTransactionLike,
11
+ asyncBinarySearch,
12
+ RestrictedTransaction,
12
13
  } from "@ickb/utils";
13
14
  import {
14
15
  convert,
15
16
  ICKB_DEPOSIT_CAP,
16
17
  ickbExchangeRatio,
17
- IckbManager,
18
+ IckbUdtManager,
18
19
  LogicManager,
19
20
  OwnedOwnerManager,
20
21
  type IckbDepositCell,
21
22
  type ReceiptCell,
22
23
  type WithdrawalGroups,
23
24
  } from "@ickb/core";
24
- import { DaoManager } from "@ickb/dao";
25
+ import { DaoManager, type DaoCell } from "@ickb/dao";
25
26
  import {
26
27
  Info,
27
28
  OrderManager,
28
29
  Ratio,
29
30
  type OrderCell,
30
31
  type OrderGroup,
32
+ type RatioLike,
31
33
  } from "@ickb/order";
32
34
 
33
35
  export class IckbController {
34
36
  constructor(
35
- public ickbManager: IckbManager,
36
- public logicManager: LogicManager,
37
- public ownedOwnerManager: OwnedOwnerManager,
38
- public orderManager: OrderManager,
37
+ public readonly ickbUdtManager: IckbUdtManager,
38
+ public readonly logicManager: LogicManager,
39
+ public readonly ownedOwnerManager: OwnedOwnerManager,
40
+ public readonly orderManager: OrderManager,
41
+ public readonly daoManager: DaoManager,
39
42
  ) {}
40
43
 
41
44
  static fromDeps({
@@ -65,37 +68,30 @@ export class IckbController {
65
68
  ),
66
69
  cellDeps,
67
70
  };
68
- const ickbManager = IckbManager.fromDeps(ickbXudt, daoManager);
71
+ const ickbUdtManager = IckbUdtManager.fromDeps(ickbXudt, daoManager);
69
72
 
70
73
  return new IckbController(
71
- ickbManager,
72
- LogicManager.fromDeps(ickbLogic, daoManager, ickbManager),
73
- OwnedOwnerManager.fromDeps(ownedOwner, daoManager, ickbManager),
74
- OrderManager.fromDeps(order, ickbManager),
74
+ ickbUdtManager,
75
+ LogicManager.fromDeps(ickbLogic, daoManager, ickbUdtManager),
76
+ OwnedOwnerManager.fromDeps(ownedOwner, daoManager, ickbUdtManager),
77
+ OrderManager.fromDeps(order, ickbUdtManager),
78
+ daoManager,
75
79
  );
76
80
  }
77
81
 
78
82
  previewConversion(
79
83
  isCkb2Udt: boolean,
80
84
  amount: ccc.FixedPoint,
81
- options: ({ ratio: Ratio } | { tip: ccc.ClientBlockHeader }) & {
82
- fee?: {
83
- numerator: ccc.Num;
84
- denominator: ccc.Num;
85
- };
85
+ rate: RatioLike | ccc.ClientBlockHeader,
86
+ fee?: {
87
+ numerator: ccc.Num;
88
+ denominator: ccc.Num;
86
89
  },
87
90
  ): ccc.FixedPoint {
88
- // TODO: make compatible with logic.convert(isCkb2Udt, amount, options)!!!
91
+ let convertedAmount = convert(isCkb2Udt, amount, rate);
89
92
 
90
- const { ckbScale, udtScale } =
91
- "ratio" in options ? options.ratio : ickbExchangeRatio(options.tip);
92
-
93
- let convertedAmount = isCkb2Udt
94
- ? (amount * ckbScale) / udtScale
95
- : (amount * udtScale) / ckbScale;
96
-
97
- if (options.fee) {
98
- const { numerator, denominator } = options.fee;
93
+ if (fee) {
94
+ const { numerator, denominator } = fee;
99
95
  convertedAmount -= (convertedAmount * numerator) / denominator;
100
96
  }
101
97
 
@@ -150,105 +146,98 @@ export class IckbController {
150
146
  system: { feeRate, tip, deposits, ckbDepositCap, exchangeRatio },
151
147
  }: Parameters<IckbController["convert"]>[0],
152
148
  ): ReturnType<IckbController["convert"]> {
153
- let tx: SmartTransaction = OfflineTransaction.default();
154
- const maturities: Epoch[] = [];
155
- let ckbFee = ccc.Zero;
156
-
157
- if (n > 0) {
158
- if (isCkb2Udt) {
159
- amount -= ckbDepositCap * BigInt(n);
160
- if (amount < 0n) {
161
- // Too many Deposits respectfully to the amount
162
- return undefined;
163
- }
164
- this.logicManager.deposit(tx, n, ckbDepositCap, address.script);
165
- } else {
166
- const myDeposits = deposits.slice(0, n);
167
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
168
- amount -= myDeposits.slice(-1)[0]!.udtCumulative;
169
- if (amount < 0n) {
170
- // Too many Withdrawal Requests respectfully to the amount
171
- return undefined;
149
+ try {
150
+ const tx = SmartTransaction.default();
151
+ const maturities: Epoch[] = [];
152
+ let ckbFee = ccc.Zero;
153
+
154
+ if (n > 0) {
155
+ if (isCkb2Udt) {
156
+ amount -= ckbDepositCap * BigInt(n);
157
+ if (amount < 0n) {
158
+ // Too many Deposits respectfully to the amount
159
+ return undefined;
160
+ }
161
+ this.logicManager.deposit(tx, n, ckbDepositCap, address.script);
162
+ } else {
163
+ const myDeposits = deposits.slice(0, n);
164
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
165
+ amount -= myDeposits.slice(-1)[0]!.udtCumulative;
166
+ if (amount < 0n) {
167
+ // Too many Withdrawal Requests respectfully to the amount
168
+ return undefined;
169
+ }
170
+ this.ownedOwnerManager.requestWithdrawal(
171
+ tx,
172
+ myDeposits,
173
+ address.script,
174
+ );
175
+ maturities.push(...myDeposits.map((d) => d.maturity));
172
176
  }
173
- this.ownedOwnerManager.requestWithdrawal(
177
+ }
178
+
179
+ if (amount > 0n) {
180
+ this.orderManager.mint(
174
181
  tx,
175
- myDeposits,
176
182
  address.script,
183
+ info,
184
+ isCkb2Udt ? amount : ccc.Zero,
185
+ isCkb2Udt ? ccc.Zero : amount,
186
+ );
187
+
188
+ const ratio = isCkb2Udt ? info.ckbToUdt : info.udtToCkb;
189
+ const convertedAmount = convert(isCkb2Udt, amount, ratio);
190
+ ckbFee = isCkb2Udt
191
+ ? amount - convert(false, convertedAmount, exchangeRatio)
192
+ : convert(true, amount, exchangeRatio) - convertedAmount;
193
+
194
+ maturities.push(
195
+ // TODO: use real world data from deposits, open orders and bot balances
196
+ orderMaturityEstimate(isCkb2Udt, amount, tip),
177
197
  );
178
- maturities.push(...myDeposits.map((d) => d.maturity));
179
198
  }
180
- }
181
199
 
182
- if (amount > 0n) {
183
- this.orderManager.mint(
184
- tx,
185
- address.script,
186
- info,
187
- isCkb2Udt ? amount : ccc.Zero,
188
- isCkb2Udt ? ccc.Zero : amount,
189
- );
200
+ // Check that order provides enough fee to the bot for being matched
201
+ // feeRate is a good approximation of the bot tx size matching the order
202
+ if (10n * (feeRate - ckbFee) > ckbFee) {
203
+ return undefined;
204
+ }
190
205
 
191
- const ratio = isCkb2Udt ? info.ckbToUdt : info.udtToCkb;
192
- const convertedAmount = convert(isCkb2Udt, amount, ratio);
193
- ckbFee = isCkb2Udt
194
- ? amount - convert(false, convertedAmount, exchangeRatio)
195
- : convert(true, amount, exchangeRatio) - convertedAmount;
206
+ const { receipts, withdrawalGroups, orders, udts, capacities } =
207
+ userCells;
196
208
 
197
- maturities.push(
198
- // TODO: use real world data from deposits, open orders and bot balances
199
- orderMaturityEstimate(isCkb2Udt, amount, tip),
200
- );
201
- }
209
+ this.logicManager.completeDeposit(tx, receipts);
210
+ this.ownedOwnerManager.withdraw(tx, withdrawalGroups, {
211
+ isReadyOnly: true,
212
+ });
213
+ this.orderManager.melt(tx, orders);
214
+ this.ickbUdtManager.addUdts(tx, udts);
215
+ CapacityManager.addCapacities(tx, capacities);
202
216
 
203
- // Check that order provides enough fee to the bot for being matched
204
- // feeRate is a good approximation of the bot tx size matching the order
205
- if (10n * (feeRate - ckbFee) > ckbFee) {
206
- return undefined;
207
- }
217
+ // Throw an error if inputs do not cover for outputs
218
+ await new RestrictedTransaction(tx).completeFeeBy(signer, feeRate);
208
219
 
209
- const { receipts, withdrawalGroups, orders, udts, capacities } = userCells;
220
+ // Find the maturity most distant in the future
221
+ const maturity = maturities.reduce((a, b) =>
222
+ epochCompare(a, b) === -1 ? b : a,
223
+ );
210
224
 
211
- this.logicManager.completeDeposit(tx, receipts);
212
- this.ownedOwnerManager.withdraw(tx, withdrawalGroups); //TODO: ignore not isReady cells in method!!!
213
- for (const order of orders) {
214
- this.orderManager.melt(tx, order); //TODO: allow melting multiple groups and give choices!!!
215
- }
216
- // const outputLen = tx.inputs.length;??
217
- // Give choice that let user add this cells the way he prefer!! (Either here or at completeFeeBy)
218
- this.ickbManager.addUdts(tx, udts);
219
- CapacityManager.addCapacities(tx, capacities);
220
- const outputLen = tx.outputs.length;
225
+ return {
226
+ tx,
227
+ ckbFee,
228
+ maturity,
229
+ };
221
230
 
222
- try {
223
- await tx.completeFeeBy(signer, feeRate);
224
- // TODO: check in SmartTransaction for 64 output cells in DAO transactions
225
- if (tx.outputs.length > 64) {
226
- return undefined;
227
- }
228
231
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
229
232
  } catch (_) {
230
233
  return undefined;
231
234
  }
232
-
233
- // Revert any change cells
234
- tx.outputs = tx.outputs.slice(outputLen);
235
- tx = SmartTransaction.from(tx);
236
-
237
- const maturity = maturities.reduce((a, b) =>
238
- epochCompare(a, b) === -1 ? b : a,
239
- );
240
-
241
- return {
242
- tx,
243
- ckbFee,
244
- maturity,
245
- };
246
235
  }
247
236
 
248
237
  // TODO: Allow filtering which cells are fetched
249
238
  async getL1State(
250
239
  client: ccc.Client,
251
- locks: ccc.ScriptLike[],
240
+ locks: ccc.Script[],
252
241
  options?: {
253
242
  minLockUp?: ccc.Epoch;
254
243
  maxLockUp?: ccc.Epoch;
@@ -268,18 +257,19 @@ export class IckbController {
268
257
  receipts,
269
258
  withdrawalGroups,
270
259
  orders,
260
+ deposits,
261
+ withdrawalRequests,
271
262
  ] = await Promise.all([
272
- // TODO: fetch user NervosDAO cells
273
- // TODO: fetch bot cells for estimating timings
274
263
  client.getFeeRate(),
275
- arrayFrom(this.logicManager.findDeposits(client, opts)),
276
- arrayFrom(CapacityManager.findCapacities(client, locks, opts)),
277
- arrayFrom(this.ickbManager.findUdts(client, locks, opts)),
278
- arrayFrom(this.logicManager.findReceipts(client, locks, opts)),
279
- arrayFrom(
280
- this.ownedOwnerManager.findWithdrawalGroups(client, locks, opts),
281
- ),
282
- this.orderManager.findOrders(client),
264
+ collect(this.logicManager.findDeposits(client, opts)),
265
+ collect(CapacityManager.findCapacities(client, locks, opts)),
266
+ collect(this.ickbUdtManager.findUdts(client, locks, opts)),
267
+ collect(this.logicManager.findReceipts(client, locks, opts)),
268
+ collect(this.ownedOwnerManager.findWithdrawalGroups(client, locks, opts)),
269
+ collect(this.orderManager.findOrders(client)),
270
+ collect(this.daoManager.findDeposits(client, locks, opts)),
271
+ collect(this.daoManager.findWithdrawalRequests(client, locks, opts)),
272
+ // TODO: fetch bot cells for estimating timings
283
273
  ]);
284
274
 
285
275
  // Sort depositPool by maturity
@@ -303,7 +293,7 @@ export class IckbController {
303
293
  }
304
294
 
305
295
  const exchangeRatio = ickbExchangeRatio(tip);
306
- const ckbDepositCap = convert(false, ICKB_DEPOSIT_CAP, exchangeRatio); // TODO: Remove export from core
296
+ const ckbDepositCap = convert(false, ICKB_DEPOSIT_CAP, exchangeRatio);
307
297
 
308
298
  return {
309
299
  system: {
@@ -321,6 +311,8 @@ export class IckbController {
321
311
  receipts,
322
312
  withdrawalGroups,
323
313
  orders: userOrders,
314
+ deposits,
315
+ withdrawalRequests,
324
316
  },
325
317
  };
326
318
  }
@@ -381,6 +373,8 @@ export interface UserCells {
381
373
  receipts: ReceiptCell[];
382
374
  withdrawalGroups: WithdrawalGroups[];
383
375
  orders: OrderGroup[];
376
+ deposits: DaoCell[];
377
+ withdrawalRequests: DaoCell[];
384
378
  }
385
379
 
386
380
  export interface Conversion {
@@ -403,77 +397,3 @@ function orderMaturityEstimate(
403
397
  4n * 60n,
404
398
  ]);
405
399
  }
406
-
407
- class OfflineTransaction extends SmartTransaction {
408
- override clone(): OfflineTransaction {
409
- const result = super.clone();
410
- // Keep inputs metadata when cloning, so it will not refetch that data
411
- result.inputs = [...this.inputs];
412
- return new OfflineTransaction(result);
413
- }
414
-
415
- // eslint-disable-next-line @typescript-eslint/require-await
416
- override async completeInputs<T>(
417
- _0: never,
418
- _1: never,
419
- _2: never,
420
- init: T,
421
- ): Promise<{ addedCount: number; accumulated?: T }> {
422
- // Disable completeInputs, so it will not fetch additional cells
423
- return {
424
- addedCount: 0,
425
- accumulated: init,
426
- };
427
- }
428
-
429
- // Reimplement the rest of transformations
430
-
431
- constructor(tx: SmartTransaction) {
432
- super(
433
- tx.version,
434
- tx.cellDeps,
435
- tx.headerDeps,
436
- tx.inputs,
437
- tx.outputs,
438
- tx.outputsData,
439
- tx.witnesses,
440
- tx.udtHandlers,
441
- tx.headers,
442
- );
443
- }
444
-
445
- static override default(): OfflineTransaction {
446
- return new OfflineTransaction(super.default());
447
- }
448
-
449
- static override fromLumosSkeleton(
450
- skeleton: ccc.LumosTransactionSkeletonType,
451
- ): OfflineTransaction {
452
- return new OfflineTransaction(super.fromLumosSkeleton(skeleton));
453
- }
454
-
455
- static override from(txLike: SmartTransactionLike): OfflineTransaction {
456
- return new OfflineTransaction(SmartTransaction.from(txLike));
457
- }
458
- }
459
-
460
- // TODO: utils.binarySearch is sync, need an async one for await the result!!!!!!!!!!!!
461
- async function asyncBinarySearch(
462
- n: number,
463
- f: (i: number) => Promise<boolean>,
464
- ): Promise<number> {
465
- // Define f(-1) == false and f(n) == true.
466
- // Invariant: f(i-1) == false, f(j) == true.
467
- let [i, j] = [0, n];
468
- while (i < j) {
469
- const h = Math.trunc((i + j) / 2);
470
- // i ≤ h < j
471
- if (!(await f(h))) {
472
- i = h + 1; // preserves f(i-1) == false
473
- } else {
474
- j = h; // preserves f(j) == true
475
- }
476
- }
477
- // i == j, f(i-1) == false, and f(j) (= f(i)) == true => answer is i.
478
- return i;
479
- }