Repository: solana-labs/solana-program-library
Pull request #7175 (2024-08-21 03:15:22)

[token-client] use `Signers`instead of `Signer` for confidential transfer client functions
#### Problem
Some confidential transfer related functions in the token-client take in `Signer` instead of `Signers` as is done in other token-client functions.

#### Summary of Changes
I updated these functions to take in `Signers` to be in-line with the rest of the functions. The only exception is `confidential_transfer_create_record_account`. This function creates multiple transactions and they might require differing list of signers. Therefore, for this function, I ended up updating the parameters so that the different signers could be of differing type (previously, they had to be the same type, e.g. both signers have to be keypairs).


Patch:
diff --git a/account-compression/sdk/package.json b/account-compression/sdk/package.json
index cfb582e36..68eab41c2 100644
--- a/account-compression/sdk/package.json
+++ b/account-compression/sdk/package.json
@@ -67,7 +67,7 @@
     "@solana/eslint-config-solana": "^3.0.3",
     "@types/bn.js": "^5.1.0",
     "@types/jest": "^29.5.12",
-    "@types/node": "^22.4.1",
+    "@types/node": "^22.4.2",
     "@types/node-fetch": "^2.6.11",
     "@typescript-eslint/eslint-plugin": "^8.2.0",
     "@typescript-eslint/parser": "^8.2.0",
diff --git a/libraries/type-length-value/js/package.json b/libraries/type-length-value/js/package.json
index 27e6e0eca..e21ee2189 100644
--- a/libraries/type-length-value/js/package.json
+++ b/libraries/type-length-value/js/package.json
@@ -48,7 +48,7 @@
     "devDependencies": {
         "@types/chai": "^4.3.17",
         "@types/mocha": "^10.0.7",
-        "@types/node": "^22.4.1",
+        "@types/node": "^22.4.2",
         "@typescript-eslint/eslint-plugin": "^8.2.0",
         "@typescript-eslint/parser": "^8.2.0",
         "chai": "^5.1.1",
diff --git a/memo/js/package.json b/memo/js/package.json
index 3c8e4d568..18e64c0bc 100644
--- a/memo/js/package.json
+++ b/memo/js/package.json
@@ -45,16 +45,16 @@
         "deploy:docs": "npm run docs && gh-pages --dest memo/js --dist docs --dotfiles"
     },
     "peerDependencies": {
-        "@solana/web3.js": "^1.95.2"
+        "@solana/web3.js": "^1.95.3"
     },
     "dependencies": {
         "buffer": "^6.0.3"
     },
     "devDependencies": {
-        "@solana/web3.js": "^1.95.2",
+        "@solana/web3.js": "^1.95.3",
         "@types/chai": "^4.3.17",
         "@types/jest": "^29.5.12",
-        "@types/node": "^22.4.1",
+        "@types/node": "^22.4.2",
         "@types/node-fetch": "^2.6.11",
         "@typescript-eslint/eslint-plugin": "^8.2.0",
         "@typescript-eslint/parser": "^8.2.0",
diff --git a/name-service/js/package.json b/name-service/js/package.json
index 4d959f056..b84c98213 100644
--- a/name-service/js/package.json
+++ b/name-service/js/package.json
@@ -45,7 +45,7 @@
     "@jest/globals": "^29.7.0",
     "@types/bn.js": "^5.1.1",
     "@types/jest": "^29.5.12",
-    "@types/node": "^22.4.1",
+    "@types/node": "^22.4.2",
     "@typescript-eslint/eslint-plugin": "^8.2.0",
     "@typescript-eslint/parser": "^8.2.0",
     "eslint": "^8.57.0",
@@ -60,7 +60,7 @@
     "typescript": "^5.5.4"
   },
   "dependencies": {
-    "@solana/web3.js": "^1.95.2",
+    "@solana/web3.js": "^1.95.3",
     "bn.js": "^5.1.3",
     "borsh": "^2.0.0"
   }
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b6a8479c3..68a38835b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -70,8 +70,8 @@ importers:
         specifier: ^29.5.12
         version: 29.5.12
       '@types/node':
-        specifier: ^22.4.1
-        version: 22.4.1
+        specifier: ^22.4.2
+        version: 22.4.2
       '@types/node-fetch':
         specifier: ^2.6.11
         version: 2.6.11
@@ -107,10 +107,10 @@ importers:
         version: 6.1.1
       jest:
         specifier: ^29.0.1
-        version: 29.7.0(@types/node@22.4.1)(ts-node@10.9.2)
+        version: 29.7.0(@types/node@22.4.2)(ts-node@10.9.2)
       jest-config:
         specifier: ^29.0.1
-        version: 29.7.0(@types/node@22.4.1)(ts-node@10.9.2)
+        version: 29.7.0(@types/node@22.4.2)(ts-node@10.9.2)
       start-server-and-test:
         specifier: ^2.0.5
         version: 2.0.5
@@ -122,7 +122,7 @@ importers:
         version: 2.0.1
       ts-node:
         specifier: ^10.9.2
-        version: 10.9.2(@types/node@22.4.1)(typescript@5.5.4)
+        version: 10.9.2(@types/node@22.4.2)(typescript@5.5.4)
       typedoc:
         specifier: ^0.26.6
         version: 0.26.6(typescript@5.5.4)
@@ -143,8 +143,8 @@ importers:
         specifier: ^10.0.7
         version: 10.0.7
       '@types/node':
-        specifier: ^22.4.1
-        version: 22.4.1
+        specifier: ^22.4.2
+        version: 22.4.2
       '@typescript-eslint/eslint-plugin':
         specifier: ^8.2.0
         version: 8.2.0(@typescript-eslint/parser@8.2.0)(eslint@8.57.0)(typescript@5.5.4)
@@ -171,7 +171,7 @@ importers:
         version: 0.3.4
       ts-node:
         specifier: ^10.9.2
-        version: 10.9.2(@types/node@22.4.1)(typescript@5.5.4)
+        version: 10.9.2(@types/node@22.4.2)(typescript@5.5.4)
       typedoc:
         specifier: ^0.26.6
         version: 0.26.6(typescript@5.5.4)
@@ -186,8 +186,8 @@ importers:
         version: 6.0.3
     devDependencies:
       '@solana/web3.js':
-        specifier: ^1.95.2
-        version: 1.95.2
+        specifier: ^1.95.3
+        version: 1.95.3
       '@types/chai':
         specifier: ^4.3.17
         version: 4.3.17
@@ -195,8 +195,8 @@ importers:
         specifier: ^29.5.12
         version: 29.5.12
       '@types/node':
-        specifier: ^22.4.1
-        version: 22.4.1
+        specifier: ^22.4.2
+        version: 22.4.2
       '@types/node-fetch':
         specifier: ^2.6.11
         version: 2.6.11
@@ -220,7 +220,7 @@ importers:
         version: 6.1.1
       jest:
         specifier: ^29.0.0
-        version: 29.7.0(@types/node@22.4.1)(ts-node@10.9.2)
+        version: 29.7.0(@types/node@22.4.2)(ts-node@10.9.2)
       process:
         specifier: ^0.11.10
         version: 0.11.10
@@ -235,7 +235,7 @@ importers:
         version: 29.2.4(@babel/core@7.23.2)(jest@29.7.0)(typescript@5.5.4)
       ts-node:
         specifier: ^10.9.2
-        version: 10.9.2(@types/node@22.4.1)(typescript@5.5.4)
+        version: 10.9.2(@types/node@22.4.2)(typescript@5.5.4)
       typedoc:
         specifier: ^0.26.6
         version: 0.26.6(typescript@5.5.4)
@@ -246,8 +246,8 @@ importers:
   name-service/js:
     dependencies:
       '@solana/web3.js':
-        specifier: ^1.95.2
-        version: 1.95.2
+        specifier: ^1.95.3
+        version: 1.95.3
       bn.js:
         specifier: ^5.1.3
         version: 5.2.1
@@ -265,8 +265,8 @@ importers:
         specifier: ^29.5.12
         version: 29.5.12
       '@types/node':
-        specifier: ^22.4.1
-        version: 22.4.1
+        specifier: ^22.4.2
+        version: 22.4.2
       '@typescript-eslint/eslint-plugin':
         specifier: ^8.2.0
         version: 8.2.0(@typescript-eslint/parser@8.2.0)(eslint@8.57.0)(typescript@5.5.4)
@@ -287,7 +287,7 @@ importers:
         version: 2.29.1(@typescript-eslint/parser@8.2.0)(eslint@8.57.0)
       jest:
         specifier: ^29.7.0
-        version: 29.7.0(@types/node@22.4.1)(ts-node@10.9.2)
+        version: 29.7.0(@types/node@22.4.2)(ts-node@10.9.2)
       start-server-and-test:
         specifier: ^2.0.5
         version: 2.0.5
@@ -296,7 +296,7 @@ importers:
         version: 29.2.4(@babel/core@7.23.2)(jest@29.7.0)(typescript@5.5.4)
       ts-node:
         specifier: ^10.9.2
-        version: 10.9.2(@types/node@22.4.1)(typescript@5.5.4)
+        version: 10.9.2(@types/node@22.4.2)(typescript@5.5.4)
       typedoc:
         specifier: ^0.26.6
         version: 0.26.6(typescript@5.5.4)
@@ -313,15 +313,15 @@ importers:
         specifier: 1.0.0
         version: link:../modern
       '@solana/web3.js':
-        specifier: ^1.95.2
-        version: 1.95.2
+        specifier: ^1.95.3
+        version: 1.95.3
     devDependencies:
       '@ava/typescript':
         specifier: ^5.0.0
         version: 5.0.0
       '@types/node':
-        specifier: ^22.4.1
-        version: 22.4.1
+        specifier: ^22.4.2
+        version: 22.4.2
       '@typescript-eslint/eslint-plugin':
         specifier: ^8.2.0
         version: 8.2.0(@typescript-eslint/parser@8.2.0)(eslint@8.57.0)(typescript@5.5.4)
@@ -354,8 +354,8 @@ importers:
         version: 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.5.4)
     devDependencies:
       '@types/node':
-        specifier: ^22.4.1
-        version: 22.4.1
+        specifier: ^22.4.2
+        version: 22.4.2
       '@typescript-eslint/eslint-plugin':
         specifier: ^8.2.0
         version: 8.2.0(@typescript-eslint/parser@8.2.0)(eslint@8.57.0)(typescript@5.5.4)
@@ -373,10 +373,10 @@ importers:
         version: 4.0.1
       '@solana/spl-token':
         specifier: 0.4.6
-        version: 0.4.6(@solana/web3.js@1.95.2)(fastestsmallesttextencoderdecoder@1.0.22)
+        version: 0.4.6(@solana/web3.js@1.95.3)(fastestsmallesttextencoderdecoder@1.0.22)
       '@solana/web3.js':
-        specifier: ^1.95.2
-        version: 1.95.2
+        specifier: ^1.95.3
+        version: 1.95.3
       bn.js:
         specifier: ^5.2.0
         version: 5.2.1
@@ -418,8 +418,8 @@ importers:
         specifier: ^29.5.12
         version: 29.5.12
       '@types/node':
-        specifier: ^22.4.1
-        version: 22.4.1
+        specifier: ^22.4.2
+        version: 22.4.2
       '@types/node-fetch':
         specifier: ^2.6.11
         version: 2.6.11
@@ -437,7 +437,7 @@ importers:
         version: 8.57.0
       jest:
         specifier: ^29.0.0
-        version: 29.7.0(@types/node@22.4.1)(ts-node@10.9.2)
+        version: 29.7.0(@types/node@22.4.2)(ts-node@10.9.2)
       rimraf:
         specifier: ^6.0.1
         version: 6.0.1
@@ -464,8 +464,8 @@ importers:
         version: link:../../libraries/type-length-value/js
     devDependencies:
       '@solana/web3.js':
-        specifier: ^1.95.2
-        version: 1.95.2
+        specifier: ^1.95.3
+        version: 1.95.3
       '@types/chai':
         specifier: ^4.3.17
         version: 4.3.17
@@ -473,8 +473,8 @@ importers:
         specifier: ^10.0.7
         version: 10.0.7
       '@types/node':
-        specifier: ^22.4.1
-        version: 22.4.1
+        specifier: ^22.4.2
+        version: 22.4.2
       '@typescript-eslint/eslint-plugin':
         specifier: ^8.2.0
         version: 8.2.0(@typescript-eslint/parser@8.2.0)(eslint@8.57.0)(typescript@5.5.4)
@@ -501,7 +501,7 @@ importers:
         version: 0.3.4
       ts-node:
         specifier: ^10.9.2
-        version: 10.9.2(@types/node@22.4.1)(typescript@5.5.4)
+        version: 10.9.2(@types/node@22.4.2)(typescript@5.5.4)
       tslib:
         specifier: ^2.6.3
         version: 2.6.3
@@ -538,16 +538,16 @@ importers:
         version: 11.1.6(rollup@4.21.0)(tslib@2.6.3)(typescript@5.5.4)
       '@solana/spl-token':
         specifier: 0.4.6
-        version: 0.4.6(@solana/web3.js@1.95.2)(fastestsmallesttextencoderdecoder@1.0.22)
+        version: 0.4.6(@solana/web3.js@1.95.3)(fastestsmallesttextencoderdecoder@1.0.22)
       '@solana/web3.js':
-        specifier: ^1.95.2
-        version: 1.95.2
+        specifier: ^1.95.3
+        version: 1.95.3
       '@types/eslint':
         specifier: ^8.56.7
         version: 8.56.7
       '@types/node':
-        specifier: ^22.4.1
-        version: 22.4.1
+        specifier: ^22.4.2
+        version: 22.4.2
       '@typescript-eslint/eslint-plugin':
         specifier: ^8.2.0
         version: 8.2.0(@typescript-eslint/parser@8.2.0)(eslint@8.57.0)(typescript@5.5.4)
@@ -565,7 +565,7 @@ importers:
         version: 4.21.0
       ts-node:
         specifier: ^10.9.2
-        version: 10.9.2(@types/node@22.4.1)(typescript@5.5.4)
+        version: 10.9.2(@types/node@22.4.2)(typescript@5.5.4)
       tslib:
         specifier: ^2.6.3
         version: 2.6.3
@@ -586,8 +586,8 @@ importers:
         version: link:../../libraries/type-length-value/js
     devDependencies:
       '@solana/web3.js':
-        specifier: ^1.95.2
-        version: 1.95.2
+        specifier: ^1.95.3
+        version: 1.95.3
       '@types/chai':
         specifier: ^4.3.17
         version: 4.3.17
@@ -595,8 +595,8 @@ importers:
         specifier: ^10.0.7
         version: 10.0.7
       '@types/node':
-        specifier: ^22.4.1
-        version: 22.4.1
+        specifier: ^22.4.2
+        version: 22.4.2
       '@typescript-eslint/eslint-plugin':
         specifier: ^8.2.0
         version: 8.2.0(@typescript-eslint/parser@8.2.0)(eslint@8.57.0)(typescript@5.5.4)
@@ -623,7 +623,7 @@ importers:
         version: 0.3.4
       ts-node:
         specifier: ^10.9.2
-        version: 10.9.2(@types/node@22.4.1)(typescript@5.5.4)
+        version: 10.9.2(@types/node@22.4.2)(typescript@5.5.4)
       tslib:
         specifier: ^2.6.3
         version: 2.6.3
@@ -645,10 +645,10 @@ importers:
     devDependencies:
       '@solana/spl-token':
         specifier: 0.4.6
-        version: 0.4.6(@solana/web3.js@1.95.2)(fastestsmallesttextencoderdecoder@1.0.22)
+        version: 0.4.6(@solana/web3.js@1.95.3)(fastestsmallesttextencoderdecoder@1.0.22)
       '@solana/web3.js':
-        specifier: ^1.95.2
-        version: 1.95.2
+        specifier: ^1.95.3
+        version: 1.95.3
       '@types/bn.js':
         specifier: ^5.1.0
         version: 5.1.5
@@ -684,7 +684,7 @@ importers:
         version: 2.0.5
       ts-node:
         specifier: ^10.9.2
-        version: 10.9.2(@types/node@22.4.1)(typescript@5.5.4)
+        version: 10.9.2(@types/node@22.4.2)(typescript@5.5.4)
       typescript:
         specifier: ^5.5.4
         version: 5.5.4
@@ -702,7 +702,7 @@ importers:
         version: link:../../token-group/js
       '@solana/spl-token-metadata':
         specifier: ^0.1.3
-        version: 0.1.4(@solana/web3.js@1.95.2)(fastestsmallesttextencoderdecoder@1.0.22)
+        version: 0.1.4(@solana/web3.js@1.95.3)(fastestsmallesttextencoderdecoder@1.0.22)
       buffer:
         specifier: ^6.0.3
         version: 6.0.3
@@ -714,8 +714,8 @@ importers:
         specifier: 0.2.4
         version: link:../../memo/js
       '@solana/web3.js':
-        specifier: ^1.95.2
-        version: 1.95.2
+        specifier: ^1.95.3
+        version: 1.95.3
       '@types/chai':
         specifier: ^4.3.17
         version: 4.3.17
@@ -726,8 +726,8 @@ importers:
         specifier: ^10.0.7
         version: 10.0.7
       '@types/node':
-        specifier: ^22.4.1
-        version: 22.4.1
+        specifier: ^22.4.2
+        version: 22.4.2
       '@types/node-fetch':
         specifier: ^2.6.11
         version: 2.6.11
@@ -766,7 +766,7 @@ importers:
         version: 2.0.5
       ts-node:
         specifier: ^10.9.2
-        version: 10.9.2(@types/node@22.4.1)(typescript@5.5.4)
+        version: 10.9.2(@types/node@22.4.2)(typescript@5.5.4)
       typedoc:
         specifier: ^0.26.6
         version: 0.26.6(typescript@5.5.4)
@@ -1093,6 +1093,12 @@ packages:
     dependencies:
       regenerator-runtime: 0.14.0
 
+  /@babel/runtime@7.25.0:
+    resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      regenerator-runtime: 0.14.0
+
   /@babel/template@7.22.15:
     resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==}
     engines: {node: '>=6.9.0'}
@@ -1491,7 +1497,7 @@ packages:
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
     dependencies:
       '@jest/types': 29.6.3
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
       chalk: 4.1.2
       jest-message-util: 29.7.0
       jest-util: 29.7.0
@@ -1512,14 +1518,14 @@ packages:
       '@jest/test-result': 29.7.0
       '@jest/transform': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
       ansi-escapes: 4.3.2
       chalk: 4.1.2
       ci-info: 3.9.0
       exit: 0.1.2
       graceful-fs: 4.2.11
       jest-changed-files: 29.7.0
-      jest-config: 29.7.0(@types/node@22.4.1)(ts-node@10.9.2)
+      jest-config: 29.7.0(@types/node@22.4.2)(ts-node@10.9.2)
       jest-haste-map: 29.7.0
       jest-message-util: 29.7.0
       jest-regex-util: 29.6.3
@@ -1547,7 +1553,7 @@ packages:
     dependencies:
       '@jest/fake-timers': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
       jest-mock: 29.7.0
     dev: true
 
@@ -1574,7 +1580,7 @@ packages:
     dependencies:
       '@jest/types': 29.6.3
       '@sinonjs/fake-timers': 10.3.0
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
       jest-message-util: 29.7.0
       jest-mock: 29.7.0
       jest-util: 29.7.0
@@ -1607,7 +1613,7 @@ packages:
       '@jest/transform': 29.7.0
       '@jest/types': 29.6.3
       '@jridgewell/trace-mapping': 0.3.20
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
       chalk: 4.1.2
       collect-v8-coverage: 1.0.2
       exit: 0.1.2
@@ -1695,7 +1701,7 @@ packages:
       '@jest/schemas': 29.6.3
       '@types/istanbul-lib-coverage': 2.0.6
       '@types/istanbul-reports': 3.0.4
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
       '@types/yargs': 17.0.31
       chalk: 4.1.2
     dev: true
@@ -1766,7 +1772,7 @@ packages:
     resolution: {integrity: sha512-tgyEl6dvtLln8XX81JyBvWjIiEcjTkUwZbrM5dIobTmoqMuGewSyk9CClno8qsMsFdB5T3jC91Rjeqmu/6xk2g==}
     dependencies:
       '@metaplex-foundation/beet': 0.7.2
-      '@solana/web3.js': 1.95.2
+      '@solana/web3.js': 1.95.3
       bs58: 5.0.0
       debug: 4.3.6(supports-color@8.1.1)
     transitivePeerDependencies:
@@ -2231,7 +2237,7 @@ packages:
     engines: {node: '>= 10'}
     dependencies:
       '@solana/buffer-layout': 4.0.1
-      '@solana/web3.js': 1.95.2
+      '@solana/web3.js': 1.95.3
       bigint-buffer: 1.1.5
       bignumber.js: 9.1.2
     transitivePeerDependencies:
@@ -2465,7 +2471,7 @@ packages:
       - fastestsmallesttextencoderdecoder
     dev: false
 
-  /@solana/spl-token-group@0.0.4(@solana/web3.js@1.95.2)(fastestsmallesttextencoderdecoder@1.0.22):
+  /@solana/spl-token-group@0.0.4(@solana/web3.js@1.95.3)(fastestsmallesttextencoderdecoder@1.0.22):
     resolution: {integrity: sha512-7+80nrEMdUKlK37V6kOe024+T7J4nNss0F8LQ9OOPYdWCCfJmsGUzVx2W3oeizZR4IHM6N4yC9v1Xqwc3BTPWw==}
     engines: {node: '>=16'}
     peerDependencies:
@@ -2473,11 +2479,11 @@ packages:
     dependencies:
       '@solana/codecs': 2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)
       '@solana/spl-type-length-value': 0.1.0
-      '@solana/web3.js': 1.95.2
+      '@solana/web3.js': 1.95.3
     transitivePeerDependencies:
       - fastestsmallesttextencoderdecoder
 
-  /@solana/spl-token-metadata@0.1.4(@solana/web3.js@1.95.2)(fastestsmallesttextencoderdecoder@1.0.22):
+  /@solana/spl-token-metadata@0.1.4(@solana/web3.js@1.95.3)(fastestsmallesttextencoderdecoder@1.0.22):
     resolution: {integrity: sha512-N3gZ8DlW6NWDV28+vCCDJoTqaCZiF/jDUnk3o8GRkAFzHObiR60Bs1gXHBa8zCPdvOwiG6Z3dg5pg7+RW6XNsQ==}
     engines: {node: '>=16'}
     peerDependencies:
@@ -2485,11 +2491,11 @@ packages:
     dependencies:
       '@solana/codecs': 2.0.0-preview.2(fastestsmallesttextencoderdecoder@1.0.22)
       '@solana/spl-type-length-value': 0.1.0
-      '@solana/web3.js': 1.95.2
+      '@solana/web3.js': 1.95.3
     transitivePeerDependencies:
       - fastestsmallesttextencoderdecoder
 
-  /@solana/spl-token@0.4.6(@solana/web3.js@1.95.2)(fastestsmallesttextencoderdecoder@1.0.22):
+  /@solana/spl-token@0.4.6(@solana/web3.js@1.95.3)(fastestsmallesttextencoderdecoder@1.0.22):
     resolution: {integrity: sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA==}
     engines: {node: '>=16'}
     peerDependencies:
@@ -2497,9 +2503,9 @@ packages:
     dependencies:
       '@solana/buffer-layout': 4.0.1
       '@solana/buffer-layout-utils': 0.2.0
-      '@solana/spl-token-group': 0.0.4(@solana/web3.js@1.95.2)(fastestsmallesttextencoderdecoder@1.0.22)
-      '@solana/spl-token-metadata': 0.1.4(@solana/web3.js@1.95.2)(fastestsmallesttextencoderdecoder@1.0.22)
-      '@solana/web3.js': 1.95.2
+      '@solana/spl-token-group': 0.0.4(@solana/web3.js@1.95.3)(fastestsmallesttextencoderdecoder@1.0.22)
+      '@solana/spl-token-metadata': 0.1.4(@solana/web3.js@1.95.3)(fastestsmallesttextencoderdecoder@1.0.22)
+      '@solana/web3.js': 1.95.3
       buffer: 6.0.3
     transitivePeerDependencies:
       - bufferutil
@@ -2554,6 +2560,29 @@ packages:
       - encoding
       - utf-8-validate
 
+  /@solana/web3.js@1.95.3:
+    resolution: {integrity: sha512-O6rPUN0w2fkNqx/Z3QJMB9L225Ex10PRDH8bTaIUPZXMPV0QP8ZpPvjQnXK+upUczlRgzHzd6SjKIha1p+I6og==}
+    dependencies:
+      '@babel/runtime': 7.25.0
+      '@noble/curves': 1.4.2
+      '@noble/hashes': 1.4.0
+      '@solana/buffer-layout': 4.0.1
+      agentkeepalive: 4.5.0
+      bigint-buffer: 1.1.5
+      bn.js: 5.2.1
+      borsh: 0.7.0
+      bs58: 4.0.1
+      buffer: 6.0.3
+      fast-stable-stringify: 1.0.0
+      jayson: 4.1.1
+      node-fetch: 2.7.0
+      rpc-websockets: 9.0.2
+      superstruct: 2.0.2
+    transitivePeerDependencies:
+      - bufferutil
+      - encoding
+      - utf-8-validate
+
   /@swc/helpers@0.5.11:
     resolution: {integrity: sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==}
     dependencies:
@@ -2607,7 +2636,7 @@ packages:
   /@types/bn.js@5.1.5:
     resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==}
     dependencies:
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
     dev: true
 
   /@types/chai-as-promised@7.1.8:
@@ -2623,7 +2652,7 @@ packages:
   /@types/connect@3.4.38:
     resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==}
     dependencies:
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
 
   /@types/eslint@8.56.7:
     resolution: {integrity: sha512-SjDvI/x3zsZnOkYZ3lCt9lOZWZLB2jIlNKz+LBgCtDurK0JZcwucxYHn1w2BJkD34dgX9Tjnak0txtq4WTggEA==}
@@ -2639,7 +2668,7 @@ packages:
   /@types/graceful-fs@4.1.9:
     resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==}
     dependencies:
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
     dev: true
 
   /@types/istanbul-lib-coverage@2.0.6:
@@ -2680,15 +2709,15 @@ packages:
   /@types/node-fetch@2.6.11:
     resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==}
     dependencies:
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
       form-data: 4.0.0
     dev: true
 
   /@types/node@12.20.55:
     resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
 
-  /@types/node@22.4.1:
-    resolution: {integrity: sha512-1tbpb9325+gPnKK0dMm+/LMriX0vKxf6RnB0SZUqfyVkQ4fMgUSySqhxE/y8Jvs4NyF1yHzTfG9KlnkIODxPKg==}
+  /@types/node@22.4.2:
+    resolution: {integrity: sha512-nAvM3Ey230/XzxtyDcJ+VjvlzpzoHwLsF7JaDRfoI0ytO0mVheerNmM45CtA0yOILXwXXxOrcUWH3wltX+7PSw==}
     dependencies:
       undici-types: 6.19.6
 
@@ -2710,12 +2739,12 @@ packages:
   /@types/ws@7.4.7:
     resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==}
     dependencies:
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
 
   /@types/ws@8.5.10:
     resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==}
     dependencies:
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
 
   /@types/yargs-parser@21.0.3:
     resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
@@ -3989,7 +4018,7 @@ packages:
     engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
     dev: true
 
-  /create-jest@29.7.0(@types/node@22.4.1)(ts-node@10.9.2):
+  /create-jest@29.7.0(@types/node@22.4.2)(ts-node@10.9.2):
     resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
     hasBin: true
@@ -3998,7 +4027,7 @@ packages:
       chalk: 4.1.2
       exit: 0.1.2
       graceful-fs: 4.2.11
-      jest-config: 29.7.0(@types/node@22.4.1)(ts-node@10.9.2)
+      jest-config: 29.7.0(@types/node@22.4.2)(ts-node@10.9.2)
       jest-util: 29.7.0
       prompts: 2.4.2
     transitivePeerDependencies:
@@ -4564,7 +4593,7 @@ packages:
       '@typescript-eslint/eslint-plugin': 8.2.0(@typescript-eslint/parser@8.2.0)(eslint@8.57.0)(typescript@5.5.4)
       '@typescript-eslint/utils': 8.0.0(eslint@8.57.0)(typescript@5.5.4)
       eslint: 8.57.0
-      jest: 29.7.0(@types/node@22.4.1)(ts-node@10.9.2)
+      jest: 29.7.0(@types/node@22.4.2)(ts-node@10.9.2)
     transitivePeerDependencies:
       - supports-color
       - typescript
@@ -5877,7 +5906,7 @@ packages:
       '@jest/expect': 29.7.0
       '@jest/test-result': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
       chalk: 4.1.2
       co: 4.6.0
       dedent: 1.5.1
@@ -5898,7 +5927,7 @@ packages:
       - supports-color
     dev: true
 
-  /jest-cli@29.7.0(@types/node@22.4.1)(ts-node@10.9.2):
+  /jest-cli@29.7.0(@types/node@22.4.2)(ts-node@10.9.2):
     resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==}
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
     hasBin: true
@@ -5912,10 +5941,10 @@ packages:
       '@jest/test-result': 29.7.0
       '@jest/types': 29.6.3
       chalk: 4.1.2
-      create-jest: 29.7.0(@types/node@22.4.1)(ts-node@10.9.2)
+      create-jest: 29.7.0(@types/node@22.4.2)(ts-node@10.9.2)
       exit: 0.1.2
       import-local: 3.1.0
-      jest-config: 29.7.0(@types/node@22.4.1)(ts-node@10.9.2)
+      jest-config: 29.7.0(@types/node@22.4.2)(ts-node@10.9.2)
       jest-util: 29.7.0
       jest-validate: 29.7.0
       yargs: 17.7.2
@@ -5926,7 +5955,7 @@ packages:
       - ts-node
     dev: true
 
-  /jest-config@29.7.0(@types/node@22.4.1)(ts-node@10.9.2):
+  /jest-config@29.7.0(@types/node@22.4.2)(ts-node@10.9.2):
     resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==}
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
     peerDependencies:
@@ -5941,7 +5970,7 @@ packages:
       '@babel/core': 7.23.2
       '@jest/test-sequencer': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
       babel-jest: 29.7.0(@babel/core@7.23.2)
       chalk: 4.1.2
       ci-info: 3.9.0
@@ -5961,7 +5990,7 @@ packages:
       pretty-format: 29.7.0
       slash: 3.0.0
       strip-json-comments: 3.1.1
-      ts-node: 10.9.2(@types/node@22.4.1)(typescript@5.5.4)
+      ts-node: 10.9.2(@types/node@22.4.2)(typescript@5.5.4)
     transitivePeerDependencies:
       - babel-plugin-macros
       - supports-color
@@ -6002,7 +6031,7 @@ packages:
       '@jest/environment': 29.7.0
       '@jest/fake-timers': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
       jest-mock: 29.7.0
       jest-util: 29.7.0
     dev: true
@@ -6018,7 +6047,7 @@ packages:
     dependencies:
       '@jest/types': 29.6.3
       '@types/graceful-fs': 4.1.9
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
       anymatch: 3.1.3
       fb-watchman: 2.0.2
       graceful-fs: 4.2.11
@@ -6069,7 +6098,7 @@ packages:
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
     dependencies:
       '@jest/types': 29.6.3
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
       jest-util: 29.7.0
     dev: true
 
@@ -6124,7 +6153,7 @@ packages:
       '@jest/test-result': 29.7.0
       '@jest/transform': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
       chalk: 4.1.2
       emittery: 0.13.1
       graceful-fs: 4.2.11
@@ -6155,7 +6184,7 @@ packages:
       '@jest/test-result': 29.7.0
       '@jest/transform': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
       chalk: 4.1.2
       cjs-module-lexer: 1.2.3
       collect-v8-coverage: 1.0.2
@@ -6207,7 +6236,7 @@ packages:
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
     dependencies:
       '@jest/types': 29.6.3
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
       chalk: 4.1.2
       ci-info: 3.9.0
       graceful-fs: 4.2.11
@@ -6232,7 +6261,7 @@ packages:
     dependencies:
       '@jest/test-result': 29.7.0
       '@jest/types': 29.6.3
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
       ansi-escapes: 4.3.2
       chalk: 4.1.2
       emittery: 0.13.1
@@ -6244,13 +6273,13 @@ packages:
     resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
     dependencies:
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
       jest-util: 29.7.0
       merge-stream: 2.0.0
       supports-color: 8.1.1
     dev: true
 
-  /jest@29.7.0(@types/node@22.4.1)(ts-node@10.9.2):
+  /jest@29.7.0(@types/node@22.4.2)(ts-node@10.9.2):
     resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==}
     engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
     hasBin: true
@@ -6263,7 +6292,7 @@ packages:
       '@jest/core': 29.7.0(ts-node@10.9.2)
       '@jest/types': 29.6.3
       import-local: 3.1.0
-      jest-cli: 29.7.0(@types/node@22.4.1)(ts-node@10.9.2)
+      jest-cli: 29.7.0(@types/node@22.4.2)(ts-node@10.9.2)
     transitivePeerDependencies:
       - '@types/node'
       - babel-plugin-macros
@@ -7552,7 +7581,7 @@ packages:
     resolution: {integrity: sha512-TS6vYoO/9YJZng7oiLOVyuz8V7yLow5Hp4SLYWW71XM3702v+z9f1fvUBKudRfa4dfpta4tRNufApSiBIALxJQ==}
     engines: {node: '>= 10'}
     dependencies:
-      '@solana/web3.js': 1.95.2
+      '@solana/web3.js': 1.95.3
       bs58: 4.0.1
     optionalDependencies:
       solana-bankrun-darwin-arm64: 0.2.0
@@ -7932,7 +7961,7 @@ packages:
       bs-logger: 0.2.6
       ejs: 3.1.10
       fast-json-stable-stringify: 2.1.0
-      jest: 29.7.0(@types/node@22.4.1)(ts-node@10.9.2)
+      jest: 29.7.0(@types/node@22.4.2)(ts-node@10.9.2)
       jest-util: 29.7.0
       json5: 2.2.3
       lodash.memoize: 4.1.2
@@ -7942,7 +7971,7 @@ packages:
       yargs-parser: 21.1.1
     dev: true
 
-  /ts-node@10.9.2(@types/node@22.4.1)(typescript@5.5.4):
+  /ts-node@10.9.2(@types/node@22.4.2)(typescript@5.5.4):
     resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
     hasBin: true
     peerDependencies:
@@ -7961,7 +7990,7 @@ packages:
       '@tsconfig/node12': 1.0.11
       '@tsconfig/node14': 1.0.3
       '@tsconfig/node16': 1.0.4
-      '@types/node': 22.4.1
+      '@types/node': 22.4.2
       acorn: 8.11.2
       acorn-walk: 8.3.0
       arg: 4.1.3
diff --git a/single-pool/js/packages/classic/package.json b/single-pool/js/packages/classic/package.json
index 9cb931904..3ca7b2c75 100644
--- a/single-pool/js/packages/classic/package.json
+++ b/single-pool/js/packages/classic/package.json
@@ -18,7 +18,7 @@
     "test": "sed -i '1s/.*/{ \"type\": \"module\",/' package.json && NODE_OPTIONS='--loader=tsx' ava ; ret=$?; sed -i '1s/.*/{/' package.json && exit $ret"
   },
   "devDependencies": {
-    "@types/node": "^22.4.1",
+    "@types/node": "^22.4.2",
     "@ava/typescript": "^5.0.0",
     "@typescript-eslint/eslint-plugin": "^8.2.0",
     "ava": "^6.1.3",
@@ -28,7 +28,7 @@
     "typescript": "^5.5.4"
   },
   "dependencies": {
-    "@solana/web3.js": "^1.95.2",
+    "@solana/web3.js": "^1.95.3",
     "@solana/addresses": "2.0.0-rc.1",
     "@solana/spl-single-pool": "1.0.0"
   },
diff --git a/single-pool/js/packages/modern/package.json b/single-pool/js/packages/modern/package.json
index 4610f8a83..b363efbd2 100644
--- a/single-pool/js/packages/modern/package.json
+++ b/single-pool/js/packages/modern/package.json
@@ -16,7 +16,7 @@
     "lint:fix": "eslint . --fix"
   },
   "devDependencies": {
-    "@types/node": "^22.4.1",
+    "@types/node": "^22.4.2",
     "@typescript-eslint/eslint-plugin": "^8.2.0",
     "eslint": "^8.57.0",
     "typescript": "^5.5.4"
diff --git a/stake-pool/js/package.json b/stake-pool/js/package.json
index aeb0b3cc0..98bcea1a2 100644
--- a/stake-pool/js/package.json
+++ b/stake-pool/js/package.json
@@ -45,7 +45,7 @@
   "dependencies": {
     "@solana/buffer-layout": "^4.0.1",
     "@solana/spl-token": "0.4.6",
-    "@solana/web3.js": "^1.95.2",
+    "@solana/web3.js": "^1.95.3",
     "bn.js": "^5.2.0",
     "buffer": "^6.0.3",
     "buffer-layout": "^1.2.2",
@@ -61,7 +61,7 @@
     "@rollup/plugin-typescript": "^11.1.6",
     "@types/bn.js": "^5.1.0",
     "@types/jest": "^29.5.12",
-    "@types/node": "^22.4.1",
+    "@types/node": "^22.4.2",
     "@types/node-fetch": "^2.6.11",
     "@typescript-eslint/eslint-plugin": "^8.2.0",
     "@typescript-eslint/parser": "^8.2.0",
diff --git a/token-group/js/package.json b/token-group/js/package.json
index ef09e4129..fb386361c 100644
--- a/token-group/js/package.json
+++ b/token-group/js/package.json
@@ -43,17 +43,17 @@
         "watch": "tsc --build --verbose --watch tsconfig.all.json"
     },
     "peerDependencies": {
-        "@solana/web3.js": "^1.95.2"
+        "@solana/web3.js": "^1.95.3"
     },
     "dependencies": {
         "@solana/codecs": "2.0.0-rc.1",
         "@solana/spl-type-length-value": "0.1.0"
     },
     "devDependencies": {
-        "@solana/web3.js": "^1.95.2",
+        "@solana/web3.js": "^1.95.3",
         "@types/chai": "^4.3.17",
         "@types/mocha": "^10.0.7",
-        "@types/node": "^22.4.1",
+        "@types/node": "^22.4.2",
         "@typescript-eslint/eslint-plugin": "^8.2.0",
         "@typescript-eslint/parser": "^8.2.0",
         "chai": "^5.1.1",
diff --git a/token-lending/js/package.json b/token-lending/js/package.json
index 37c3a8f22..fda450b07 100644
--- a/token-lending/js/package.json
+++ b/token-lending/js/package.json
@@ -45,9 +45,9 @@
         "@rollup/plugin-node-resolve": "^15.0.2",
         "@rollup/plugin-typescript": "^11.1.6",
         "@solana/spl-token": "0.4.6",
-        "@solana/web3.js": "^1.95.2",
+        "@solana/web3.js": "^1.95.3",
         "@types/eslint": "^8.56.7",
-        "@types/node": "^22.4.1",
+        "@types/node": "^22.4.2",
         "@typescript-eslint/eslint-plugin": "^8.2.0",
         "@typescript-eslint/parser": "^8.2.0",
         "eslint": "^8.57.0",
diff --git a/token-metadata/js/package.json b/token-metadata/js/package.json
index 48fecbdd3..f9d449004 100644
--- a/token-metadata/js/package.json
+++ b/token-metadata/js/package.json
@@ -43,17 +43,17 @@
         "watch": "tsc --build --verbose --watch tsconfig.all.json"
     },
     "peerDependencies": {
-        "@solana/web3.js": "^1.95.2"
+        "@solana/web3.js": "^1.95.3"
     },
     "dependencies": {
         "@solana/codecs": "2.0.0-rc.1",
         "@solana/spl-type-length-value": "0.1.0"
     },
     "devDependencies": {
-        "@solana/web3.js": "^1.95.2",
+        "@solana/web3.js": "^1.95.3",
         "@types/chai": "^4.3.17",
         "@types/mocha": "^10.0.7",
-        "@types/node": "^22.4.1",
+        "@types/node": "^22.4.2",
         "@typescript-eslint/eslint-plugin": "^8.2.0",
         "@typescript-eslint/parser": "^8.2.0",
         "chai": "^5.1.1",
diff --git a/token-swap/js/package.json b/token-swap/js/package.json
index 8d5292491..bcb9f2daf 100644
--- a/token-swap/js/package.json
+++ b/token-swap/js/package.json
@@ -46,11 +46,11 @@
     "@solana/buffer-layout-utils": "^0.2.0"
   },
   "peerDependencies": {
-    "@solana/web3.js": "^1.95.2"
+    "@solana/web3.js": "^1.95.3"
   },
   "devDependencies": {
     "@solana/spl-token": "0.4.6",
-    "@solana/web3.js": "^1.95.2",
+    "@solana/web3.js": "^1.95.3",
     "@types/bn.js": "^5.1.0",
     "@types/chai-as-promised": "^7.1.4",
     "@types/chai": "^4.3.17",
diff --git a/token/cli/src/command.rs b/token/cli/src/command.rs
index cc3f7b934..b104a0268 100644
--- a/token/cli/src/command.rs
+++ b/token/cli/src/command.rs
@@ -1604,27 +1604,32 @@ async fn command_transfer(
                 .unwrap();
 
             // setup proofs
+            let create_range_proof_context_signer = &[&range_proof_context_state_account];
+            let create_equality_proof_context_signer = &[&equality_proof_context_state_account];
+            let create_ciphertext_validity_proof_context_signer =
+                &[&ciphertext_validity_proof_context_state_account];
+
             let _ = try_join!(
                 token.confidential_transfer_create_context_state_account(
                     &range_proof_pubkey,
                     &context_state_authority_pubkey,
                     &range_proof_data,
                     true,
-                    &range_proof_context_state_account,
+                    create_range_proof_context_signer
                 ),
                 token.confidential_transfer_create_context_state_account(
                     &equality_proof_pubkey,
                     &context_state_authority_pubkey,
                     &equality_proof_data,
                     false,
-                    &equality_proof_context_state_account,
+                    create_equality_proof_context_signer
                 ),
                 token.confidential_transfer_create_context_state_account(
                     &ciphertext_validity_proof_pubkey,
                     &context_state_authority_pubkey,
                     &ciphertext_validity_proof_data,
                     false,
-                    &ciphertext_validity_proof_context_state_account,
+                    create_ciphertext_validity_proof_context_signer
                 )
             )?;
 
@@ -1655,24 +1660,25 @@ async fn command_transfer(
                 .await?;
 
             // close context state accounts
+            let close_context_state_signer = &[&context_state_authority];
             let _ = try_join!(
                 token.confidential_transfer_close_context_state(
                     &equality_proof_pubkey,
                     &sender,
                     &context_state_authority_pubkey,
-                    &context_state_authority,
+                    close_context_state_signer
                 ),
                 token.confidential_transfer_close_context_state(
                     &ciphertext_validity_proof_pubkey,
                     &sender,
                     &context_state_authority_pubkey,
-                    &context_state_authority,
+                    close_context_state_signer
                 ),
                 token.confidential_transfer_close_context_state(
                     &range_proof_pubkey,
                     &sender,
                     &context_state_authority_pubkey,
-                    &context_state_authority,
+                    close_context_state_signer
                 ),
             )?;
 
@@ -3353,6 +3359,8 @@ async fn command_deposit_withdraw_confidential_tokens(
 
             // set up context state accounts
             let context_state_authority_pubkey = context_state_authority.pubkey();
+            let create_equality_proof_signer = &[&equality_proof_context_state_keypair];
+            let create_range_proof_signer = &[&range_proof_context_state_keypair];
 
             let _ = try_join!(
                 token.confidential_transfer_create_context_state_account(
@@ -3360,14 +3368,14 @@ async fn command_deposit_withdraw_confidential_tokens(
                     &context_state_authority_pubkey,
                     &equality_proof_data,
                     false,
-                    &equality_proof_context_state_keypair,
+                    create_equality_proof_signer
                 ),
                 token.confidential_transfer_create_context_state_account(
                     &range_proof_context_state_pubkey,
                     &context_state_authority_pubkey,
                     &range_proof_data,
                     true,
-                    &range_proof_context_state_keypair,
+                    create_range_proof_signer,
                 )
             )?;
 
@@ -3392,18 +3400,19 @@ async fn command_deposit_withdraw_confidential_tokens(
                 .await?;
 
             // close context state account
+            let close_context_state_signer = &[&context_state_authority];
             let _ = try_join!(
                 token.confidential_transfer_close_context_state(
                     &equality_proof_context_state_pubkey,
                     &token_account_address,
                     &context_state_authority_pubkey,
-                    &context_state_authority,
+                    close_context_state_signer
                 ),
                 token.confidential_transfer_close_context_state(
                     &range_proof_context_state_pubkey,
                     &token_account_address,
                     &context_state_authority_pubkey,
-                    &context_state_authority,
+                    close_context_state_signer
                 )
             )?;
 
diff --git a/token/client/src/token.rs b/token/client/src/token.rs
index 5c4ce3499..d9e6a325f 100644
--- a/token/client/src/token.rs
+++ b/token/client/src/token.rs
@@ -2271,7 +2271,8 @@ where
     /// Create a record account containing zero-knowledge proof needed for a
     /// confidential transfer.
     pub async fn confidential_transfer_create_record_account<
-        S: Signer,
+        S1: Signer,
+        S2: Signer,
         ZK: Pod + ZkProofData<U>,
         U: Pod,
     >(
@@ -2279,8 +2280,8 @@ where
         record_account: &Pubkey,
         record_authority: &Pubkey,
         proof_data: &ZK,
-        record_account_signer: &S,
-        record_authority_signer: &S,
+        record_account_signer: &S1,
+        record_authority_signer: &S2,
     ) -> TokenResult<Vec<T::Output>> {
         let proof_data = bytes_of(proof_data);
         let space = proof_data
@@ -2326,11 +2327,8 @@ where
         };
 
         let first_ixs = create_record_instructions(true, first_chunk, 0);
-        self.process_ixs(
-            &first_ixs,
-            &[record_account_signer, record_authority_signer],
-        )
-        .await?;
+        let first_ixs_signers: [&dyn Signer; 2] = [record_account_signer, record_authority_signer];
+        self.process_ixs(&first_ixs, &first_ixs_signers).await?;
 
         let subsequent_chunk_size =
             calculate_record_max_chunk_size(create_record_instructions, false);
@@ -2354,12 +2352,12 @@ where
     }
 
     /// Close a record account.
-    pub async fn confidential_transfer_close_record_account<S: Signer>(
+    pub async fn confidential_transfer_close_record_account<S: Signers>(
         &self,
         record_account: &Pubkey,
         record_authority: &Pubkey,
         receiver: &Pubkey,
-        record_authority_signer: &S,
+        signing_keypairs: &S,
     ) -> TokenResult<T::Output> {
         self.process_ixs(
             &[spl_record::instruction::close_account(
@@ -2367,7 +2365,7 @@ where
                 record_authority,
                 receiver,
             )],
-            &[record_authority_signer],
+            signing_keypairs,
         )
         .await
     }
@@ -2375,7 +2373,7 @@ where
     /// Create a context state account containing zero-knowledge proof needed
     /// for a confidential transfer instruction.
     pub async fn confidential_transfer_create_context_state_account<
-        S: Signer,
+        S: Signers,
         ZK: Pod + ZkProofData<U>,
         U: Pod,
     >(
@@ -2384,7 +2382,7 @@ where
         context_state_authority: &Pubkey,
         proof_data: &ZK,
         split_account_creation_and_proof_verification: bool,
-        signer: &S,
+        signing_keypairs: &S,
     ) -> TokenResult<T::Output> {
         let instruction_type = zk_proof_type_to_instruction(ZK::PROOF_TYPE)?;
         let space = size_of::<ProofContextState<U>>();
@@ -2410,7 +2408,7 @@ where
                     space as u64,
                     &zk_elgamal_proof_program::id(),
                 )],
-                &[signer],
+                signing_keypairs,
             )
             .await?;
 
@@ -2443,14 +2441,14 @@ where
                     ),
                     instruction_type.encode_verify_proof(Some(context_state_info), proof_data),
                 ],
-                &[signer],
+                signing_keypairs,
             )
             .await
         }
     }
 
     /// Close a ZK Token proof program context state
-    pub async fn confidential_transfer_close_context_state<S: Signer>(
+    pub async fn confidential_transfer_close_context_state<S: Signers>(
         &self,
         context_state_account: &Pubkey,
         lamport_destination_account: &Pubkey,
@@ -2467,7 +2465,7 @@ where
                 context_state_info,
                 lamport_destination_account,
             )],
-            &[signing_keypairs],
+            signing_keypairs,
         )
         .await
     }
diff --git a/token/js/package.json b/token/js/package.json
index 3203f1276..3544cc829 100644
--- a/token/js/package.json
+++ b/token/js/package.json
@@ -50,7 +50,7 @@
         "deploy:docs": "npm run docs && gh-pages --dest token/js --dist docs --dotfiles"
     },
     "peerDependencies": {
-        "@solana/web3.js": "^1.95.2"
+        "@solana/web3.js": "^1.95.3"
     },
     "dependencies": {
         "@solana/buffer-layout": "^4.0.0",
@@ -62,11 +62,11 @@
     "devDependencies": {
         "@solana/codecs-strings": "2.0.0-rc.1",
         "@solana/spl-memo": "0.2.4",
-        "@solana/web3.js": "^1.95.2",
+        "@solana/web3.js": "^1.95.3",
         "@types/chai-as-promised": "^7.1.4",
         "@types/chai": "^4.3.17",
         "@types/mocha": "^10.0.7",
-        "@types/node": "^22.4.1",
+        "@types/node": "^22.4.2",
         "@types/node-fetch": "^2.6.11",
         "@typescript-eslint/eslint-plugin": "^8.2.0",
         "@typescript-eslint/parser": "^8.2.0",


Test patch:
diff --git a/token/program-2022-test/tests/confidential_transfer.rs b/token/program-2022-test/tests/confidential_transfer.rs
index c7deca08a..b8668fe93 100644
--- a/token/program-2022-test/tests/confidential_transfer.rs
+++ b/token/program-2022-test/tests/confidential_transfer.rs
@@ -112,7 +112,7 @@ async fn configure_account_with_option<S: Signers>(
                     &pubkey_validity_proof_record_account.pubkey(),
                     &record_account_authority.pubkey(),
                     account,
-                    &record_account_authority,
+                    &[&record_account_authority],
                 )
                 .await
                 .unwrap();
@@ -131,7 +131,7 @@ async fn configure_account_with_option<S: Signers>(
                     &context_account_authority.pubkey(),
                     &pubkey_validity_proof_data,
                     false,
-                    &pubkey_validity_proof_context_account,
+                    &[&pubkey_validity_proof_context_account],
                 )
                 .await
                 .unwrap();
@@ -156,7 +156,7 @@ async fn configure_account_with_option<S: Signers>(
                     &pubkey_validity_proof_context_account.pubkey(),
                     account,
                     &context_account_authority.pubkey(),
-                    &context_account_authority,
+                    &[&context_account_authority],
                 )
                 .await
                 .unwrap();
@@ -639,7 +639,7 @@ async fn empty_account_with_option<S: Signers>(
                     &zero_ciphertext_proof_record_account.pubkey(),
                     &record_account_authority.pubkey(),
                     account,
-                    &record_account_authority,
+                    &[&record_account_authority],
                 )
                 .await
                 .unwrap();
@@ -665,7 +665,7 @@ async fn empty_account_with_option<S: Signers>(
                     &context_account_authority.pubkey(),
                     &zero_ciphertext_proof_data,
                     false,
-                    &zero_ciphertext_proof_context_account,
+                    &[&zero_ciphertext_proof_context_account],
                 )
                 .await
                 .unwrap();
@@ -689,7 +689,7 @@ async fn empty_account_with_option<S: Signers>(
                     &zero_ciphertext_proof_context_account.pubkey(),
                     account,
                     &context_account_authority.pubkey(),
-                    &context_account_authority,
+                    &[&context_account_authority],
                 )
                 .await
                 .unwrap();
@@ -1056,7 +1056,7 @@ async fn withdraw_with_option<S: Signers>(
                     &equality_proof_record_account.pubkey(),
                     &record_account_authority.pubkey(),
                     source_account,
-                    &record_account_authority,
+                    &[&record_account_authority],
                 )
                 .await
                 .unwrap();
@@ -1066,7 +1066,7 @@ async fn withdraw_with_option<S: Signers>(
                     &range_proof_record_account.pubkey(),
                     &record_account_authority.pubkey(),
                     source_account,
-                    &record_account_authority,
+                    &[&record_account_authority],
                 )
                 .await
                 .unwrap();
@@ -1097,7 +1097,7 @@ async fn withdraw_with_option<S: Signers>(
                     &context_account_authority.pubkey(),
                     &equality_proof_data,
                     false,
-                    &equality_proof_context_account,
+                    &[&equality_proof_context_account],
                 )
                 .await
                 .unwrap();
@@ -1111,7 +1111,7 @@ async fn withdraw_with_option<S: Signers>(
                     &context_account_authority.pubkey(),
                     &range_proof_data,
                     false,
-                    &range_proof_context_account,
+                    &[&range_proof_context_account],
                 )
                 .await
                 .unwrap();
@@ -1139,7 +1139,7 @@ async fn withdraw_with_option<S: Signers>(
                     &equality_proof_context_account.pubkey(),
                     source_account,
                     &context_account_authority.pubkey(),
-                    &context_account_authority,
+                    &[&context_account_authority],
                 )
                 .await
                 .unwrap();
@@ -1149,7 +1149,7 @@ async fn withdraw_with_option<S: Signers>(
                     &range_proof_context_account.pubkey(),
                     source_account,
                     &context_account_authority.pubkey(),
-                    &context_account_authority,
+                    &[&context_account_authority],
                 )
                 .await
                 .unwrap();
@@ -1428,7 +1428,7 @@ async fn confidential_transfer_with_option<S: Signers>(
                     &equality_proof_record_account.pubkey(),
                     &record_account_authority.pubkey(),
                     source_account,
-                    &record_account_authority,
+                    &[&record_account_authority],
                 )
                 .await
                 .unwrap();
@@ -1438,7 +1438,7 @@ async fn confidential_transfer_with_option<S: Signers>(
                     &ciphertext_validity_proof_record_account.pubkey(),
                     &record_account_authority.pubkey(),
                     source_account,
-                    &record_account_authority,
+                    &[&record_account_authority],
                 )
                 .await
                 .unwrap();
@@ -1448,7 +1448,7 @@ async fn confidential_transfer_with_option<S: Signers>(
                     &range_proof_record_account.pubkey(),
                     &record_account_authority.pubkey(),
                     source_account,
-                    &record_account_authority,
+                    &[&record_account_authority],
                 )
                 .await
                 .unwrap();
@@ -1487,7 +1487,7 @@ async fn confidential_transfer_with_option<S: Signers>(
                     &context_account_authority.pubkey(),
                     &equality_proof_data,
                     false,
-                    &equality_proof_context_account,
+                    &[&equality_proof_context_account],
                 )
                 .await
                 .unwrap();
@@ -1501,7 +1501,7 @@ async fn confidential_transfer_with_option<S: Signers>(
                     &context_account_authority.pubkey(),
                     &ciphertext_validity_proof_data,
                     false,
-                    &ciphertext_validity_proof_context_account,
+                    &[&ciphertext_validity_proof_context_account],
                 )
                 .await
                 .unwrap();
@@ -1515,7 +1515,7 @@ async fn confidential_transfer_with_option<S: Signers>(
                     &context_account_authority.pubkey(),
                     &range_proof_data,
                     false,
-                    &range_proof_context_account,
+                    &[&range_proof_context_account],
                 )
                 .await
                 .unwrap();
@@ -1552,7 +1552,7 @@ async fn confidential_transfer_with_option<S: Signers>(
                     &equality_proof_context_account.pubkey(),
                     source_account,
                     &context_account_authority.pubkey(),
-                    &context_account_authority,
+                    &[&context_account_authority],
                 )
                 .await
                 .unwrap();
@@ -1562,7 +1562,7 @@ async fn confidential_transfer_with_option<S: Signers>(
                     &ciphertext_validity_proof_context_account.pubkey(),
                     source_account,
                     &context_account_authority.pubkey(),
-                    &context_account_authority,
+                    &[&context_account_authority],
                 )
                 .await
                 .unwrap();
@@ -1572,7 +1572,7 @@ async fn confidential_transfer_with_option<S: Signers>(
                     &range_proof_context_account.pubkey(),
                     source_account,
                     &context_account_authority.pubkey(),
-                    &context_account_authority,
+                    &[&context_account_authority],
                 )
                 .await
                 .unwrap();
@@ -2026,7 +2026,7 @@ async fn confidential_transfer_with_fee_with_option<S: Signers>(
                     &equality_proof_record_account.pubkey(),
                     &record_account_authority.pubkey(),
                     source_account,
-                    &record_account_authority,
+                    &[&record_account_authority],
                 )
                 .await
                 .unwrap();
@@ -2036,7 +2036,7 @@ async fn confidential_transfer_with_fee_with_option<S: Signers>(
                     &transfer_amount_ciphertext_validity_proof_record_account.pubkey(),
                     &record_account_authority.pubkey(),
                     source_account,
-                    &record_account_authority,
+                    &[&record_account_authority],
                 )
                 .await
                 .unwrap();
@@ -2046,7 +2046,7 @@ async fn confidential_transfer_with_fee_with_option<S: Signers>(
                     &fee_sigma_proof_record_account.pubkey(),
                     &record_account_authority.pubkey(),
                     source_account,
-                    &record_account_authority,
+                    &[&record_account_authority],
                 )
                 .await
                 .unwrap();
@@ -2056,7 +2056,7 @@ async fn confidential_transfer_with_fee_with_option<S: Signers>(
                     &fee_ciphertext_validity_proof_record_account.pubkey(),
                     &record_account_authority.pubkey(),
                     source_account,
-                    &record_account_authority,
+                    &[&record_account_authority],
                 )
                 .await
                 .unwrap();
@@ -2066,7 +2066,7 @@ async fn confidential_transfer_with_fee_with_option<S: Signers>(
                     &range_proof_record_account.pubkey(),
                     &record_account_authority.pubkey(),
                     source_account,
-                    &record_account_authority,
+                    &[&record_account_authority],
                 )
                 .await
                 .unwrap();
@@ -2112,7 +2112,7 @@ async fn confidential_transfer_with_fee_with_option<S: Signers>(
                     &context_account_authority.pubkey(),
                     &equality_proof_data,
                     false,
-                    &equality_proof_context_account,
+                    &[&equality_proof_context_account],
                 )
                 .await
                 .unwrap();
@@ -2126,7 +2126,7 @@ async fn confidential_transfer_with_fee_with_option<S: Signers>(
                     &context_account_authority.pubkey(),
                     &transfer_amount_ciphertext_validity_proof_data,
                     false,
-                    &transfer_amount_ciphertext_validity_proof_context_account,
+                    &[&transfer_amount_ciphertext_validity_proof_context_account],
                 )
                 .await
                 .unwrap();
@@ -2142,7 +2142,7 @@ async fn confidential_transfer_with_fee_with_option<S: Signers>(
                     &context_account_authority.pubkey(),
                     &percentage_with_cap_proof_data,
                     false,
-                    &percentage_with_cap_proof_context_account,
+                    &[&percentage_with_cap_proof_context_account],
                 )
                 .await
                 .unwrap();
@@ -2156,7 +2156,7 @@ async fn confidential_transfer_with_fee_with_option<S: Signers>(
                     &context_account_authority.pubkey(),
                     &fee_ciphertext_validity_proof_data,
                     false,
-                    &fee_ciphertext_validity_proof_context_account,
+                    &[&fee_ciphertext_validity_proof_context_account],
                 )
                 .await
                 .unwrap();
@@ -2171,7 +2171,7 @@ async fn confidential_transfer_with_fee_with_option<S: Signers>(
                     &context_account_authority.pubkey(),
                     &range_proof_data,
                     false,
-                    &range_proof_context_account,
+                    &[&range_proof_context_account],
                 )
                 .await
                 .unwrap();
@@ -2213,7 +2213,7 @@ async fn confidential_transfer_with_fee_with_option<S: Signers>(
                     &equality_proof_context_account.pubkey(),
                     source_account,
                     &context_account_authority.pubkey(),
-                    &context_account_authority,
+                    &[&context_account_authority],
                 )
                 .await
                 .unwrap();
@@ -2223,7 +2223,7 @@ async fn confidential_transfer_with_fee_with_option<S: Signers>(
                     &transfer_amount_ciphertext_validity_proof_context_account.pubkey(),
                     source_account,
                     &context_account_authority.pubkey(),
-                    &context_account_authority,
+                    &[&context_account_authority],
                 )
                 .await
                 .unwrap();
@@ -2233,7 +2233,7 @@ async fn confidential_transfer_with_fee_with_option<S: Signers>(
                     &percentage_with_cap_proof_context_account.pubkey(),
                     source_account,
                     &context_account_authority.pubkey(),
-                    &context_account_authority,
+                    &[&context_account_authority],
                 )
                 .await
                 .unwrap();
@@ -2243,7 +2243,7 @@ async fn confidential_transfer_with_fee_with_option<S: Signers>(
                     &fee_ciphertext_validity_proof_context_account.pubkey(),
                     source_account,
                     &context_account_authority.pubkey(),
-                    &context_account_authority,
+                    &[&context_account_authority],
                 )
                 .await
                 .unwrap();
@@ -2253,7 +2253,7 @@ async fn confidential_transfer_with_fee_with_option<S: Signers>(
                     &range_proof_context_account.pubkey(),
                     source_account,
                     &context_account_authority.pubkey(),
-                    &context_account_authority,
+                    &[&context_account_authority],
                 )
                 .await
                 .unwrap();
diff --git a/token/program-2022-test/tests/confidential_transfer_fee.rs b/token/program-2022-test/tests/confidential_transfer_fee.rs
index ebf3f86c7..fb6e4f4e0 100644
--- a/token/program-2022-test/tests/confidential_transfer_fee.rs
+++ b/token/program-2022-test/tests/confidential_transfer_fee.rs
@@ -536,7 +536,7 @@ async fn withdraw_withheld_tokens_from_mint_with_option<S: Signers>(
                     &record_account.pubkey(),
                     &record_account_authority.pubkey(),
                     destination_account,
-                    &record_account_authority,
+                    &[&record_account_authority],
                 )
                 .await
                 .unwrap();
@@ -566,7 +566,7 @@ async fn withdraw_withheld_tokens_from_mint_with_option<S: Signers>(
                     &context_account_authority.pubkey(),
                     &equality_proof,
                     false,
-                    &context_account,
+                    &[&context_account],
                 )
                 .await
                 .unwrap();
@@ -591,7 +591,7 @@ async fn withdraw_withheld_tokens_from_mint_with_option<S: Signers>(
                     &context_account.pubkey(),
                     destination_account,
                     &context_account_authority.pubkey(),
-                    &context_account_authority,
+                    &[&context_account_authority],
                 )
                 .await
                 .unwrap();
@@ -861,7 +861,7 @@ async fn withdraw_withheld_tokens_from_accounts_with_option<S: Signers>(
                     &record_account.pubkey(),
                     &record_account_authority.pubkey(),
                     destination_account,
-                    &record_account_authority,
+                    &[&record_account_authority],
                 )
                 .await
                 .unwrap();
@@ -891,7 +891,7 @@ async fn withdraw_withheld_tokens_from_accounts_with_option<S: Signers>(
                     &context_account_authority.pubkey(),
                     &equality_proof,
                     false,
-                    &context_account,
+                    &[&context_account],
                 )
                 .await
                 .unwrap();
@@ -917,7 +917,7 @@ async fn withdraw_withheld_tokens_from_accounts_with_option<S: Signers>(
                     &context_account.pubkey(),
                     destination_account,
                     &context_account_authority.pubkey(),
-                    &context_account_authority,
+                    &[&context_account_authority],
                 )
                 .await
                 .unwrap();