@lit-protocol/vincent-ability-sdk 2.1.0 → 2.2.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/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ ## 2.2.0 (2025-09-25)
2
+
3
+ ### 🚀 Features
4
+
5
+ - Export new populateTransaction method which utilizes ethers v6 to populate a minimal transaction object with nonce, chain id, and gas data ([8170cda4](https://github.com/LIT-Protocol/Vincent/commit/8170cda4))
6
+
7
+ ### 🧱 Updated Dependencies
8
+
9
+ - Updated contracts-sdk to 1.3.0
10
+
11
+ ### ❤️ Thank You
12
+
13
+ - Wyatt Barnes @spacesailor24
14
+
1
15
  ## 2.1.0 (2025-09-11)
2
16
 
3
17
  ### 🚀 Features
package/dist/package.json CHANGED
@@ -7,6 +7,7 @@
7
7
  "dependencies": {
8
8
  "@lit-protocol/vincent-contracts-sdk": "workspace:*",
9
9
  "ethers": "5.8.0",
10
+ "ethers-v6": "npm:ethers@^6",
10
11
  "semver": "^7.7.2",
11
12
  "tslib": "^2.8.1",
12
13
  "zod": "^3.25.64"
@@ -12,4 +12,5 @@ export type { PolicyConfigLifecycleFunction, PolicyConfigCommitFunction, } from
12
12
  export type { PolicyContext } from './lib/policyCore/policyConfig/context/types';
13
13
  export type { VincentAbilityPolicy, BaseContext, PolicyEvaluationResultContext, VincentAbility, AbilityConsumerContext, PolicyConsumerContext, SchemaValidationError, } from './lib/types';
14
14
  export type { BaseAbilityContext } from './lib/abilityCore/abilityConfig/context/types';
15
+ export { populateTransaction } from './lib/abilityHelpers';
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iDAAiD,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,2BAA2B,EAAE,MAAM,uDAAuD,CAAC;AAEpG,YAAY,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,YAAY,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AACpF,YAAY,EACV,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAEjF,YAAY,EACV,oBAAoB,EACpB,WAAW,EACX,6BAA6B,EAC7B,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iDAAiD,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,2BAA2B,EAAE,MAAM,uDAAuD,CAAC;AAEpG,YAAY,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,YAAY,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AACpF,YAAY,EACV,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAEjF,YAAY,EACV,oBAAoB,EACpB,WAAW,EACX,6BAA6B,EAC7B,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AAExF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/src/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.supportedPoliciesForAbility = exports.asBundledVincentPolicy = exports.asBundledVincentAbility = exports.vincentAbilityHandler = exports.vincentPolicyHandler = exports.VINCENT_TOOL_API_VERSION = exports.createVincentAbility = exports.createVincentAbilityPolicy = exports.createVincentPolicy = void 0;
3
+ exports.populateTransaction = exports.supportedPoliciesForAbility = exports.asBundledVincentPolicy = exports.asBundledVincentAbility = exports.vincentAbilityHandler = exports.vincentPolicyHandler = exports.VINCENT_TOOL_API_VERSION = exports.createVincentAbility = exports.createVincentAbilityPolicy = exports.createVincentPolicy = void 0;
4
4
  var vincentPolicy_1 = require("./lib/policyCore/vincentPolicy");
5
5
  Object.defineProperty(exports, "createVincentPolicy", { enumerable: true, get: function () { return vincentPolicy_1.createVincentPolicy; } });
6
6
  Object.defineProperty(exports, "createVincentAbilityPolicy", { enumerable: true, get: function () { return vincentPolicy_1.createVincentAbilityPolicy; } });
@@ -18,4 +18,6 @@ var bundledPolicy_1 = require("./lib/policyCore/bundledPolicy/bundledPolicy");
18
18
  Object.defineProperty(exports, "asBundledVincentPolicy", { enumerable: true, get: function () { return bundledPolicy_1.asBundledVincentPolicy; } });
19
19
  var supportedPoliciesForAbility_1 = require("./lib/abilityCore/helpers/supportedPoliciesForAbility");
20
20
  Object.defineProperty(exports, "supportedPoliciesForAbility", { enumerable: true, get: function () { return supportedPoliciesForAbility_1.supportedPoliciesForAbility; } });
21
+ var abilityHelpers_1 = require("./lib/abilityHelpers");
22
+ Object.defineProperty(exports, "populateTransaction", { enumerable: true, get: function () { return abilityHelpers_1.populateTransaction; } });
21
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,gEAAiG;AAAxF,oHAAA,mBAAmB,OAAA;AAAE,2HAAA,0BAA0B,OAAA;AACxD,mEAAwE;AAA/D,sHAAA,oBAAoB,OAAA;AAC7B,6CAA2D;AAAlD,qHAAA,wBAAwB,OAAA;AAEjC,4EAA2E;AAAlE,4HAAA,oBAAoB,OAAA;AAC7B,8EAA6E;AAApE,8HAAA,qBAAqB,OAAA;AAE9B,kFAA0F;AAAjF,yHAAA,uBAAuB,OAAA;AAChC,8EAAsF;AAA7E,uHAAA,sBAAsB,OAAA;AAC/B,qGAAoG;AAA3F,0IAAA,2BAA2B,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,gEAAiG;AAAxF,oHAAA,mBAAmB,OAAA;AAAE,2HAAA,0BAA0B,OAAA;AACxD,mEAAwE;AAA/D,sHAAA,oBAAoB,OAAA;AAC7B,6CAA2D;AAAlD,qHAAA,wBAAwB,OAAA;AAEjC,4EAA2E;AAAlE,4HAAA,oBAAoB,OAAA;AAC7B,8EAA6E;AAApE,8HAAA,qBAAqB,OAAA;AAE9B,kFAA0F;AAAjF,yHAAA,uBAAuB,OAAA;AAChC,8EAAsF;AAA7E,uHAAA,sBAAsB,OAAA;AAC/B,qGAAoG;AAA3F,0IAAA,2BAA2B,OAAA;AAsBpC,uDAA2D;AAAlD,qHAAA,mBAAmB,OAAA"}
@@ -0,0 +1,2 @@
1
+ export { populateTransaction } from './populateTransaction';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/abilityHelpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.populateTransaction = void 0;
4
+ var populateTransaction_1 = require("./populateTransaction");
5
+ Object.defineProperty(exports, "populateTransaction", { enumerable: true, get: function () { return populateTransaction_1.populateTransaction; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/abilityHelpers/index.ts"],"names":[],"mappings":";;;AAAA,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA"}
@@ -0,0 +1,12 @@
1
+ import type { UnsignedTransaction } from 'ethers';
2
+ export declare const populateTransaction: ({ to, from, data, value, rpcUrl, chainId, gasBufferPercentage, baseFeePerGasBufferPercentage, }: {
3
+ to: string;
4
+ from: string;
5
+ data: string;
6
+ value: string;
7
+ rpcUrl: string;
8
+ chainId?: number;
9
+ gasBufferPercentage?: number;
10
+ baseFeePerGasBufferPercentage?: number;
11
+ }) => Promise<UnsignedTransaction>;
12
+ //# sourceMappingURL=populateTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"populateTransaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/abilityHelpers/populateTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAIlD,eAAO,MAAM,mBAAmB,GAAU,iGASvC;IACD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,6BAA6B,CAAC,EAAE,MAAM,CAAC;CACxC,KAAG,OAAO,CAAC,mBAAmB,CAkF9B,CAAC"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.populateTransaction = void 0;
4
+ const ethers_v6_1 = require("ethers-v6");
5
+ const populateTransaction = async ({ to, from, data, value, rpcUrl, chainId, gasBufferPercentage, baseFeePerGasBufferPercentage, }) => {
6
+ if (gasBufferPercentage !== undefined && !Number.isInteger(gasBufferPercentage)) {
7
+ throw new Error('[populateTransaction] gasBufferPercentage must be an integer');
8
+ }
9
+ if (baseFeePerGasBufferPercentage !== undefined &&
10
+ !Number.isInteger(baseFeePerGasBufferPercentage)) {
11
+ throw new Error('[populateTransaction] baseFeePerGasBufferPercentage must be an integer');
12
+ }
13
+ const provider = new ethers_v6_1.JsonRpcProvider(rpcUrl);
14
+ const signer = new ethers_v6_1.VoidSigner(from, provider);
15
+ const populatedTx = await signer.populateTransaction({
16
+ to,
17
+ from,
18
+ data,
19
+ value,
20
+ chainId,
21
+ });
22
+ if (!populatedTx.gasLimit) {
23
+ throw new Error(`[estimateGas] Unable to estimate gas for transaction: ${JSON.stringify({
24
+ to,
25
+ from,
26
+ data,
27
+ value,
28
+ })}`);
29
+ }
30
+ if (gasBufferPercentage !== undefined) {
31
+ populatedTx.gasLimit =
32
+ (BigInt(populatedTx.gasLimit) * BigInt(100 + gasBufferPercentage)) / 100n;
33
+ }
34
+ const partialUnsignedTx = {
35
+ to: populatedTx.to ?? undefined,
36
+ nonce: populatedTx.nonce ?? undefined,
37
+ gasLimit: (0, ethers_v6_1.toQuantity)(populatedTx.gasLimit),
38
+ data: populatedTx.data ?? undefined,
39
+ value: populatedTx.value ? (0, ethers_v6_1.toQuantity)(populatedTx.value) : '0x0',
40
+ chainId: populatedTx.chainId ? (0, ethers_v6_1.toNumber)(populatedTx.chainId) : undefined,
41
+ // Typed-Transaction features
42
+ type: populatedTx.type ?? undefined,
43
+ // EIP-2930; Type 1 & EIP-1559; Type 2
44
+ accessList: populatedTx.accessList ?? undefined,
45
+ };
46
+ // Legacy fee path
47
+ if (populatedTx.gasPrice != null) {
48
+ return {
49
+ ...partialUnsignedTx,
50
+ gasPrice: (0, ethers_v6_1.toQuantity)(populatedTx.gasPrice),
51
+ };
52
+ }
53
+ // EIP-1559 path
54
+ if (populatedTx.maxFeePerGas == null) {
55
+ throw new Error('[estimateGas] maxFeePerGas is missing from populated transaction');
56
+ }
57
+ if (populatedTx.maxPriorityFeePerGas == null) {
58
+ throw new Error('[estimateGas] maxPriorityFeePerGas is missing from populated transaction');
59
+ }
60
+ if (baseFeePerGasBufferPercentage !== undefined) {
61
+ // Apply baseFeePerGas buffer (e.g. 20% -> multiply by 1.2)
62
+ populatedTx.maxFeePerGas =
63
+ (BigInt(populatedTx.maxFeePerGas) * BigInt(100 + baseFeePerGasBufferPercentage)) / 100n;
64
+ }
65
+ return {
66
+ ...partialUnsignedTx,
67
+ maxFeePerGas: (0, ethers_v6_1.toQuantity)(populatedTx.maxFeePerGas),
68
+ maxPriorityFeePerGas: (0, ethers_v6_1.toQuantity)(populatedTx.maxPriorityFeePerGas),
69
+ };
70
+ };
71
+ exports.populateTransaction = populateTransaction;
72
+ //# sourceMappingURL=populateTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"populateTransaction.js","sourceRoot":"","sources":["../../../../src/lib/abilityHelpers/populateTransaction.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,15 +1,16 @@
1
1
  {
2
2
  "name": "@lit-protocol/vincent-ability-sdk",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
7
  "dependencies": {
8
8
  "ethers": "5.8.0",
9
+ "ethers-v6": "npm:ethers@^6",
9
10
  "semver": "^7.7.2",
10
11
  "tslib": "^2.8.1",
11
12
  "zod": "^3.25.64",
12
- "@lit-protocol/vincent-contracts-sdk": "1.2.0"
13
+ "@lit-protocol/vincent-contracts-sdk": "1.3.0"
13
14
  },
14
15
  "main": "./dist/src/index.js",
15
16
  "types": "./dist/src/index.d.ts",