{"_id":"@solana/connector","_rev":"19-ba6d502cd5ed17730d2c5270ce916143","name":"@solana/connector","dist-tags":{"latest":"0.3.0"},"versions":{"0.0.0":{"name":"@solana/connector","version":"0.0.0","keywords":["solana","connector"],"author":"","license":"MIT","_id":"@solana/connector@0.0.0","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"dist":{"shasum":"23c8f4a906e9e6afb3e2b5cd449c5ba5ee8561fa","tarball":"https://registry.npmjs.org/@solana/connector/-/connector-0.0.0.tgz","fileCount":2,"integrity":"sha512-D716BsnaxFArc0m3eWaq4n7k6bXPGn7JNz2u8AwNdLlcvBZYKFWtCn8RFeB6GkA//N8hknH3GTXo+OY9zyQPbw==","signatures":[{"sig":"MEUCIADNUogNpyyzZ+F+UI4C9KkOu14y4BANSfMLz/dNWYW2AiEA69dOR9lQ4Ep2wAxjGNms16BLmR+IocS4o1jvaJOFGkQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":297},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"solana-devs","email":"npm@solana.org"},"_npmVersion":"10.8.2","description":"Solana connector package","directories":{},"_nodeVersion":"20.19.5","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/connector_0.0.0_1761237275570_0.32610936513302957","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@solana/connector","version":"0.1.0","license":"MIT","_id":"@solana/connector@0.1.0","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"dist":{"shasum":"237cd9edcac827295aac52f6d73a978f7f485542","tarball":"https://registry.npmjs.org/@solana/connector/-/connector-0.1.0.tgz","fileCount":46,"integrity":"sha512-pu/koHk8FyvIBR7Z80rWiFhp5MZ4y/DaoorxzO882mGgDYtOltqnNVD9d+ShD2E4983o94rx1Aqfr3ksFq0Yqg==","signatures":[{"sig":"MEYCIQDZE+OI54wDI+jqrNXgn/lYdOj3ieLDVU7rSiLmeFzkOwIhAIetvUPv7RIwOPCGNm3CzLilSzuetXlemXgoSDApGAT7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1386812},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.mjs","require":"./dist/react.js"},"./compat":{"types":"./dist/compat.d.ts","import":"./dist/compat.mjs","require":"./dist/compat.js"},"./headless":{"types":"./dist/headless.d.ts","import":"./dist/headless.mjs","require":"./dist/headless.js"}},"gitHead":"6f75a9dfa4776eee3fd682305cf94d289dfa2e21","scripts":{"dev":"tsup --watch","lint":"prettier --check src/","perf":"npm run build:analyze && npm run size","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:ui":"vitest --ui","size:why":"size-limit --why","test:watch":"vitest","type-check":"tsc --noEmit","build:analyze":"npm run build && node scripts/analyze-bundle.js","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"solana-devs","email":"npm@solana.org"},"_npmVersion":"10.8.2","description":"Headless wallet connector client and React provider built on Wallet Standard","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"gill":"^0.12.0","@wallet-ui/core":"^2.0.0","@wallet-standard/app":"^1.1.0","@wallet-standard/base":"^1.1.0","@nanostores/persistent":"^1.1.0","@wallet-standard/features":"^1.1.0","@solana/webcrypto-ed25519-polyfill":"^4.0.0","@solana-mobile/wallet-standard-mobile":"^0.4.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"19.2.0","vitest":"^3.2.4","happy-dom":"^20.0.7","react-dom":"19.2.0","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/react":"^19.2.2","@vitest/coverage-v8":"^3.2.4","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":">=18.0.0","@solana/web3.js":"^1.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@solana/web3.js":{"optional":true},"@solana/connector-debugger":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/connector_0.1.0_1761251328283_0.3687997361606554","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@solana/connector","version":"0.1.1","license":"MIT","_id":"@solana/connector@0.1.1","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"dist":{"shasum":"54190de10a5eeccf267675d5df87aa74dc6675d9","tarball":"https://registry.npmjs.org/@solana/connector/-/connector-0.1.1.tgz","fileCount":46,"integrity":"sha512-3sfVjyTMlo79xz2NZPNmSF2fvMvIug+lUpxbOo+o6ELBy/pKjy39t2G4NZA4y1szE35Su5MfFZh6XDUK7wmt+A==","signatures":[{"sig":"MEUCIHN9xWjqmqhTMAIt5pBHstM+Xr0O9PgX/biT809C/vQnAiEA7O1xik6P4LgqQWyNvhUcJiG0ZXSaQ2hFCQ3rHghNNF4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1436322},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.mjs","require":"./dist/react.js"},"./compat":{"types":"./dist/compat.d.ts","import":"./dist/compat.mjs","require":"./dist/compat.js"},"./headless":{"types":"./dist/headless.d.ts","import":"./dist/headless.mjs","require":"./dist/headless.js"}},"gitHead":"e948df3a35b059256202431df43dc8dd4f958d5c","scripts":{"dev":"tsup --watch","lint":"prettier --check src/","perf":"npm run build:analyze && npm run size","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:ui":"vitest --ui","size:why":"size-limit --why","test:watch":"vitest","type-check":"tsc --noEmit","build:analyze":"npm run build && node scripts/analyze-bundle.js","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"solana-devs","email":"npm@solana.org"},"_npmVersion":"10.8.2","description":"Headless wallet connector client and React provider built on Wallet Standard","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"bs58":"^6.0.0","gill":"^0.12.0","@solana/kit":"^3.0.0","@solana/keys":"^3.0.0","@solana/signers":"^3.0.0","@wallet-ui/core":"^2.0.0","@solana/addresses":"^3.0.0","@solana/transactions":"^3.0.0","@wallet-standard/app":"^1.1.0","@wallet-standard/base":"^1.1.0","@nanostores/persistent":"^1.1.0","@wallet-standard/features":"^1.1.0","@solana/webcrypto-ed25519-polyfill":"^4.0.0","@solana-mobile/wallet-standard-mobile":"^0.4.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"19.2.0","vitest":"^3.2.4","happy-dom":"^20.0.7","react-dom":"19.2.0","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/react":"^19.2.2","@vitest/coverage-v8":"^3.2.4","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":">=18.0.0","@solana/web3.js":"^1.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@solana/web3.js":{"optional":true},"@solana/connector-debugger":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/connector_0.1.1_1762222437548_0.6961669114680877","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@solana/connector","version":"0.1.2","license":"MIT","_id":"@solana/connector@0.1.2","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"dist":{"shasum":"0857e2f6607c70f684fd53cf2534e65317397e8d","tarball":"https://registry.npmjs.org/@solana/connector/-/connector-0.1.2.tgz","fileCount":46,"integrity":"sha512-iZSKDQHMXT99ksnSW5q8TOYelb47z2VmEk4cVWz6Kdci/9xNozrWQZtOOuuUq5wNNaQt6Es3eZcdVpFI+X0q6A==","signatures":[{"sig":"MEQCIHPPIu/io6OOeQBJt/J1jasN6JXBhk75xHAHoqpoMybuAiADcMr0eZ/hnAXW+qROsWQYkOrO7skrqADHnCQHQuFTVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1436306},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.mjs","require":"./dist/react.js"},"./compat":{"types":"./dist/compat.d.ts","import":"./dist/compat.mjs","require":"./dist/compat.js"},"./headless":{"types":"./dist/headless.d.ts","import":"./dist/headless.mjs","require":"./dist/headless.js"}},"gitHead":"166bff4aba326c51bffc29996c87d9f08054fa9a","scripts":{"dev":"tsup --watch","lint":"prettier --check src/","perf":"npm run build:analyze && npm run size","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:ui":"vitest --ui","size:why":"size-limit --why","test:watch":"vitest","type-check":"tsc --noEmit","build:analyze":"npm run build && node scripts/analyze-bundle.js","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"solana-devs","email":"npm@solana.org"},"_npmVersion":"10.8.2","description":"Headless wallet connector client and React provider built on Wallet Standard","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"bs58":"^6.0.0","gill":"^0.12.0","@solana/kit":"^3.0.0","@solana/keys":"^3.0.0","@solana/signers":"^3.0.0","@wallet-ui/core":"^2.0.0","@solana/addresses":"^3.0.0","@solana/transactions":"^3.0.0","@wallet-standard/app":"^1.1.0","@wallet-standard/base":"^1.1.0","@nanostores/persistent":"^1.1.0","@wallet-standard/features":"^1.1.0","@solana/webcrypto-ed25519-polyfill":"^4.0.0","@solana-mobile/wallet-standard-mobile":"^0.4.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"19.2.0","vitest":"^3.2.4","happy-dom":"^20.0.7","react-dom":"19.2.0","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/react":"^19.2.2","@vitest/coverage-v8":"^3.2.4","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":">=18.0.0","@solana/web3.js":"^1.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@solana/web3.js":{"optional":true},"@solana/connector-debugger":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/connector_0.1.2_1762228713538_0.17553490645102832","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@solana/connector","version":"0.1.3","license":"MIT","_id":"@solana/connector@0.1.3","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"dist":{"shasum":"1970d44447f0596763ad84d6e955bd60273a10ee","tarball":"https://registry.npmjs.org/@solana/connector/-/connector-0.1.3.tgz","fileCount":46,"integrity":"sha512-DX1mF7yAMdRUVYRjj3ngIiSGBLN9W/Qiq3GeHZrY3Tl//tnskyNQTzd68FrnngF8sKfFezbZbRZCcUAYu82paA==","signatures":[{"sig":"MEYCIQC5ljb8yDHuk2aBfuKDhWpcLg7wT8HmechHPh6ATIGw9QIhAOHOiS2xGdYes0IpOU2q3fsAg1IiH2cHapzqMpfUSVfs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1435964},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.mjs","require":"./dist/react.js"},"./compat":{"types":"./dist/compat.d.ts","import":"./dist/compat.mjs","require":"./dist/compat.js"},"./headless":{"types":"./dist/headless.d.ts","import":"./dist/headless.mjs","require":"./dist/headless.js"}},"gitHead":"67ba33273998c471acf6b2118c4ba23cf0ba94f3","scripts":{"dev":"tsup --watch","lint":"prettier --check src/","perf":"npm run build:analyze && npm run size","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:ui":"vitest --ui","size:why":"size-limit --why","test:watch":"vitest","type-check":"tsc --noEmit","build:analyze":"npm run build && node scripts/analyze-bundle.js","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"solana-devs","email":"npm@solana.org"},"_npmVersion":"10.8.2","description":"Headless wallet connector client and React provider built on Wallet Standard","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"bs58":"^6.0.0","gill":"^0.12.0","@solana/kit":"^3.0.0","@solana/keys":"^3.0.0","@solana/signers":"^3.0.0","@wallet-ui/core":"^2.0.0","@solana/addresses":"^3.0.0","@solana/transactions":"^3.0.0","@wallet-standard/app":"^1.1.0","@wallet-standard/base":"^1.1.0","@nanostores/persistent":"^1.1.0","@wallet-standard/features":"^1.1.0","@solana/webcrypto-ed25519-polyfill":"^4.0.0","@solana-mobile/wallet-standard-mobile":"^0.4.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"19.2.0","vitest":"^3.2.4","happy-dom":"^20.0.7","react-dom":"19.2.0","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/react":"^19.2.2","@vitest/coverage-v8":"^3.2.4","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":">=18.0.0","@solana/web3.js":"^1.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@solana/web3.js":{"optional":true},"@solana/connector-debugger":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/connector_0.1.3_1762379036329_0.853601744827224","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@solana/connector","version":"0.1.4","license":"MIT","_id":"@solana/connector@0.1.4","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"homepage":"https://github.com/solana-foundation/connectorkit#readme","bugs":{"url":"https://github.com/solana-foundation/connectorkit/issues"},"dist":{"shasum":"b57d838381385895a4598eda706434f639b34b96","tarball":"https://registry.npmjs.org/@solana/connector/-/connector-0.1.4.tgz","fileCount":47,"integrity":"sha512-gjGYjLAc44RviD4ehp1cO3Pw/cbYz+5SSanULBrhFDydnCUWybyF8t4hOse2xdn6UXcp4kpE5wReGbO882NcZg==","signatures":[{"sig":"MEQCIH30QET61jvOcmYRR/Uzp7swO9pyLsl49orvoUCbDDTnAiBy8Sv3ouAPlHabeSh5c8zdaefirIK5CKa3eAEl1jQN1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@solana%2fconnector@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2060986},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.mjs","require":"./dist/react.js"},"./compat":{"types":"./dist/compat.d.ts","import":"./dist/compat.mjs","require":"./dist/compat.js"},"./headless":{"types":"./dist/headless.d.ts","import":"./dist/headless.mjs","require":"./dist/headless.js"}},"gitHead":"89f7d6f92a806ccb1af2c5b8d6ad0d862c992b6c","scripts":{"dev":"tsup --watch","lint":"prettier --check src/","perf":"npm run build:analyze && npm run size","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:ui":"vitest --ui","size:why":"size-limit --why","test:watch":"vitest","type-check":"tsc --noEmit","build:analyze":"npm run build && node scripts/analyze-bundle.js","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a2baae62-e63a-4d8f-a60c-73752ddaf3d2"}},"repository":{"url":"git+https://github.com/solana-foundation/connectorkit.git","type":"git"},"_npmVersion":"11.6.4","description":"Headless wallet connector client and React provider built on Wallet Standard","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@solana/kit":"^5.0.0","@solana/keys":"^5.0.0","@solana/codecs":"^5.0.0","@solana/signers":"^5.0.0","@wallet-ui/core":"^2.1.0","@solana/addresses":"^5.0.0","@solana/transactions":"^5.0.0","@wallet-standard/app":"^1.1.0","@wallet-standard/base":"^1.1.0","@nanostores/persistent":"^1.1.0","@wallet-standard/features":"^1.1.0","@solana/transaction-messages":"^5.0.0","@solana/webcrypto-ed25519-polyfill":"^4.0.0","@solana-mobile/wallet-standard-mobile":"^0.4.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.2.1","vitest":"^3.2.4","happy-dom":"^20.0.7","react-dom":"^19.2.1","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/react":"^19.2.2","@vitest/coverage-v8":"^3.2.4","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":">=18.0.0","@solana/web3.js":"^1.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@solana/web3.js":{"optional":true},"@solana/connector-debugger":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/connector_0.1.4_1764795478941_0.2594115762955673","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@solana/connector","version":"0.1.5","license":"MIT","_id":"@solana/connector@0.1.5","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"homepage":"https://github.com/solana-foundation/connectorkit#readme","bugs":{"url":"https://github.com/solana-foundation/connectorkit/issues"},"dist":{"shasum":"f5966f2fc07c38eb1755033b1bb5b8aca639bcd1","tarball":"https://registry.npmjs.org/@solana/connector/-/connector-0.1.5.tgz","fileCount":47,"integrity":"sha512-jBGyz7eiLSEGBDOE06tH9clgvsj+9vBuA8bWLWL0VpRQHwsklTqt/dzqkR5Wd6iJhqyzrHKDLb1+rLpAR9yjpg==","signatures":[{"sig":"MEYCIQDnuWW7tLq4g2Xmc+Bi0oSHXxTEPZ0AhvpeJAsLodynsgIhAI+fqDrN5vRvHf23p0QR0Kw3NPUrEWwSs0RDroSGU9wj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@solana%2fconnector@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2160297},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.mjs","require":"./dist/react.js"},"./compat":{"types":"./dist/compat.d.ts","import":"./dist/compat.mjs","require":"./dist/compat.js"},"./headless":{"types":"./dist/headless.d.ts","import":"./dist/headless.mjs","require":"./dist/headless.js"}},"gitHead":"aa3375c9e56a2a5e16bc92aa0a5117f22ed6b999","scripts":{"dev":"tsup --watch","lint":"prettier --check src/","perf":"npm run build:analyze && npm run size","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:ui":"vitest --ui","size:why":"size-limit --why","test:watch":"vitest","type-check":"tsc --noEmit","build:analyze":"npm run build && node scripts/analyze-bundle.js","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a2baae62-e63a-4d8f-a60c-73752ddaf3d2"}},"repository":{"url":"git+https://github.com/solana-foundation/connectorkit.git","type":"git"},"_npmVersion":"11.7.0","description":"Headless wallet connector client and React provider built on Wallet Standard","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@solana/kit":"^5.0.0","@solana/keys":"^5.0.0","@solana/codecs":"^5.0.0","@solana/signers":"^5.0.0","@wallet-ui/core":"^2.1.0","@solana/addresses":"^5.0.0","@solana/transactions":"^5.0.0","@wallet-standard/app":"^1.1.0","@wallet-standard/base":"^1.1.0","@nanostores/persistent":"^1.1.0","@wallet-standard/features":"^1.1.0","@solana/transaction-messages":"^5.0.0","@solana/webcrypto-ed25519-polyfill":"^4.0.0","@solana-mobile/wallet-standard-mobile":"^0.4.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.2.1","vitest":"^3.2.4","happy-dom":"^20.0.7","react-dom":"^19.2.1","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/react":"^19.2.2","@vitest/coverage-v8":"^3.2.4","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":">=18.0.0","@solana/web3.js":"^1.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@solana/web3.js":{"optional":true},"@solana/connector-debugger":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/connector_0.1.5_1766485474307_0.7180862842884557","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@solana/connector","version":"0.1.6","license":"MIT","_id":"@solana/connector@0.1.6","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"homepage":"https://github.com/solana-foundation/connectorkit#readme","bugs":{"url":"https://github.com/solana-foundation/connectorkit/issues"},"dist":{"shasum":"65aca9805e9fa7578b38c5b719b651e3f00ee77a","tarball":"https://registry.npmjs.org/@solana/connector/-/connector-0.1.6.tgz","fileCount":47,"integrity":"sha512-ZMakoaIcjilNduZhFqcFoEVlhdlvWDmBFzAumWfhSIZHd7nwgpLKgsYHfbQxrZhFfw7dSUUM039Z56Ooxq4rog==","signatures":[{"sig":"MEUCIQDTqHLkGe3W/17RCviJjdieh8QixiTXxFvj5EVtPW9NXQIgfMLgrd73N6eAa+miPlXL21XjHAq7Wn3nigOjHSoqy9Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@solana%2fconnector@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2162080},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.mjs","require":"./dist/react.js"},"./compat":{"types":"./dist/compat.d.ts","import":"./dist/compat.mjs","require":"./dist/compat.js"},"./headless":{"types":"./dist/headless.d.ts","import":"./dist/headless.mjs","require":"./dist/headless.js"}},"gitHead":"96245dc354fe22589e97c508ad682d0fb0a0639a","scripts":{"dev":"tsup --watch","lint":"prettier --check src/","perf":"npm run build:analyze && npm run size","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:ui":"vitest --ui","size:why":"size-limit --why","test:watch":"vitest","type-check":"tsc --noEmit","build:analyze":"npm run build && node scripts/analyze-bundle.js","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a2baae62-e63a-4d8f-a60c-73752ddaf3d2"}},"repository":{"url":"git+https://github.com/solana-foundation/connectorkit.git","type":"git"},"_npmVersion":"11.7.0","description":"Headless wallet connector client and React provider built on Wallet Standard","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@solana/kit":"^5.0.0","@solana/keys":"^5.0.0","@solana/codecs":"^5.0.0","@solana/signers":"^5.0.0","@wallet-ui/core":"^2.1.0","@solana/addresses":"^5.0.0","@solana/transactions":"^5.0.0","@wallet-standard/app":"^1.1.0","@wallet-standard/base":"^1.1.0","@nanostores/persistent":"^1.1.0","@wallet-standard/features":"^1.1.0","@solana/transaction-messages":"^5.0.0","@solana/webcrypto-ed25519-polyfill":"^4.0.0","@solana-mobile/wallet-standard-mobile":"^0.4.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.2.1","vitest":"^3.2.4","happy-dom":"^20.0.7","react-dom":"^19.2.1","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/react":"^19.2.2","@vitest/coverage-v8":"^3.2.4","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":">=18.0.0","@solana/web3.js":"^1.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@solana/web3.js":{"optional":true},"@solana/connector-debugger":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/connector_0.1.6_1766521924008_0.41566834910435024","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@solana/connector","version":"0.1.7","license":"MIT","_id":"@solana/connector@0.1.7","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"homepage":"https://github.com/solana-foundation/connectorkit#readme","bugs":{"url":"https://github.com/solana-foundation/connectorkit/issues"},"dist":{"shasum":"8b834442cad53283d666f7ececc4138cf3863737","tarball":"https://registry.npmjs.org/@solana/connector/-/connector-0.1.7.tgz","fileCount":47,"integrity":"sha512-F4ls4VlEJaERl+OVsS00HuhEiB3bl2OBhr4jzUe5c+sVahVuXcYkv/qjdrh5T53u9I2xBqy5Zh5vSpQwl9inhw==","signatures":[{"sig":"MEUCIQCpca9WEMwBb66o0UhnJZGaNXXaS+7VQ4viAHP4YewU3gIgevoHAbylJ2Wa3Mig4dRdwEmlDWaKLShVmyuFg9afam4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@solana%2fconnector@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2411968},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.mjs","require":"./dist/react.js"},"./compat":{"types":"./dist/compat.d.ts","import":"./dist/compat.mjs","require":"./dist/compat.js"},"./headless":{"types":"./dist/headless.d.ts","import":"./dist/headless.mjs","require":"./dist/headless.js"}},"gitHead":"0e63903c926690c51a224b91a6edd63c61a7f095","scripts":{"dev":"tsup --watch","lint":"prettier --check src/","perf":"npm run build:analyze && npm run size","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:ui":"vitest --ui","size:why":"size-limit --why","test:watch":"vitest","type-check":"tsc --noEmit","build:analyze":"npm run build && node scripts/analyze-bundle.js","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a2baae62-e63a-4d8f-a60c-73752ddaf3d2"}},"repository":{"url":"git+https://github.com/solana-foundation/connectorkit.git","type":"git"},"_npmVersion":"11.7.0","description":"Headless wallet connector client and React provider built on Wallet Standard","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"@solana/kit":"^5.0.0","@solana/keys":"^5.0.0","@solana/codecs":"^5.0.0","@solana/signers":"^5.0.0","@wallet-ui/core":"^2.1.0","@solana/addresses":"^5.0.0","@solana/transactions":"^5.0.0","@wallet-standard/app":"^1.1.0","@wallet-standard/base":"^1.1.0","@nanostores/persistent":"^1.1.0","@wallet-standard/features":"^1.1.0","@solana/transaction-messages":"^5.0.0","@solana/webcrypto-ed25519-polyfill":"^4.0.0","@solana-mobile/wallet-standard-mobile":"^0.4.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.2.1","vitest":"^3.2.4","happy-dom":"^20.0.7","react-dom":"^19.2.1","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/react":"^19.2.2","@vitest/coverage-v8":"^3.2.4","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":">=18.0.0","@solana/web3.js":"^1.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@solana/web3.js":{"optional":true},"@solana/connector-debugger":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/connector_0.1.7_1766775097256_0.27154360417132173","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@solana/connector","version":"0.1.8","license":"MIT","_id":"@solana/connector@0.1.8","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"homepage":"https://github.com/solana-foundation/connectorkit#readme","bugs":{"url":"https://github.com/solana-foundation/connectorkit/issues"},"dist":{"shasum":"495677738ac0eb71d49da2bf2d41165874d124a1","tarball":"https://registry.npmjs.org/@solana/connector/-/connector-0.1.8.tgz","fileCount":47,"integrity":"sha512-q1MLxhhu8PsOmVWmwgvRgtjN+JMXjXY7PKiQgKPOgbEAz15g2ek4djHqPZkexZzW/v1DWS0apC21d8of3K1ryg==","signatures":[{"sig":"MEYCIQC3H9ZqE/GkCCE+TCFXEsSO9tnjpuEZKfPzqNfDgNJzqwIhAMEaF1I9NAicY7hc8Jou1O5txNIzbVHvaw8huMClwdu3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@solana%2fconnector@0.1.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2484021},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.mjs","require":"./dist/react.js"},"./compat":{"types":"./dist/compat.d.ts","import":"./dist/compat.mjs","require":"./dist/compat.js"},"./headless":{"types":"./dist/headless.d.ts","import":"./dist/headless.mjs","require":"./dist/headless.js"}},"gitHead":"f811f99e052d31d1bb799c7a8e3bce8bb4e06c9a","scripts":{"dev":"tsup --watch","lint":"prettier --check src/","perf":"npm run build:analyze && npm run size","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:ui":"vitest --ui","size:why":"size-limit --why","test:watch":"vitest","type-check":"tsc --noEmit","build:analyze":"npm run build && node scripts/analyze-bundle.js","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a2baae62-e63a-4d8f-a60c-73752ddaf3d2"}},"repository":{"url":"git+https://github.com/solana-foundation/connectorkit.git","type":"git"},"_npmVersion":"11.7.0","description":"Headless wallet connector client and React provider built on Wallet Standard","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"zod":"^4.0.0","@solana/kit":"^5.0.0","@solana/keys":"^5.0.0","@solana/codecs":"^5.0.0","@solana/signers":"^5.0.0","@wallet-ui/core":"^2.1.0","@solana/addresses":"^5.0.0","@solana/transactions":"^5.0.0","@wallet-standard/app":"^1.1.0","@wallet-standard/base":"^1.1.0","@wallet-standard/features":"^1.1.0","@solana/transaction-messages":"^5.0.0","@solana/webcrypto-ed25519-polyfill":"^4.0.0","@solana-mobile/wallet-standard-mobile":"^0.4.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.2.1","vitest":"^3.2.4","happy-dom":"^20.0.7","react-dom":"^19.2.1","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/react":"^19.2.2","@vitest/coverage-v8":"^3.2.4","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":">=18.0.0","@solana/web3.js":"^1.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@solana/web3.js":{"optional":true},"@solana/connector-debugger":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/connector_0.1.8_1766885042332_0.3913202834369025","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@solana/connector","version":"0.1.9","license":"MIT","_id":"@solana/connector@0.1.9","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"homepage":"https://github.com/solana-foundation/connectorkit#readme","bugs":{"url":"https://github.com/solana-foundation/connectorkit/issues"},"dist":{"shasum":"1b7780cc1774ee6aeb8bef97a3caafa2b9d36b3a","tarball":"https://registry.npmjs.org/@solana/connector/-/connector-0.1.9.tgz","fileCount":47,"integrity":"sha512-M6h+kzkw4Chz8Cn9adRjWg+hLT+JGH4b8qvEZBLHH+T0UuLozv4AH70yelVLpwgxh/+GN7+gul40R+EancPbJg==","signatures":[{"sig":"MEUCIG99NuNpdMX7g09akRRMtV/k7QYgyT9I08bsuaQOR5uXAiEA79uXEeWrK/M8KbXGYud2jNA573XzBFfnawOCJeg0hqg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@solana%2fconnector@0.1.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2494104},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.mjs","require":"./dist/react.js"},"./compat":{"types":"./dist/compat.d.ts","import":"./dist/compat.mjs","require":"./dist/compat.js"},"./headless":{"types":"./dist/headless.d.ts","import":"./dist/headless.mjs","require":"./dist/headless.js"}},"gitHead":"c58303d2d25fd4ddb5b606a529cbfefad903d35b","scripts":{"dev":"tsup --watch","lint":"prettier --check src/","perf":"npm run build:analyze && npm run size","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:ui":"vitest --ui","size:why":"size-limit --why","test:watch":"vitest","type-check":"tsc --noEmit","build:analyze":"npm run build && node scripts/analyze-bundle.js","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a2baae62-e63a-4d8f-a60c-73752ddaf3d2"}},"repository":{"url":"git+https://github.com/solana-foundation/connectorkit.git","type":"git"},"_npmVersion":"11.7.0","description":"Headless wallet connector client and React provider built on Wallet Standard","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"zod":"^4.0.0","@solana/kit":"^5.0.0","@solana/keys":"^5.0.0","@solana/codecs":"^5.0.0","@solana/signers":"^5.0.0","@wallet-ui/core":"^2.1.0","@solana/addresses":"^5.0.0","@solana/transactions":"^5.0.0","@wallet-standard/app":"^1.1.0","@wallet-standard/base":"^1.1.0","@wallet-standard/features":"^1.1.0","@solana/transaction-messages":"^5.0.0","@solana/webcrypto-ed25519-polyfill":"^4.0.0","@solana-mobile/wallet-standard-mobile":"^0.4.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.2.1","vitest":"^3.2.4","happy-dom":"^20.0.7","react-dom":"^19.2.1","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/react":"^19.2.2","@vitest/coverage-v8":"^3.2.4","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":">=18.0.0","@solana/web3.js":"^1.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@solana/web3.js":{"optional":true},"@solana/connector-debugger":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/connector_0.1.9_1766916206143_0.20112216677526984","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@solana/connector","version":"0.1.10","license":"MIT","_id":"@solana/connector@0.1.10","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"homepage":"https://github.com/solana-foundation/connectorkit#readme","bugs":{"url":"https://github.com/solana-foundation/connectorkit/issues"},"dist":{"shasum":"ef745e8dbd8255928c2251cfa10f1455bd6ad802","tarball":"https://registry.npmjs.org/@solana/connector/-/connector-0.1.10.tgz","fileCount":59,"integrity":"sha512-zQEF8CHq8jTrmuNJ8Rj75Vpmkd0TznnlabN3BvwHs+Ec2k1GzTtJezXMgPAtUEyGELV6IfSZRy4ZELaX5mRAjA==","signatures":[{"sig":"MEYCIQDVRKwTV5v7Z6OLp9K2lnzU7r99Ja9VV18+J6O+OUaIqgIhAJvetMXSjNyCD0mKHjjXCXom93EXOQgVnTZSklIxAW6L","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@solana%2fconnector@0.1.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2776204},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.mjs","require":"./dist/react.js"},"./compat":{"types":"./dist/compat.d.ts","import":"./dist/compat.mjs","require":"./dist/compat.js"},"./headless":{"types":"./dist/headless.d.ts","import":"./dist/headless.mjs","require":"./dist/headless.js"}},"gitHead":"447ac3b70a3e504dfd48b1955e8aa3634cbcb44c","scripts":{"dev":"tsup --watch","lint":"prettier --check src/","perf":"npm run build:analyze && npm run size","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:ui":"vitest --ui","size:why":"size-limit --why","test:watch":"vitest","type-check":"tsc --noEmit","build:analyze":"npm run build && node scripts/analyze-bundle.js","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a2baae62-e63a-4d8f-a60c-73752ddaf3d2"}},"repository":{"url":"git+https://github.com/solana-foundation/connectorkit.git","type":"git"},"_npmVersion":"11.7.0","description":"Headless wallet connector client and React provider built on Wallet Standard","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"zod":"^4.0.0","@solana/kit":"^5.0.0","@solana/keys":"^5.0.0","@solana/codecs":"^5.0.0","@solana/signers":"^5.0.0","@wallet-ui/core":"^2.1.0","@solana/addresses":"^5.0.0","@solana/transactions":"^5.0.0","@wallet-standard/app":"^1.1.0","@wallet-standard/base":"^1.1.0","@wallet-standard/features":"^1.1.0","@solana/transaction-messages":"^5.0.0","@solana/webcrypto-ed25519-polyfill":"^4.0.0","@solana-mobile/wallet-standard-mobile":"^0.4.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.2.1","vitest":"^3.2.4","happy-dom":"^20.0.7","react-dom":"^19.2.1","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/react":"^19.2.2","@vitest/coverage-v8":"^3.2.4","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":">=18.0.0","@solana/web3.js":"^1.0.0","@walletconnect/universal-provider":"^2.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@solana/web3.js":{"optional":true},"@solana/connector-debugger":{"optional":true},"@walletconnect/universal-provider":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/connector_0.1.10_1767062520883_0.3520647042800473","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@solana/connector","version":"0.2.0","license":"MIT","_id":"@solana/connector@0.2.0","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"homepage":"https://github.com/solana-foundation/connectorkit#readme","bugs":{"url":"https://github.com/solana-foundation/connectorkit/issues"},"dist":{"shasum":"c6f9c6ca8df87e08f719c109b9f2c5a8f3e38552","tarball":"https://registry.npmjs.org/@solana/connector/-/connector-0.2.0.tgz","fileCount":59,"integrity":"sha512-LUGQdmseTv0iltnXvf4klT1Vo/s5TgVsZ9yR1YEfvhodzYunN0oRsdhI/VfCaLSvGeS1aJM6dRgTP0xrbrwlKg==","signatures":[{"sig":"MEQCIBMzQ5/ivFaHNREAgi9cA/eGBYD9RCi2O+WZEBbcI8EuAiASS+NYpiwpu5EoYvUIBFV3vtBv/qUuhcKsZUxPLcqdwQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@solana%2fconnector@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3049885},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.mjs","require":"./dist/react.js"},"./compat":{"types":"./dist/compat.d.ts","import":"./dist/compat.mjs","require":"./dist/compat.js"},"./headless":{"types":"./dist/headless.d.ts","import":"./dist/headless.mjs","require":"./dist/headless.js"}},"gitHead":"019415d24983861a8b8759a342dcef676ca53fa4","scripts":{"dev":"tsup --watch","lint":"prettier --check src/","perf":"npm run build:analyze && npm run size","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:ui":"vitest --ui","size:why":"size-limit --why","test:watch":"vitest","type-check":"tsc --noEmit","build:analyze":"npm run build && node scripts/analyze-bundle.js","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a2baae62-e63a-4d8f-a60c-73752ddaf3d2"}},"repository":{"url":"git+https://github.com/solana-foundation/connectorkit.git","type":"git"},"_npmVersion":"11.7.0","description":"Headless wallet connector client and React provider built on Wallet Standard","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"zod":"^4.0.0","@solana/kit":"^5.0.0","@solana/keys":"^5.0.0","@solana/codecs":"^5.0.0","@solana/signers":"^5.0.0","@wallet-ui/core":"^2.1.0","@solana/addresses":"^5.0.0","@solana/transactions":"^5.0.0","@wallet-standard/app":"^1.1.0","@wallet-standard/base":"^1.1.0","@wallet-standard/features":"^1.1.0","@solana/transaction-messages":"^5.0.0","@solana/webcrypto-ed25519-polyfill":"^4.0.0","@solana-mobile/wallet-standard-mobile":"^0.4.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.2.1","vitest":"^3.2.4","happy-dom":"^20.0.7","react-dom":"^19.2.1","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/react":"^19.2.2","@vitest/coverage-v8":"^3.2.4","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":">=18.0.0","@solana/web3.js":"^1.0.0","@walletconnect/universal-provider":"^2.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@solana/web3.js":{"optional":true},"@solana/connector-debugger":{"optional":true},"@walletconnect/universal-provider":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/connector_0.2.0_1767167453228_0.6392667753959977","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@solana/connector","version":"0.2.1","license":"MIT","_id":"@solana/connector@0.2.1","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"homepage":"https://github.com/solana-foundation/connectorkit#readme","bugs":{"url":"https://github.com/solana-foundation/connectorkit/issues"},"dist":{"shasum":"06efbf14caf3f0301142c9100ccbe9964116d65b","tarball":"https://registry.npmjs.org/@solana/connector/-/connector-0.2.1.tgz","fileCount":59,"integrity":"sha512-8lOw6mk+795My7wYOOrFInWZhXaB9fcp7dOqRINBsZcKAaNaQGeWg24uFuTwGja6vxAYPkBsOs+WuNdoPoxKZw==","signatures":[{"sig":"MEUCIQDUBXIDDEOTyFzlDE/JX76Am7kBIxUyipwQrrIGucG2NwIgdTIBwr8TOfGLb/CJYURyAvELX0bTkO00xij3TM2sxVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@solana%2fconnector@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3061591},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.mjs","require":"./dist/react.js"},"./compat":{"types":"./dist/compat.d.ts","import":"./dist/compat.mjs","require":"./dist/compat.js"},"./headless":{"types":"./dist/headless.d.ts","import":"./dist/headless.mjs","require":"./dist/headless.js"}},"gitHead":"5526075b47b5e70c9185fcad275897dd767e8518","scripts":{"dev":"tsup --watch","lint":"prettier --check src/","perf":"npm run build:analyze && npm run size","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:ui":"vitest --ui","size:why":"size-limit --why","test:watch":"vitest","type-check":"tsc --noEmit","build:analyze":"npm run build && node scripts/analyze-bundle.js","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a2baae62-e63a-4d8f-a60c-73752ddaf3d2"}},"repository":{"url":"git+https://github.com/solana-foundation/connectorkit.git","type":"git"},"_npmVersion":"11.7.0","description":"Headless wallet connector client and React provider built on Wallet Standard","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"zod":"^4.0.0","@solana/kit":"^5.0.0","@solana/keys":"^5.0.0","@solana/codecs":"^5.0.0","@solana/signers":"^5.0.0","@wallet-ui/core":"^2.1.0","@solana/addresses":"^5.0.0","@solana/transactions":"^5.0.0","@wallet-standard/app":"^1.1.0","@wallet-standard/base":"^1.1.0","@wallet-standard/features":"^1.1.0","@solana/transaction-messages":"^5.0.0","@solana/webcrypto-ed25519-polyfill":"^4.0.0","@solana-mobile/wallet-standard-mobile":"^0.4.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.2.1","vitest":"^3.2.4","happy-dom":"^20.0.7","react-dom":"^19.2.1","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/react":"^19.2.2","@vitest/coverage-v8":"^3.2.4","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":">=18.0.0","@solana/web3.js":"^1.0.0","@walletconnect/universal-provider":"^2.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@solana/web3.js":{"optional":true},"@solana/connector-debugger":{"optional":true},"@walletconnect/universal-provider":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/connector_0.2.1_1767174532896_0.8758871476105501","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@solana/connector","version":"0.2.2","license":"MIT","_id":"@solana/connector@0.2.2","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"homepage":"https://github.com/solana-foundation/connectorkit#readme","bugs":{"url":"https://github.com/solana-foundation/connectorkit/issues"},"dist":{"shasum":"edaeaf1fcb8abb07dea30497839ebd69e5734ddd","tarball":"https://registry.npmjs.org/@solana/connector/-/connector-0.2.2.tgz","fileCount":89,"integrity":"sha512-ccqdSjlAVav770fe2N5jnOJ0zK8iPgzIyK0IDpnQnt6k8DgYOQNwN8CnIdYGmebS/QiGRq30COBJuHOpY/b1VQ==","signatures":[{"sig":"MEQCIHEbEFeHNdsEr73GHJjQ+zO4J2GNVxWewTUtesu9kqy7AiBgbykA/KsA5cpgKC+sHj2O6qbKdlpA8+Pn95d7m1IGdg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@solana%2fconnector@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3285007},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.mjs","require":"./dist/react.js"},"./compat":{"types":"./dist/compat.d.ts","import":"./dist/compat.mjs","require":"./dist/compat.js"},"./remote":{"types":"./dist/remote.d.ts","import":"./dist/remote.mjs","require":"./dist/remote.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"},"./headless":{"types":"./dist/headless.d.ts","import":"./dist/headless.mjs","require":"./dist/headless.js"}},"gitHead":"51107af9d00f2f0855a58bfab2a487b88f5586f6","scripts":{"dev":"tsup --watch","lint":"prettier --check src/","perf":"npm run build:analyze && npm run size","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:ui":"vitest --ui","size:why":"size-limit --why","test:watch":"vitest","type-check":"tsc --noEmit","build:analyze":"npm run build && node scripts/analyze-bundle.js","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a2baae62-e63a-4d8f-a60c-73752ddaf3d2"}},"repository":{"url":"git+https://github.com/solana-foundation/connectorkit.git","type":"git"},"_npmVersion":"11.7.0","description":"Headless wallet connector client and React provider built on Wallet Standard","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"zod":"^4.0.0","@solana/kit":"^5.0.0","@solana/keys":"^5.0.0","@solana/codecs":"^5.0.0","@solana/signers":"^5.0.0","@wallet-ui/core":"^2.1.0","@solana/addresses":"^5.0.0","@solana/transactions":"^5.0.0","@wallet-standard/app":"^1.1.0","@wallet-standard/base":"^1.1.0","@wallet-standard/features":"^1.1.0","@solana/transaction-messages":"^5.0.0","@solana/webcrypto-ed25519-polyfill":"^4.0.0","@solana-mobile/wallet-standard-mobile":"^0.4.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.2.1","vitest":"^3.2.4","happy-dom":"^20.0.7","react-dom":"^19.2.1","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/react":"^19.2.2","@vitest/coverage-v8":"^3.2.4","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":">=18.0.0","@solana/web3.js":"^1.0.0","@solana/keychain":"^0.2.1","@solana/keychain-privy":"^0.2.1","@solana/keychain-vault":"^0.2.1","@solana/keychain-aws-kms":"^0.2.1","@solana/keychain-turnkey":"^0.2.1","@solana/keychain-fireblocks":"^0.2.1","@walletconnect/universal-provider":"^2.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@solana/web3.js":{"optional":true},"@solana/keychain":{"optional":true},"@solana/keychain-privy":{"optional":true},"@solana/connector-debugger":{"optional":true},"@solana/keychain-fireblocks":{"optional":true},"@walletconnect/universal-provider":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/connector_0.2.2_1768208441613_0.23174034012304268","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@solana/connector","version":"0.2.3","license":"MIT","_id":"@solana/connector@0.2.3","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"homepage":"https://github.com/solana-foundation/connectorkit#readme","bugs":{"url":"https://github.com/solana-foundation/connectorkit/issues"},"dist":{"shasum":"c1ae52cd1dc99569fb6937e341da4f4878763dc1","tarball":"https://registry.npmjs.org/@solana/connector/-/connector-0.2.3.tgz","fileCount":89,"integrity":"sha512-J6xFrDd46oDfyAFZyJok5Q0otlN2GiCQEen8vRsL42m6AapY8ZCXWa3mO31ehkb8USU4f34jBQjmscErSAcOFg==","signatures":[{"sig":"MEUCIFePEZKTeKmtHpYfVDL7uMygucf6GX6c30Ame1K/fNHAAiEA7xH7b4g6CzzW+lTn9cBlTsVmebwiNwnDFRzjLuwzVd4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@solana%2fconnector@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3306171},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.mjs","require":"./dist/react.js"},"./compat":{"types":"./dist/compat.d.ts","import":"./dist/compat.mjs","require":"./dist/compat.js"},"./remote":{"types":"./dist/remote.d.ts","import":"./dist/remote.mjs","require":"./dist/remote.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"},"./headless":{"types":"./dist/headless.d.ts","import":"./dist/headless.mjs","require":"./dist/headless.js"}},"gitHead":"bf101dbd811b53e426a5a8837cd142229677157c","scripts":{"dev":"tsup --watch","lint":"prettier --check src/","perf":"npm run build:analyze && npm run size","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:ui":"vitest --ui","size:why":"size-limit --why","test:watch":"vitest","type-check":"tsc --noEmit","build:analyze":"npm run build && node scripts/analyze-bundle.js","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a2baae62-e63a-4d8f-a60c-73752ddaf3d2"}},"repository":{"url":"git+https://github.com/solana-foundation/connectorkit.git","type":"git"},"_npmVersion":"11.7.0","description":"Headless wallet connector client and React provider built on Wallet Standard","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"zod":"^4.0.0","@solana/kit":"^5.0.0","@solana/keys":"^5.0.0","@solana/codecs":"^5.0.0","@solana/signers":"^5.0.0","@wallet-ui/core":"^2.1.0","@solana/addresses":"^5.0.0","@solana/transactions":"^5.0.0","@wallet-standard/app":"^1.1.0","@wallet-standard/base":"^1.1.0","@wallet-standard/features":"^1.1.0","@solana/transaction-messages":"^5.0.0","@solana/webcrypto-ed25519-polyfill":"^4.0.0","@solana-mobile/wallet-standard-mobile":"^0.4.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.2.1","vitest":"^3.2.4","happy-dom":"^20.0.7","react-dom":"^19.2.1","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/react":"^19.2.2","@vitest/coverage-v8":"^3.2.4","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":">=18.0.0","@solana/web3.js":"^1.0.0","@solana/keychain":"^0.2.1","@solana/keychain-privy":"^0.2.1","@solana/keychain-vault":"^0.2.1","@solana/keychain-aws-kms":"^0.2.1","@solana/keychain-turnkey":"^0.2.1","@solana/keychain-fireblocks":"^0.2.1","@walletconnect/universal-provider":"^2.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@solana/web3.js":{"optional":true},"@solana/keychain":{"optional":true},"@solana/keychain-privy":{"optional":true},"@solana/connector-debugger":{"optional":true},"@solana/keychain-fireblocks":{"optional":true},"@walletconnect/universal-provider":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/connector_0.2.3_1768377912408_0.6245157176680958","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@solana/connector","version":"0.2.4","license":"MIT","_id":"@solana/connector@0.2.4","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"homepage":"https://github.com/solana-foundation/connectorkit#readme","bugs":{"url":"https://github.com/solana-foundation/connectorkit/issues"},"dist":{"shasum":"6b093c8c47d27cf3b43d651873b5f7a3624d5045","tarball":"https://registry.npmjs.org/@solana/connector/-/connector-0.2.4.tgz","fileCount":89,"integrity":"sha512-klxVTjgmhdEhzzBt+UEFHgTwpEs2wxECbuQCSjrKAbKOtncS7VFaosva0OwOoyfMkl2aQ7uerUZXW+x5FTOpZQ==","signatures":[{"sig":"MEUCIFPlNrXfGkhZl0HBTNDn5SREOYrjemUcA0de4nH+jJTGAiEArbI5zYLfutC1ZbcamgLAb+efZssWPCuzMvRqwCBYwEk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@solana%2fconnector@0.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3308697},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.mjs","require":"./dist/react.js"},"./compat":{"types":"./dist/compat.d.ts","import":"./dist/compat.mjs","require":"./dist/compat.js"},"./remote":{"types":"./dist/remote.d.ts","import":"./dist/remote.mjs","require":"./dist/remote.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"},"./headless":{"types":"./dist/headless.d.ts","import":"./dist/headless.mjs","require":"./dist/headless.js"}},"gitHead":"92ab25beb8ac729c2126ab00da3fa3d6adf86718","scripts":{"dev":"tsup --watch","lint":"prettier --check src/","perf":"npm run build:analyze && npm run size","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:ui":"vitest --ui","size:why":"size-limit --why","test:watch":"vitest","type-check":"tsc --noEmit","build:analyze":"npm run build && node scripts/analyze-bundle.js","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a2baae62-e63a-4d8f-a60c-73752ddaf3d2"}},"repository":{"url":"git+https://github.com/solana-foundation/connectorkit.git","type":"git"},"_npmVersion":"11.8.0","description":"Headless wallet connector client and React provider built on Wallet Standard","directories":{},"sideEffects":false,"_nodeVersion":"20.20.0","dependencies":{"zod":"^4.0.0","@solana/kit":"^5.0.0","@solana/keys":"^5.0.0","@solana/codecs":"^5.0.0","@solana/signers":"^5.0.0","@wallet-ui/core":"^2.1.0","@solana/addresses":"^5.0.0","@solana/transactions":"^5.0.0","@wallet-standard/app":"^1.1.0","@wallet-standard/base":"^1.1.0","@wallet-standard/features":"^1.1.0","@solana/transaction-messages":"^5.0.0","@solana/webcrypto-ed25519-polyfill":"^4.0.0","@solana-mobile/wallet-standard-mobile":"^0.4.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.2.1","vitest":"^3.2.4","happy-dom":"^20.0.7","react-dom":"^19.2.1","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/react":"^19.2.2","@vitest/coverage-v8":"^3.2.4","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":">=18.0.0","@solana/web3.js":"^1.0.0","@solana/keychain":"^0.2.1","@solana/keychain-privy":"^0.2.1","@solana/keychain-vault":"^0.2.1","@solana/keychain-aws-kms":"^0.2.1","@solana/keychain-turnkey":"^0.2.1","@solana/keychain-fireblocks":"^0.2.1","@walletconnect/universal-provider":"^2.0.0"},"peerDependenciesMeta":{"react":{"optional":true},"@solana/web3.js":{"optional":true},"@solana/keychain":{"optional":true},"@solana/keychain-privy":{"optional":true},"@solana/connector-debugger":{"optional":true},"@solana/keychain-fireblocks":{"optional":true},"@walletconnect/universal-provider":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/connector_0.2.4_1770074545026_0.046110001754639196","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@solana/connector","version":"0.2.6","license":"MIT","_id":"@solana/connector@0.2.6","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"homepage":"https://github.com/solana-foundation/connectorkit#readme","bugs":{"url":"https://github.com/solana-foundation/connectorkit/issues"},"dist":{"shasum":"9438f7b6ae92402f667e3624af7cae0566db6a42","tarball":"https://registry.npmjs.org/@solana/connector/-/connector-0.2.6.tgz","fileCount":89,"integrity":"sha512-5JOb6nKhFOtqjIojDs372QcQE8GFUYSXL343DeOrVWAP2oEuGtIYLIHEKJg4AZFX+owqJAmPzlgYiSdLaK/bow==","signatures":[{"sig":"MEQCIDwmdgN0qYyYbu8gHSJvyHGt4EVsKZHTsNiuJxgAqRCiAiAhUElHZ2WCnb5nw4p/beNLC6Ks4P2djvWJ76mw8/pFCQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@solana%2fconnector@0.2.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3315156},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.mjs","require":"./dist/react.js"},"./compat":{"types":"./dist/compat.d.ts","import":"./dist/compat.mjs","require":"./dist/compat.js"},"./remote":{"types":"./dist/remote.d.ts","import":"./dist/remote.mjs","require":"./dist/remote.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"},"./headless":{"types":"./dist/headless.d.ts","import":"./dist/headless.mjs","require":"./dist/headless.js"}},"gitHead":"a3086c10ad5770e61e19715a697dd9a2040da476","scripts":{"dev":"tsup --watch","lint":"prettier --check src/","perf":"npm run build:analyze && npm run size","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:ui":"vitest --ui","size:why":"size-limit --why","test:watch":"vitest","type-check":"tsc --noEmit","build:analyze":"npm run build && node scripts/analyze-bundle.js","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a2baae62-e63a-4d8f-a60c-73752ddaf3d2"}},"repository":{"url":"git+https://github.com/solana-foundation/connectorkit.git","type":"git"},"_npmVersion":"11.16.0","description":"Headless wallet connector client and React provider built on Wallet Standard","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","@solana/kit":"^7.0.0","@solana/keys":"^7.0.0","@solana/codecs":"^7.0.0","@solana/signers":"^7.0.0","@wallet-ui/core":"^4.2.0","@solana/addresses":"^7.0.0","@solana/transactions":"^7.0.0","@wallet-standard/app":"^1.1.1","@wallet-standard/base":"^1.1.1","@wallet-standard/features":"^1.1.1","@solana/transaction-messages":"^7.0.0","@solana/webcrypto-ed25519-polyfill":"^7.0.0","@solana-mobile/wallet-standard-mobile":"^0.5.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.2.7","vitest":"^4.1.9","happy-dom":"^20.10.6","react-dom":"^19.2.7","@vitest/ui":"^4.1.9","typescript":"^6.0.3","@types/react":"^19.2.17","@vitest/coverage-v8":"^4.1.9","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":">=18.0.0","@solana/web3.js":"^1.0.0","@solana/keychain":"^1.2.0","@solana/keychain-privy":"^1.2.0","@solana/keychain-vault":"^1.2.0","@solana/keychain-aws-kms":"^1.2.0","@solana/keychain-turnkey":"^1.2.0","@solana/keychain-fireblocks":"^1.2.0","@walletconnect/universal-provider":"^2.23.9"},"peerDependenciesMeta":{"react":{"optional":true},"@solana/web3.js":{"optional":true},"@solana/keychain":{"optional":true},"@solana/keychain-privy":{"optional":true},"@solana/keychain-vault":{"optional":true},"@solana/keychain-aws-kms":{"optional":true},"@solana/keychain-turnkey":{"optional":true},"@solana/connector-debugger":{"optional":true},"@solana/keychain-fireblocks":{"optional":true},"@walletconnect/universal-provider":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/connector_0.2.6_1783561372638_0.3398880300713134","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"_id":"@solana/connector@0.3.0","bugs":{"url":"https://github.com/solana-foundation/connectorkit/issues"},"dist":{"shasum":"2038594142941af1350598687de4b179b02fc634","tarball":"https://registry.npmjs.org/@solana/connector/-/connector-0.3.0.tgz","fileCount":95,"integrity":"sha512-Q3G1zXVbc/z6n9Oc+JnOlDrsNq81b5N2e51baZvWWlm7F2kmmAv7Lzgm3ZbPb+4/vznpUZzHZOxa2p/HXLF+Og==","signatures":[{"sig":"MEUCIQCj2fehcoYY5WPQrXFJ/a+mn2aFn8vHWlKz7NavHOS0MQIgRHoUJuAcvMNa4dtnvpvY7DVGI2xBPeznVbXNCdDq25M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIB8YnLPuiTuTZ9eJcrjCvXyyd8u7p9ba91euQ+b4IOlMAiEA9cI0hU9gG3C8ubqMa/BR+ACE96GIRLJbYh1ua0ZHCbg="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@solana%2fconnector@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3130580},"main":"./dist/index.js","name":"@solana/connector","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./kit":{"types":"./dist/kit.d.ts","import":"./dist/kit.mjs","require":"./dist/kit.js"},"./react":{"types":"./dist/react.d.ts","import":"./dist/react.mjs","require":"./dist/react.js"},"./compat":{"types":"./dist/compat.d.ts","import":"./dist/compat.mjs","require":"./dist/compat.js"},"./remote":{"types":"./dist/remote.d.ts","import":"./dist/remote.mjs","require":"./dist/remote.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.mjs","require":"./dist/server.js"},"./headless":{"types":"./dist/headless.d.ts","import":"./dist/headless.mjs","require":"./dist/headless.js"}},"gitHead":"5ae28009a657ca9621a5acc5e4c362801a5de495","license":"MIT","scripts":{"dev":"tsup --watch","lint":"prettier --check src/","perf":"npm run build:analyze && npm run size","size":"size-limit","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:ui":"vitest --ui","size:why":"size-limit --why","test:watch":"vitest","type-check":"tsc --noEmit","build:analyze":"npm run build && node scripts/analyze-bundle.js","test:coverage":"vitest run --coverage"},"version":"0.3.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"a2baae62-e63a-4d8f-a60c-73752ddaf3d2"}},"homepage":"https://github.com/solana-foundation/connectorkit#readme","repository":{"url":"git+https://github.com/solana-foundation/connectorkit.git","type":"git"},"_npmVersion":"11.19.0","description":"Headless wallet connector client and React provider built on Wallet Standard","directories":{},"maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"sideEffects":false,"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3","@solana/kit":"^8.2.0","@solana/keys":"^8.2.0","@solana/react":"^8.2.0","@solana/codecs":"^8.2.0","@solana/signers":"^8.2.0","@wallet-ui/core":"^4.2.0","@solana/addresses":"^8.2.0","@wallet-standard/ui":"^1.0.3","@solana/transactions":"^8.2.0","@wallet-standard/app":"^1.1.1","@wallet-standard/base":"^1.1.1","@solana/kit-plugin-rpc":"^0.19.0","@solana/kit-plugin-wallet":"^0.19.0","@wallet-standard/features":"^1.1.1","@solana/transaction-messages":"^8.2.0","@wallet-standard/ui-registry":"^1.1.1","@solana/wallet-account-signer":"^8.2.0","@solana/wallet-standard-features":"^1.5.0","@solana/webcrypto-ed25519-polyfill":"^8.2.0","@solana-mobile/wallet-standard-mobile":"^0.5.3"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","react":"^19.2.8","vitest":"^4.1.9","happy-dom":"^20.10.6","react-dom":"^19.2.8","@vitest/ui":"^4.1.9","typescript":"^6.0.3","@types/react":"^19.2.17","@vitest/coverage-v8":"^4.1.9","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":">=18.0.0","@solana/web3.js":"^1.0.0","@solana/keychain":"^1.2.0","@solana/keychain-privy":"^1.2.0","@solana/keychain-vault":"^1.2.0","@solana/keychain-aws-kms":"^1.2.0","@solana/keychain-turnkey":"^1.2.0","@solana/keychain-fireblocks":"^1.2.0","@walletconnect/universal-provider":"^2.23.9"},"peerDependenciesMeta":{"react":{"optional":true},"@solana/web3.js":{"optional":true},"@solana/keychain":{"optional":true},"@solana/keychain-privy":{"optional":true},"@solana/keychain-vault":{"optional":true},"@solana/keychain-aws-kms":{"optional":true},"@solana/keychain-turnkey":{"optional":true},"@solana/connector-debugger":{"optional":true},"@solana/keychain-fireblocks":{"optional":true},"@walletconnect/universal-provider":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/connector_0.3.0_1790792698747_0.00222784010179633"}}},"time":{"created":"2025-10-23T16:34:35.511Z","modified":"2026-09-30T18:24:59.270Z","0.0.0":"2025-10-23T16:34:35.745Z","0.1.0":"2025-10-23T20:28:48.530Z","0.1.1":"2025-11-04T02:13:57.865Z","0.1.2":"2025-11-04T03:58:33.780Z","0.1.3":"2025-11-05T21:43:56.591Z","0.1.4":"2025-12-03T20:57:59.157Z","0.1.5":"2025-12-23T10:24:34.547Z","0.1.6":"2025-12-23T20:32:04.161Z","0.1.7":"2025-12-26T18:51:37.427Z","0.1.8":"2025-12-28T01:24:02.518Z","0.1.9":"2025-12-28T10:03:26.295Z","0.1.10":"2025-12-30T02:42:01.085Z","0.2.0":"2025-12-31T07:50:53.437Z","0.2.1":"2025-12-31T09:48:53.091Z","0.2.2":"2026-01-12T09:00:41.827Z","0.2.3":"2026-01-14T08:05:12.597Z","0.2.4":"2026-02-02T23:22:25.247Z","0.2.6":"2026-07-09T01:42:52.841Z","0.3.0":"2026-09-30T18:24:58.884Z"},"bugs":{"url":"https://github.com/solana-foundation/connectorkit/issues"},"license":"MIT","homepage":"https://github.com/solana-foundation/connectorkit#readme","repository":{"url":"git+https://github.com/solana-foundation/connectorkit.git","type":"git"},"description":"Headless wallet connector client and React provider built on Wallet Standard","maintainers":[{"name":"solana-devs","email":"npm@solana.org"}],"readme":"---\ntitle: '@solana/connector'\ndescription: Production-ready wallet connector for Solana applications\n---\n\n**ConnectorKit is your Solana wallet infrastructure.** A headless, framework-agnostic wallet connector built on Wallet Standard that just work.\n\n![npm](https://img.shields.io/npm/v/@solana/connector)\n![Bundle Size](https://img.shields.io/badge/bundle-~45KB-gzip-green)\n![TypeScript](https://img.shields.io/badge/TypeScript-100%25-blue)\n\n### Why ConnectorKit?\n\n- **Wallet Standard First**: Built on the official Wallet Standard protocol for universal wallet compatibility\n- **Modern & Legacy Support**: Works with both `@solana/kit` (web3.js 2.0) and `@solana/web3.js` (legacy)\n- **Framework Agnostic**: React hooks + headless core for Vue, Svelte, or vanilla JavaScript\n- **Production Ready**: Event system for analytics, health checks for diagnostics, error boundaries for React apps\n- **Enhanced Storage**: Automatic validation, SSR fallback, and error handling out of the box\n- **Mobile Support**: Built-in Solana Mobile Wallet Adapter integration\n\n---\n\n## Quick Start\n\n### 1. Install\n\n```bash\nnpm install @solana/connector\n# or\npnpm add @solana/connector\n# or\nyarn add @solana/connector\n# or\nbun add @solana/connector\n```\n\n### 2. Setup Provider (once in your app root)\n\n```typescript\n'use client';\n\nimport { useMemo } from 'react';\nimport { AppProvider } from '@solana/connector/react';\nimport { getDefaultConfig, getDefaultMobileConfig } from '@solana/connector/headless';\n\nexport function Providers({ children }: { children: React.ReactNode }) {\n    const connectorConfig = useMemo(() => {\n        // Optional: Get custom RPC URL from environment variable\n        const customRpcUrl = process.env.SOLANA_RPC_URL;\n\n        // Optional: Create custom cluster configuration\n        const clusters = customRpcUrl\n            ? [\n                  {\n                      id: 'solana:mainnet' as const,\n                      label: 'Mainnet (Custom RPC)',\n                      url: customRpcUrl,\n                  },\n                  {\n                      id: 'solana:devnet' as const,\n                      label: 'Devnet',\n                      url: 'https://api.devnet.solana.com',\n                  },\n              ]\n            : undefined;\n\n        return getDefaultConfig({\n            appName: 'My App',\n            appUrl: 'https://myapp.com',\n            autoConnect: true,\n            enableMobile: true,\n            clusters,\n            // Optional: Control which detected wallets are shown/available (Wallet Standard auto-discovery)\n            wallets: {\n                allowList: ['Phantom', 'Solflare', 'Backpack'],\n                denyList: ['Keplr', 'MetaMask'],\n                featured: ['Phantom', 'Solflare'],\n            },\n        });\n    }, []);\n\n    const mobile = useMemo(\n        () =>\n            getDefaultMobileConfig({\n                appName: 'My App',\n                appUrl: 'https://myapp.com',\n            }),\n        [],\n    );\n\n    return (\n        <AppProvider connectorConfig={connectorConfig} mobile={mobile}>\n            {children}\n        </AppProvider>\n    );\n}\n```\n\n**Optional: Wallet filtering & ordering**\n\nConnectorKit auto-detects wallets via Wallet Standard. To improve UX for users with many installed wallets, you can filter/prioritize the detected list using `wallets`.\n\n- `allowList`: only expose these wallet names\n- `denyList`: hide these wallet names (deny wins)\n- `featured`: show these wallets first\n\nThis is **full-scope** filtering: hidden wallets are removed from `connectors` and cannot be selected or auto-connected.\n\n### 3. Use Hooks (in any component)\n\n```typescript\n'use client';\n\nimport { useConnector } from '@solana/connector/react';\n\nexport function ConnectButton() {\n    const {\n        connectors,\n        connectWallet,\n        disconnectWallet,\n        isConnected,\n        isConnecting,\n        isError,\n        walletError,\n        account,\n    } = useConnector();\n\n    if (isError) {\n        return (\n            <div>\n                <p>Error: {walletError?.message ?? 'Unknown error'}</p>\n            </div>\n        );\n    }\n\n    if (!isConnected) {\n        return (\n            <div>\n                {connectors.map(connector => (\n                    <button\n                        key={connector.id}\n                        onClick={() => connectWallet(connector.id)}\n                        disabled={isConnecting || !connector.ready}\n                    >\n                        {isConnecting ? 'Connecting...' : `Connect ${connector.name}`}\n                    </button>\n                ))}\n            </div>\n        );\n    }\n\n    return (\n        <div>\n            <span>{account}</span>\n            <button onClick={disconnectWallet}>\n                Disconnect\n            </button>\n        </div>\n    );\n}\n```\n\n**That's it!** You're ready to go. Everything else below is optional.\n\n---\n\n## Core Hooks\n\nThese are the main hooks you'll use in your components.\n\n### `useConnector()`\n\nMain hook for wallet connection and state.\n\n```typescript\nimport { useConnector } from '@solana/connector/react';\n\nfunction Component() {\n    const {\n        // vNext state (recommended)\n        connectors, // WalletConnectorMetadata[] - available wallet connectors\n        walletStatus, // WalletStatus - discriminated union state machine\n        connectorId, // WalletConnectorId | null - connected connector id\n        connector, // WalletConnectorMetadata | null - connected connector metadata\n        account, // Address | null - selected account address\n        sessionAccounts, // SessionAccount[] - all accounts in session\n        isConnected, // boolean - shorthand\n        isConnecting, // boolean - shorthand\n        isError, // boolean - shorthand\n        walletError, // Error | null - set when status is 'error'\n\n        // vNext actions (recommended)\n        connectWallet, // (connectorId, options?) => Promise<void>\n        disconnectWallet, // () => Promise<void>\n\n        // Legacy fields (deprecated; kept for backwards compatibility)\n        wallets,\n        selectedWallet,\n        selectedAccount,\n        accounts,\n        connected,\n        connecting,\n\n        // Legacy actions (deprecated; kept for backwards compatibility)\n        select,\n        disconnect,\n    } = useConnector();\n}\n```\n\n**Real Example** - Connect Button with wallet selection:\n\n```typescript\n'use client';\n\nimport { useConnector } from '@solana/connector/react';\n\nexport function ConnectButton() {\n    const { connectors, connectWallet, disconnectWallet, isConnected, isConnecting, account } = useConnector();\n\n    if (isConnecting) {\n        return <button disabled>Connecting...</button>;\n    }\n\n    if (isConnected && account) {\n        const shortAddress = `${account.slice(0, 4)}...${account.slice(-4)}`;\n        return (\n            <div>\n                <span>{shortAddress}</span>\n                <button onClick={disconnectWallet}>Disconnect</button>\n            </div>\n        );\n    }\n\n    return (\n        <div>\n            {connectors.map(connector => (\n                <button\n                    key={connector.id}\n                    onClick={() => connectWallet(connector.id)}\n                    disabled={isConnecting || !connector.ready}\n                >\n                    Connect {connector.name}\n                </button>\n            ))}\n        </div>\n    );\n}\n```\n\n### `useAccount()`\n\nHook for working with the connected account.\n\n```typescript\nimport { useAccount } from '@solana/connector';\n\nfunction Component() {\n    const {\n        address, // string | null - Full wallet address\n        formatted, // string - Shortened address (e.g., \"5Gv8...x3kF\")\n        copy, // () => Promise<boolean> - Copy address to clipboard\n        copied, // boolean - True for 2s after copying\n        connected, // boolean - Connection status\n        accounts, // AccountInfo[] - All accounts\n        selectAccount, // (address: string) => Promise<void>\n    } = useAccount();\n}\n```\n\n**Real Example** - Account Switcher for multi-account wallets:\n\n```typescript\n'use client';\n\nimport { useAccount } from '@solana/connector';\n\nexport function AccountSwitcher() {\n    const { accounts, address, selectAccount, connected } = useAccount();\n\n    if (!connected || accounts.length <= 1) {\n        return null;\n    }\n\n    return (\n        <select\n            value={address || ''}\n            onChange={e => selectAccount(e.target.value)}\n        >\n            {accounts.map(account => (\n                <option key={account.address} value={account.address}>\n                    {account.address.slice(0, 6)}...{account.address.slice(-6)}\n                </option>\n            ))}\n        </select>\n    );\n}\n```\n\n### `useCluster()`\n\nHook for managing Solana network/cluster.\n\n```typescript\nimport { useCluster } from '@solana/connector';\n\nfunction Component() {\n    const {\n        cluster, // SolanaCluster | null - Active cluster\n        clusters, // SolanaCluster[] - Available clusters\n        setCluster, // (id: SolanaClusterId) => Promise<void>\n        isMainnet, // boolean - Convenience flags\n        isDevnet, // boolean\n        rpcUrl, // string - RPC endpoint URL\n        explorerUrl, // string - Solana Explorer base URL\n    } = useCluster();\n}\n```\n\n**Real Example** - Network Selector:\n\n```typescript\n'use client';\n\nimport { useCluster } from '@solana/connector';\n\nexport function ClusterSelector() {\n    const { cluster, clusters, setCluster } = useCluster();\n\n    return (\n        <select\n            value={cluster?.id || ''}\n            onChange={e => setCluster(e.target.value as SolanaClusterId)}\n        >\n            {clusters.map(c => (\n                <option key={c.id} value={c.id}>\n                    {c.label}\n                </option>\n            ))}\n        </select>\n    );\n}\n```\n\n### `useWalletInfo()`\n\nHook for accessing current wallet metadata.\n\n```typescript\nimport { useWalletInfo } from '@solana/connector';\n\nfunction Component() {\n    const {\n        name, // string | null - Wallet name\n        icon, // string | undefined - Wallet icon URL\n        wallet, // WalletInfo | null - Full wallet info\n        connecting, // boolean - Connection in progress\n    } = useWalletInfo();\n}\n```\n\n---\n\n## vNext API (Recommended)\n\nThe vNext API provides a cleaner, more type-safe approach to wallet connections using stable connector IDs and a wallet status state machine.\n\nYou can access the same vNext state + actions either through the focused hooks below, or via `useConnector()` (single hook) which also includes legacy compatibility fields.\n\n### `useWallet()`\n\nPrimary hook for wallet status in vNext. Uses a discriminated union for type-safe status checks.\n\n```typescript\nimport { useWallet } from '@solana/connector/react';\n\nfunction Component() {\n    const {\n        status,      // 'disconnected' | 'connecting' | 'connected' | 'error'\n        isConnected, // boolean shorthand\n        isConnecting,// boolean shorthand\n        account,     // Address | null - Selected account address\n        accounts,    // SessionAccount[] - All available accounts\n        connectorId, // WalletConnectorId | null - Connected wallet ID\n        error,       // Error | null - Error if status is 'error'\n    } = useWallet();\n\n    if (status === 'connected') {\n        // TypeScript knows account is non-null here\n        return <p>Connected: {account}</p>;\n    }\n}\n```\n\n### `useWalletConnectors()`\n\nGet available wallet connectors with stable IDs.\n\n```typescript\nimport { useWalletConnectors } from '@solana/connector/react';\n\nfunction WalletList() {\n    const connectors = useWalletConnectors();\n\n    return (\n        <ul>\n            {connectors.map(connector => (\n                <li key={connector.id}>\n                    <img src={connector.icon} alt={connector.name} />\n                    {connector.name}\n                    {connector.ready ? '✓' : 'Not Ready'}\n                </li>\n            ))}\n        </ul>\n    );\n}\n```\n\n### `useConnectWallet()`\n\nConnect to a wallet using its stable connector ID.\n\n```typescript\nimport { useConnectWallet, useWalletConnectors } from '@solana/connector/react';\n\nfunction ConnectButton() {\n    const { connect, isConnecting, error, resetError } = useConnectWallet();\n    const connectors = useWalletConnectors();\n\n    return (\n        <div>\n            {connectors.map(connector => (\n                <button\n                    key={connector.id}\n                    onClick={() => connect(connector.id)}\n                    disabled={isConnecting || !connector.ready}\n                >\n                    Connect {connector.name}\n                </button>\n            ))}\n            {error && (\n                <p>\n                    Error: {error.message}\n                    <button onClick={resetError}>Dismiss</button>\n                </p>\n            )}\n        </div>\n    );\n}\n```\n\n### `useDisconnectWallet()`\n\nDisconnect the current wallet session.\n\n```typescript\nimport { useDisconnectWallet, useWallet } from '@solana/connector/react';\n\nfunction DisconnectButton() {\n    const { isConnected } = useWallet();\n    const { disconnect, isDisconnecting } = useDisconnectWallet();\n\n    if (!isConnected) return null;\n\n    return (\n        <button onClick={disconnect} disabled={isDisconnecting}>\n            {isDisconnecting ? 'Disconnecting...' : 'Disconnect'}\n        </button>\n    );\n}\n```\n\n### Silent Session Restore\n\nSilent reconnection is handled automatically: with `autoConnect` enabled (the default), the wallet plugin silently restores the persisted session on startup without prompting the user. Explicit `connect()` calls are always interactive.\n\n```typescript\nconst config = getDefaultConfig({\n    appName: 'My App',\n    autoConnect: true, // silent restore of the persisted session on load\n});\n```\n\n> The `silent` and `allowInteractiveFallback` fields on `ConnectOptions` are deprecated no-ops under the kit wallet plugin backend and will be removed in the next major.\n\n---\n\n## Migration Guide (Legacy → vNext)\n\n### Connect by Wallet Name → Connect by Connector ID\n\n**Before (Legacy):**\n\n```typescript\nconst { select, wallets } = useConnector();\nawait select('Phantom');\n```\n\n**After (vNext):**\n\n```typescript\nconst { connect } = useConnectWallet();\nawait connect('wallet-standard:phantom');\n// Or use connectors from useWalletConnectors()\n```\n\n### Check Connection Status\n\n**Before (Legacy):**\n\n```typescript\nconst { connected, connecting } = useConnector();\nif (connected) {\n    /* ... */\n}\n```\n\n**After (vNext):**\n\n```typescript\nconst { status, isConnected, isConnecting } = useWallet();\nif (status === 'connected') {\n    /* ... */\n}\n// Or use the boolean shorthand:\nif (isConnected) {\n    /* ... */\n}\n```\n\n### Get Selected Account\n\n**Before (Legacy):**\n\n```typescript\nconst { selectedAccount } = useConnector();\n```\n\n**After (vNext):**\n\n```typescript\nconst { account } = useWallet();\n// Or for full account info:\nconst { accounts, account } = useWallet();\n```\n\n### Disconnect\n\n**Before (Legacy):**\n\n```typescript\nconst { disconnect } = useConnector();\nawait disconnect();\n```\n\n**After (vNext):**\n\n```typescript\nconst { disconnect } = useDisconnectWallet();\nawait disconnect();\n```\n\n---\n\n## Transaction Signing\n\nConnectorKit provides powerful transaction signing capabilities with support for both legacy `@solana/web3.js` and modern `@solana/kit` APIs.\n\n### Modern API (`@solana/kit`)\n\nUse `useKitTransactionSigner()` for modern, type-safe transaction building:\n\n```typescript\n'use client';\n\nimport { useState } from 'react';\nimport {\n    address,\n    createSolanaRpc,\n    pipe,\n    createTransactionMessage,\n    setTransactionMessageFeePayerSigner,\n    setTransactionMessageLifetimeUsingBlockhash,\n    appendTransactionMessageInstructions,\n    sendAndConfirmTransactionFactory,\n    getSignatureFromTransaction,\n    signTransactionMessageWithSigners,\n    createSolanaRpcSubscriptions,\n    lamports,\n    assertIsTransactionWithBlockhashLifetime,\n} from '@solana/kit';\nimport { getTransferSolInstruction } from '@solana-program/system';\nimport { useKitTransactionSigner, useCluster, useConnectorClient, LAMPORTS_PER_SOL } from '@solana/connector';\n\nexport function ModernSolTransfer() {\n    const { signer, ready } = useKitTransactionSigner();\n    const { cluster } = useCluster();\n    const client = useConnectorClient();\n    const [signature, setSignature] = useState<string | null>(null);\n\n    async function handleTransfer(recipientAddress: string, amount: number) {\n        if (!signer || !client) {\n            throw new Error('Wallet not connected');\n        }\n\n        // Get RPC URL from connector client\n        const rpcUrl = client.getRpcUrl();\n        if (!rpcUrl) {\n            throw new Error('No RPC endpoint configured');\n        }\n\n        // Create RPC client using web3.js 2.0\n        const rpc = createSolanaRpc(rpcUrl);\n        const rpcSubscriptions = createSolanaRpcSubscriptions(rpcUrl.replace('http', 'ws'));\n\n        // Get recent blockhash\n        const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();\n\n        // Convert SOL to lamports\n        const amountInLamports = lamports(BigInt(Math.floor(amount * Number(LAMPORTS_PER_SOL))));\n\n        // Create transfer instruction\n        const transferInstruction = getTransferSolInstruction({\n            source: signer,\n            destination: address(recipientAddress),\n            amount: amountInLamports,\n        });\n\n        // Build transaction message\n        const transactionMessage = pipe(\n            createTransactionMessage({ version: 0 }),\n            tx => setTransactionMessageFeePayerSigner(signer, tx),\n            tx => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, tx),\n            tx => appendTransactionMessageInstructions([transferInstruction], tx),\n        );\n\n        // Sign transaction\n        const signedTransaction = await signTransactionMessageWithSigners(transactionMessage);\n\n        // Send and confirm\n        assertIsTransactionWithBlockhashLifetime(signedTransaction);\n        await sendAndConfirmTransactionFactory({ rpc, rpcSubscriptions })(signedTransaction, {\n            commitment: 'confirmed',\n        });\n\n        const transactionSignature = getSignatureFromTransaction(signedTransaction);\n        setSignature(transactionSignature);\n    }\n\n    return (\n        <div>\n            {/* Your form UI */}\n            <button onClick={() => handleTransfer('...', 0.1)} disabled={!ready}>\n                Send SOL\n            </button>\n            {signature && <div>Transaction: {signature}</div>}\n        </div>\n    );\n}\n```\n\n### Legacy API (`@solana/web3.js`)\n\nUse `useTransactionSigner()` for legacy web3.js compatibility:\n\n```typescript\nimport { useTransactionSigner } from '@solana/connector';\nimport { Transaction, SystemProgram } from '@solana/web3.js';\n\nfunction SendTransaction() {\n    const { signer, ready } = useTransactionSigner();\n\n    const handleSend = async () => {\n        if (!signer) return;\n\n        const transaction = new Transaction().add(\n            SystemProgram.transfer({\n                fromPubkey: signer.address,\n                toPubkey: recipientPubkey,\n                lamports: 1000000,\n            })\n        );\n\n        const signature = await signer.signAndSendTransaction(transaction);\n        console.log('Transaction sent:', signature);\n    };\n\n    return <button onClick={handleSend} disabled={!ready}>Send</button>;\n}\n```\n\n---\n\n## Off-Chain Message Signing\n\nSign human-readable v1 off-chain messages ([sRFC 38](https://github.com/solana-foundation/SRFCs/discussions/3)) through wallets that support the `solana:signOffchainMessage` Wallet Standard feature. Unlike raw `signMessage`, off-chain messages carry a standard preamble so wallets can display them uniformly and signatures can never be confused with transaction signatures.\n\nThe signed bytes returned by the wallet are recompiled with `@solana/kit`'s codec and checked byte-for-byte against the canonical encoding, and the resulting envelope's Ed25519 signature is always verified before the result is returned.\n\n```typescript\n'use client';\n\nimport { useSignOffchainMessage } from '@solana/connector/react';\n\nfunction SignInButton() {\n    const { signOffchainMessage, canSignOffchainMessage, ready } = useSignOffchainMessage();\n\n    // `ready` is true once a wallet is connected; `canSignOffchainMessage`\n    // additionally requires the wallet to support v1 off-chain messages.\n    if (!ready || !canSignOffchainMessage) return null;\n\n    const handleSignIn = async () => {\n        const { signature, signedOffchainMessage, envelope } = await signOffchainMessage(\n            'Sign in to Example App',\n        );\n        // signature: Ed25519 signature over the full off-chain message bytes\n        // signedOffchainMessage: preamble + body bytes the wallet signed (send to your verifier)\n        // envelope: verified @solana/kit OffchainMessageEnvelope\n    };\n\n    return <button onClick={handleSignIn}>Sign In</button>;\n}\n```\n\nFor non-React usage, `createOffchainMessageSigner({ wallet, account })` is available from `@solana/connector/headless`.\n\n---\n\n## UI Elements\n\nConnectorKit provides composable UI elements that handle data fetching and state management for you. Use the render prop pattern to customize the UI.\n\n### Available Elements\n\n- `BalanceElement` - Display SOL balance with refresh\n- `ClusterElement` - Network/cluster selector\n- `TokenListElement` - List of SPL tokens\n- `TransactionHistoryElement` - Recent transaction history\n- `DisconnectElement` - Disconnect button\n- `AccountElement` - Account display and switcher\n- `WalletListElement` - List of available wallets\n\n### Example: Wallet Dropdown\n\n```typescript\n'use client';\n\nimport {\n    BalanceElement,\n    ClusterElement,\n    TokenListElement,\n    TransactionHistoryElement,\n    DisconnectElement,\n} from '@solana/connector/react';\n\nexport function WalletDropdown() {\n    return (\n        <div className=\"wallet-dropdown\">\n            {/* Balance */}\n            <BalanceElement\n                render={({ solBalance, isLoading, refetch }) => (\n                    <div>\n                        <div>Balance: {isLoading ? '...' : `${solBalance?.toFixed(4)} SOL`}</div>\n                        <button onClick={refetch}>Refresh</button>\n                    </div>\n                )}\n            />\n\n            {/* Network Selector */}\n            <ClusterElement\n                render={({ cluster, clusters, setCluster }) => (\n                    <select value={cluster?.id} onChange={e => setCluster(e.target.value)}>\n                        {clusters.map(c => (\n                            <option key={c.id} value={c.id}>\n                                {c.label}\n                            </option>\n                        ))}\n                    </select>\n                )}\n            />\n\n            {/* Tokens */}\n            <TokenListElement\n                limit={5}\n                render={({ tokens, isLoading }) => (\n                    <div>\n                        {isLoading ? (\n                            <div>Loading tokens...</div>\n                        ) : (\n                            tokens.map(token => (\n                                <div key={token.mint}>\n                                    {token.symbol}: {token.formatted}\n                                </div>\n                            ))\n                        )}\n                    </div>\n                )}\n            />\n\n            {/* Transaction History */}\n            <TransactionHistoryElement\n                limit={5}\n                render={({ transactions, isLoading }) => (\n                    <div>\n                        {isLoading ? (\n                            <div>Loading transactions...</div>\n                        ) : (\n                            transactions.map(tx => (\n                                <a key={tx.signature} href={tx.explorerUrl} target=\"_blank\">\n                                    {tx.type} - {tx.formattedTime}\n                                </a>\n                            ))\n                        )}\n                    </div>\n                )}\n            />\n\n            {/* Disconnect */}\n            <DisconnectElement\n                render={({ disconnect, disconnecting }) => (\n                    <button onClick={disconnect} disabled={disconnecting}>\n                        {disconnecting ? 'Disconnecting...' : 'Disconnect'}\n                    </button>\n                )}\n            />\n        </div>\n    );\n}\n```\n\n---\n\n## Configuration\n\n### Basic Configuration\n\n```typescript\nimport { getDefaultConfig } from '@solana/connector';\n\nconst config = getDefaultConfig({\n    appName: 'My App', // Required\n    appUrl: 'https://myapp.com', // Optional: for mobile wallet adapter\n    autoConnect: true, // Auto-reconnect (default: true)\n    network: 'mainnet-beta', // Initial network (default: 'mainnet-beta')\n    enableMobile: true, // Mobile Wallet Adapter (default: true)\n    debug: false, // Debug logging\n});\n```\n\n### Network Selection\n\n```typescript\nconst config = getDefaultConfig({\n    appName: 'My App',\n    network: 'devnet', // 'mainnet-beta' | 'devnet' | 'testnet' | 'localnet'\n});\n```\n\n### Custom RPC Endpoints\n\n```typescript\nimport { getDefaultConfig } from '@solana/connector';\n\nconst config = getDefaultConfig({\n    appName: 'My App',\n    clusters: [\n        {\n            id: 'solana:mainnet' as const,\n            label: 'Mainnet (Custom RPC)',\n            url: 'https://my-custom-rpc.com',\n        },\n        {\n            id: 'solana:devnet' as const,\n            label: 'Devnet',\n            url: 'https://api.devnet.solana.com',\n        },\n    ],\n});\n```\n\n### Mobile Wallet Adapter\n\n```typescript\nimport { getDefaultMobileConfig } from '@solana/connector/headless';\n\nconst mobile = getDefaultMobileConfig({\n    appName: 'My App',\n    appUrl: 'https://myapp.com',\n});\n\n<AppProvider connectorConfig={config} mobile={mobile}>\n    {children}\n</AppProvider>\n```\n\n### WalletConnect Integration\n\nConnect mobile wallets via QR code or deep link using WalletConnect. This enables users to connect wallets like Trust Wallet, Exodus, and other WalletConnect-compatible Solana wallets.\n\n**1. Install WalletConnect dependency:**\n\n```bash\nnpm install @walletconnect/universal-provider\n```\n\n**2. Get a WalletConnect Cloud Project ID:**\n\nVisit [cloud.walletconnect.com](https://cloud.walletconnect.com/) and create a project to get your `projectId`.\n\n**3. Enable WalletConnect in your config:**\n\n```typescript\n'use client';\n\nimport { getDefaultConfig } from '@solana/connector/headless';\nimport { useMemo } from 'react';\nimport { AppProvider } from '@solana/connector/react';\n\nexport function Providers({ children }: { children: React.ReactNode }) {\n    const connectorConfig = useMemo(() => {\n        return getDefaultConfig({\n            appName: 'My App',\n            appUrl: 'https://myapp.com',\n            // Reads NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID from env\n            walletConnect: true,\n        });\n    }, []);\n\n    return (\n        <AppProvider connectorConfig={connectorConfig}>\n            {children}\n            <WalletConnectQRModal />\n        </AppProvider>\n    );\n}\n```\n\n**4. Render a QR code when a pairing URI is available:**\n\n```typescript\n'use client';\n\nimport { useConnector } from '@solana/connector/react';\nimport { QRCodeSVG } from 'qrcode.react'; // npm install qrcode.react\n\nexport function WalletConnectQRModal() {\n    const { walletConnectUri, clearWalletConnectUri } = useConnector();\n\n    if (!walletConnectUri) return null;\n\n    return (\n        <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50\">\n            <div className=\"w-full max-w-sm rounded-xl bg-white p-6\">\n                <h2 className=\"text-lg font-semibold\">Scan with your wallet</h2>\n                <div className=\"mt-4 flex justify-center\">\n                    <QRCodeSVG value={walletConnectUri} size={256} />\n                </div>\n                <p className=\"mt-4 text-center text-sm text-gray-500\">\n                    Open your WalletConnect-compatible wallet and scan this QR code\n                </p>\n                <button\n                    type=\"button\"\n                    onClick={clearWalletConnectUri}\n                    className=\"mt-4 w-full rounded bg-gray-100 py-2\"\n                >\n                    Cancel\n                </button>\n            </div>\n        </div>\n    );\n}\n```\n\nOnce enabled, \"WalletConnect\" appears as a connector (id: `walletconnect`) in your wallet list. When selected, `useConnector().walletConnectUri` will be set to a `wc:` URI that you can display as a QR code or use for deep linking.\n\n**Supported WalletConnect Solana methods:**\n\n- `solana_getAccounts` / `solana_requestAccounts` - Get connected accounts\n- `solana_signMessage` - Sign arbitrary messages\n- `solana_signTransaction` - Sign transactions\n- `solana_signAllTransactions` - Sign multiple transactions\n- `solana_signAndSendTransaction` - Sign and broadcast transactions\n\nSee the [WalletConnect Solana documentation](https://docs.walletconnect.network/wallet-sdk/chain-support/solana) for more details.\n\n---\n\n## Security Considerations\n\n### RPC API Key Protection\n\nIf you're using a paid RPC provider (Helius, QuickNode, etc.), avoid exposing your API key client-side. Anyone can grab it from the browser's network tab.\n\n**Solution: RPC Proxy Route**\n\nCreate an API route that proxies RPC requests, keeping the API key server-side:\n\n```typescript\n// app/api/rpc/route.ts\nimport { NextRequest, NextResponse } from 'next/server';\n\n// Server-side only - not exposed to client\nconst RPC_URL = process.env.SOLANA_RPC_URL || 'https://api.mainnet-beta.solana.com';\n\nexport async function POST(request: NextRequest) {\n    try {\n        const body = await request.json();\n\n        const response = await fetch(RPC_URL, {\n            method: 'POST',\n            headers: { 'Content-Type': 'application/json' },\n            body: JSON.stringify(body),\n        });\n\n        const data = await response.json();\n        return NextResponse.json(data);\n    } catch (error) {\n        return NextResponse.json({ error: 'RPC request failed' }, { status: 500 });\n    }\n}\n```\n\nThen configure the connector to use the proxy:\n\n```typescript\n'use client';\n\nimport { getDefaultConfig } from '@solana/connector/headless';\n\n// Get origin for absolute URL (Kit requires full URLs)\nconst getOrigin = () => {\n    if (typeof window !== 'undefined') return window.location.origin;\n    return 'http://localhost:3000';\n};\n\nconst config = getDefaultConfig({\n    appName: 'My App',\n    clusters: [\n        {\n            id: 'solana:mainnet' as const,\n            label: 'Mainnet',\n            url: `${getOrigin()}/api/rpc`, // Proxy URL\n        },\n        // ... other clusters\n    ],\n});\n```\n\nYour `.env` file (no `NEXT_PUBLIC_` prefix):\n\n```\nSOLANA_RPC_URL=https://mainnet.helius-rpc.com/?api-key=your-key\n```\n\n### Token Image Privacy\n\nWhen using `useTokens()` or `useTransactions()`, token metadata (including logo URLs) is fetched from external APIs. By default, these image URLs are returned directly, which means when your users' browsers fetch these images, the image host can see:\n\n- User IP addresses\n- Request timing (when users viewed their tokens)\n- User agent and browser information\n\nThis could potentially be exploited by malicious token creators who set tracking URLs in their token metadata.\n\n### Image Proxy Configuration\n\nTo protect user privacy, you can configure an image proxy that fetches images on behalf of your users:\n\n```typescript\nconst config = getDefaultConfig({\n    appName: 'My App',\n    imageProxy: '/_next/image?w=64&q=75&url=', // Next.js Image Optimization\n});\n```\n\nWhen `imageProxy` is set, all token image URLs returned by `useTokens()` and `useTransactions()` will be automatically transformed:\n\n```\n// Original URL from token metadata\nhttps://raw.githubusercontent.com/.../token-logo.png\n\n// Transformed URL (when imageProxy is set)\n/_next/image?w=64&q=75&url=https%3A%2F%2Fraw.githubusercontent.com%2F...%2Ftoken-logo.png\n```\n\n### Common Proxy Options\n\n| Service           | Configuration                                                     |\n| ----------------- | ----------------------------------------------------------------- |\n| **Next.js Image** | `imageProxy: '/_next/image?w=64&q=75&url='`                       |\n| **Cloudflare**    | `imageProxy: '/cdn-cgi/image/width=64,quality=75/'`               |\n| **imgproxy**      | `imageProxy: 'https://imgproxy.example.com/insecure/fill/64/64/'` |\n| **Custom API**    | `imageProxy: '/api/image-proxy?url='`                             |\n\n### Custom Proxy API Route (Next.js Example)\n\n```typescript\n// app/api/image-proxy/route.ts\nimport { NextRequest, NextResponse } from 'next/server';\nimport dns from 'dns/promises';\n\n// Allowlist of permitted domains for image fetching\nconst ALLOWED_DOMAINS = [\n    'raw.githubusercontent.com',\n    'arweave.net',\n    'ipfs.io',\n    'cloudflare-ipfs.com',\n    'nftstorage.link',\n    // Add other trusted image domains as needed\n];\n\n// Check if an IP address falls within private/reserved ranges\nfunction isPrivateOrReservedIP(ip: string): boolean {\n    // IPv4 private/reserved ranges\n    const ipv4PrivateRanges = [\n        /^127\\./, // 127.0.0.0/8 (loopback)\n        /^10\\./, // 10.0.0.0/8 (private)\n        /^172\\.(1[6-9]|2[0-9]|3[0-1])\\./, // 172.16.0.0/12 (private)\n        /^192\\.168\\./, // 192.168.0.0/16 (private)\n        /^169\\.254\\./, // 169.254.0.0/16 (link-local/metadata)\n        /^0\\./, // 0.0.0.0/8 (current network)\n        /^100\\.(6[4-9]|[7-9][0-9]|1[0-1][0-9]|12[0-7])\\./, // 100.64.0.0/10 (CGNAT)\n        /^192\\.0\\.0\\./, // 192.0.0.0/24 (IETF protocol assignments)\n        /^192\\.0\\.2\\./, // 192.0.2.0/24 (TEST-NET-1)\n        /^198\\.51\\.100\\./, // 198.51.100.0/24 (TEST-NET-2)\n        /^203\\.0\\.113\\./, // 203.0.113.0/24 (TEST-NET-3)\n        /^224\\./, // 224.0.0.0/4 (multicast)\n        /^240\\./, // 240.0.0.0/4 (reserved)\n        /^255\\.255\\.255\\.255$/, // broadcast\n    ];\n\n    // IPv6 private/reserved ranges\n    const ipv6PrivatePatterns = [\n        /^::1$/, // loopback\n        /^fe80:/i, // link-local\n        /^fc00:/i, // unique local (fc00::/7)\n        /^fd/i, // unique local (fd00::/8)\n        /^::ffff:(127\\.|10\\.|172\\.(1[6-9]|2[0-9]|3[0-1])\\.|192\\.168\\.|169\\.254\\.)/i, // IPv4-mapped\n    ];\n\n    // Check IPv4\n    for (const range of ipv4PrivateRanges) {\n        if (range.test(ip)) return true;\n    }\n\n    // Check IPv6\n    for (const pattern of ipv6PrivatePatterns) {\n        if (pattern.test(ip)) return true;\n    }\n\n    return false;\n}\n\n// Validate and parse the URL\nfunction validateUrl(urlString: string): URL | null {\n    try {\n        const parsed = new URL(urlString);\n        // Only allow http and https protocols\n        if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {\n            return null;\n        }\n        return parsed;\n    } catch {\n        return null;\n    }\n}\n\n// Check if hostname is in the allowlist\nfunction isAllowedDomain(hostname: string): boolean {\n    return ALLOWED_DOMAINS.some(domain => hostname === domain || hostname.endsWith(`.${domain}`));\n}\n\nexport async function GET(request: NextRequest) {\n    const urlParam = request.nextUrl.searchParams.get('url');\n\n    // (1) Ensure URL exists and parses correctly with http/https\n    if (!urlParam) {\n        return new NextResponse('Missing URL parameter', { status: 400 });\n    }\n\n    const parsedUrl = validateUrl(urlParam);\n    if (!parsedUrl) {\n        return new NextResponse('Invalid URL or protocol', { status: 400 });\n    }\n\n    // (2) Enforce allowlist of permitted domains\n    if (!isAllowedDomain(parsedUrl.hostname)) {\n        return new NextResponse('Domain not allowed', { status: 403 });\n    }\n\n    // (3) Resolve hostname and check for private/reserved IPs\n    try {\n        const addresses = await dns.resolve(parsedUrl.hostname);\n        for (const ip of addresses) {\n            if (isPrivateOrReservedIP(ip)) {\n                return new NextResponse('Resolved IP is not allowed', { status: 403 });\n            }\n        }\n    } catch {\n        return new NextResponse('Failed to resolve hostname', { status: 400 });\n    }\n\n    // (4) All checks passed - perform the fetch\n    try {\n        const response = await fetch(parsedUrl.toString());\n        const buffer = await response.arrayBuffer();\n\n        return new NextResponse(buffer, {\n            headers: {\n                'Content-Type': response.headers.get('Content-Type') || 'image/png',\n                'Cache-Control': 'public, max-age=86400',\n            },\n        });\n    } catch {\n        return new NextResponse('Failed to fetch image', { status: 500 });\n    }\n}\n```\n\n---\n\n## CoinGecko API & Rate Limits\n\nThe `useTokens()` hook fetches token prices from CoinGecko. CoinGecko has rate limits that may affect your application:\n\n### Rate Limits (as of 2024)\n\n| Tier              | Rate Limit            | API Key Required |\n| ----------------- | --------------------- | ---------------- |\n| **Free (Public)** | 10-30 requests/minute | No               |\n| **Demo**          | 30 requests/minute    | Yes (free)       |\n| **Analyst**       | 500 requests/minute   | Yes (paid)       |\n| **Pro**           | 1000+ requests/minute | Yes (paid)       |\n\n### Handling Rate Limits\n\nConnectorKit automatically handles rate limits with:\n\n- **Exponential backoff**: Retries with increasing delays\n- **Jitter**: Random delay added to prevent thundering herd\n- **Retry-After header**: Honors server-specified wait times\n- **Bounded timeout**: Won't block forever (default 30s max)\n\n### Adding a CoinGecko API Key\n\nFor higher rate limits, add a free Demo API key from [CoinGecko](https://www.coingecko.com/en/api/pricing):\n\n```typescript\nconst config = getDefaultConfig({\n    appName: 'My App',\n    coingecko: {\n        apiKey: process.env.COINGECKO_API_KEY, // Demo or Pro API key\n        isPro: false, // Set to true for Pro API keys\n    },\n});\n```\n\n### Advanced Configuration\n\n```typescript\nconst config = getDefaultConfig({\n    appName: 'My App',\n    coingecko: {\n        // API key for higher rate limits (optional)\n        apiKey: process.env.COINGECKO_API_KEY,\n\n        // Set to true if using a Pro API key (default: false for Demo keys)\n        isPro: false,\n\n        // Maximum retry attempts on 429 (default: 3)\n        maxRetries: 3,\n\n        // Base delay for exponential backoff in ms (default: 1000)\n        baseDelay: 1000,\n\n        // Maximum total timeout in ms (default: 30000)\n        maxTimeout: 30000,\n    },\n});\n```\n\n### Caching\n\nToken prices are cached for 60 seconds to minimize API calls. The retry logic only applies to uncached token IDs, so frequently-viewed tokens won't trigger additional API calls.\n\n---\n\n## Advanced Usage\n\n### Error Handling with `tryCatch`\n\nConnectorKit exports a `tryCatch` utility for consistent async error handling:\n\n```typescript\nimport { tryCatch } from '@solana/connector/headless';\n\n// Instead of try/catch blocks\nasync function sendTransaction() {\n    const { data: signature, error } = await tryCatch(signer.signAndSendTransaction(transaction));\n\n    if (error) {\n        console.error('Transaction failed:', error.message);\n        return;\n    }\n\n    console.log('Transaction sent:', signature);\n}\n```\n\nThe `tryCatch` utility returns a `Result<T, E>` type that's either a success with `data` or a failure with `error`:\n\n```typescript\ninterface Success<T> {\n    data: T;\n    error: null;\n}\n\ninterface Failure<E> {\n    data: null;\n    error: E;\n}\n```\n\nAlso available: `tryCatchSync` for synchronous operations, and `isSuccess`/`isFailure` type guards.\n\n### Cache Invalidation with Query Keys\n\nFor advanced cache management, ConnectorKit exports query key generators:\n\n```typescript\nimport {\n    getBalanceQueryKey,\n    getTokensQueryKey,\n    getTransactionsQueryKey,\n    invalidateSharedQuery,\n} from '@solana/connector/react';\n\n// After sending a transaction, invalidate relevant caches\nasync function sendAndRefresh() {\n    await sendTransaction();\n\n    // Invalidate balance and tokens (they share the same cache)\n    const balanceKey = getBalanceQueryKey(rpcUrl, address);\n    if (balanceKey) invalidateSharedQuery(balanceKey);\n\n    // Invalidate transactions\n    const txKey = getTransactionsQueryKey({ rpcUrl, address, clusterId });\n    if (txKey) invalidateSharedQuery(txKey);\n}\n```\n\n### Configuration Validation\n\nConfiguration is validated at runtime using Zod schemas. For manual validation:\n\n```typescript\nimport { validateConfigOptions } from '@solana/connector/headless';\n\nconst result = validateConfigOptions({\n    appName: 'My App',\n    network: 'mainnet',\n});\n\nif (!result.success) {\n    console.error('Validation errors:', result.error.issues);\n}\n```\n\n### Headless Client (Vue, Svelte, Vanilla JS)\n\nUse `ConnectorClient` for non-React frameworks:\n\n```typescript\nimport { ConnectorClient, getDefaultConfig, createConnectorId } from '@solana/connector/headless';\n\n// Create client\nconst client = new ConnectorClient(getDefaultConfig({ appName: 'My App' }));\n\n// Get state\nconst state = client.getSnapshot();\nconsole.log('Connectors:', state.connectors);\n\n// Connect (vNext)\nawait client.connectWallet(createConnectorId('Phantom'));\n\n// Subscribe to changes\nconst unsubscribe = client.subscribe(state => {\n    console.log('State updated:', state);\n});\n\n// Disconnect (vNext)\nawait client.disconnectWallet();\n\n// Cleanup\nunsubscribe();\nclient.destroy();\n```\n\n### Custom Storage (React Native, SSR)\n\nStorage uses nanostores with built-in enhancements that are **automatically applied**:\n\n- Validation (Solana address format checking)\n- Error handling (catches localStorage quota errors, private browsing)\n- SSR fallback (uses memory storage when localStorage unavailable)\n\n**Most users don't need to configure storage.** Only customize for:\n\n- Additional validation rules\n- Custom error tracking\n\n**`storage.wallet` is the auto-connect source when supplied.** The wallet plugin persists the active connection as `<wallet name>:<account address>` through `storage.wallet` when one is configured (the default config always supplies one), and silent reconnect reads it back from there; without an adapter it falls back to the `connector-kit:v1:kit-wallet` localStorage key. Values persisted by pre-plugin releases (a bare wallet name) are preserved untouched until the next connect overwrites them in the new format — they are not used for reconnection.\n\n```typescript\nimport { getDefaultConfig, createEnhancedStorageWallet, EnhancedStorageAdapter } from '@solana/connector';\n\nconst config = getDefaultConfig({\n    appName: 'My App',\n    storage: {\n        wallet: new EnhancedStorageAdapter(\n            createEnhancedStorageWallet({\n                validator: walletName => {\n                    // Custom validation\n                    return walletName !== null && walletName.length > 0;\n                },\n                onError: error => {\n                    // Custom error tracking\n                    Sentry.captureException(error);\n                },\n            }),\n        ),\n    },\n});\n```\n\n---\n\n## Package Exports\n\n### Main Export\n\n```typescript\n// Full library - includes React and headless\nimport { AppProvider, useConnector, getDefaultConfig } from '@solana/connector';\n```\n\n### Headless Export (Framework Agnostic)\n\n```typescript\n// Headless core only - no React\nimport { ConnectorClient, getDefaultConfig } from '@solana/connector/headless';\n```\n\n### React Export\n\n```typescript\n// React-specific exports only\nimport { AppProvider, useConnector, useWallet, useConnectWallet } from '@solana/connector/react';\n```\n\n### Kit Export\n\nThe connector's internals run on `@solana/kit`'s plugin client. This entrypoint re-exports that surface for apps adopting the kit-native pattern directly:\n\n```typescript\n// Kit plugin client, @solana/react hooks, and the kit RPC/wallet plugins\nimport { createClient, walletSigner, solanaDevnetRpc, ClientProvider, useWallets } from '@solana/connector/kit';\n\nconst client = createClient()\n    .use(walletSigner({ chain: 'solana:devnet' }))\n    .use(solanaDevnetRpc());\n```\n\n#### Client capability hooks\n\nEach plugin in the chain installs a capability on the client, and `@solana/react` ships a hook per capability. The client above installs all of the following:\n\n| Hook                          | Installed by      | Returns                                          |\n| ----------------------------- | ----------------- | ------------------------------------------------ |\n| `usePayer(client)`            | `walletSigner`    | `client.payer` signer, or `undefined`            |\n| `useIdentity(client)`         | `walletSigner`    | `client.identity` signer, or `undefined`         |\n| `useAirdrop(client)`          | `solanaDevnetRpc` | Action → `Signature \\| undefined`                |\n| `usePlanTransaction(client)`  | `solanaDevnetRpc` | Action → planned transaction message             |\n| `usePlanTransactions(client)` | `solanaDevnetRpc` | Action → `TransactionPlan`                       |\n| `useSendTransaction(client)`  | `solanaDevnetRpc` | Action → `SuccessfulSingleTransactionPlanResult` |\n| `useSendTransactions(client)` | `solanaDevnetRpc` | Action → `TransactionPlanResult`                 |\n\n`usePayer`/`useIdentity` re-render when the signer changes, because `walletSigner` also installs `subscribeToPayer`/`subscribeToIdentity`. The action hooks return `{ dispatch, dispatchAsync, isRunning, data, error }`; each `dispatch` runs under a fresh `AbortSignal` and aborts any call still in flight.\n\n```tsx\nimport { usePayer, useSendTransaction } from '@solana/connector/kit';\n\nfunction Transfer() {\n    const payer = usePayer(client);\n    const { dispatch, isRunning, error } = useSendTransaction(client);\n\n    if (!payer) return <p>Connect a wallet</p>;\n    return (\n        <>\n            <button disabled={isRunning} onClick={() => dispatch([transferInstruction])}>\n                {isRunning ? 'Sending…' : 'Send'}\n            </button>\n            {error ? <p role=\"alert\">{String(error)}</p> : null}\n        </>\n    );\n}\n```\n\nThe wallet store's `useSignIn`/`useSignMessage` are not re-exported (they collide with `@solana/react`'s account-based hooks of the same name) — import those from `@solana/kit-plugin-wallet/react` directly.\n\n### Other Exports\n\n| Import                     | Purpose                                           |\n| -------------------------- | ------------------------------------------------- |\n| `@solana/connector/compat` | Bridge for existing `@solana/wallet-adapter` code |\n| `@solana/connector/remote` | Browser-side remote wallet adapter                |\n| `@solana/connector/server` | Server-side route handlers for remote signing     |\n\n---\n\n## API Reference\n\n### Hooks\n\n#### vNext Hooks (Recommended)\n\n| Hook                       | Description                         | Returns                                                                                     |\n| -------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------- |\n| `useWallet()`              | Wallet status state machine         | `{ status, isConnected, isConnecting, account, accounts, error }`                           |\n| `useWalletConnectors()`    | Available wallet connectors         | `WalletConnectorMetadata[]`                                                                 |\n| `useConnectWallet()`       | Connect by connector ID             | `{ connect, isConnecting, error, resetError }`                                              |\n| `useDisconnectWallet()`    | Disconnect current wallet           | `{ disconnect, isDisconnecting }`                                                           |\n| `useSignOffchainMessage()` | Off-chain message signing (sRFC 38) | `{ signOffchainMessage, canSignOffchainMessage, supportedMessageVersions, ready, address }` |\n\n#### Legacy Hooks\n\n| Hook                        | Description                                  | Returns                                                          |\n| --------------------------- | -------------------------------------------- | ---------------------------------------------------------------- |\n| `useConnector()`            | Main wallet connection hook (vNext + legacy) | `ConnectorSnapshot`                                              |\n| `useAccount()`              | Account management hook                      | `{ address, formatted, copy, copied, accounts, selectAccount }`  |\n| `useCluster()`              | Network/cluster management hook              | `{ cluster, clusters, setCluster, isMainnet, isDevnet, rpcUrl }` |\n| `useWalletInfo()`           | Wallet metadata hook                         | `{ name, icon, wallet, connecting }`                             |\n| `useTransactionSigner()`    | Legacy transaction signer (web3.js)          | `{ signer, ready, address, capabilities }`                       |\n| `useKitTransactionSigner()` | Modern transaction signer (@solana/kit)      | `{ signer, ready }`                                              |\n| `useBalance()`              | SOL balance hook                             | `{ solBalance, isLoading, refetch }`                             |\n| `useTokens()`               | SPL tokens hook                              | `{ tokens, isLoading, refetch }`                                 |\n| `useTransactions()`         | Transaction history hook                     | `{ transactions, isLoading, refetch }`                           |\n\nWith `autoRefresh` (the default), `useBalance()` and `useTokens()` receive live updates via an `accountNotifications` WebSocket subscription; interval polling (`refreshInterval`, default 30s) is kept as an automatic fallback when the subscription errors or WebSocket transport is unavailable.\n\n### Configuration Functions\n\n| Function                          | Description                                |\n| --------------------------------- | ------------------------------------------ |\n| `getDefaultConfig(options)`       | Create default connector configuration     |\n| `getDefaultMobileConfig(options)` | Create mobile wallet adapter configuration |\n\n### Utility Functions\n\n| Function                                | Description                         |\n| --------------------------------------- | ----------------------------------- |\n| `formatAddress(address, options?)`      | Format Solana address               |\n| `formatSOL(lamports, options?)`         | Format SOL amount                   |\n| `copyAddressToClipboard(address)`       | Copy address to clipboard           |\n| `getTransactionUrl(cluster, signature)` | Get Solana Explorer transaction URL |\n| `getAddressUrl(cluster, address)`       | Get Solana Explorer address URL     |\n\n---\n\n## Types\n\n```typescript\nimport type {\n    // Configuration\n    ConnectorConfig,\n    WalletDisplayConfig,\n    DefaultConfigOptions,\n    ExtendedConnectorConfig,\n\n    // State & Info\n    ConnectorState,\n    ConnectorSnapshot,\n    WalletInfo,\n    AccountInfo,\n\n    // Wallet Standard\n    Wallet,\n    WalletAccount,\n\n    // Clusters\n    SolanaCluster,\n    SolanaClusterId,\n\n    // vNext Session Types\n    WalletConnectorId,\n    WalletConnectorMetadata,\n    WalletSession,\n    WalletStatus,\n    SessionAccount,\n    ConnectOptions,\n\n    // Hook Returns\n    UseClusterReturn,\n    UseAccountReturn,\n    UseWalletInfoReturn,\n    UseTransactionSignerReturn,\n    UseKitTransactionSignerReturn,\n} from '@solana/connector';\n```\n\n---\n\n## Development\n\n### Commands\n\n```bash\n# Install dependencies\npnpm install\n\n# Build package\npnpm build\n\n# Development mode with watch\npnpm dev\n\n# Type checking\npnpm type-check\n\n# Linting\npnpm lint\n\n# Run tests\npnpm test\n\n# Test in watch mode\npnpm test:watch\n\n# Coverage report\npnpm test:coverage\n\n# Check bundle size\npnpm size\n```\n\n---\n\n## Examples\n\nCheck out the [examples directory](../../examples/next-js) for complete working examples:\n\n- **Next.js Example** - Full-featured wallet connection UI with shadcn/ui\n- **Transaction Signing** - Modern and legacy transaction examples\n- **Network Switching** - Cluster/network management\n- **Account Management** - Multi-account support\n- **Mobile Support** - Solana Mobile Wallet Adapter\n\n---\n\n## Supported Wallets\n\nCompatible with all [Wallet Standard](https://github.com/wallet-standard/wallet-standard) compliant wallets:\n\n- **Phantom** - Browser extension and mobile\n- **Solflare** - Browser extension and mobile\n- **Backpack** - xNFT and wallet\n- **Glow** - Browser extension\n- **Brave Wallet** - Built-in browser wallet\n- **Solana Mobile** - All mobile wallet adapter compatible wallets\n- **WalletConnect** - Connect any WalletConnect-compatible mobile wallet via QR code\n- **Any Wallet Standard wallet** - Full compatibility\n\n---\n\n## License\n\nMIT\n","readmeFilename":"README.md"}