@hardkas/toolkit 0.12.0-rc.1 → 0.12.0-rc.10

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.
@@ -5,5 +5,5 @@ export interface DynamicFeeRateResult {
5
5
  evidence: "dynamic" | "heuristic";
6
6
  mempoolSize?: number | undefined;
7
7
  }
8
- export declare function calculateDynamicFeeRate(rpc: KaspaRpcClient | undefined, priority: FeePriority): Promise<DynamicFeeRateResult>;
8
+ export declare function calculateDynamicFeeRate(rpc: KaspaRpcClient | undefined, priority: FeePriority, minimumNetworkFeeRate?: bigint): Promise<DynamicFeeRateResult>;
9
9
  //# sourceMappingURL=fee-estimator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fee-estimator.d.ts","sourceRoot":"","sources":["../src/fee-estimator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAErD,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,GAAG,WAAW,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAED,wBAAsB,uBAAuB,CACzC,GAAG,EAAE,cAAc,GAAG,SAAS,EAC/B,QAAQ,EAAE,WAAW,GACtB,OAAO,CAAC,oBAAoB,CAAC,CAgC/B"}
1
+ {"version":3,"file":"fee-estimator.d.ts","sourceRoot":"","sources":["../src/fee-estimator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAErD,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,GAAG,WAAW,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAED,wBAAsB,uBAAuB,CACzC,GAAG,EAAE,cAAc,GAAG,SAAS,EAC/B,QAAQ,EAAE,WAAW,EACrB,qBAAqB,GAAE,MAAW,GACnC,OAAO,CAAC,oBAAoB,CAAC,CAyD/B"}
@@ -1,10 +1,25 @@
1
- export async function calculateDynamicFeeRate(rpc, priority) {
1
+ export async function calculateDynamicFeeRate(rpc, priority, minimumNetworkFeeRate = 0n // E.g., 100n for Toccata standardness policy
2
+ ) {
2
3
  const feeFloor = priority === "slow" ? 1n : priority === "normal" ? 2n : 5n;
3
4
  let dynamicMempoolMultiplier = 1n;
4
5
  let evidence = "heuristic";
5
6
  let mempoolSize = undefined;
7
+ let rpcFeeRate = undefined;
6
8
  if (rpc && rpc.getInfo) {
7
9
  try {
10
+ // First check if node has explicit fee estimate API (e.g. GetFeeEstimate)
11
+ if (typeof rpc.getFeeEstimate === 'function') {
12
+ const estimate = await rpc.getFeeEstimate();
13
+ if (estimate && estimate.priorityBucket && estimate.priorityBucket.feerate) {
14
+ rpcFeeRate = BigInt(Math.floor(estimate.priorityBucket.feerate));
15
+ }
16
+ }
17
+ else if (typeof rpc.getFeeEstimateExperimental === 'function') {
18
+ const estimate = await rpc.getFeeEstimateExperimental();
19
+ if (estimate && estimate.priorityBucket && estimate.priorityBucket.feerate) {
20
+ rpcFeeRate = BigInt(Math.floor(estimate.priorityBucket.feerate));
21
+ }
22
+ }
8
23
  const info = await rpc.getInfo();
9
24
  mempoolSize = info.mempoolSize;
10
25
  // Dynamic heuristics based on mempool size
@@ -23,8 +38,17 @@ export async function calculateDynamicFeeRate(rpc, priority) {
23
38
  evidence = "heuristic";
24
39
  }
25
40
  }
41
+ let computedRate = rpcFeeRate;
42
+ if (computedRate === undefined) {
43
+ computedRate = feeFloor * dynamicMempoolMultiplier;
44
+ }
45
+ // Clamp against the mempool/standardness network policy (not consensus).
46
+ // E.g., Toccata localnet requires 100 sompi/mass minimum standardness relay fee.
47
+ if (computedRate < minimumNetworkFeeRate) {
48
+ computedRate = minimumNetworkFeeRate;
49
+ }
26
50
  return {
27
- feeRate: feeFloor * dynamicMempoolMultiplier,
51
+ feeRate: computedRate,
28
52
  evidence,
29
53
  ...(mempoolSize !== undefined ? { mempoolSize } : {})
30
54
  };
@@ -1 +1 @@
1
- {"version":3,"file":"fee-estimator.js","sourceRoot":"","sources":["../src/fee-estimator.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,KAAK,UAAU,uBAAuB,CACzC,GAA+B,EAC/B,QAAqB;IAErB,MAAM,QAAQ,GAAG,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,IAAI,wBAAwB,GAAG,EAAE,CAAC;IAClC,IAAI,QAAQ,GAA4B,WAAW,CAAC;IACpD,IAAI,WAAW,GAAuB,SAAS,CAAC;IAEhD,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;YACjC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAE/B,2CAA2C;YAC3C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC5B,IAAI,WAAW,GAAG,KAAK,EAAE,CAAC;oBACtB,wBAAwB,GAAG,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,CAAC;gBACD,IAAI,WAAW,GAAG,KAAK,EAAE,CAAC;oBACtB,wBAAwB,GAAG,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC3F,CAAC;YACL,CAAC;YACD,QAAQ,GAAG,SAAS,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,gEAAgE;YAChE,QAAQ,GAAG,WAAW,CAAC;QAC3B,CAAC;IACL,CAAC;IAED,OAAO;QACH,OAAO,EAAE,QAAQ,GAAG,wBAAwB;QAC5C,QAAQ;QACR,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxD,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"fee-estimator.js","sourceRoot":"","sources":["../src/fee-estimator.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,KAAK,UAAU,uBAAuB,CACzC,GAA+B,EAC/B,QAAqB,EACrB,wBAAgC,EAAE,CAAC,6CAA6C;;IAEhF,MAAM,QAAQ,GAAG,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,IAAI,wBAAwB,GAAG,EAAE,CAAC;IAClC,IAAI,QAAQ,GAA4B,WAAW,CAAC;IACpD,IAAI,WAAW,GAAuB,SAAS,CAAC;IAChD,IAAI,UAAU,GAAuB,SAAS,CAAC;IAE/C,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC;YACD,0EAA0E;YAC1E,IAAI,OAAQ,GAAW,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;gBACpD,MAAM,QAAQ,GAAG,MAAO,GAAW,CAAC,cAAc,EAAE,CAAC;gBACrD,IAAI,QAAQ,IAAI,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBACzE,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;gBACrE,CAAC;YACL,CAAC;iBAAM,IAAI,OAAQ,GAAW,CAAC,0BAA0B,KAAK,UAAU,EAAE,CAAC;gBACvE,MAAM,QAAQ,GAAG,MAAO,GAAW,CAAC,0BAA0B,EAAE,CAAC;gBACjE,IAAI,QAAQ,IAAI,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBACzE,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;gBACrE,CAAC;YACL,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;YACjC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAE/B,2CAA2C;YAC3C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC5B,IAAI,WAAW,GAAG,KAAK,EAAE,CAAC;oBACtB,wBAAwB,GAAG,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,CAAC;gBACD,IAAI,WAAW,GAAG,KAAK,EAAE,CAAC;oBACtB,wBAAwB,GAAG,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC3F,CAAC;YACL,CAAC;YACD,QAAQ,GAAG,SAAS,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,gEAAgE;YAChE,QAAQ,GAAG,WAAW,CAAC;QAC3B,CAAC;IACL,CAAC;IAED,IAAI,YAAY,GAAG,UAAU,CAAC;IAC9B,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC7B,YAAY,GAAG,QAAQ,GAAG,wBAAwB,CAAC;IACvD,CAAC;IAED,yEAAyE;IACzE,iFAAiF;IACjF,IAAI,YAAY,GAAG,qBAAqB,EAAE,CAAC;QACvC,YAAY,GAAG,qBAAqB,CAAC;IACzC,CAAC;IAED,OAAO;QACH,OAAO,EAAE,YAAY;QACrB,QAAQ;QACR,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxD,CAAC;AACN,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hardkas/toolkit",
3
- "version": "0.12.0-rc.1",
3
+ "version": "0.12.0-rc.10",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -17,16 +17,16 @@
17
17
  }
18
18
  },
19
19
  "dependencies": {
20
- "@hardkas/observability": "0.12.0-rc.1",
21
20
  "fs-extra": "^11.2.0",
22
- "@hardkas/accounts": "0.12.0-rc.1",
23
- "@hardkas/artifacts": "0.12.0-rc.1",
24
- "@hardkas/core": "0.12.0-rc.1",
25
- "@hardkas/jobs": "0.12.0-rc.1",
26
- "@hardkas/kaspa-rpc": "0.12.0-rc.1",
27
- "@hardkas/tx-builder": "0.12.0-rc.1",
28
- "@hardkas/query": "0.12.0-rc.1",
29
- "@hardkas/query-store": "0.12.0-rc.1"
21
+ "@hardkas/accounts": "0.12.0-rc.10",
22
+ "@hardkas/observability": "0.12.0-rc.10",
23
+ "@hardkas/jobs": "0.12.0-rc.10",
24
+ "@hardkas/core": "0.12.0-rc.10",
25
+ "@hardkas/tx-builder": "0.12.0-rc.10",
26
+ "@hardkas/artifacts": "0.12.0-rc.10",
27
+ "@hardkas/query-store": "0.12.0-rc.10",
28
+ "@hardkas/kaspa-rpc": "0.12.0-rc.10",
29
+ "@hardkas/query": "0.12.0-rc.10"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/fs-extra": "^11.0.4",