{"_id":"@bootnodedev/canton-connect","_rev":"7-31f5c481b841b157eedf713fc8386f7f","name":"@bootnodedev/canton-connect","dist-tags":{"latest":"0.5.3"},"versions":{"0.3.0":{"name":"@bootnodedev/canton-connect","version":"0.3.0","license":"MIT","_id":"@bootnodedev/canton-connect@0.3.0","maintainers":[{"name":"pablofullana","email":"pablofullana@gmail.com"},{"name":"luchobonatti.bn","email":"luciano@bootnode.dev"},{"name":"gabitoesmiapodo","email":"exepotes@gmail.com"},{"name":"fernandomg","email":"fernando.greco@gmail.com"},{"name":"lmcorbalan","email":"lmcorbalan@gmail.com"},{"name":"nico_bn","email":"nicolas@bootnode.dev"},{"name":"fzavalia","email":"zavaliafernando+npmjs@gmail.com"}],"dist":{"shasum":"b4a1d3a378bf6213a909ee2edc83e360db9b55ae","tarball":"https://registry.npmjs.org/@bootnodedev/canton-connect/-/canton-connect-0.3.0.tgz","fileCount":9,"integrity":"sha512-If3wxqOTOzOhqj7UhEZ/Q2aGCDf+l+KsqHEIXpYBlda1Wo72ez9/YThDv1d/GN+NkrJPl73fx585PD067bCx3Q==","signatures":[{"sig":"MEUCICuSogIvjzaNddNn0o7uTmJWqqVCWeiNajIBGjAnIkzPAiEAqEZUK8E9aB5FANWhEyB8TqE1XYX8UIUjdCBg8VdWXwc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92185},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=24.15.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"imports":{"#src/*":{"types":["./src/*.ts","./src/*.tsx","./src/*/index.ts","./src/*/index.tsx"],"default":"./src/*"}},"private":false,"scripts":{"lint":"biome check","test":"vitest run","build":"tsdown","format":"biome format --write","coverage":"vitest run --coverage","lint:fix":"biome check --write","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"gabitoesmiapodo","email":"exepotes@gmail.com"},"description":"wagmi-style React hooks for connecting Canton dApps to CIP-0103 wallets","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"xstate":"^5.32.5","@xstate/react":"^6.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","jsdom":"^30.0.0","react":"^19.2.8","tsdown":"^0.22.14","vitest":"^4.1.10","react-dom":"^19.2.8","typescript":"^5.9.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^4.1.11","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^6.0.4","@walletconnect/types":"^2.23.9","@testing-library/react":"^16.3.2","@canton-network/dapp-sdk":"1.5.1","@testing-library/jest-dom":"^7.0.0","@canton-network/core-types":"1.10.0","@walletconnect/sign-client":"^2.23.9"},"peerDependencies":{"react":"^19.0.0","@canton-network/dapp-sdk":"^1.4.0","@canton-network/core-types":"^1.8.0","@walletconnect/sign-client":"^2.23.9"},"peerDependenciesMeta":{"@walletconnect/sign-client":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/canton-connect_0.3.0_1789063794126_0.9264539617814804","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@bootnodedev/canton-connect","version":"0.3.1","license":"MIT","_id":"@bootnodedev/canton-connect@0.3.1","maintainers":[{"name":"pablofullana","email":"pablofullana@gmail.com"},{"name":"luchobonatti.bn","email":"luciano@bootnode.dev"},{"name":"gabitoesmiapodo","email":"exepotes@gmail.com"},{"name":"fernandomg","email":"fernando.greco@gmail.com"},{"name":"lmcorbalan","email":"lmcorbalan@gmail.com"},{"name":"nico_bn","email":"nicolas@bootnode.dev"},{"name":"fzavalia","email":"zavaliafernando+npmjs@gmail.com"}],"dist":{"shasum":"ad38b1747a543f8644e42e04c7195f295a7d3c65","tarball":"https://registry.npmjs.org/@bootnodedev/canton-connect/-/canton-connect-0.3.1.tgz","fileCount":9,"integrity":"sha512-blCsoZym4aumPLxfFKwXKn4xniGxP5/MPNBpPfQ+WhTreCYUzUFjbEOLRt3InZM733nVp4Ck/hF9pciZbwb1LQ==","signatures":[{"sig":"MEUCIQDwpKyuyoblIecsV/iqdA312ruhGwUegtupc4QBvhelggIgEmu5olbkMHNYKjC+L+BAVWdrkALaPjXkmMQwioEF45Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bootnodedev%2fcanton-connect@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":93733},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=24.15.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"imports":{"#src/*":{"types":["./src/*.ts","./src/*.tsx","./src/*/index.ts","./src/*/index.tsx"],"default":"./src/*"}},"private":false,"scripts":{"lint":"biome check","test":"vitest run","build":"tsdown","format":"biome format --write","coverage":"vitest run --coverage","lint:fix":"biome check --write","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4395b24e-0758-4337-9dbc-2b94cc944a52"}},"repository":{"url":"git+https://github.com/BootNodeDev/canton-dappbooster.git","type":"git","directory":"canton-connect"},"description":"wagmi-style React hooks for connecting Canton dApps to CIP-0103 wallets","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"xstate":"^5.32.5","@xstate/react":"^6.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","jsdom":"^30.0.0","react":"^19.2.8","tsdown":"^0.22.14","vitest":"^4.1.10","react-dom":"^19.2.8","typescript":"^5.9.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^4.1.11","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^6.0.4","@walletconnect/types":"^2.23.9","@testing-library/react":"^16.3.2","@canton-network/dapp-sdk":"1.5.1","@testing-library/jest-dom":"^7.0.0","@canton-network/core-types":"1.10.0","@walletconnect/sign-client":"^2.23.9"},"peerDependencies":{"react":"^19.0.0","@canton-network/dapp-sdk":"^1.4.0","@canton-network/core-types":"^1.8.0","@walletconnect/sign-client":"^2.23.9"},"_npmOperationalInternal":{"tmp":"tmp/canton-connect_0.3.1_1789071403118_0.9410715650472863","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@bootnodedev/canton-connect","version":"0.4.0","license":"MIT","_id":"@bootnodedev/canton-connect@0.4.0","maintainers":[{"name":"pablofullana","email":"pablofullana@gmail.com"},{"name":"luchobonatti.bn","email":"luciano@bootnode.dev"},{"name":"gabitoesmiapodo","email":"exepotes@gmail.com"},{"name":"fernandomg","email":"fernando.greco@gmail.com"},{"name":"lmcorbalan","email":"lmcorbalan@gmail.com"},{"name":"nico_bn","email":"nicolas@bootnode.dev"},{"name":"fzavalia","email":"zavaliafernando+npmjs@gmail.com"}],"dist":{"shasum":"be41b06b0f91b15b481fc69127fe1847af0f5c99","tarball":"https://registry.npmjs.org/@bootnodedev/canton-connect/-/canton-connect-0.4.0.tgz","fileCount":9,"integrity":"sha512-RH3rlQasbVdyhw6aXPIl235lpHOqmQtoOfl+nkmRHiVjUfeWjBN40F2pDyeJRi4Rw6Y8UXFgX6GrxAhZc6EAow==","signatures":[{"sig":"MEYCIQDH2jWtOtPu/LUtLKACE3GwS3XAnyAZ0S0S4O7PdJTb1wIhAMFtjPYSOA7Vb5TecXfG5TdEGwWsq9CbknBAWaJNgHeB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bootnodedev%2fcanton-connect@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":93557},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=24.15.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"imports":{"#src/*":{"types":["./src/*.ts","./src/*.tsx","./src/*/index.ts","./src/*/index.tsx"],"default":"./src/*"}},"private":false,"scripts":{"lint":"biome check","test":"vitest run","build":"tsdown","format":"biome format --write","coverage":"vitest run --coverage","lint:fix":"biome check --write","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4395b24e-0758-4337-9dbc-2b94cc944a52"}},"repository":{"url":"git+https://github.com/BootNodeDev/canton-dappbooster.git","type":"git","directory":"canton-connect"},"description":"wagmi-style React hooks for connecting Canton dApps to CIP-0103 wallets","directories":{},"sideEffects":false,"dependencies":{"xstate":"^5.32.5","@xstate/react":"^6.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","jsdom":"^30.0.0","react":"^19.2.8","tsdown":"^0.23.0","vitest":"^5.0.0","react-dom":"^19.2.8","typescript":"^5.9.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^5.0.0","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^6.0.4","@walletconnect/types":"^2.23.9","@testing-library/react":"^16.3.2","@canton-network/dapp-sdk":"1.5.1","@testing-library/jest-dom":"^7.0.0","@canton-network/core-types":"1.10.0","@walletconnect/sign-client":"^2.23.9"},"peerDependencies":{"react":"^19.0.0","@canton-network/dapp-sdk":"^1.4.0","@canton-network/core-types":"^1.8.0","@walletconnect/sign-client":"^2.23.9"},"_npmOperationalInternal":{"tmp":"tmp/canton-connect_0.4.0_1789483509091_0.002350376019248479","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@bootnodedev/canton-connect","version":"0.5.0","license":"MIT","_id":"@bootnodedev/canton-connect@0.5.0","maintainers":[{"name":"pablofullana","email":"pablofullana@gmail.com"},{"name":"luchobonatti.bn","email":"luciano@bootnode.dev"},{"name":"gabitoesmiapodo","email":"exepotes@gmail.com"},{"name":"fernandomg","email":"fernando.greco@gmail.com"},{"name":"lmcorbalan","email":"lmcorbalan@gmail.com"},{"name":"nico_bn","email":"nicolas@bootnode.dev"},{"name":"fzavalia","email":"zavaliafernando+npmjs@gmail.com"}],"dist":{"shasum":"36317eb0966771a85c46aad182a65ff205f25d9c","tarball":"https://registry.npmjs.org/@bootnodedev/canton-connect/-/canton-connect-0.5.0.tgz","fileCount":9,"integrity":"sha512-cQOEV7FitJMscshY97VO9P+ZGn9WcEHjf5xeomF2rAj3dVZiH3Eg4Usmsrm/E5bVWJ/dlFqt0QXQFTlMjx9siQ==","signatures":[{"sig":"MEUCIGFz99SAucADAGPcmiE7zW/1NRy4kx19zz4sw9vC3JNLAiEA4m3oLHWaZIRzCTUIFyQnAvT7U9KnwAjEPtqyrAd7rxw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEJjETxBrXJmBGUQf7XWcvRxjqBsZmeKZh7cJCIutI4wAiEAkRh1xo9D9FDmW1ZM1XEpypbi2E8CLk/hJGhlXtGSPQo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bootnodedev%2fcanton-connect@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":92753},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=24.15.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"imports":{"#src/*":{"types":["./src/*.ts","./src/*.tsx","./src/*/index.ts","./src/*/index.tsx"],"default":"./src/*"}},"private":false,"scripts":{"lint":"biome check","test":"vitest run","build":"tsdown","format":"biome format --write","coverage":"vitest run --coverage","lint:fix":"biome check --write","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4395b24e-0758-4337-9dbc-2b94cc944a52"}},"repository":{"url":"git+https://github.com/BootNodeDev/canton-dappbooster.git","type":"git","directory":"canton-connect"},"description":"wagmi-style React hooks for connecting Canton dApps to CIP-0103 wallets","directories":{},"sideEffects":false,"dependencies":{"xstate":"^5.32.5","@xstate/react":"^6.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","jsdom":"^30.0.0","react":"^19.2.8","tsdown":"^0.23.0","vitest":"^5.0.0","react-dom":"^19.2.8","typescript":"^5.9.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^5.0.0","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^6.0.4","@walletconnect/types":"^2.23.9","@testing-library/react":"^16.3.2","@canton-network/dapp-sdk":"1.5.1","@testing-library/jest-dom":"^7.0.0","@canton-network/core-types":"1.10.0","@walletconnect/sign-client":"^2.23.9"},"peerDependencies":{"react":"^19.0.0","@canton-network/dapp-sdk":"^1.4.0","@canton-network/core-types":"^1.8.0","@walletconnect/sign-client":"^2.23.9"},"_npmOperationalInternal":{"tmp":"tmp/canton-connect_0.5.0_1790025369764_0.3687220792852708","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@bootnodedev/canton-connect","version":"0.5.1","license":"MIT","_id":"@bootnodedev/canton-connect@0.5.1","maintainers":[{"name":"pablofullana","email":"pablofullana@gmail.com"},{"name":"luchobonatti.bn","email":"luciano@bootnode.dev"},{"name":"gabitoesmiapodo","email":"exepotes@gmail.com"},{"name":"fernandomg","email":"fernando.greco@gmail.com"},{"name":"lmcorbalan","email":"lmcorbalan@gmail.com"},{"name":"nico_bn","email":"nicolas@bootnode.dev"},{"name":"fzavalia","email":"zavaliafernando+npmjs@gmail.com"}],"dist":{"shasum":"302dca4a0e575ec679171081d5bbd4e247414578","tarball":"https://registry.npmjs.org/@bootnodedev/canton-connect/-/canton-connect-0.5.1.tgz","fileCount":9,"integrity":"sha512-b0/vq+sgN8NxphlesU3eR7fSAeIpNpzzfcKbVA0czWcwzeIW4P/PeB5KXuIPCy4tW5AaKk0u918wkF2bz/3bfg==","signatures":[{"sig":"MEUCIHgceo5mQve8W8pabT2u19WPkxw9c7jroPGsWBVL7VYLAiEAwg+SB0eH2nxr3s/ZyYATV/ysJSVBmtln8GhTOPHVaLo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIB+iSanEHH8YgIHTd7RgKyCwOjm9naDTSbv0cJ3yicKeAiEApWbgcBFgjH4tT8SOhGuKBwrwOSb2gF626Z7Kzqw7dIc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bootnodedev%2fcanton-connect@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":92753},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=24.15.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"imports":{"#src/*":{"types":["./src/*.ts","./src/*.tsx","./src/*/index.ts","./src/*/index.tsx"],"default":"./src/*"}},"private":false,"scripts":{"lint":"biome check","test":"vitest run","build":"tsdown","format":"biome format --write","coverage":"vitest run --coverage","lint:fix":"biome check --write","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4395b24e-0758-4337-9dbc-2b94cc944a52"}},"repository":{"url":"git+https://github.com/BootNodeDev/canton-dappbooster.git","type":"git","directory":"canton-connect"},"description":"wagmi-style React hooks for connecting Canton dApps to CIP-0103 wallets","directories":{},"sideEffects":false,"dependencies":{"xstate":"^5.32.5","@xstate/react":"^6.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","jsdom":"^30.0.0","react":"^19.2.8","tsdown":"^0.23.0","vitest":"^5.0.0","react-dom":"^19.2.8","typescript":"^5.9.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^5.0.0","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^6.0.4","@walletconnect/types":"^2.23.9","@testing-library/react":"^16.3.2","@canton-network/dapp-sdk":"1.5.1","@testing-library/jest-dom":"^7.0.0","@canton-network/core-types":"1.10.0","@walletconnect/sign-client":"^2.23.9"},"peerDependencies":{"react":"^19.0.0","@canton-network/dapp-sdk":"^1.4.0","@canton-network/core-types":"^1.8.0","@walletconnect/sign-client":"^2.23.9"},"_npmOperationalInternal":{"tmp":"tmp/canton-connect_0.5.1_1790105298552_0.3837659099318105","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@bootnodedev/canton-connect","version":"0.5.2","license":"MIT","_id":"@bootnodedev/canton-connect@0.5.2","maintainers":[{"name":"pablofullana","email":"pablofullana@gmail.com"},{"name":"luchobonatti.bn","email":"luciano@bootnode.dev"},{"name":"gabitoesmiapodo","email":"exepotes@gmail.com"},{"name":"fernandomg","email":"fernando.greco@gmail.com"},{"name":"lmcorbalan","email":"lmcorbalan@gmail.com"},{"name":"nico_bn","email":"nicolas@bootnode.dev"},{"name":"fzavalia","email":"zavaliafernando+npmjs@gmail.com"}],"dist":{"shasum":"283d9196ce883a4e0cbf1f707811b437702ba65b","tarball":"https://registry.npmjs.org/@bootnodedev/canton-connect/-/canton-connect-0.5.2.tgz","fileCount":9,"integrity":"sha512-HPWDRJ2jIU9XHeOfgfDhlQMv4sSrGWoWznrF9YXp31zlIe2G6zPnbdrxbCIL2+hOv83N3EIR3Rm9J608BBHUnw==","signatures":[{"sig":"MEYCIQC01Zmo0AbHvqo0uX9zW10HF+UBayhT3r9rfvL/LculgAIhAP3ZxeqR9NMQ4Zg7UaeNNO6EtQq/sgNUIKPVVVd3fDb+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICz3Gaa9HQ5ArNvz38U7xVGnIcjyJSLEnfJH32gcGq5OAiEAvrFo5NwflR+ONIFQDMZdzVbaVAM6hqFTE4Jchc6RQcM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bootnodedev%2fcanton-connect@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":92753},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=24.15.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"imports":{"#src/*":{"types":["./src/*.ts","./src/*.tsx","./src/*/index.ts","./src/*/index.tsx"],"default":"./src/*"}},"private":false,"scripts":{"lint":"biome check","test":"vitest run","build":"tsdown","format":"biome format --write","coverage":"vitest run --coverage","lint:fix":"biome check --write","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4395b24e-0758-4337-9dbc-2b94cc944a52"}},"repository":{"url":"git+https://github.com/BootNodeDev/canton-dappbooster.git","type":"git","directory":"canton-connect"},"description":"wagmi-style React hooks for connecting Canton dApps to CIP-0103 wallets","directories":{},"sideEffects":false,"dependencies":{"xstate":"^5.32.5","@xstate/react":"^6.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","jsdom":"^30.0.0","react":"^19.2.8","tsdown":"^0.23.0","vitest":"^5.0.0","react-dom":"^19.2.8","typescript":"^5.9.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^5.0.0","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^6.0.4","@walletconnect/types":"^2.23.9","@testing-library/react":"^16.3.2","@canton-network/dapp-sdk":"1.5.1","@testing-library/jest-dom":"^7.0.0","@canton-network/core-types":"1.10.0","@walletconnect/sign-client":"^2.23.9"},"peerDependencies":{"react":"^19.0.0","@canton-network/dapp-sdk":"^1.4.0","@canton-network/core-types":"^1.8.0","@walletconnect/sign-client":"^2.23.9"},"_npmOperationalInternal":{"tmp":"tmp/canton-connect_0.5.2_1790270250050_0.009193400425983045","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"_id":"@bootnodedev/canton-connect@0.5.3","dist":{"shasum":"83ad8bc6df9e6d611e1b8b6da7f4a82c1608e719","tarball":"https://registry.npmjs.org/@bootnodedev/canton-connect/-/canton-connect-0.5.3.tgz","fileCount":9,"integrity":"sha512-VvsLr4S89ObervyvReWW77j7LXFikYyQOgFryo36p/C1jYixl+MyJkHNGMHFbHr3fOlLI5k1i+dcI7X75H79HA==","signatures":[{"sig":"MEQCIAFrai5qEpeSXLaci2lbtjWjk1mk0g+7FFIvjVd19cKLAiA/K+cMrnW57WL8c9CroHWNJomCOiAjU7PMUPYx7m1Zig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEVmMBdvbnY5mGy1Pik/OAW5fqLqyI+et2J+plyXTEHpAiBWdr4AU7Thw82GrPfs0ZhtzIN66nZpIGOze9N7GlUE3Q=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bootnodedev%2fcanton-connect@0.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":92753},"name":"@bootnodedev/canton-connect","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=24.15.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./testing":{"types":"./dist/testing/index.d.ts","import":"./dist/testing/index.js"}},"imports":{"#src/*":{"types":["./src/*.ts","./src/*.tsx","./src/*/index.ts","./src/*/index.tsx"],"default":"./src/*"}},"license":"MIT","private":false,"scripts":{"lint":"biome check","test":"vitest run","build":"tsdown","format":"biome format --write","coverage":"vitest run --coverage","lint:fix":"biome check --write","typecheck":"tsc --noEmit","test:watch":"vitest"},"version":"0.5.3","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"4395b24e-0758-4337-9dbc-2b94cc944a52"}},"repository":{"url":"git+https://github.com/BootNodeDev/canton-dappbooster.git","type":"git","directory":"canton-connect"},"description":"wagmi-style React hooks for connecting Canton dApps to CIP-0103 wallets","directories":{},"maintainers":[{"name":"pablofullana","email":"pablofullana@gmail.com"},{"name":"luchobonatti.bn","email":"luciano@bootnode.dev"},{"name":"gabitoesmiapodo","email":"exepotes@gmail.com"},{"name":"fernandomg","email":"fernando.greco@gmail.com"},{"name":"lmcorbalan","email":"lmcorbalan@gmail.com"},{"name":"nico_bn","email":"nicolas@bootnode.dev"},{"name":"fzavalia","email":"zavaliafernando+npmjs@gmail.com"}],"sideEffects":false,"dependencies":{"xstate":"^5.32.5","@xstate/react":"^6.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","jsdom":"^30.0.0","react":"^19.2.8","tsdown":"^0.23.0","vitest":"^5.0.0","react-dom":"^19.2.8","typescript":"^5.9.3","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","@vitest/coverage-v8":"^5.0.0","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^6.0.4","@walletconnect/types":"^2.23.9","@testing-library/react":"^16.3.2","@canton-network/dapp-sdk":"1.5.1","@testing-library/jest-dom":"^7.0.0","@canton-network/core-types":"1.10.0","@walletconnect/sign-client":"^2.23.9"},"peerDependencies":{"react":"^19.0.0","@canton-network/dapp-sdk":"^1.4.0","@canton-network/core-types":"^1.8.0","@walletconnect/sign-client":"^2.23.9"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/canton-connect_0.5.3_1790789469781_0.7714264250842979"}}},"time":{"created":"2026-09-10T18:09:53.928Z","modified":"2026-09-30T17:31:10.341Z","0.3.0":"2026-09-10T18:09:54.280Z","0.3.1":"2026-09-10T20:16:43.267Z","0.4.0":"2026-09-15T14:45:09.235Z","0.5.0":"2026-09-21T21:16:09.868Z","0.5.1":"2026-09-22T19:28:18.649Z","0.5.2":"2026-09-24T17:17:30.179Z","0.5.3":"2026-09-30T17:31:09.863Z"},"license":"MIT","repository":{"url":"git+https://github.com/BootNodeDev/canton-dappbooster.git","type":"git","directory":"canton-connect"},"description":"wagmi-style React hooks for connecting Canton dApps to CIP-0103 wallets","maintainers":[{"name":"pablofullana","email":"pablofullana@gmail.com"},{"name":"luchobonatti.bn","email":"luciano@bootnode.dev"},{"name":"gabitoesmiapodo","email":"exepotes@gmail.com"},{"name":"fernandomg","email":"fernando.greco@gmail.com"},{"name":"lmcorbalan","email":"lmcorbalan@gmail.com"},{"name":"nico_bn","email":"nicolas@bootnode.dev"},{"name":"fzavalia","email":"zavaliafernando+npmjs@gmail.com"}],"readme":"# canton-connect\n\nwagmi-style React hooks for connecting Canton dApps to CIP-0103 wallets, over\n`@canton-network/dapp-sdk`'s `DappSDK` facade.\n\n## Why\n\n`dapp-sdk` handles wallet discovery, the connect picker, the session and every transport (browser\nextension, WalletConnect, remote gateway), but ships no React hooks. This package adds that layer.\nA consumer never calls the SDK: it installs it as a peer, and the hooks take the SDK's own parameter\ntypes.\n\n[`@partylayer/react`](https://partylayer.xyz) is the alternative, built over its own wallet\nadapters. This one wraps Digital Asset's official SDK, the dependency these dApps already carry, and\nstays thin enough to delete. How the hook results relate to wagmi's is in\n[coming-from-wagmi.md](https://github.com/BootNodeDev/canton-dappbooster/blob/main/canton-connect/coming-from-wagmi.md).\n\n## Why a state machine\n\nThe connection lifecycle looks like four states (idle, connecting, connected,\ndisconnected) and isn't. The hard part isn't holding state, it's canceling work\nwhen the state that started it is gone: a picker the user abandoned, a lock\nthat races the account read, a connect asked for mid-disconnect, a wallet that\nanswers late or never. Handled one at a time these were five separate races\n(#76). A state machine folds them into one model: a state's invoked work is\ncanceled when the state is left, and the combinations that used to be bugs\n(connected with no party, an error beside a live session) are states that name\ntheir case: `session.unauthenticated`, `session.authenticated.unavailable`.\n\nMost of that weight works around `@canton-network/dapp-sdk` gaps, not domain\ncomplexity (below). When those close upstream, this layer collapses to its floor\n(idle-vs-disconnected, the account-read states, the CIP-0103 lock/disconnect\nambiguity), small enough that a lighter store wins on bundle size. A spike\nreimplementing it on zustand confirmed this: full behavioral parity, but the win\nis bundle size and one fewer dependency, not less logic, and it points to\nswitching only once those gaps close. Until then, the machine earns its cost.\n\n| dapp-sdk gap | what it costs us | gone when |\n|---|---|---|\n| `connect()` can't be aborted; a closed popup hangs it (#49) | `guardedConnect`, `settleAbandonedConnect`, `PickerClosedError`, the `retiring` state, `retireSdk`'s picker swap | `connect(signal)` truly aborts |\n| `init()` caches a rejected promise forever | `retireSdk`, the `retiring` state, `InitFailedError` | `init()` retries after a failure |\n| `disconnect()` has no timeout (#105) | `DISCONNECT_TIMEOUT_MS`, and `retireSdk` when it fires | `disconnect()` times out itself |\n| lock and wallet-side disconnect are one push | `session.unauthenticated`, party-dropped-on-lock | CIP-0103 separates them (spec, not SDK) |\n\n## Status\n\nPublished to npm as `@bootnodedev/canton-connect`. Also consumed by `dapp/frontend` in this repo,\nwhich links the local folder while its version satisfies the declared range.\n\n## Install\n\nPeers a consumer installs beside it: `@canton-network/dapp-sdk`, `@canton-network/core-types`,\n`react` 19 and `@walletconnect/sign-client`. The last is required here, though `dapp-sdk` marks it\noptional: `dapp-sdk` imports it statically at the top of its bundle (checked on 1.5.1), so it has to\nbe present whether or not you set `walletConnectProjectId`. Only the session is lazy:\n`SignClient.init()` runs when a pairing starts, not at import.\n\n## Usage\n\n```tsx\nimport {\n  CantonConnectProvider,\n  useConnect,\n  useAccount,\n  useWalletStatus,\n  useSignMessage,\n  useExecute,\n  useLedger,\n} from '@bootnodedev/canton-connect'\n\nfunction App() {\n  return (\n    <CantonConnectProvider config={{ appName: 'My dApp', networkId: 'canton:local' }}>\n      <Dapp />\n    </CantonConnectProvider>\n  )\n}\n\nfunction Dapp() {\n  const { connect, isPending, isConnected, error } = useConnect()\n  const { account } = useAccount()\n  const { isLocked } = useWalletStatus()\n  const { signMessage } = useSignMessage()\n  const { execute } = useExecute()\n  const { ledgerApi } = useLedger()\n\n  if (!isConnected) {\n    return (\n      <div>\n        <button onClick={() => connect().catch(() => undefined)} disabled={isPending}>\n          Connect\n        </button>\n        {error !== undefined && <p>{error.message}</p>}\n      </div>\n    )\n  }\n\n  if (isLocked) {\n    return <p>Wallet locked. Unlock it to continue.</p>\n  }\n\n  // ... your dApp: account.partyId, signMessage(text), execute(params), ledgerApi(params)\n}\n```\n\n`connect()` opens the SDK's wallet picker, a popup by default. There is no mode argument: the picker\nis what chooses the wallet. Dismissing it rejects with `ConnectCancelledError`, which you filter by\n`instanceof`, never by message. Whether `error` records it as well depends on which side saw\nthe close, so do not gate on that.\n\n`signMessage`, `execute` and `ledgerApi` refuse with no session, and refuse again while the wallet\nreports it is not authenticated; that is `isLocked`, and it happens after a successful connect.\n`signMessage` and `execute` also refuse with no party, which `ledgerApi` does not need. The\nreference gateway also refuses `signMessage` for a local party; `usePartyType().readPartyType()`\ntells local from external when you ask. The SDK's status carries one `isConnected` flag, so a lock\nand a wallet-side disconnect look the same\nhere. `useLedger().isReady` covers both, and `useAccount().account` is `undefined` for the duration:\ngate session content on the party, and use `isLocked` only to explain why it went away.\n\n### Connecting through a Wallet Gateway\n\n```tsx\nimport { RemoteAdapter } from '@canton-network/dapp-sdk'\n\nconst config = {\n  appName: 'My dApp',\n  additionalAdapters: [\n    new RemoteAdapter({ name: 'Gateway', rpcUrl: 'http://localhost:3030/api/v0/dapp' }),\n  ],\n}\n```\n\n> [!NOTE]\n> The dapp-sdk wallet picker also lets a user paste any gateway URL and connect to it without the\n> dApp listing it. That session does not survive a reload; one with a gateway listed here does.\n\nDetails in [architecture.md](https://github.com/BootNodeDev/canton-dappbooster/blob/main/canton-connect/architecture.md#remote-gateway).\n\n### Connecting through WalletConnect\n\n```tsx\nconst config = {\n  appName: 'My dApp',\n  networkId: 'canton:devnet',\n  walletConnectProjectId: 'YOUR_REOWN_PROJECT_ID',\n}\n```\n\n`networkId` is the Canton network the dApp targets, as a CAIP-2 chain id.\n\nDetails in [architecture.md](https://github.com/BootNodeDev/canton-dappbooster/blob/main/canton-connect/architecture.md#walletconnect).\n\n## Reference\n\nEvery hook and every config field is documented in JSDoc, which your editor surfaces at the call\nsite and which is published at\n[docs.dappbooster.cc](https://docs.dappbooster.cc/). Start at\n`CantonConnectProvider` and `CantonConnectConfig`.\n\n## Testing helpers\n\n- `createMockAdapter()`, from the package root: a `ProviderAdapter` answering `connect`,\n  `disconnect`, `status` and `listAccounts` with no wallet installed, so a dApp or a test can\n  connect and show a party. Anything else throws, naming the method.\n- From `@bootnodedev/canton-connect/testing`: `createFakeWallet()`, a CIP-0103 extension driven over\n  `postMessage` that exercises the SDK's real announce and detect path; `createAutoPicker()`, a\n  headless picker so `connect()` runs without a popup; `FakeSessionProvider`, the context rehydrated\n  at an asked-for session with no SDK behind it; and `pause(ms)`, a real-timer sleep.\n\n```tsx\nimport { CantonConnectProvider, createMockAdapter } from '@bootnodedev/canton-connect'\nimport { createAutoPicker } from '@bootnodedev/canton-connect/testing'\n\nconst config = {\n  appName: 'My dApp',\n  additionalAdapters: [createMockAdapter()],\n  walletPicker: createAutoPicker(),\n}\n```\n\n## Architecture\n\n[`architecture.md`](https://github.com/BootNodeDev/canton-dappbooster/blob/main/canton-connect/architecture.md)\nmaps the seams; its `architecture/` chapters carry the connection machine and the popup close guard.\n\n## Testing\n\n`pnpm test`: vitest + jsdom + Testing Library. `pnpm coverage` runs the same suite under v8, with\n`testing/`, `mock/` and the barrel excluded.\n","readmeFilename":""}