@lit-protocol/vincent-ability-relay-link 1.0.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.
Files changed (59) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/CONTRIBUTING.md +82 -0
  3. package/README.md +223 -0
  4. package/dist/CHANGELOG.md +0 -0
  5. package/dist/CONTRIBUTING.md +82 -0
  6. package/dist/README.md +223 -0
  7. package/dist/package.json +37 -0
  8. package/dist/src/generated/lit-action.js +9 -0
  9. package/dist/src/generated/vincent-ability-metadata.json +3 -0
  10. package/dist/src/generated/vincent-bundled-ability.d.ts +1440 -0
  11. package/dist/src/generated/vincent-bundled-ability.d.ts.map +1 -0
  12. package/dist/src/generated/vincent-bundled-ability.js +15 -0
  13. package/dist/src/generated/vincent-bundled-ability.js.map +1 -0
  14. package/dist/src/generated/vincent-bundled-ability.ts +13 -0
  15. package/dist/src/index.d.ts +7 -0
  16. package/dist/src/index.d.ts.map +1 -0
  17. package/dist/src/index.js +29 -0
  18. package/dist/src/index.js.map +1 -0
  19. package/dist/src/lib/decodeTransaction.d.ts +3 -0
  20. package/dist/src/lib/decodeTransaction.d.ts.map +1 -0
  21. package/dist/src/lib/decodeTransaction.js +48 -0
  22. package/dist/src/lib/decodeTransaction.js.map +1 -0
  23. package/dist/src/lib/helpers/crossmint.d.ts +37 -0
  24. package/dist/src/lib/helpers/crossmint.d.ts.map +1 -0
  25. package/dist/src/lib/helpers/crossmint.js +50 -0
  26. package/dist/src/lib/helpers/crossmint.js.map +1 -0
  27. package/dist/src/lib/helpers/relay-link.d.ts +71 -0
  28. package/dist/src/lib/helpers/relay-link.d.ts.map +1 -0
  29. package/dist/src/lib/helpers/relay-link.js +157 -0
  30. package/dist/src/lib/helpers/relay-link.js.map +1 -0
  31. package/dist/src/lib/helpers/safe.d.ts +52 -0
  32. package/dist/src/lib/helpers/safe.d.ts.map +1 -0
  33. package/dist/src/lib/helpers/safe.js +98 -0
  34. package/dist/src/lib/helpers/safe.js.map +1 -0
  35. package/dist/src/lib/helpers/transactionKind.d.ts +5 -0
  36. package/dist/src/lib/helpers/transactionKind.d.ts.map +1 -0
  37. package/dist/src/lib/helpers/transactionKind.js +9 -0
  38. package/dist/src/lib/helpers/transactionKind.js.map +1 -0
  39. package/dist/src/lib/helpers/zerodev.d.ts +58 -0
  40. package/dist/src/lib/helpers/zerodev.d.ts.map +1 -0
  41. package/dist/src/lib/helpers/zerodev.js +127 -0
  42. package/dist/src/lib/helpers/zerodev.js.map +1 -0
  43. package/dist/src/lib/lit-action.d.ts +2 -0
  44. package/dist/src/lib/lit-action.d.ts.map +1 -0
  45. package/dist/src/lib/lit-action.js +15 -0
  46. package/dist/src/lib/lit-action.js.map +1 -0
  47. package/dist/src/lib/validateSimulation.d.ts +3 -0
  48. package/dist/src/lib/validateSimulation.d.ts.map +1 -0
  49. package/dist/src/lib/validateSimulation.js +116 -0
  50. package/dist/src/lib/validateSimulation.js.map +1 -0
  51. package/dist/src/lib/validateTransaction.d.ts +3 -0
  52. package/dist/src/lib/validateTransaction.d.ts.map +1 -0
  53. package/dist/src/lib/validateTransaction.js +44 -0
  54. package/dist/src/lib/validateTransaction.js.map +1 -0
  55. package/dist/src/lib/vincent-ability.d.ts +1437 -0
  56. package/dist/src/lib/vincent-ability.d.ts.map +1 -0
  57. package/dist/src/lib/vincent-ability.js +15 -0
  58. package/dist/src/lib/vincent-ability.js.map +1 -0
  59. package/package.json +36 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vincent-bundled-ability.d.ts","sourceRoot":"","sources":["../../../src/generated/vincent-bundled-ability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ /**
3
+ * DO NOT EDIT THIS FILE. IT IS GENERATED ON BUILD.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.bundledVincentAbility = void 0;
7
+ const tslib_1 = require("tslib");
8
+ const vincent_ability_sdk_1 = require("@lit-protocol/vincent-ability-sdk");
9
+ const vincent_ability_1 = require("../lib/vincent-ability");
10
+ const vincent_ability_metadata_json_1 = tslib_1.__importDefault(require("./vincent-ability-metadata.json"));
11
+ if (!vincent_ability_metadata_json_1.default.ipfsCid) {
12
+ throw new Error('ipfsCid is not defined in metadata JSON file');
13
+ }
14
+ exports.bundledVincentAbility = (0, vincent_ability_sdk_1.asBundledVincentAbility)(vincent_ability_1.vincentAbility, vincent_ability_metadata_json_1.default.ipfsCid);
15
+ //# sourceMappingURL=vincent-bundled-ability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vincent-bundled-ability.js","sourceRoot":"","sources":["../../../src/generated/vincent-bundled-ability.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;AAEH,2EAA4E;AAC5E,4DAAwD;AACxD,4GAAuD;AAEvD,IAAG,CAAC,uCAAQ,CAAC,OAAO,EAAE,CAAC;IACrB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;AAClE,CAAC;AAEY,QAAA,qBAAqB,GAAG,IAAA,6CAAuB,EAAC,gCAAc,EAAE,uCAAQ,CAAC,OAAO,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * DO NOT EDIT THIS FILE. IT IS GENERATED ON BUILD.
3
+ */
4
+
5
+ import { asBundledVincentAbility } from '@lit-protocol/vincent-ability-sdk';
6
+ import { vincentAbility } from '../lib/vincent-ability';
7
+ import metadata from './vincent-ability-metadata.json';
8
+
9
+ if(!metadata.ipfsCid) {
10
+ throw new Error('ipfsCid is not defined in metadata JSON file');
11
+ }
12
+
13
+ export const bundledVincentAbility = asBundledVincentAbility(vincentAbility, metadata.ipfsCid);
@@ -0,0 +1,7 @@
1
+ export * from '@lit-protocol/vincent-ability-sdk/gatedSigner';
2
+ export { bundledVincentAbility } from './generated/vincent-bundled-ability';
3
+ export { fetchRelayLinkAddresses, getRelayClient, getRelayLinkQuote, isRelayLinkAddress, isTestnet, type RelayLinkAppFee, type RelayLinkQuoteParams, type RelayLinkQuoteResponse, type RelayLinkTransactionData, } from './lib/helpers/relay-link';
4
+ export { relayTransactionToUserOp, transactionsToZerodevUserOp, submitSignedUserOp, type ZerodevTransaction, type RelayTransactionToUserOpParams, type TransactionsToZerodevUserOpParams, type SubmitSignedUserOpParams, } from './lib/helpers/zerodev';
5
+ export { transactionsToCrossmintUserOp, sendPermittedCrossmintUserOperation, type CrossmintTransaction, type TransactionsToCrossmintUserOpParams, type SendPermittedCrossmintUserOperationParams, } from './lib/helpers/crossmint';
6
+ export { transactionsToSafeUserOp, sendPermittedSafeUserOperation, type SafeTransaction, type TransactionsToSafeUserOpParams, type SendPermittedSafeUserOperationParams, } from './lib/helpers/safe';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,+CAA+C,CAAC;AAE9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,GAC9B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAC3B,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,8BAA8B,EACnC,KAAK,iCAAiC,EACtC,KAAK,wBAAwB,GAC9B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,6BAA6B,EAC7B,mCAAmC,EACnC,KAAK,oBAAoB,EACzB,KAAK,mCAAmC,EACxC,KAAK,yCAAyC,GAC/C,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC9B,KAAK,eAAe,EACpB,KAAK,8BAA8B,EACnC,KAAK,oCAAoC,GAC1C,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sendPermittedSafeUserOperation = exports.transactionsToSafeUserOp = exports.sendPermittedCrossmintUserOperation = exports.transactionsToCrossmintUserOp = exports.submitSignedUserOp = exports.transactionsToZerodevUserOp = exports.relayTransactionToUserOp = exports.isTestnet = exports.isRelayLinkAddress = exports.getRelayLinkQuote = exports.getRelayClient = exports.fetchRelayLinkAddresses = exports.bundledVincentAbility = void 0;
4
+ const tslib_1 = require("tslib");
5
+ // Direct re-export so consumers can have the same utilities this ability uses
6
+ // even if another ability uses a different version of the SDK
7
+ tslib_1.__exportStar(require("@lit-protocol/vincent-ability-sdk/gatedSigner"), exports);
8
+ var vincent_bundled_ability_1 = require("./generated/vincent-bundled-ability");
9
+ Object.defineProperty(exports, "bundledVincentAbility", { enumerable: true, get: function () { return vincent_bundled_ability_1.bundledVincentAbility; } });
10
+ var relay_link_1 = require("./lib/helpers/relay-link");
11
+ Object.defineProperty(exports, "fetchRelayLinkAddresses", { enumerable: true, get: function () { return relay_link_1.fetchRelayLinkAddresses; } });
12
+ Object.defineProperty(exports, "getRelayClient", { enumerable: true, get: function () { return relay_link_1.getRelayClient; } });
13
+ Object.defineProperty(exports, "getRelayLinkQuote", { enumerable: true, get: function () { return relay_link_1.getRelayLinkQuote; } });
14
+ Object.defineProperty(exports, "isRelayLinkAddress", { enumerable: true, get: function () { return relay_link_1.isRelayLinkAddress; } });
15
+ Object.defineProperty(exports, "isTestnet", { enumerable: true, get: function () { return relay_link_1.isTestnet; } });
16
+ // ZeroDev smart account helpers for preparing and submitting UserOps
17
+ var zerodev_1 = require("./lib/helpers/zerodev");
18
+ Object.defineProperty(exports, "relayTransactionToUserOp", { enumerable: true, get: function () { return zerodev_1.relayTransactionToUserOp; } });
19
+ Object.defineProperty(exports, "transactionsToZerodevUserOp", { enumerable: true, get: function () { return zerodev_1.transactionsToZerodevUserOp; } });
20
+ Object.defineProperty(exports, "submitSignedUserOp", { enumerable: true, get: function () { return zerodev_1.submitSignedUserOp; } });
21
+ // Crossmint smart account helpers
22
+ var crossmint_1 = require("./lib/helpers/crossmint");
23
+ Object.defineProperty(exports, "transactionsToCrossmintUserOp", { enumerable: true, get: function () { return crossmint_1.transactionsToCrossmintUserOp; } });
24
+ Object.defineProperty(exports, "sendPermittedCrossmintUserOperation", { enumerable: true, get: function () { return crossmint_1.sendPermittedCrossmintUserOperation; } });
25
+ // Safe smart account helpers
26
+ var safe_1 = require("./lib/helpers/safe");
27
+ Object.defineProperty(exports, "transactionsToSafeUserOp", { enumerable: true, get: function () { return safe_1.transactionsToSafeUserOp; } });
28
+ Object.defineProperty(exports, "sendPermittedSafeUserOperation", { enumerable: true, get: function () { return safe_1.sendPermittedSafeUserOperation; } });
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,8EAA8E;AAC9E,8DAA8D;AAC9D,wFAA8D;AAE9D,+EAA4E;AAAnE,gIAAA,qBAAqB,OAAA;AAE9B,uDAUkC;AAThC,qHAAA,uBAAuB,OAAA;AACvB,4GAAA,cAAc,OAAA;AACd,+GAAA,iBAAiB,OAAA;AACjB,gHAAA,kBAAkB,OAAA;AAClB,uGAAA,SAAS,OAAA;AAOX,qEAAqE;AACrE,iDAQ+B;AAP7B,mHAAA,wBAAwB,OAAA;AACxB,sHAAA,2BAA2B,OAAA;AAC3B,6GAAA,kBAAkB,OAAA;AAOpB,kCAAkC;AAClC,qDAMiC;AAL/B,0HAAA,6BAA6B,OAAA;AAC7B,gIAAA,mCAAmC,OAAA;AAMrC,6BAA6B;AAC7B,2CAM4B;AAL1B,gHAAA,wBAAwB,OAAA;AACxB,sHAAA,8BAA8B,OAAA"}
@@ -0,0 +1,3 @@
1
+ import type { DecodedTransaction, DecodeTransactionParams } from '@lit-protocol/vincent-ability-sdk/gatedSigner';
2
+ export declare const decodeTransaction: (params: DecodeTransactionParams) => DecodedTransaction;
3
+ //# sourceMappingURL=decodeTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decodeTransaction.d.ts","sourceRoot":"","sources":["../../../src/lib/decodeTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,uBAAuB,EAExB,MAAM,+CAA+C,CAAC;AAiCvD,eAAO,MAAM,iBAAiB,GAAI,QAAQ,uBAAuB,KAAG,kBAwBnE,CAAC"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodeTransaction = void 0;
4
+ const vincent_ability_sdk_1 = require("@lit-protocol/vincent-ability-sdk");
5
+ const viem_1 = require("viem");
6
+ const transactionKind_1 = require("./helpers/transactionKind");
7
+ const decodeTransactionKind = (params) => {
8
+ try {
9
+ const { abi, kind, transaction } = params;
10
+ const df = (0, viem_1.decodeFunctionData)({ abi, data: transaction.data });
11
+ console.log(`Decoded ${kind} transaction`);
12
+ return {
13
+ args: df.args,
14
+ kind,
15
+ fn: df.functionName,
16
+ to: transaction.to,
17
+ value: transaction.value,
18
+ };
19
+ }
20
+ catch (error) {
21
+ // Could not decode transaction. Likely not the correct ABI. Continue...
22
+ return;
23
+ }
24
+ };
25
+ const decodeTransaction = (params) => {
26
+ const { transaction } = params;
27
+ // Try to decode as ERC20 transaction (e.g., approval before relay)
28
+ const erc20Transaction = decodeTransactionKind({
29
+ transaction,
30
+ abi: vincent_ability_sdk_1.ERC20_ABI,
31
+ kind: transactionKind_1.TransactionKind.ERC20,
32
+ });
33
+ if (erc20Transaction) {
34
+ return erc20Transaction;
35
+ }
36
+ // If not ERC20, assume it's a Relay.link transaction
37
+ // The target address will be validated in validateTransaction (which has chainId)
38
+ console.log('Decoded RELAY_LINK transaction');
39
+ return {
40
+ args: [],
41
+ kind: transactionKind_1.TransactionKind.RELAY_LINK,
42
+ fn: 'execute',
43
+ to: transaction.to,
44
+ value: transaction.value,
45
+ };
46
+ };
47
+ exports.decodeTransaction = decodeTransaction;
48
+ //# sourceMappingURL=decodeTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decodeTransaction.js","sourceRoot":"","sources":["../../../src/lib/decodeTransaction.ts"],"names":[],"mappings":";;;AAKA,2EAA8D;AAG9D,+BAA0C;AAC1C,+DAA4D;AAQ5D,MAAM,qBAAqB,GAAG,CAC5B,MAAmC,EACH,EAAE;IAClC,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QAC1C,MAAM,EAAE,GAAG,IAAA,yBAAkB,EAAC,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,cAAc,CAAC,CAAC;QAC3C,OAAO;YACL,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,IAAI;YACJ,EAAE,EAAE,EAAE,CAAC,YAAY;YACnB,EAAE,EAAE,WAAW,CAAC,EAAE;YAClB,KAAK,EAAE,WAAW,CAAC,KAAK;SACzB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,wEAAwE;QACxE,OAAO;IACT,CAAC;AACH,CAAC,CAAC;AAEK,MAAM,iBAAiB,GAAG,CAAC,MAA+B,EAAsB,EAAE;IACvF,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAE/B,mEAAmE;IACnE,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;QAC7C,WAAW;QACX,GAAG,EAAE,+BAAS;QACd,IAAI,EAAE,iCAAe,CAAC,KAAK;KAC5B,CAAC,CAAC;IAEH,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,qDAAqD;IACrD,kFAAkF;IAClF,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,OAAO;QACL,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,iCAAe,CAAC,UAAU;QAChC,EAAE,EAAE,SAAS;QACb,EAAE,EAAE,WAAW,CAAC,EAAE;QAClB,KAAK,EAAE,WAAW,CAAC,KAAK;KACzB,CAAC;AACJ,CAAC,CAAC;AAxBW,QAAA,iBAAiB,qBAwB5B"}
@@ -0,0 +1,37 @@
1
+ import type { WalletsApiClient } from '@crossmint/wallets-sdk';
2
+ import type { Address, Chain, Hex } from 'viem';
3
+ /**
4
+ * Transaction type for Crossmint UserOps
5
+ */
6
+ export interface CrossmintTransaction {
7
+ to: Address;
8
+ data: Hex;
9
+ value?: string;
10
+ }
11
+ export interface TransactionsToCrossmintUserOpParams {
12
+ crossmintClient: WalletsApiClient;
13
+ crossmintAccountAddress: Address;
14
+ permittedAddress: Address;
15
+ transactions: CrossmintTransaction[];
16
+ chain: Chain;
17
+ }
18
+ export interface SendPermittedCrossmintUserOperationParams {
19
+ crossmintClient: WalletsApiClient;
20
+ accountAddress: Address;
21
+ signature: Hex;
22
+ signerAddress: Address;
23
+ userOp: {
24
+ id: string;
25
+ };
26
+ }
27
+ /**
28
+ * Create a Crossmint UserOp from transactions.
29
+ * Returns the UserOp object containing the id and onChain.userOperation for signing.
30
+ */
31
+ export declare function transactionsToCrossmintUserOp({ crossmintClient, crossmintAccountAddress, permittedAddress, transactions, chain, }: TransactionsToCrossmintUserOpParams): Promise<import("node_modules/@crossmint/wallets-sdk/dist/api/gen/types.gen.cjs").WalletsTransactionV2025ResponseDto>;
32
+ /**
33
+ * Send a signed Crossmint UserOp to the bundler.
34
+ * Returns the UserOp hash.
35
+ */
36
+ export declare function sendPermittedCrossmintUserOperation({ crossmintClient, accountAddress, signature, signerAddress, userOp, }: SendPermittedCrossmintUserOperationParams): Promise<Hex>;
37
+ //# sourceMappingURL=crossmint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crossmint.d.ts","sourceRoot":"","sources":["../../../../src/lib/helpers/crossmint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mCAAmC;IAClD,eAAe,EAAE,gBAAgB,CAAC;IAClC,uBAAuB,EAAE,OAAO,CAAC;IACjC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,oBAAoB,EAAE,CAAC;IACrC,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,WAAW,yCAAyC;IACxD,eAAe,EAAE,gBAAgB,CAAC;IAClC,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,GAAG,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,6BAA6B,CAAC,EAClD,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,YAAY,EACZ,KAAK,GACN,EAAE,mCAAmC,wHAqBrC;AAED;;;GAGG;AACH,wBAAsB,mCAAmC,CAAC,EACxD,eAAe,EACf,cAAc,EACd,SAAS,EACT,aAAa,EACb,MAAM,GACP,EAAE,yCAAyC,GAAG,OAAO,CAAC,GAAG,CAAC,CA2B1D"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transactionsToCrossmintUserOp = transactionsToCrossmintUserOp;
4
+ exports.sendPermittedCrossmintUserOperation = sendPermittedCrossmintUserOperation;
5
+ /**
6
+ * Create a Crossmint UserOp from transactions.
7
+ * Returns the UserOp object containing the id and onChain.userOperation for signing.
8
+ */
9
+ async function transactionsToCrossmintUserOp({ crossmintClient, crossmintAccountAddress, permittedAddress, transactions, chain, }) {
10
+ const crossmintUserOp = await crossmintClient.createTransaction(crossmintAccountAddress, {
11
+ params: {
12
+ calls: transactions.map((t) => ({
13
+ data: t.data,
14
+ to: t.to,
15
+ value: t.value || '0',
16
+ })),
17
+ // @ts-expect-error - Crossmint expects specific chain literal, viem Chain.name is generic string
18
+ chain: chain.name.toLowerCase(),
19
+ signer: permittedAddress,
20
+ },
21
+ });
22
+ if ('error' in crossmintUserOp) {
23
+ throw new Error(`Could not create crossmint user operation. Error: ${JSON.stringify(crossmintUserOp.error)}`);
24
+ }
25
+ return crossmintUserOp;
26
+ }
27
+ /**
28
+ * Send a signed Crossmint UserOp to the bundler.
29
+ * Returns the UserOp hash.
30
+ */
31
+ async function sendPermittedCrossmintUserOperation({ crossmintClient, accountAddress, signature, signerAddress, userOp, }) {
32
+ const userOpApproval = await crossmintClient.approveTransaction(accountAddress, userOp.id, {
33
+ approvals: [
34
+ {
35
+ signer: `external-wallet:${signerAddress}`,
36
+ signature: signature,
37
+ },
38
+ ],
39
+ });
40
+ if ('error' in userOpApproval) {
41
+ throw new Error(`Could not sign crossmint user operation. Error: ${JSON.stringify(userOpApproval.error)}`);
42
+ }
43
+ // Type guard for userOperationHash
44
+ if (!('userOperationHash' in userOpApproval.onChain)) {
45
+ throw new Error('Unexpected response format: missing userOperationHash');
46
+ }
47
+ console.log('[sendPermittedCrossmintUserOperation] UserOp hash:', userOpApproval.onChain.userOperationHash);
48
+ return userOpApproval.onChain.userOperationHash;
49
+ }
50
+ //# sourceMappingURL=crossmint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crossmint.js","sourceRoot":"","sources":["../../../../src/lib/helpers/crossmint.ts"],"names":[],"mappings":";;AAgCA,sEA2BC;AAMD,kFAiCC;AAtED;;;GAGG;AACI,KAAK,UAAU,6BAA6B,CAAC,EAClD,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,YAAY,EACZ,KAAK,GAC+B;IACpC,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,iBAAiB,CAAC,uBAAuB,EAAE;QACvF,MAAM,EAAE;YACN,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG;aACtB,CAAC,CAAC;YACH,iGAAiG;YACjG,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE;YAC/B,MAAM,EAAE,gBAAgB;SACzB;KACF,CAAC,CAAC;IAEH,IAAI,OAAO,IAAI,eAAe,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,qDAAqD,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAC7F,CAAC;IACJ,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,mCAAmC,CAAC,EACxD,eAAe,EACf,cAAc,EACd,SAAS,EACT,aAAa,EACb,MAAM,GACoC;IAC1C,MAAM,cAAc,GAAG,MAAM,eAAe,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,EAAE;QACzF,SAAS,EAAE;YACT;gBACE,MAAM,EAAE,mBAAmB,aAAa,EAAE;gBAC1C,SAAS,EAAE,SAAS;aACrB;SACF;KACF,CAAC,CAAC;IAEH,IAAI,OAAO,IAAI,cAAc,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,mDAAmD,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAC1F,CAAC;IACJ,CAAC;IAED,mCAAmC;IACnC,IAAI,CAAC,CAAC,mBAAmB,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,CAAC,GAAG,CACT,oDAAoD,EACpD,cAAc,CAAC,OAAO,CAAC,iBAAiB,CACzC,CAAC;IAEF,OAAO,cAAc,CAAC,OAAO,CAAC,iBAAwB,CAAC;AACzD,CAAC"}
@@ -0,0 +1,71 @@
1
+ import { Address } from 'viem';
2
+ import { type Execute } from '@relayprotocol/relay-sdk';
3
+ /**
4
+ * Check if a chain ID is a testnet
5
+ */
6
+ export declare function isTestnet(chainId: number): Promise<boolean>;
7
+ /**
8
+ * Get the appropriate Relay SDK client based on chain ID
9
+ */
10
+ export declare function getRelayClient(chainId: number): Promise<import("@relayprotocol/relay-sdk", { with: { "resolution-mode": "import" } }).RelayClient>;
11
+ /**
12
+ * App fee configuration for Relay.link
13
+ * @see https://docs.relay.link/features/app-fees
14
+ */
15
+ export interface RelayLinkAppFee {
16
+ /** Address that will receive the app fee */
17
+ recipient: string;
18
+ /** App fee in basis points (e.g., "100" = 1%) */
19
+ fee: string;
20
+ }
21
+ /**
22
+ * Quote request parameters (matching SDK's getQuote parameters)
23
+ */
24
+ export interface RelayLinkQuoteParams {
25
+ user: string;
26
+ originChainId: number;
27
+ destinationChainId: number;
28
+ originCurrency: string;
29
+ destinationCurrency: string;
30
+ amount: string;
31
+ tradeType?: 'EXACT_INPUT' | 'EXACT_OUTPUT' | 'EXPECTED_OUTPUT';
32
+ recipient?: string;
33
+ slippageTolerance?: number;
34
+ topupGas?: boolean;
35
+ useReceiver?: boolean;
36
+ /** App fees to be charged for execution */
37
+ appFees?: RelayLinkAppFee[];
38
+ subsidizeFees?: boolean;
39
+ protocolVersion?: 'v1' | 'v2' | 'preferV2';
40
+ userOperationGasOverhead?: number;
41
+ }
42
+ /**
43
+ * Quote response type from SDK
44
+ */
45
+ export type RelayLinkQuoteResponse = Execute;
46
+ /**
47
+ * Transaction data from quote response steps
48
+ */
49
+ export interface RelayLinkTransactionData {
50
+ from: string;
51
+ to: string;
52
+ data: string;
53
+ value: string;
54
+ chainId: number;
55
+ maxFeePerGas?: string;
56
+ maxPriorityFeePerGas?: string;
57
+ gas?: string;
58
+ }
59
+ /**
60
+ * Get a quote from Relay.link using the SDK
61
+ */
62
+ export declare function getRelayLinkQuote(params: RelayLinkQuoteParams): Promise<RelayLinkQuoteResponse>;
63
+ /**
64
+ * Fetch Relay.link contract addresses for a specific chain using the SDK
65
+ */
66
+ export declare function fetchRelayLinkAddresses(chainId: number): Promise<Address[]>;
67
+ /**
68
+ * Check if an address is a Relay.link contract (async - fetches from API)
69
+ */
70
+ export declare function isRelayLinkAddress(address: Address, chainId: number): Promise<boolean>;
71
+ //# sourceMappingURL=relay-link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay-link.d.ts","sourceRoot":"","sources":["../../../../src/lib/helpers/relay-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAc,MAAM,MAAM,CAAC;AAC3C,OAAO,EAKL,KAAK,OAAO,EACb,MAAM,0BAA0B,CAAC;AAkElC;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGjE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,sGAEnD;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,aAAa,GAAG,cAAc,GAAG,iBAAiB,CAAC;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,UAAU,CAAC;IAC3C,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,sBAAsB,CAAC,CAkBjC;AAiCD;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CA+CjF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO5F"}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isTestnet = isTestnet;
4
+ exports.getRelayClient = getRelayClient;
5
+ exports.getRelayLinkQuote = getRelayLinkQuote;
6
+ exports.fetchRelayLinkAddresses = fetchRelayLinkAddresses;
7
+ exports.isRelayLinkAddress = isRelayLinkAddress;
8
+ const viem_1 = require("viem");
9
+ const relay_sdk_1 = require("@relayprotocol/relay-sdk");
10
+ /**
11
+ * Relay SDK client instance (lazy initialized)
12
+ */
13
+ let mainnetClient = null;
14
+ let testnetClient = null;
15
+ /**
16
+ * Get or create the Relay SDK client for mainnet
17
+ */
18
+ function getMainnetClient() {
19
+ if (!mainnetClient) {
20
+ mainnetClient = (0, relay_sdk_1.createClient)({
21
+ baseApiUrl: relay_sdk_1.MAINNET_RELAY_API,
22
+ source: 'vincent',
23
+ });
24
+ }
25
+ return mainnetClient;
26
+ }
27
+ /**
28
+ * Get or create the Relay SDK client for testnet
29
+ */
30
+ function getTestnetClient() {
31
+ if (!testnetClient) {
32
+ testnetClient = (0, relay_sdk_1.createClient)({
33
+ baseApiUrl: relay_sdk_1.TESTNET_RELAY_API,
34
+ source: 'vincent',
35
+ });
36
+ }
37
+ return testnetClient;
38
+ }
39
+ /**
40
+ * Fallback testnet chain IDs in case the API is unavailable
41
+ * Source: https://api.testnets.relay.link/chains
42
+ */
43
+ const FALLBACK_TESTNETS = new Set([
44
+ 1337, // Hyperliquid Testnet
45
+ 84532, // Base Sepolia
46
+ 11155111, // Sepolia
47
+ ]);
48
+ /**
49
+ * Cache for testnet chain IDs (fetched dynamically from Relay API)
50
+ */
51
+ let testnetChainIds = null;
52
+ /**
53
+ * Fetch and cache testnet chain IDs from the Relay API
54
+ * Falls back to hardcoded list if API request fails
55
+ */
56
+ async function getTestnetChainIds() {
57
+ if (testnetChainIds === null) {
58
+ try {
59
+ const chains = await (0, relay_sdk_1.fetchChainConfigs)(relay_sdk_1.TESTNET_RELAY_API);
60
+ testnetChainIds = new Set(chains.map((c) => c.id));
61
+ }
62
+ catch {
63
+ console.warn('[relay-link] Failed to fetch testnet chains, using fallback list');
64
+ testnetChainIds = FALLBACK_TESTNETS;
65
+ }
66
+ }
67
+ return testnetChainIds;
68
+ }
69
+ /**
70
+ * Check if a chain ID is a testnet
71
+ */
72
+ async function isTestnet(chainId) {
73
+ const testnets = await getTestnetChainIds();
74
+ return testnets.has(chainId);
75
+ }
76
+ /**
77
+ * Get the appropriate Relay SDK client based on chain ID
78
+ */
79
+ async function getRelayClient(chainId) {
80
+ return (await isTestnet(chainId)) ? getTestnetClient() : getMainnetClient();
81
+ }
82
+ /**
83
+ * Get a quote from Relay.link using the SDK
84
+ */
85
+ async function getRelayLinkQuote(params) {
86
+ const client = await getRelayClient(params.originChainId);
87
+ const quote = await client.actions.getQuote({
88
+ chainId: params.originChainId,
89
+ toChainId: params.destinationChainId,
90
+ currency: params.originCurrency,
91
+ toCurrency: params.destinationCurrency,
92
+ amount: params.amount,
93
+ tradeType: params.tradeType || 'EXACT_INPUT',
94
+ recipient: params.recipient || params.user, // Default to user if recipient not specified
95
+ user: params.user,
96
+ options: {
97
+ ...(params.appFees && { appFees: params.appFees }),
98
+ },
99
+ });
100
+ return quote;
101
+ }
102
+ /**
103
+ * Fetch Relay.link contract addresses for a specific chain using the SDK
104
+ */
105
+ async function fetchRelayLinkAddresses(chainId) {
106
+ const apiUrl = (await isTestnet(chainId)) ? relay_sdk_1.TESTNET_RELAY_API : relay_sdk_1.MAINNET_RELAY_API;
107
+ // fetchChainConfigs returns RelayChain[] but the actual API response includes contracts
108
+ const chains = (await (0, relay_sdk_1.fetchChainConfigs)(apiUrl));
109
+ const chainInfo = chains.find((c) => c.id === chainId);
110
+ if (!chainInfo) {
111
+ throw new Error(`Chain ${chainId} not found in Relay API response`);
112
+ }
113
+ // Collect all relevant contract addresses
114
+ const addresses = [];
115
+ const contracts = chainInfo.contracts;
116
+ const protocol = chainInfo.protocol;
117
+ if (contracts) {
118
+ // Top-level contracts
119
+ if (contracts.relayReceiver) {
120
+ addresses.push((0, viem_1.getAddress)(contracts.relayReceiver));
121
+ }
122
+ if (contracts.erc20Router) {
123
+ addresses.push((0, viem_1.getAddress)(contracts.erc20Router));
124
+ }
125
+ if (contracts.approvalProxy) {
126
+ addresses.push((0, viem_1.getAddress)(contracts.approvalProxy));
127
+ }
128
+ // V3 contracts
129
+ if (contracts.v3?.erc20Router) {
130
+ addresses.push((0, viem_1.getAddress)(contracts.v3.erc20Router));
131
+ }
132
+ if (contracts.v3?.approvalProxy) {
133
+ addresses.push((0, viem_1.getAddress)(contracts.v3.approvalProxy));
134
+ }
135
+ }
136
+ // V2 protocol depository
137
+ if (protocol?.v2?.depository) {
138
+ addresses.push((0, viem_1.getAddress)(protocol.v2.depository));
139
+ }
140
+ if (addresses.length === 0) {
141
+ throw new Error(`No Relay contract addresses found for chain ${chainId}`);
142
+ }
143
+ return addresses;
144
+ }
145
+ /**
146
+ * Check if an address is a Relay.link contract (async - fetches from API)
147
+ */
148
+ async function isRelayLinkAddress(address, chainId) {
149
+ try {
150
+ const relayAddresses = await fetchRelayLinkAddresses(chainId);
151
+ return relayAddresses.some((relayAddr) => address.toLowerCase() === relayAddr.toLowerCase());
152
+ }
153
+ catch {
154
+ return false;
155
+ }
156
+ }
157
+ //# sourceMappingURL=relay-link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay-link.js","sourceRoot":"","sources":["../../../../src/lib/helpers/relay-link.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import type { Address, Chain, Hex } from 'viem';
2
+ /**
3
+ * Transaction type for Safe UserOps
4
+ */
5
+ export interface SafeTransaction {
6
+ to: Address;
7
+ data: Hex;
8
+ value?: bigint;
9
+ }
10
+ export interface TransactionsToSafeUserOpParams {
11
+ safeAddress: Address;
12
+ permittedAddress: Address;
13
+ transactions: SafeTransaction[];
14
+ chain: Chain;
15
+ safeRpcUrl: string;
16
+ pimlicoRpcUrl: string;
17
+ }
18
+ export interface SendPermittedSafeUserOperationParams {
19
+ signedUserOp: Record<string, unknown>;
20
+ chain: Chain;
21
+ pimlicoRpcUrl: string;
22
+ }
23
+ /**
24
+ * Create a Safe UserOp from transactions.
25
+ * Returns the unsigned UserOp that needs to be signed by the Vincent ability.
26
+ */
27
+ export declare function transactionsToSafeUserOp({ safeAddress, permittedAddress, transactions, chain, safeRpcUrl, pimlicoRpcUrl, }: TransactionsToSafeUserOpParams): Promise<{
28
+ readonly account: import("permissionless/accounts", { with: { "resolution-mode": "import" } }).ToSafeSmartAccountReturnType<"0.7">;
29
+ callData: Hex;
30
+ paymasterAndData: undefined;
31
+ sender: import("viem/account-abstraction").UserOperation["sender"];
32
+ authorization: import("viem/account-abstraction").UserOperation["authorization"];
33
+ factory: import("viem/account-abstraction").UserOperation["factory"];
34
+ factoryData: import("viem/account-abstraction").UserOperation["factoryData"];
35
+ nonce: import("viem/account-abstraction").UserOperation["nonce"];
36
+ maxFeePerGas: import("viem/account-abstraction").UserOperation["maxFeePerGas"];
37
+ maxPriorityFeePerGas: import("viem/account-abstraction").UserOperation["maxPriorityFeePerGas"];
38
+ callGasLimit: import("viem/account-abstraction").UserOperation["callGasLimit"];
39
+ preVerificationGas: import("viem/account-abstraction").UserOperation["preVerificationGas"];
40
+ verificationGasLimit: import("viem/account-abstraction").UserOperation["verificationGasLimit"];
41
+ paymasterPostOpGasLimit: import("viem/account-abstraction").UserOperation["paymasterPostOpGasLimit"];
42
+ paymasterVerificationGasLimit: import("viem/account-abstraction").UserOperation["paymasterVerificationGasLimit"];
43
+ paymaster: import("viem/account-abstraction").UserOperation["paymaster"];
44
+ paymasterData: import("viem/account-abstraction").UserOperation["paymasterData"];
45
+ signature: import("viem/account-abstraction").UserOperation["signature"];
46
+ }>;
47
+ /**
48
+ * Send a signed Safe UserOp to the bundler.
49
+ * Returns the transaction hash.
50
+ */
51
+ export declare function sendPermittedSafeUserOperation({ signedUserOp, chain, pimlicoRpcUrl, }: SendPermittedSafeUserOperationParams): Promise<Hex>;
52
+ //# sourceMappingURL=safe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["../../../../src/lib/helpers/safe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAQhD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,8BAA8B;IAC7C,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oCAAoC;IACnD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;CACvB;AA2BD;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,EAC7C,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,KAAK,EACL,UAAU,EACV,aAAa,GACd,EAAE,8BAA8B;;;;;;;;;;;;;;;;;;;GAgDhC;AAED;;;GAGG;AACH,wBAAsB,8BAA8B,CAAC,EACnD,YAAY,EACZ,KAAK,EACL,aAAa,GACd,EAAE,oCAAoC,GAAG,OAAO,CAAC,GAAG,CAAC,CAqBrD"}