@ickb/sdk 1000.0.26 → 1000.0.43

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
- import { ccc, type Epoch } from "@ckb-ccc/core";
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";
1
+ import { ccc } from "@ckb-ccc/core";
2
+ import { SmartTransaction, type ScriptDeps, type UdtCell, type CapacityCell, type ExchangeRatio } from "@ickb/utils";
3
+ import { IckbUdtManager, LogicManager, OwnedOwnerManager, type IckbDepositCell, type ReceiptCell, type WithdrawalGroup } from "@ickb/core";
4
+ import { DaoManager, type DaoCell } from "@ickb/dao";
5
+ import { OrderManager, type OrderCell, type OrderGroup } 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,42 +17,36 @@ 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
- };
27
- }): ccc.FixedPoint;
28
- convert(options: {
29
- signer: ccc.Signer;
20
+ static previewConversion(conversion: {
30
21
  isCkb2Udt: boolean;
31
22
  amount: ccc.FixedPoint;
23
+ rate: ExchangeRatio | ccc.ClientBlockHeader;
24
+ fee: ccc.Num;
25
+ }): {
26
+ rate: ExchangeRatio;
27
+ convertedAmount: ccc.FixedPoint;
28
+ };
29
+ convert(options: {
30
+ conversion: Parameters<typeof IckbController.previewConversion>[0] & {
31
+ ckbMinMatchLog?: number;
32
+ ckbMinFee?: ccc.Num;
33
+ };
34
+ signer: ccc.Signer;
32
35
  userCells: UserCells;
33
- minCkbChange: ccc.FixedPoint;
34
36
  system: SystemState;
35
- balance: Balance;
36
- fee?: {
37
- numerator: ccc.Num;
38
- denominator: ccc.Num;
37
+ filters: {
38
+ isReadyOnly: boolean;
39
+ isFulfilledOnly: boolean;
39
40
  };
40
41
  }): Promise<Conversion | undefined>;
41
- private attemptConversion;
42
- getL1State(client: ccc.Client, locks: ccc.ScriptLike[], options?: {
42
+ private attempt;
43
+ getL1State(client: ccc.Client, filter: Set<keyof UserCells | "depositPool">, locks: ccc.Script[], options?: {
43
44
  minLockUp?: ccc.Epoch;
44
45
  maxLockUp?: ccc.Epoch;
45
46
  }): Promise<{
46
47
  system: SystemState;
47
48
  user: UserCells;
48
49
  }>;
49
- static getBalance({ capacities, udts, receipts, withdrawalGroups, orders, }: UserCells): Balance;
50
- }
51
- export interface Balance {
52
- ckb: ccc.FixedPoint;
53
- udt: ccc.FixedPoint;
54
50
  }
55
51
  export interface SystemState {
56
52
  feeRate: ccc.Num;
@@ -61,21 +57,23 @@ export interface SystemState {
61
57
  };
62
58
  ckbDepositCap: ccc.FixedPoint;
63
59
  udtDepositCap: ccc.FixedPoint;
64
- deposits: (IckbDepositCell & {
60
+ depositPool: (IckbDepositCell & {
65
61
  udtCumulative: bigint;
66
62
  })[];
67
- orders: OrderCell[];
63
+ orderPool: OrderCell[];
68
64
  }
69
65
  export interface UserCells {
70
66
  capacities: CapacityCell[];
71
67
  udts: UdtCell[];
72
68
  receipts: ReceiptCell[];
73
- withdrawalGroups: WithdrawalGroups[];
69
+ withdrawalGroups: WithdrawalGroup[];
74
70
  orders: OrderGroup[];
71
+ deposits: DaoCell[];
72
+ withdrawalRequests: DaoCell[];
75
73
  }
76
74
  export interface Conversion {
77
75
  tx: SmartTransaction;
78
76
  ckbFee: ccc.FixedPoint;
79
- maturity: Epoch;
77
+ maturity: ccc.Epoch;
80
78
  }
81
79
  //# sourceMappingURL=index.d.ts.map
@@ -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/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,127 +21,162 @@ 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;
34
- convertedAmount -= (convertedAmount * numerator) / denominator;
27
+ // fee examples:
28
+ // 100000n => 0.001%
29
+ // 10000n => 0.01%
30
+ // 1000n => 0.1%
31
+ // 100n => 1%
32
+ // 10n => 10%
33
+ // 1n => 100%
34
+ // less than 1n => 0%
35
+ static previewConversion(conversion) {
36
+ const { isCkb2Udt, amount, fee } = conversion;
37
+ let rate = conversion.rate;
38
+ rate = "dao" in rate ? (0, core_2.ickbExchangeRatio)(rate) : rate;
39
+ if (fee > core_1.ccc.Zero) {
40
+ const { ckbScale, udtScale } = rate;
41
+ rate = {
42
+ ckbScale,
43
+ // Worst case scenario where fee applies to the full amount
44
+ udtScale: udtScale + (isCkb2Udt ? 1n : -1n) * (udtScale / fee),
45
+ };
35
46
  }
36
- return convertedAmount;
47
+ const convertedAmount = amount > core_1.ccc.Zero ? (0, core_2.convert)(isCkb2Udt, amount, rate) : core_1.ccc.Zero;
48
+ return { rate, convertedAmount };
37
49
  }
38
- // TODO streamline parameters with previewConversion
39
50
  async convert(options) {
40
- const { isCkb2Udt, amount, system, signer } = options;
41
- // TODO: RatioLike and specify fee!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
42
- // Or let outside specify adjusted rate...
43
- const info = order_1.Info.create(isCkb2Udt, order_1.Ratio.from(system.exchangeRatio));
44
- const address = await signer.getRecommendedAddressObj();
51
+ // Get user lock
52
+ const { system, signer } = options;
53
+ const lock = (await signer.getRecommendedAddressObj()).script;
54
+ // Normalize rate
55
+ const { rate } = IckbController.previewConversion({
56
+ ...options.conversion,
57
+ amount: core_1.ccc.Zero,
58
+ });
59
+ const { isCkb2Udt, amount, ckbMinMatchLog } = options.conversion;
60
+ const info = order_1.Info.create(isCkb2Udt, rate, ckbMinMatchLog);
61
+ // feeRate is a good approximation of the bot tx size matching the order
62
+ const ckbMinFee = options.conversion.ckbMinFee ?? 10n * system.feeRate;
63
+ const conversion = {
64
+ isCkb2Udt,
65
+ amount,
66
+ rate,
67
+ info,
68
+ ckbMinFee,
69
+ lock,
70
+ };
45
71
  const N = isCkb2Udt
46
72
  ? Number(amount / system.ckbDepositCap)
47
- : system.deposits.slice(0, 30).length;
73
+ : system.depositPool.slice(0, 30).length;
48
74
  const cache = Array(N);
49
- const attempt = (n) => {
75
+ const cachedAttempt = (n) => {
50
76
  n = N - n;
51
- return (cache[n] =
52
- cache[n] ?? this.attemptConversion(n, info, address, options));
77
+ return (cache[n] = cache[n] ?? this.attempt(n, conversion, options));
53
78
  };
54
- return attempt(await asyncBinarySearch(N, async (n) => (await attempt(n)) !== undefined));
79
+ return cachedAttempt(await (0, utils_1.asyncBinarySearch)(N, async (n) => (await cachedAttempt(n)) !== undefined));
55
80
  }
56
- 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;
81
+ async attempt(n, conversion, options) {
82
+ try {
83
+ const { isCkb2Udt, rate, info, ckbMinFee, lock } = conversion;
84
+ const { signer, userCells, system, filters } = options;
85
+ const { feeRate, depositPool, ckbDepositCap, exchangeRatio } = system;
86
+ const tx = utils_1.SmartTransaction.default();
87
+ const maturities = [];
88
+ let ckbFee = core_1.ccc.Zero;
89
+ let amount = conversion.amount;
90
+ // Core protocol
91
+ if (n > 0) {
92
+ if (isCkb2Udt) {
93
+ amount -= ckbDepositCap * BigInt(n);
94
+ if (amount < core_1.ccc.Zero) {
95
+ // Too many Deposits respectfully to the amount
96
+ return undefined;
97
+ }
98
+ this.logicManager.deposit(tx, n, ckbDepositCap, lock);
66
99
  }
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;
100
+ else {
101
+ const myDeposits = depositPool.slice(0, n);
102
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
103
+ amount -= myDeposits.slice(-1)[0].udtCumulative;
104
+ if (amount < core_1.ccc.Zero) {
105
+ // Too many Withdrawal Requests respectfully to the amount
106
+ return undefined;
107
+ }
108
+ this.ownedOwnerManager.requestWithdrawal(tx, myDeposits, lock);
109
+ maturities.push(...myDeposits.map((d) => d.maturity));
76
110
  }
77
- this.ownedOwnerManager.requestWithdrawal(tx, myDeposits, address.script);
78
- maturities.push(...myDeposits.map((d) => d.maturity));
79
111
  }
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) {
112
+ // Order protocol
113
+ if (amount > core_1.ccc.Zero) {
114
+ this.orderManager.mint(tx, lock, info, {
115
+ ckbValue: isCkb2Udt ? amount : core_1.ccc.Zero,
116
+ udtValue: isCkb2Udt ? core_1.ccc.Zero : amount,
117
+ });
118
+ const convertedAmount = (0, core_2.convert)(isCkb2Udt, amount, rate);
119
+ ckbFee = isCkb2Udt
120
+ ? amount - (0, core_2.convert)(false, convertedAmount, exchangeRatio)
121
+ : (0, core_2.convert)(true, amount, exchangeRatio) - convertedAmount;
122
+ maturities.push(
123
+ // TODO: use real world data from deposits, open orders and bot balances
124
+ orderMaturityEstimate(isCkb2Udt, amount, system.tip));
125
+ }
126
+ // Check that order provides enough fee to the bot for being matched
127
+ if (ckbFee < ckbMinFee) {
112
128
  return undefined;
113
129
  }
130
+ const { receipts, withdrawalGroups, orders, udts, capacities } = userCells;
131
+ this.logicManager.completeDeposit(tx, receipts);
132
+ this.ownedOwnerManager.withdraw(tx, withdrawalGroups, filters);
133
+ this.orderManager.melt(tx, orders, filters);
134
+ this.ickbUdtManager.addUdts(tx, udts);
135
+ utils_1.CapacityManager.addCapacities(tx, capacities);
136
+ // Throw an error if inputs do not cover for outputs
137
+ await new utils_1.RestrictedTransaction(tx).completeFeeBy(signer, feeRate);
138
+ // Find the maturity most distant in the future
139
+ const maturity = maturities.reduce((a, b) => (0, utils_1.epochCompare)(a, b) === -1 ? b : a);
140
+ return {
141
+ tx,
142
+ ckbFee,
143
+ maturity,
144
+ };
114
145
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
115
146
  }
116
147
  catch (_) {
117
148
  return undefined;
118
149
  }
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
150
  }
129
- // TODO: Allow filtering which cells are fetched
130
- async getL1State(client, locks, options) {
151
+ async getL1State(client, filter, locks, options) {
131
152
  const tip = await client.getTipHeader();
132
153
  const onChain = true;
133
154
  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
155
+ const [feeRate, depositPool, capacities, udts, receipts, withdrawalGroups, orders, deposits, withdrawalRequests,] = await Promise.all([
137
156
  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),
157
+ filter.has("depositPool")
158
+ ? (0, utils_1.collect)(this.logicManager.findDeposits(client, opts))
159
+ : [],
160
+ filter.has("capacities")
161
+ ? (0, utils_1.collect)(utils_1.CapacityManager.findCapacities(client, locks, opts))
162
+ : [],
163
+ filter.has("udts")
164
+ ? (0, utils_1.collect)(this.ickbUdtManager.findUdts(client, locks, opts))
165
+ : [],
166
+ filter.has("receipts")
167
+ ? (0, utils_1.collect)(this.logicManager.findReceipts(client, locks, opts))
168
+ : [],
169
+ filter.has("withdrawalGroups")
170
+ ? (0, utils_1.collect)(this.ownedOwnerManager.findWithdrawalGroups(client, locks, opts))
171
+ : [],
172
+ filter.has("orders") ? (0, utils_1.collect)(this.orderManager.findOrders(client)) : [],
173
+ filter.has("deposits")
174
+ ? (0, utils_1.collect)(this.daoManager.findDeposits(client, locks, opts))
175
+ : [],
176
+ filter.has("withdrawalRequests")
177
+ ? (0, utils_1.collect)(this.daoManager.findWithdrawalRequests(client, locks, opts))
178
+ : [],
179
+ // TODO: fetch bot cells for estimating timings
144
180
  ]);
145
181
  // Sort depositPool by maturity
146
182
  depositPool.sort((a, b) => (0, utils_1.epochCompare)(a.maturity, b.maturity));
@@ -162,7 +198,7 @@ class IckbController {
162
198
  }
163
199
  }
164
200
  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
201
+ const ckbDepositCap = (0, core_2.convert)(false, core_2.ICKB_DEPOSIT_CAP, exchangeRatio);
166
202
  return {
167
203
  system: {
168
204
  feeRate,
@@ -170,8 +206,8 @@ class IckbController {
170
206
  exchangeRatio,
171
207
  ckbDepositCap,
172
208
  udtDepositCap: core_2.ICKB_DEPOSIT_CAP,
173
- deposits: cumulativeDepositPool,
174
- orders: nonUserOrders,
209
+ depositPool: cumulativeDepositPool,
210
+ orderPool: nonUserOrders,
175
211
  },
176
212
  user: {
177
213
  capacities,
@@ -179,33 +215,11 @@ class IckbController {
179
215
  receipts,
180
216
  withdrawalGroups,
181
217
  orders: userOrders,
218
+ deposits,
219
+ withdrawalRequests,
182
220
  },
183
221
  };
184
222
  }
185
- // TODO: Allow filtering which cells are accounted for
186
- static getBalance({ capacities, udts, receipts, withdrawalGroups, orders, }) {
187
- const cells = [
188
- capacities,
189
- udts,
190
- receipts,
191
- ].flat();
192
- for (const { owner, owned } of withdrawalGroups) {
193
- cells.push(owned, owner);
194
- }
195
- for (const { master, order } of orders) {
196
- cells.push(master, order);
197
- }
198
- let ckb = core_1.ccc.Zero;
199
- let udt = core_1.ccc.Zero;
200
- for (const cell of cells) {
201
- ckb += cell.cell.cellOutput.capacity;
202
- udt += cell.udtValue ?? core_1.ccc.Zero;
203
- }
204
- return {
205
- ckb,
206
- udt,
207
- };
208
- }
209
223
  }
210
224
  exports.IckbController = IckbController;
211
225
  // Estimate bot ability to fulfill orders:
@@ -218,51 +232,4 @@ function orderMaturityEstimate(isCkb2Udt, amount, tip) {
218
232
  4n * 60n,
219
233
  ]);
220
234
  }
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
235
  //# 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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"}