@chainlink/ccip-cli 0.90.2 → 0.91.1

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 (68) hide show
  1. package/README.md +40 -21
  2. package/dist/commands/index.d.ts +2 -1
  3. package/dist/commands/index.d.ts.map +1 -1
  4. package/dist/commands/index.js +1 -0
  5. package/dist/commands/index.js.map +1 -1
  6. package/dist/commands/manual-exec.d.ts +9 -0
  7. package/dist/commands/manual-exec.d.ts.map +1 -1
  8. package/dist/commands/manual-exec.js +40 -35
  9. package/dist/commands/manual-exec.js.map +1 -1
  10. package/dist/commands/parse.d.ts +9 -0
  11. package/dist/commands/parse.d.ts.map +1 -1
  12. package/dist/commands/parse.js +18 -7
  13. package/dist/commands/parse.js.map +1 -1
  14. package/dist/commands/send.d.ts +9 -0
  15. package/dist/commands/send.d.ts.map +1 -1
  16. package/dist/commands/send.js +39 -26
  17. package/dist/commands/send.js.map +1 -1
  18. package/dist/commands/show.d.ts +9 -0
  19. package/dist/commands/show.d.ts.map +1 -1
  20. package/dist/commands/show.js +46 -39
  21. package/dist/commands/show.js.map +1 -1
  22. package/dist/commands/supported-tokens.d.ts +9 -2
  23. package/dist/commands/supported-tokens.d.ts.map +1 -1
  24. package/dist/commands/supported-tokens.js +35 -30
  25. package/dist/commands/supported-tokens.js.map +1 -1
  26. package/dist/commands/types.d.ts +13 -0
  27. package/dist/commands/types.d.ts.map +1 -1
  28. package/dist/commands/types.js +1 -0
  29. package/dist/commands/types.js.map +1 -1
  30. package/dist/commands/utils.d.ts +75 -10
  31. package/dist/commands/utils.d.ts.map +1 -1
  32. package/dist/commands/utils.js +95 -19
  33. package/dist/commands/utils.js.map +1 -1
  34. package/dist/index.d.ts +2 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +24 -7
  37. package/dist/index.js.map +1 -1
  38. package/dist/providers/aptos.d.ts +35 -0
  39. package/dist/providers/aptos.d.ts.map +1 -1
  40. package/dist/providers/aptos.js +34 -9
  41. package/dist/providers/aptos.js.map +1 -1
  42. package/dist/providers/evm.d.ts +10 -1
  43. package/dist/providers/evm.d.ts.map +1 -1
  44. package/dist/providers/evm.js +11 -5
  45. package/dist/providers/evm.js.map +1 -1
  46. package/dist/providers/index.d.ts +15 -8
  47. package/dist/providers/index.d.ts.map +1 -1
  48. package/dist/providers/index.js +47 -11
  49. package/dist/providers/index.js.map +1 -1
  50. package/dist/providers/solana.d.ts +30 -0
  51. package/dist/providers/solana.d.ts.map +1 -1
  52. package/dist/providers/solana.js +30 -5
  53. package/dist/providers/solana.js.map +1 -1
  54. package/package.json +11 -8
  55. package/src/commands/index.ts +2 -1
  56. package/src/commands/manual-exec.ts +40 -33
  57. package/src/commands/parse.ts +19 -8
  58. package/src/commands/send.ts +47 -30
  59. package/src/commands/show.ts +47 -48
  60. package/src/commands/supported-tokens.ts +35 -30
  61. package/src/commands/types.ts +15 -0
  62. package/src/commands/utils.ts +112 -26
  63. package/src/index.ts +29 -7
  64. package/src/providers/aptos.ts +33 -8
  65. package/src/providers/evm.ts +22 -5
  66. package/src/providers/index.ts +67 -15
  67. package/src/providers/solana.ts +31 -6
  68. package/tsconfig.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"evm.js","sourceRoot":"","sources":["../../src/providers/evm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,YAAY,MAAM,iCAAiC,CAAA;AAC1D,OAAO,EAA8B,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEnF,sFAAsF;AACtF,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE;IACpC,OAAO,EAAE,UAA8B,QAA0B;QAC/D,OAAO,IAAI,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IAC5D,CAAC;CACF,CAAC,CAAA;AAEF;;;;;GAKG;AACH,QAAQ,CAAC,SAAS,GAAG,KAAK,UAAU,aAAa,CAC/C,QAAkB,EAClB,EAAE,MAAM,EAAE,SAAS,EAAwB;IAE3C,IAAI,CAAC,SAAS;QAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAC/E,IAAI,OAAO,SAAS,KAAK,QAAQ;QAC/B,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IACtE,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,IAAI,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5C,IAAI,cAAc,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClD,cAAc,GAAG,aAAa,cAAc,OAAO,CAAA;QACrD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAA;QACvE,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,MAAM,CAAC,UAAU,EAAE,EAAE,mBAAmB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QAC9F,OAAO,MAAM,CAAA;IACf,CAAC;IACD,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;QACzC,IAAI,CAAC,EAAE;YAAE,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC,CAAA;QAC3E,OAAO,CAAC,MAAM,MAAM,CAAC,iBAAiB,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAClG,CAAC;IACD,OAAO,IAAI,UAAU,CACnB,IAAI,UAAU,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,EACpE,QAAQ,CACT,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"evm.js","sourceRoot":"","sources":["../../src/providers/evm.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,20 @@
1
- import { type ChainGetter, type ChainTransaction } from '@chainlink/ccip-sdk/src/index.ts';
2
- import './aptos.ts';
3
- import './evm.ts';
4
- import './solana.ts';
5
- export declare function fetchChainsFromRpcs(argv: {
1
+ import { type Chain, type ChainGetter, type ChainTransaction } from '@chainlink/ccip-sdk/src/index.ts';
2
+ import type { Ctx } from '../commands/index.ts';
3
+ export declare function fetchChainsFromRpcs(ctx: Ctx, argv: {
6
4
  rpcs?: string[];
7
5
  'rpcs-file'?: string;
8
- }, txHash?: undefined, destroy?: Promise<unknown>): ChainGetter;
9
- export declare function fetchChainsFromRpcs(argv: {
6
+ }): ChainGetter;
7
+ export declare function fetchChainsFromRpcs(ctx: Ctx, argv: {
10
8
  rpcs?: string[];
11
9
  'rpcs-file'?: string;
12
- }, txHash: string, destroy?: Promise<unknown>): [ChainGetter, Promise<ChainTransaction>];
10
+ }, txHash: string): [ChainGetter, Promise<[Chain, ChainTransaction]>];
11
+ /**
12
+ * Load chain-specific wallet for given chain
13
+ * @param chain - Chain instance to load wallet for
14
+ * @param opts - Wallet options (as passed from yargs argv)
15
+ * @returns Promise to chain-specific wallet instance
16
+ */
17
+ export declare function loadChainWallet(chain: Chain, opts: {
18
+ wallet?: unknown;
19
+ }): Promise<readonly [string, import("ethers").Signer] | readonly [string, import("@coral-xyz/anchor").Wallet] | readonly [`0x${string}`, import("./aptos.ts").AptosLedgerSigner | import("@aptos-labs/ts-sdk").Ed25519Account]>;
13
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EAGtB,MAAM,kCAAkC,CAAA;AAEzC,OAAO,YAAY,CAAA;AACnB,OAAO,UAAU,CAAA;AACjB,OAAO,aAAa,CAAA;AA6BpB,wBAAgB,mBAAmB,CACjC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAC/C,MAAM,CAAC,EAAE,SAAS,EAClB,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GACzB,WAAW,CAAA;AACd,wBAAgB,mBAAmB,CACjC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAC/C,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GACzB,CAAC,WAAW,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,KAAK,EACV,KAAK,WAAW,EAChB,KAAK,gBAAgB,EAKtB,MAAM,kCAAkC,CAAA;AAKzC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAqD/C,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,GAAG,EACR,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,WAAW,CAAA;AACd,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,GAAG,EACR,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAC/C,MAAM,EAAE,MAAM,GACb,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAA;AA+FpD;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,gOAe7E"}
@@ -1,9 +1,22 @@
1
1
  import { readFile } from 'node:fs/promises';
2
- import { networkInfo, supportedChains, } from '@chainlink/ccip-sdk';
3
- import "./aptos.js";
4
- import "./evm.js";
5
- import "./solana.js";
2
+ import { ChainFamily, networkInfo, supportedChains, } from '@chainlink/ccip-sdk';
3
+ import { loadAptosWallet } from "./aptos.js";
4
+ import { loadEvmWallet } from "./evm.js";
5
+ import { loadSolanaWallet } from "./solana.js";
6
6
  const RPCS_RE = /\b(?:http|ws)s?:\/\/[\w/\\@&?%~#.,;:=+-]+/;
7
+ const signalToPromiseMap = new WeakMap();
8
+ function signalToPromise(signal) {
9
+ let promise = signalToPromiseMap.get(signal);
10
+ if (!promise) {
11
+ signalToPromiseMap.set(signal, (promise = new Promise((_, reject) => {
12
+ signal.throwIfAborted();
13
+ signal.addEventListener('abort', () => reject(signal.reason instanceof Error
14
+ ? signal.reason
15
+ : new Error(`Aborted: ${signal.reason}`)), { once: true });
16
+ })));
17
+ }
18
+ return promise;
19
+ }
7
20
  async function collectEndpoints({ rpcs, 'rpcs-file': rpcsFile, }) {
8
21
  const endpoints = new Set(rpcs || []);
9
22
  for (const [env, val] of Object.entries(process.env)) {
@@ -28,12 +41,13 @@ async function collectEndpoints({ rpcs, 'rpcs-file': rpcsFile, }) {
28
41
  /**
29
42
  * Receives a list of rpcs and/or rpcs file, and loads them all concurrently
30
43
  * Returns a ChainGetter function and optinoally a ChainTransaction promise
44
+ * @param ctx - Context object containing destroy$ promise and logger properties
31
45
  * @param argv - Options containing rpcs (list) and/or rpcs file
32
46
  * @param txHash - Optional txHash to fetch concurrently; causes the function to return a [ChainGetter, Promise<ChainTransaction>]
33
- * @param destroy - A promise to signal when to stop fetching chains
34
47
  * @returns a ChainGetter (alone if no txHash was provided), or a tuple of [ChainGetter, Promise<ChainTransaction>]
35
48
  */
36
- export function fetchChainsFromRpcs(argv, txHash, destroy) {
49
+ export function fetchChainsFromRpcs(ctx, argv, txHash) {
50
+ const { destroy$ } = ctx;
37
51
  const chains = {};
38
52
  const chainsCbs = {};
39
53
  let finished = false;
@@ -43,10 +57,10 @@ export function fetchChainsFromRpcs(argv, txHash, destroy) {
43
57
  let txFound = false;
44
58
  for (const C of Object.values(supportedChains)) {
45
59
  for (const url of endpoints) {
46
- const chain$ = C.fromUrl(url);
60
+ const chain$ = C.fromUrl(url, ctx);
47
61
  if (txHash) {
48
- const tx$ = chain$.then((chain) => chain.getTransaction(txHash));
49
- void tx$.then(({ chain }) => {
62
+ const tx$ = chain$.then((chain) => chain.getTransaction(txHash).then((tx) => [chain, tx]));
63
+ void tx$.then(([chain]) => {
50
64
  if (txFound)
51
65
  return;
52
66
  txFound = true;
@@ -59,7 +73,7 @@ export function fetchChainsFromRpcs(argv, txHash, destroy) {
59
73
  pendingPromises.push(chain$.then((chain) => {
60
74
  if (chain.network.name in chains && !(chain.network.name in chainsCbs))
61
75
  return chain.destroy?.(); // lost race
62
- void destroy?.finally(() => {
76
+ destroy$.addEventListener('abort', () => {
63
77
  void chain.destroy?.(); // cleanup
64
78
  });
65
79
  if (!(chain.network.name in chains)) {
@@ -73,7 +87,7 @@ export function fetchChainsFromRpcs(argv, txHash, destroy) {
73
87
  }
74
88
  }
75
89
  const res = Promise.allSettled(pendingPromises);
76
- void (destroy ? Promise.race([res, destroy]) : res).finally(() => {
90
+ void (destroy$ ? Promise.race([res, signalToPromise(destroy$)]) : res).finally(() => {
77
91
  finished = true;
78
92
  Object.entries(chainsCbs).forEach(([name, [_, reject]]) => reject(new Error(`No provider/chain found for network=${name}`)));
79
93
  });
@@ -101,4 +115,26 @@ export function fetchChainsFromRpcs(argv, txHash, destroy) {
101
115
  return chainGetter;
102
116
  }
103
117
  }
118
+ /**
119
+ * Load chain-specific wallet for given chain
120
+ * @param chain - Chain instance to load wallet for
121
+ * @param opts - Wallet options (as passed from yargs argv)
122
+ * @returns Promise to chain-specific wallet instance
123
+ */
124
+ export async function loadChainWallet(chain, opts) {
125
+ let wallet;
126
+ switch (chain.network.family) {
127
+ case ChainFamily.EVM:
128
+ wallet = await loadEvmWallet(chain.provider, opts);
129
+ return [await wallet.getAddress(), wallet];
130
+ case ChainFamily.Solana:
131
+ wallet = await loadSolanaWallet(opts);
132
+ return [wallet.publicKey.toBase58(), wallet];
133
+ case ChainFamily.Aptos:
134
+ wallet = await loadAptosWallet(opts);
135
+ return [wallet.accountAddress.toString(), wallet];
136
+ default:
137
+ throw new Error(`Unsupported chain family: ${chain.network.family}`);
138
+ }
139
+ }
104
140
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,EAKL,WAAW,EACX,WAAW,EACX,eAAe,GAChB,MAAM,kCAAkC,CAAA;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAG9C,MAAM,OAAO,GAAG,2CAA2C,CAAA;AAE3D,MAAM,kBAAkB,GAAG,IAAI,OAAO,EAA8B,CAAA;AACpE,SAAS,eAAe,CAAC,MAAmB;IAC1C,IAAI,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,kBAAkB,CAAC,GAAG,CACpB,MAAM,EACN,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,CAAC,cAAc,EAAE,CAAA;YACvB,MAAM,CAAC,gBAAgB,CACrB,OAAO,EACP,GAAG,EAAE,CACH,MAAM,CACJ,MAAM,CAAC,MAAM,YAAY,KAAK;gBAC5B,CAAC,CAAC,MAAM,CAAC,MAAM;gBACf,CAAC,CAAC,IAAI,KAAK,CAAC,YAAY,MAAM,CAAC,MAAgB,EAAE,CAAC,CACrD,EACH,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAA;QACH,CAAC,CAAC,CAAC,CACJ,CAAA;IACH,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,EAC9B,IAAI,EACJ,WAAW,EAAE,QAAQ,GAItB;IACC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,IAAI,IAAI,EAAE,CAAC,CAAA;IAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC5E,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YACpD,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACnE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBACjC,IAAI,KAAK;oBAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YACpC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAYD;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,GAAQ,EACR,IAA+C,EAC/C,MAAe;IAEf,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAA;IACxB,MAAM,MAAM,GAAmC,EAAE,CAAA;IACjD,MAAM,SAAS,GAGX,EAAE,CAAA;IACN,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,MAAM,GAAG,GAAyC,EAAE,CAAA;IAEpD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;QACtD,MAAM,eAAe,GAAuB,EAAE,CAAA;QAC9C,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;YAC/C,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;gBAClC,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAChC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAA4B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAClF,CAAA;oBACD,KAAK,GAAG,CAAC,IAAI,CACX,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE;wBACV,IAAI,OAAO;4BAAE,OAAM;wBACnB,OAAO,GAAG,IAAI,CAAA;wBACd,iEAAiE;wBACjE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAA;wBACnC,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;oBACtC,CAAC,EACD,GAAG,EAAE,GAAE,CAAC,CACT,CAAA;oBACD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACf,CAAC;gBAED,eAAe,CAAC,IAAI,CAClB,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;oBACpB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC;wBACpE,OAAO,KAAK,CAAC,OAAO,EAAE,EAAE,CAAA,CAAC,YAAY;oBACvC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;wBACtC,KAAK,KAAK,CAAC,OAAO,EAAE,EAAE,CAAA,CAAC,UAAU;oBACnC,CAAC,CAAC,CAAA;oBACF,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC;wBACpC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;oBACrD,CAAC;yBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;wBAC3C,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;wBAC/C,OAAO,CAAC,KAAK,CAAC,CAAA;oBAChB,CAAC;gBACH,CAAC,CAAC,CACH,CAAA;YACH,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;QAC/C,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YAClF,QAAQ,GAAG,IAAI,CAAA;YACf,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CACxD,MAAM,CAAC,IAAI,KAAK,CAAC,uCAAuC,IAAI,EAAE,CAAC,CAAC,CACjE,CAAA;QACH,CAAC,CAAC,CAAA;QACF,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC,CAAC,CAAA;IAEF,MAAM,WAAW,GAAG,KAAK,EAAE,kBAA4C,EAAkB,EAAE;QACzF,MAAM,OAAO,GAAG,WAAW,CAAC,kBAAkB,CAAC,CAAA;QAC/C,IAAI,OAAO,CAAC,IAAI,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACvD,IAAI,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QACpF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC7C,CAAC,CAAC,CAAA;QACF,KAAK,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YACrC,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;QACF,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC,CAAA;IAED,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;IAC7B,CAAC;SAAM,CAAC;QACN,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAC1B,OAAO,WAAW,CAAA;IACpB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAY,EAAE,IAA0B;IAC5E,IAAI,MAAM,CAAA;IACV,QAAQ,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC7B,KAAK,WAAW,CAAC,GAAG;YAClB,MAAM,GAAG,MAAM,aAAa,CAAE,KAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;YAChE,OAAO,CAAC,MAAM,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,CAAU,CAAA;QACrD,KAAK,WAAW,CAAC,MAAM;YACrB,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAA;YACrC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAU,CAAA;QACvD,KAAK,WAAW,CAAC,KAAK;YACpB,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAA;YACpC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAU,CAAA;QAC5D;YACE,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACxE,CAAC;AACH,CAAC"}
@@ -1,13 +1,43 @@
1
+ import { Wallet as AnchorWallet } from '@coral-xyz/anchor';
1
2
  import SolanaLedger from '@ledgerhq/hw-app-solana';
2
3
  import { type VersionedTransaction, Keypair, PublicKey, Transaction } from '@solana/web3.js';
4
+ /** Ledger hardware wallet signer for Solana. */
3
5
  export declare class LedgerSolanaWallet {
4
6
  publicKey: PublicKey;
5
7
  wallet: SolanaLedger.default;
6
8
  path: string;
9
+ /**
10
+ * Private constructor - use static `create` method instead.
11
+ * @internal
12
+ */
7
13
  private constructor();
14
+ /**
15
+ * Creates a new LedgerSolanaWallet instance.
16
+ * @param path - BIP44 derivation path.
17
+ * @returns A new LedgerSolanaWallet instance.
18
+ */
8
19
  static create(path: string): Promise<LedgerSolanaWallet>;
20
+ /**
21
+ * Signs a transaction with the Ledger device.
22
+ * @param tx - Transaction to sign.
23
+ * @returns Signed transaction.
24
+ */
9
25
  signTransaction<T extends Transaction | VersionedTransaction>(tx: T): Promise<T>;
26
+ /**
27
+ * Signs multiple transactions with the Ledger device.
28
+ * @param txs - Transactions to sign.
29
+ * @returns Signed transactions.
30
+ */
10
31
  signAllTransactions<T extends Transaction | VersionedTransaction>(txs: T[]): Promise<T[]>;
32
+ /** Payer property - not available on Ledger. */
11
33
  get payer(): Keypair;
12
34
  }
35
+ /**
36
+ * Loads a Solana wallet from a file or Ledger device.
37
+ * @param wallet - wallet options (as passed to yargs argv)
38
+ * @returns Promise to Anchor Wallet instance
39
+ */
40
+ export declare function loadSolanaWallet({ wallet: walletOpt, }?: {
41
+ wallet?: unknown;
42
+ }): Promise<AnchorWallet>;
13
43
  //# sourceMappingURL=solana.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../src/providers/solana.ts"],"names":[],"mappings":"AAKA,OAAO,YAAY,MAAM,yBAAyB,CAAA;AAElD,OAAO,EAGL,KAAK,oBAAoB,EACzB,OAAO,EACP,SAAS,EACT,WAAW,EACZ,MAAM,iBAAiB,CAAA;AAIxB,qBAAa,kBAAkB;IAC7B,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,YAAY,CAAC,OAAO,CAAA;IAC5B,IAAI,EAAE,MAAM,CAAA;IAEZ,OAAO;WAMM,MAAM,CAAC,IAAI,EAAE,MAAM;IAc1B,eAAe,CAAC,CAAC,SAAS,WAAW,GAAG,oBAAoB,EAAE,EAAE,EAAE,CAAC;IAenE,mBAAmB,CAAC,CAAC,SAAS,WAAW,GAAG,oBAAoB,EAAE,GAAG,EAAE,CAAC,EAAE;IAShF,IAAI,KAAK,IAAI,OAAO,CAEnB;CACF"}
1
+ {"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../src/providers/solana.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,YAAY,MAAM,yBAAyB,CAAA;AAElD,OAAO,EAGL,KAAK,oBAAoB,EACzB,OAAO,EACP,SAAS,EACT,WAAW,EACZ,MAAM,iBAAiB,CAAA;AAIxB,gDAAgD;AAChD,qBAAa,kBAAkB;IAC7B,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,YAAY,CAAC,OAAO,CAAA;IAC5B,IAAI,EAAE,MAAM,CAAA;IAEZ;;;OAGG;IACH,OAAO;IAMP;;;;OAIG;WACU,MAAM,CAAC,IAAI,EAAE,MAAM;IAchC;;;;OAIG;IACG,eAAe,CAAC,CAAC,SAAS,WAAW,GAAG,oBAAoB,EAAE,EAAE,EAAE,CAAC;IAezE;;;;OAIG;IACG,mBAAmB,CAAC,CAAC,SAAS,WAAW,GAAG,oBAAoB,EAAE,GAAG,EAAE,CAAC,EAAE;IAShF,gDAAgD;IAChD,IAAI,KAAK,IAAI,OAAO,CAEnB;CACF;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,MAAM,EAAE,SAAS,GAClB,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAkBnD"}
@@ -1,21 +1,30 @@
1
1
  import { existsSync, readFileSync } from 'node:fs';
2
2
  import util from 'node:util';
3
- import { SolanaChain } from '@chainlink/ccip-sdk';
4
- import { Wallet as SolanaWallet } from '@coral-xyz/anchor';
3
+ import { Wallet as AnchorWallet } from '@coral-xyz/anchor';
5
4
  import SolanaLedger from '@ledgerhq/hw-app-solana';
6
5
  import HIDTransport from '@ledgerhq/hw-transport-node-hid';
7
6
  import { Keypair, PublicKey, Transaction, } from '@solana/web3.js';
8
7
  import bs58 from 'bs58';
9
8
  import { getBytes, hexlify } from 'ethers';
9
+ /** Ledger hardware wallet signer for Solana. */
10
10
  export class LedgerSolanaWallet {
11
11
  publicKey;
12
12
  wallet;
13
13
  path;
14
+ /**
15
+ * Private constructor - use static `create` method instead.
16
+ * @internal
17
+ */
14
18
  constructor(solanaLW, pubKey, path) {
15
19
  this.wallet = solanaLW;
16
20
  this.publicKey = pubKey;
17
21
  this.path = path;
18
22
  }
23
+ /**
24
+ * Creates a new LedgerSolanaWallet instance.
25
+ * @param path - BIP44 derivation path.
26
+ * @returns A new LedgerSolanaWallet instance.
27
+ */
19
28
  static async create(path) {
20
29
  try {
21
30
  const transport = await HIDTransport.default.create();
@@ -30,6 +39,11 @@ export class LedgerSolanaWallet {
30
39
  throw e;
31
40
  }
32
41
  }
42
+ /**
43
+ * Signs a transaction with the Ledger device.
44
+ * @param tx - Transaction to sign.
45
+ * @returns Signed transaction.
46
+ */
33
47
  async signTransaction(tx) {
34
48
  console.debug('Ledger: Request to sign message from', this.publicKey.toBase58());
35
49
  // serializeMessage on v0, serialize on v1
@@ -44,6 +58,11 @@ export class LedgerSolanaWallet {
44
58
  tx.addSignature(this.publicKey, signature);
45
59
  return tx;
46
60
  }
61
+ /**
62
+ * Signs multiple transactions with the Ledger device.
63
+ * @param txs - Transactions to sign.
64
+ * @returns Signed transactions.
65
+ */
47
66
  async signAllTransactions(txs) {
48
67
  console.info('Signing multiple transactions with Ledger');
49
68
  const signedTxs = [];
@@ -52,11 +71,17 @@ export class LedgerSolanaWallet {
52
71
  }
53
72
  return signedTxs;
54
73
  }
74
+ /** Payer property - not available on Ledger. */
55
75
  get payer() {
56
76
  throw new Error('Payer method not available on Ledger');
57
77
  }
58
78
  }
59
- SolanaChain.getWallet = async function loadSolanaWallet({ wallet: walletOpt, } = {}) {
79
+ /**
80
+ * Loads a Solana wallet from a file or Ledger device.
81
+ * @param wallet - wallet options (as passed to yargs argv)
82
+ * @returns Promise to Anchor Wallet instance
83
+ */
84
+ export async function loadSolanaWallet({ wallet: walletOpt, } = {}) {
60
85
  if (!walletOpt)
61
86
  walletOpt = process.env['USER_KEY'] || process.env['OWNER_KEY'] || '~/.config/solana/id.json';
62
87
  let wallet;
@@ -74,6 +99,6 @@ SolanaChain.getWallet = async function loadSolanaWallet({ wallet: walletOpt, } =
74
99
  else if (existsSync(walletOpt)) {
75
100
  wallet = hexlify(new Uint8Array(JSON.parse(readFileSync(walletOpt, 'utf8'))));
76
101
  }
77
- return new SolanaWallet(Keypair.fromSecretKey(wallet.startsWith('0x') ? getBytes(wallet) : bs58.decode(wallet)));
78
- };
102
+ return new AnchorWallet(Keypair.fromSecretKey(wallet.startsWith('0x') ? getBytes(wallet) : bs58.decode(wallet)));
103
+ }
79
104
  //# sourceMappingURL=solana.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../src/providers/solana.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../src/providers/solana.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,YAAY,MAAM,yBAAyB,CAAA;AAClD,OAAO,YAAY,MAAM,iCAAiC,CAAA;AAC1D,OAAO,EAIL,OAAO,EACP,SAAS,EACT,WAAW,GACZ,MAAM,iBAAiB,CAAA;AACxB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAE1C,gDAAgD;AAChD,MAAM,OAAO,kBAAkB;IAC7B,SAAS,CAAW;IACpB,MAAM,CAAsB;IAC5B,IAAI,CAAQ;IAEZ;;;OAGG;IACH,YAAoB,QAA8B,EAAE,MAAiB,EAAE,IAAY;QACjF,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAA;QACtB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAY;QAC9B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,CAAA;YACrD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;YAClD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YACxD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAA;YACrC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAA;YAC/E,OAAO,IAAI,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;QACrD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAA;YACrF,MAAM,CAAC,CAAA;QACT,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe,CAA+C,EAAK;QACvE,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAA;QAChF,0CAA0C;QAE1C,IAAI,GAAwB,CAAA;QAC5B,IAAI,EAAE,YAAY,WAAW,EAAE,CAAC;YAC9B,GAAG,GAAG,EAAE,CAAC,cAAc,EAAE,CAAA;QAC3B,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,EAAE,CAAC,OAAO,CAAA;QAClB,CAAC;QACD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;QAChG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAC1C,OAAO,EAAE,CAAA;IACX,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,mBAAmB,CAA+C,GAAQ;QAC9E,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;QACzD,MAAM,SAAS,GAAQ,EAAE,CAAA;QACzB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAA;QAChD,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,gDAAgD;IAChD,IAAI,KAAK;QACP,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;IACzD,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EACrC,MAAM,EAAE,SAAS,MACO,EAAE;IAC1B,IAAI,CAAC,SAAS;QACZ,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,0BAA0B,CAAA;IAC/F,IAAI,MAAc,CAAA;IAClB,IAAI,OAAO,SAAS,KAAK,QAAQ;QAC/B,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IACtE,MAAM,GAAG,SAAS,CAAA;IAClB,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9D,IAAI,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5C,IAAI,CAAC,cAAc;YAAE,cAAc,GAAG,aAAa,CAAA;aAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAAE,cAAc,GAAG,YAAY,cAAc,GAAG,CAAA;QACvF,OAAO,CAAC,MAAM,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAiB,CAAA;IAC1E,CAAC;SAAM,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,MAAM,GAAG,OAAO,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/E,CAAC;IACD,OAAO,IAAI,YAAY,CACrB,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CACxF,CAAA;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chainlink/ccip-cli",
3
- "version": "0.90.2",
3
+ "version": "0.91.1",
4
4
  "description": "CCIP Command Line Interface, based on @chainlink/ccip-sdk",
5
5
  "author": "Chainlink devs",
6
6
  "license": "MIT",
@@ -35,24 +35,27 @@
35
35
  "eslint-config-prettier": "10.1.8",
36
36
  "eslint-import-resolver-typescript": "4.4.4",
37
37
  "eslint-plugin-import": "^2.32.0",
38
+ "eslint-plugin-jsdoc": "^61.4.2",
38
39
  "eslint-plugin-prettier": "^5.5.4",
39
- "prettier": "^3.7.1",
40
- "tsx": "4.20.6",
40
+ "eslint-plugin-tsdoc": "^0.5.0",
41
+ "prettier": "^3.7.4",
42
+ "tsx": "4.21.0",
41
43
  "typescript": "5.9.3",
42
- "typescript-eslint": "8.47.0"
44
+ "typescript-eslint": "8.48.1"
43
45
  },
44
46
  "dependencies": {
45
- "@aptos-labs/ts-sdk": "^5.1.5",
46
- "@chainlink/ccip-sdk": "^0.90.0",
47
+ "@aptos-labs/ts-sdk": "^5.1.6",
48
+ "@chainlink/ccip-sdk": "^0.91.0",
47
49
  "@coral-xyz/anchor": "^0.29.0",
48
50
  "@ethers-ext/signer-ledger": "^6.0.0-beta.1",
49
- "@inquirer/prompts": "8.0.1",
51
+ "@inquirer/prompts": "8.0.2",
50
52
  "@ledgerhq/hw-app-aptos": "^6.34.9",
51
53
  "@ledgerhq/hw-app-solana": "^7.6.0",
52
54
  "@ledgerhq/hw-transport-node-hid": "^6.29.14",
53
55
  "@solana/web3.js": "^1.98.4",
54
56
  "bs58": "^6.0.0",
55
- "ethers": "6.15.0",
57
+ "ethers": "6.16.0",
58
+ "type-fest": "^5.3.0",
56
59
  "yargs": "18.0.0"
57
60
  }
58
61
  }
@@ -1 +1,2 @@
1
- export { Format } from './types.ts'
1
+ export { type Ctx, Format } from './types.ts'
2
+ export { getCtx } from './utils.ts'
@@ -9,14 +9,13 @@ import {
9
9
  calculateManualExecProof,
10
10
  discoverOffRamp,
11
11
  estimateExecGasForRequest,
12
- fetchAllMessagesInBatch,
13
- fetchCCIPRequestsInTx,
14
12
  } from '@chainlink/ccip-sdk/src/index.ts'
15
13
  import type { Argv } from 'yargs'
16
14
 
17
15
  import type { GlobalOpts } from '../index.ts'
18
- import { Format } from './types.ts'
16
+ import { type Ctx, Format } from './types.ts'
19
17
  import {
18
+ getCtx,
20
19
  logParsedError,
21
20
  prettyCommit,
22
21
  prettyReceipt,
@@ -24,7 +23,7 @@ import {
24
23
  selectRequest,
25
24
  withDateTimestamp,
26
25
  } from './utils.ts'
27
- import { fetchChainsFromRpcs } from '../providers/index.ts'
26
+ import { fetchChainsFromRpcs, loadChainWallet } from '../providers/index.ts'
28
27
 
29
28
  // const MAX_QUEUE = 1000
30
29
  // const MAX_EXECS_IN_BATCH = 1
@@ -33,6 +32,11 @@ import { fetchChainsFromRpcs } from '../providers/index.ts'
33
32
  export const command = 'manualExec <tx-hash>'
34
33
  export const describe = 'Execute manually pending or failed messages'
35
34
 
35
+ /**
36
+ * Yargs builder for the manual-exec command.
37
+ * @param yargs - Yargs instance.
38
+ * @returns Configured yargs instance with command options.
39
+ */
36
40
  export const builder = (yargs: Argv) =>
37
41
  yargs
38
42
  .positional('tx-hash', {
@@ -93,70 +97,71 @@ export const builder = (yargs: Argv) =>
93
97
  },
94
98
  })
95
99
 
100
+ /**
101
+ * Handler for the manual-exec command.
102
+ * @param argv - Command line arguments.
103
+ */
96
104
  export async function handler(argv: Awaited<ReturnType<typeof builder>['argv']> & GlobalOpts) {
97
- if (!argv.wallet) argv.wallet = process.env['USER_KEY'] || process.env['OWNER_KEY']
98
- let destroy
99
- const destroy$ = new Promise((resolve) => {
100
- destroy = resolve
101
- })
105
+ const [controller, ctx] = getCtx(argv)
102
106
  // argv.senderQueue
103
107
  // ? manualExecSenderQueue(providers, argv.tx_hash, argv)
104
108
  // : manualExec(argv, destroy$)
105
- return manualExec(argv, destroy$)
109
+ return manualExec(ctx, argv)
106
110
  .catch((err) => {
107
111
  process.exitCode = 1
108
- if (!logParsedError(err)) console.error(err)
112
+ if (!logParsedError.call(ctx, err)) ctx.logger.error(err)
109
113
  })
110
- .finally(destroy)
114
+ .finally(() => controller.abort('Exited'))
111
115
  }
112
116
 
113
117
  async function manualExec(
118
+ ctx: Ctx,
114
119
  argv: Awaited<ReturnType<typeof builder>['argv']> & GlobalOpts,
115
- destroy: Promise<unknown>,
116
120
  ) {
121
+ const { logger } = ctx
117
122
  // messageId not yet implemented for Solana
118
- const [getChain, tx$] = fetchChainsFromRpcs(argv, argv.txHash, destroy)
119
- const tx = await tx$
120
- const source = tx.chain
121
- const request = await selectRequest(await fetchCCIPRequestsInTx(tx), 'to know more', argv)
123
+ const [getChain, tx$] = fetchChainsFromRpcs(ctx, argv, argv.txHash)
124
+ const [source, tx] = await tx$
125
+ const request = await selectRequest(await source.fetchRequestsInTx(tx), 'to know more', argv)
122
126
 
123
127
  switch (argv.format) {
124
128
  case Format.log: {
125
129
  const logPrefix = 'log' in request ? `message ${request.log.index} = ` : 'message = '
126
- console.log(logPrefix, withDateTimestamp(request))
130
+ logger.log(logPrefix, withDateTimestamp(request))
127
131
  break
128
132
  }
129
133
  case Format.pretty:
130
- await prettyRequest(source, request)
134
+ await prettyRequest.call(ctx, source, request)
131
135
  break
132
136
  case Format.json:
133
- console.info(JSON.stringify(request, bigIntReplacer, 2))
137
+ logger.info(JSON.stringify(request, bigIntReplacer, 2))
134
138
  break
135
139
  }
136
140
 
137
141
  const dest = await getChain(request.lane.destChainSelector)
138
- const offRamp = await discoverOffRamp(source, dest, request.lane.onRamp)
142
+ const offRamp = await discoverOffRamp(source, dest, request.lane.onRamp, source)
139
143
  const commitStore = await dest.getCommitStoreForOffRamp(offRamp)
140
144
  const commit = await dest.fetchCommitReport(commitStore, request, argv)
141
145
 
142
146
  switch (argv.format) {
143
147
  case Format.log:
144
- console.log('commit =', commit)
148
+ logger.log('commit =', commit)
145
149
  break
146
150
  case Format.pretty:
147
- await prettyCommit(dest, commit, request)
151
+ await prettyCommit.call(ctx, dest, commit, request)
148
152
  break
149
153
  case Format.json:
150
- console.info(JSON.stringify(commit, bigIntReplacer, 2))
154
+ logger.info(JSON.stringify(commit, bigIntReplacer, 2))
151
155
  break
152
156
  }
153
157
 
154
- const messagesInBatch = await fetchAllMessagesInBatch(source, request, commit.report, argv)
158
+ const messagesInBatch = await source.fetchAllMessagesInBatch(request, commit.report, argv)
155
159
  const execReportProof = calculateManualExecProof(
156
160
  messagesInBatch,
157
161
  request.lane,
158
162
  request.message.header.messageId,
159
163
  commit.report.merkleRoot,
164
+ dest,
160
165
  )
161
166
 
162
167
  const offchainTokenData = await source.fetchOffchainTokenData(request)
@@ -179,10 +184,10 @@ async function manualExec(
179
184
  dest as unknown as EVMChain,
180
185
  request as CCIPRequest<typeof CCIPVersion.V1_5 | typeof CCIPVersion.V1_6>,
181
186
  )
182
- console.info('Estimated gasLimit override:', estimated)
187
+ logger.info('Estimated gasLimit override:', estimated)
183
188
  estimated += Math.ceil((estimated * argv.estimateGasLimit) / 100)
184
189
  if (request.message.gasLimit >= estimated) {
185
- console.warn(
190
+ logger.warn(
186
191
  'Estimated +',
187
192
  argv.estimateGasLimit,
188
193
  '% margin =',
@@ -196,9 +201,10 @@ async function manualExec(
196
201
  }
197
202
  }
198
203
 
199
- const manualExecTx = await dest.executeReport(offRamp, execReport, argv)
204
+ const [, wallet] = await loadChainWallet(dest, argv)
205
+ const manualExecTx = await dest.executeReport(offRamp, execReport, { ...argv, wallet })
200
206
 
201
- console.log('🚀 manualExec tx =', manualExecTx.hash, 'to offRamp =', offRamp)
207
+ logger.info('🚀 manualExec tx =', manualExecTx.hash, 'to offRamp =', offRamp)
202
208
 
203
209
  let found = false
204
210
  for (const log of manualExecTx.logs) {
@@ -208,11 +214,12 @@ async function manualExec(
208
214
  const receipt = { receipt: execReceipt, log, timestamp }
209
215
  switch (argv.format) {
210
216
  case Format.log:
211
- console.log('receipt =', withDateTimestamp(receipt))
217
+ logger.log('receipt =', withDateTimestamp(receipt))
212
218
  break
213
219
  case Format.pretty:
214
- if (!found) console.info('Receipts (dest):')
215
- prettyReceipt(
220
+ if (!found) logger.info('Receipts (dest):')
221
+ prettyReceipt.call(
222
+ ctx,
216
223
  receipt,
217
224
  request,
218
225
  receipt.log.tx?.from ??
@@ -220,7 +227,7 @@ async function manualExec(
220
227
  )
221
228
  break
222
229
  case Format.json:
223
- console.info(JSON.stringify(execReceipt, bigIntReplacer, 2))
230
+ logger.info(JSON.stringify(execReceipt, bigIntReplacer, 2))
224
231
  break
225
232
  }
226
233
  found = true
@@ -2,13 +2,18 @@ import { bigIntReplacer, supportedChains } from '@chainlink/ccip-sdk/src/index.t
2
2
  import type { Argv } from 'yargs'
3
3
 
4
4
  import type { GlobalOpts } from '../index.ts'
5
- import { Format } from './types.ts'
6
- import { prettyTable } from './utils.ts'
5
+ import { type Ctx, Format } from './types.ts'
6
+ import { getCtx, prettyTable } from './utils.ts'
7
7
 
8
8
  export const command = ['parse <data>', 'parseBytes <data>', 'parseData <data>']
9
9
  export const describe =
10
10
  'Try to parse and print errors, revert reasons or function call or event data'
11
11
 
12
+ /**
13
+ * Yargs builder for the parse command.
14
+ * @param yargs - Yargs instance.
15
+ * @returns Configured yargs instance with command options.
16
+ */
12
17
  export const builder = (yargs: Argv) =>
13
18
  yargs.positional('data', {
14
19
  type: 'string',
@@ -16,16 +21,22 @@ export const builder = (yargs: Argv) =>
16
21
  describe: 'router contract address on source',
17
22
  })
18
23
 
24
+ /**
25
+ * Handler for the parse command.
26
+ * @param argv - Command line arguments.
27
+ */
19
28
  export function handler(argv: Awaited<ReturnType<typeof builder>['argv']> & GlobalOpts) {
29
+ const [, ctx] = getCtx(argv)
20
30
  try {
21
- parseBytes(argv)
31
+ parseBytes(ctx, argv)
22
32
  } catch (err) {
23
33
  process.exitCode = 1
24
- console.error(err)
34
+ ctx.logger.error(err)
25
35
  }
26
36
  }
27
37
 
28
- function parseBytes(argv: Parameters<typeof handler>[0]) {
38
+ function parseBytes(ctx: Ctx, argv: Parameters<typeof handler>[0]) {
39
+ const { logger } = ctx
29
40
  let parsed
30
41
  for (const chain of Object.values(supportedChains)) {
31
42
  try {
@@ -39,14 +50,14 @@ function parseBytes(argv: Parameters<typeof handler>[0]) {
39
50
 
40
51
  switch (argv.format) {
41
52
  case Format.log: {
42
- console.log(`parsed =`, parsed)
53
+ logger.log(`parsed =`, parsed)
43
54
  break
44
55
  }
45
56
  case Format.pretty:
46
- prettyTable(parsed)
57
+ prettyTable.call(ctx, parsed)
47
58
  break
48
59
  case Format.json:
49
- console.info(JSON.stringify(parsed, bigIntReplacer, 2))
60
+ logger.info(JSON.stringify(parsed, bigIntReplacer, 2))
50
61
  break
51
62
  }
52
63
  }