{"_id":"@perawallet/walletconnect","_rev":"9-461a3a31894a48e2d0c4e6d526848783","name":"@perawallet/walletconnect","dist-tags":{"beta":"1.0.2-beta.0","latest":"1.0.3"},"versions":{"1.0.0":{"name":"@perawallet/walletconnect","version":"1.0.0","license":"Apache-2.0","_id":"@perawallet/walletconnect@1.0.0","maintainers":[{"name":"taylanpince","email":"taylan@hipolabs.com"},{"name":"yasincaliskan","email":"yasincaliskandev@gmail.com"},{"name":"yigitguler","email":"yigit@hipo.biz"}],"homepage":"https://github.com/perawallet/pera-walletconnect-ts#readme","bugs":{"url":"https://github.com/perawallet/pera-walletconnect-ts/issues"},"dist":{"shasum":"99732b28e64e53f7ea8244bd277dc908356d744a","tarball":"https://registry.npmjs.org/@perawallet/walletconnect/-/walletconnect-1.0.0.tgz","fileCount":11,"integrity":"sha512-y7nSd2OEyX9eLMtuZH3RXC083OQ6QY7Q90MN5WguuueShiiuuHu7Ow2ofRtD+y2Ts/FQDttqPTkD4LyKGwwk3Q==","signatures":[{"sig":"MEUCIG5Bg6k58YQRC1QXUCBl9DvFTZzTwvDXPn+RqWUd+sVVAiEA64uQVJ0LVoPzmdZegz9d6LbreCzniWq3FPdLhMH+WPo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140069},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./types":{"import":{"types":"./dist/types/index.d.ts","default":"./dist/types/index.js"},"require":{"types":"./dist/types/index.d.cts","default":"./dist/types/index.cjs"}},"./package.json":"./package.json"},"gitHead":"7c1e70533ebd75005366389f2c702d7cf528d3c1","scripts":{"lint":"oxlint","test":"vitest run","build":"vite build && node scripts/fix-dts.cjs","format":"oxfmt","prepack":"pnpm build","typecheck":"tsc --noEmit","format:check":"oxfmt --check","test:consumer":"pnpm build && tsc -p test/consumer/tsconfig.json","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"yasincaliskan","email":"yasincaliskandev@gmail.com"},"repository":{"url":"git+https://github.com/perawallet/pera-walletconnect-ts.git","type":"git"},"_npmVersion":"11.12.1","description":"Modern, security-forward WalletConnect v1 client maintained by Pera Wallet","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"@noble/hashes":"^2.0.0","@noble/ciphers":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.0","vite":"^7.0.0","oxfmt":"^0.45.0","oxlint":"^1.0.0","vitest":"^4.0.0","publint":"^0.3.0","@types/ws":"^8.5.0","typescript":"~5.9.0","@types/node":"^22.0.0","oxlint-tsgolint":"^0.23.0","vite-plugin-dts":"^4.0.0","@vitest/coverage-v8":"^4.0.0","@walletconnect/client":"1.8.0","@walletconnect/crypto":"1.0.3","eslint-plugin-unused-imports":"4.4.1"},"_npmOperationalInternal":{"tmp":"tmp/walletconnect_1.0.0_1781253487772_0.5765331523496742","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-beta.0":{"name":"@perawallet/walletconnect","version":"1.0.1-beta.0","license":"Apache-2.0","_id":"@perawallet/walletconnect@1.0.1-beta.0","maintainers":[{"name":"taylanpince","email":"taylan@hipolabs.com"},{"name":"yasincaliskan","email":"yasincaliskandev@gmail.com"},{"name":"yigitguler","email":"yigit@hipo.biz"}],"homepage":"https://github.com/perawallet/pera-walletconnect-ts#readme","bugs":{"url":"https://github.com/perawallet/pera-walletconnect-ts/issues"},"dist":{"shasum":"0a5f1dbe12512e7b3a97cc8d8449e1a780c4b285","tarball":"https://registry.npmjs.org/@perawallet/walletconnect/-/walletconnect-1.0.1-beta.0.tgz","fileCount":11,"integrity":"sha512-rH7WdVEyHB0UWt2OLxcQef6lG3JOSM4zxu0hf4A/eD/pU0z3Xzkz5UzcR+6ER0FRaLTnl3RUImPYEtJaK6ujFw==","signatures":[{"sig":"MEUCIGoFGtNgTXyhbqodeuYS00KYRpgfyJ5ZUBq5mVkuO49NAiEA4Lo9s6PygFAhQJPw0eEiusUY6lutj0NqPIN1ImmeXFA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142150},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./types":{"import":{"types":"./dist/types/index.d.ts","default":"./dist/types/index.js"},"require":{"types":"./dist/types/index.d.cts","default":"./dist/types/index.cjs"}},"./package.json":"./package.json"},"gitHead":"9bc52ea9e4664e5da8fb02e9e59e08f59a47f068","scripts":{"lint":"oxlint","test":"vitest run","build":"vite build && node scripts/fix-dts.cjs","format":"oxfmt","prepack":"pnpm build","typecheck":"tsc --noEmit","format:check":"oxfmt --check","test:consumer":"pnpm build && tsc -p test/consumer/tsconfig.json","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:26c7a806-1e77-480a-aee2-565e241cfafd"}},"repository":{"url":"git+https://github.com/perawallet/pera-walletconnect-ts.git","type":"git"},"_npmVersion":"12.0.2","description":"Modern, security-forward WalletConnect v1 client maintained by Pera Wallet","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@noble/hashes":"^2.0.0","@noble/ciphers":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.0","vite":"^7.0.0","oxfmt":"^0.45.0","oxlint":"^1.0.0","vitest":"^4.0.0","publint":"^0.3.0","@types/ws":"^8.5.0","typescript":"~5.9.0","@types/node":"^22.0.0","oxlint-tsgolint":"^0.23.0","vite-plugin-dts":"^4.0.0","@vitest/coverage-v8":"^4.0.0","@walletconnect/client":"1.8.0","@walletconnect/crypto":"1.0.3","eslint-plugin-unused-imports":"4.4.1"},"_npmOperationalInternal":{"tmp":"tmp/walletconnect_1.0.1-beta.0_1786959444270_0.36777829954594066","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@perawallet/walletconnect","version":"1.0.1","license":"Apache-2.0","_id":"@perawallet/walletconnect@1.0.1","maintainers":[{"name":"taylanpince","email":"taylan@hipolabs.com"},{"name":"yasincaliskan","email":"yasincaliskandev@gmail.com"},{"name":"yigitguler","email":"yigit@hipo.biz"}],"homepage":"https://github.com/perawallet/pera-walletconnect-ts#readme","bugs":{"url":"https://github.com/perawallet/pera-walletconnect-ts/issues"},"dist":{"shasum":"50b41e63ed93705cc94b21a9ab00166cf014e999","tarball":"https://registry.npmjs.org/@perawallet/walletconnect/-/walletconnect-1.0.1.tgz","fileCount":11,"integrity":"sha512-85+HaSlQ0WqNPtzj7C6ZAAXDJ70MY2UgzuVy4GpFxYlwRcKrKSCwhJpQVCrMsSTfFrhyNv1UOkjE8HDSzAiReg==","signatures":[{"sig":"MEQCIHXn8+mm2XzL4bMXBKTUWb6WcFWHSpjuve2S52jWgGXUAiA/TP0KxPJwiTpeMUnQTIIlExgUbtR4wfA91WaB2z2xig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142143},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./types":{"import":{"types":"./dist/types/index.d.ts","default":"./dist/types/index.js"},"require":{"types":"./dist/types/index.d.cts","default":"./dist/types/index.cjs"}},"./package.json":"./package.json"},"gitHead":"4f05fc4916d16d17de5bd5a0fb7752fc67fdbf2c","scripts":{"lint":"oxlint","test":"vitest run","build":"vite build && node scripts/fix-dts.cjs","format":"oxfmt","prepack":"pnpm build","typecheck":"tsc --noEmit","format:check":"oxfmt --check","test:consumer":"pnpm build && tsc -p test/consumer/tsconfig.json","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:26c7a806-1e77-480a-aee2-565e241cfafd"}},"repository":{"url":"git+https://github.com/perawallet/pera-walletconnect-ts.git","type":"git"},"_npmVersion":"12.0.2","description":"Modern, security-forward WalletConnect v1 client maintained by Pera Wallet","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@noble/hashes":"^2.0.0","@noble/ciphers":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.0","vite":"^7.0.0","oxfmt":"^0.45.0","oxlint":"^1.0.0","vitest":"^4.0.0","publint":"^0.3.0","@types/ws":"^8.5.0","typescript":"~5.9.0","@types/node":"^22.0.0","oxlint-tsgolint":"^0.23.0","vite-plugin-dts":"^4.0.0","@vitest/coverage-v8":"^4.0.0","@walletconnect/client":"1.8.0","@walletconnect/crypto":"1.0.3","eslint-plugin-unused-imports":"4.4.1"},"_npmOperationalInternal":{"tmp":"tmp/walletconnect_1.0.1_1786966272833_0.4094549410811783","host":"s3://npm-registry-packages-npm-production"}},"1.0.2-beta.0":{"name":"@perawallet/walletconnect","version":"1.0.2-beta.0","license":"Apache-2.0","_id":"@perawallet/walletconnect@1.0.2-beta.0","maintainers":[{"name":"taylanpince","email":"taylan@hipolabs.com"},{"name":"yasincaliskan","email":"yasincaliskandev@gmail.com"},{"name":"yigitguler","email":"yigit@hipo.biz"}],"homepage":"https://github.com/perawallet/pera-walletconnect-ts#readme","bugs":{"url":"https://github.com/perawallet/pera-walletconnect-ts/issues"},"dist":{"shasum":"7bdb6818ed4428204ca73364c0b238ff5ca0f57d","tarball":"https://registry.npmjs.org/@perawallet/walletconnect/-/walletconnect-1.0.2-beta.0.tgz","fileCount":11,"integrity":"sha512-k2PXOfpChKMotLItkz+Ry2w06JjRlQMTgn9LBEVqZ+TkE9dalFEawG9MdKgx66fuE7oyu+TUi5zVio2jL/2qOg==","signatures":[{"sig":"MEYCIQDnW+4z6AVkyJMRjo8hOZ2+JjW8JTubJPFQ4N2TywI+wQIhAPAGEhj2DdKS3OMPnVZJN9Z9X7uBOT4vhRKpzCjhMmNE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@perawallet%2fwalletconnect@1.0.2-beta.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":142314},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./types":{"import":{"types":"./dist/types/index.d.ts","default":"./dist/types/index.js"},"require":{"types":"./dist/types/index.d.cts","default":"./dist/types/index.cjs"}},"./package.json":"./package.json"},"gitHead":"5a12d832e49b39b9550d6bbdc379ac1259a65c49","scripts":{"lint":"oxlint","test":"vitest run","build":"vite build && node scripts/fix-dts.cjs","format":"oxfmt","prepack":"pnpm build","typecheck":"tsc --noEmit","format:check":"oxfmt --check","test:consumer":"pnpm build && tsc -p test/consumer/tsconfig.json","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:26c7a806-1e77-480a-aee2-565e241cfafd"}},"repository":{"url":"git+https://github.com/perawallet/pera-walletconnect-ts.git","type":"git"},"_npmVersion":"12.0.2","description":"Modern, security-forward WalletConnect v1 client maintained by Pera Wallet","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@noble/hashes":"^2.0.0","@noble/ciphers":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.0","vite":"^7.0.0","oxfmt":"^0.45.0","oxlint":"^1.0.0","vitest":"^4.0.0","publint":"^0.3.0","@types/ws":"^8.5.0","typescript":"~5.9.0","@types/node":"^22.0.0","oxlint-tsgolint":"^0.23.0","vite-plugin-dts":"^4.0.0","@vitest/coverage-v8":"^4.0.0","@walletconnect/client":"1.8.0","@walletconnect/crypto":"1.0.3","eslint-plugin-unused-imports":"4.4.1"},"_npmOperationalInternal":{"tmp":"tmp/walletconnect_1.0.2-beta.0_1787067625264_0.36241409068498287","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@perawallet/walletconnect","version":"1.0.2","license":"Apache-2.0","_id":"@perawallet/walletconnect@1.0.2","maintainers":[{"name":"taylanpince","email":"taylan@hipolabs.com"},{"name":"yasincaliskan","email":"yasincaliskandev@gmail.com"},{"name":"yigitguler","email":"yigit@hipo.biz"}],"homepage":"https://github.com/perawallet/pera-walletconnect-ts#readme","bugs":{"url":"https://github.com/perawallet/pera-walletconnect-ts/issues"},"dist":{"shasum":"ddf5bfee4c51d5da8b61e5a668f199c1bc8e9446","tarball":"https://registry.npmjs.org/@perawallet/walletconnect/-/walletconnect-1.0.2.tgz","fileCount":11,"integrity":"sha512-HJoN0XvnAhAXYNu0UV0FVDmYxzPEB4YWvwQ0o/JIdZFqFOdM7rZ+zlZq/+wdTICkxrLe35i1Zol59ycN3LKcvg==","signatures":[{"sig":"MEUCIAcNSAJNRMgQxXUB3eYpjpjZ5in274tQm/O50SAyKZA5AiEAg+AxHVoTb//jEYQqYaFhchbTmUUhcgEar3qAcvwZHmk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@perawallet%2fwalletconnect@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":142307},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./types":{"import":{"types":"./dist/types/index.d.ts","default":"./dist/types/index.js"},"require":{"types":"./dist/types/index.d.cts","default":"./dist/types/index.cjs"}},"./package.json":"./package.json"},"gitHead":"d7cc9ae9a299f48b7e324ffccc886f4bfee6a1b6","scripts":{"lint":"oxlint","test":"vitest run","build":"vite build && node scripts/fix-dts.cjs","format":"oxfmt","prepack":"pnpm build","typecheck":"tsc --noEmit","format:check":"oxfmt --check","test:consumer":"pnpm build && tsc -p test/consumer/tsconfig.json","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:26c7a806-1e77-480a-aee2-565e241cfafd"}},"repository":{"url":"git+https://github.com/perawallet/pera-walletconnect-ts.git","type":"git"},"_npmVersion":"12.0.2","description":"Modern, security-forward WalletConnect v1 client maintained by Pera Wallet","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@noble/hashes":"^2.0.0","@noble/ciphers":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.0","vite":"^7.0.0","oxfmt":"^0.45.0","oxlint":"^1.0.0","vitest":"^4.0.0","publint":"^0.3.0","@types/ws":"^8.5.0","typescript":"~5.9.0","@types/node":"^22.0.0","oxlint-tsgolint":"^0.23.0","vite-plugin-dts":"^4.0.0","@vitest/coverage-v8":"^4.0.0","@walletconnect/client":"1.8.0","@walletconnect/crypto":"1.0.3","eslint-plugin-unused-imports":"4.4.1"},"_npmOperationalInternal":{"tmp":"tmp/walletconnect_1.0.2_1787070565496_0.3146079818266285","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@perawallet/walletconnect","version":"1.0.3","license":"Apache-2.0","_id":"@perawallet/walletconnect@1.0.3","maintainers":[{"name":"taylanpince","email":"taylan@hipolabs.com"},{"name":"yasincaliskan","email":"yasincaliskandev@gmail.com"},{"name":"yigitguler","email":"yigit@hipo.biz"}],"homepage":"https://github.com/perawallet/pera-walletconnect-ts#readme","bugs":{"url":"https://github.com/perawallet/pera-walletconnect-ts/issues"},"dist":{"shasum":"580def92f5c27652d9d616c79d274352b202808a","tarball":"https://registry.npmjs.org/@perawallet/walletconnect/-/walletconnect-1.0.3.tgz","fileCount":11,"integrity":"sha512-rFFmgNavdVZiwUboyal6sphgkKuXZCeSP/XtHOJr6/xU6ay+i4eFin+1b5lOZtGDMS5MTDrCkVMgo34+TKsT+w==","signatures":[{"sig":"MEUCIFPV1/WKWizzrnzztDNF9rHZuPRgS3+DuRC9fkE39R+gAiEAzo5oSnyPfzbBkkuVPu6YTjjS1KdS53bbw1A956eob2M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@perawallet%2fwalletconnect@1.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":143094},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./types":{"import":{"types":"./dist/types/index.d.ts","default":"./dist/types/index.js"},"require":{"types":"./dist/types/index.d.cts","default":"./dist/types/index.cjs"}},"./package.json":"./package.json"},"gitHead":"937b1557602e6cf9f8fb11d3e1a13468515c0897","scripts":{"lint":"oxlint","test":"vitest run","build":"vite build && node scripts/fix-dts.cjs","format":"oxfmt","prepack":"pnpm build","typecheck":"tsc --noEmit","format:check":"oxfmt --check","test:consumer":"pnpm build && tsc -p test/consumer/tsconfig.json","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:26c7a806-1e77-480a-aee2-565e241cfafd"}},"repository":{"url":"git+https://github.com/perawallet/pera-walletconnect-ts.git","type":"git"},"_npmVersion":"12.0.2","description":"Modern, security-forward WalletConnect v1 client maintained by Pera Wallet","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@noble/hashes":"^2.0.0","@noble/ciphers":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.0","vite":"^7.0.0","oxfmt":"^0.45.0","oxlint":"^1.0.0","vitest":"^4.0.0","publint":"^0.3.0","@types/ws":"^8.5.0","typescript":"~5.9.0","@types/node":"^22.0.0","oxlint-tsgolint":"^0.23.0","vite-plugin-dts":"^4.0.0","@vitest/coverage-v8":"^4.0.0","@walletconnect/client":"1.8.0","@walletconnect/crypto":"1.0.3","eslint-plugin-unused-imports":"4.4.1"},"_npmOperationalInternal":{"tmp":"tmp/walletconnect_1.0.3_1788958533073_0.6771275111747665","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-06-12T08:38:07.580Z","modified":"2026-09-15T10:39:54.473Z","1.0.0":"2026-06-12T08:38:07.925Z","1.0.1-beta.0":"2026-08-17T09:37:24.427Z","1.0.1":"2026-08-17T11:31:12.976Z","1.0.2-beta.0":"2026-08-18T15:40:25.405Z","1.0.2":"2026-08-18T16:29:25.657Z","1.0.3":"2026-09-09T12:55:33.222Z"},"bugs":{"url":"https://github.com/perawallet/pera-walletconnect-ts/issues"},"license":"Apache-2.0","homepage":"https://github.com/perawallet/pera-walletconnect-ts#readme","repository":{"url":"git+https://github.com/perawallet/pera-walletconnect-ts.git","type":"git"},"description":"Modern, security-forward WalletConnect v1 client maintained by Pera Wallet","maintainers":[{"email":"yasincaliskandev@gmail.com","name":"yasincaliskan"},{"email":"yigit@hipo.biz","name":"yigitguler"},{"email":"yasin.cetiner@perawallet.app","name":"yasincetiner.pera"},{"email":"will@wjbeaumont.org","name":"wjbeau"}],"readme":"# @perawallet/walletconnect\n\nA modern, security-forward implementation of the **WalletConnect v1** client\nprotocol, maintained by [Pera Wallet](https://perawallet.app). It provides both\nsides of the protocol — the **wallet** API (receive session and call requests,\napprove or reject them) and the **dapp** API (create sessions, send requests) —\nwith full wire compatibility with the original `@walletconnect/client@1.8.0`.\n\n## Why this exists\n\n- **WC v1 is still in production.** Pera's infrastructure and ecosystem\n  integrations are pinned to the WalletConnect v1 protocol, which speaks a\n  simple, self-hostable bridge protocol.\n- **Upstream is abandoned.** The original\n  [walletconnect-monorepo](https://github.com/WalletConnect/walletconnect-monorepo)\n  v1.x line is unmaintained, with stale dependencies and no security fixes.\n- **WC v2+ is a walled garden.** ReOwn's v2+ protocol requires their hosted\n  relay and project registration; v1 can run entirely on infrastructure you\n  control.\n- **Supply-chain control.** The legacy client pulled in a long tail of\n  transitive dependencies. This package re-implements everything on top of\n  exactly two audited cryptography libraries and nothing else.\n\n## Install\n\n```sh\npnpm add @perawallet/walletconnect\n# or\nnpm install @perawallet/walletconnect\n# or\nyarn add @perawallet/walletconnect\n```\n\nRuntime dependencies: [`@noble/ciphers`](https://github.com/paulmillr/noble-ciphers)\nand [`@noble/hashes`](https://github.com/paulmillr/noble-hashes) — that's all.\n\n**Supported environments:** Node.js ≥ 22 (uses the native `WebSocket` global),\nmodern browsers, and React Native (see [React Native](#react-native) below).\nShips as dual ESM + CJS with full TypeScript types.\n\n## Usage\n\n### Wallet side\n\nA wallet joins an existing session from a `wc:` URI (scanned from a QR code or\nopened via deep link), then responds to requests from the dapp:\n\n```ts\nimport WalletConnect from \"@perawallet/walletconnect\";\n\nconst connector = new WalletConnect({\n  uri, // \"wc:...\" URI from the dapp's QR code / deep link\n  clientMeta: {\n    name: \"Pera Wallet\",\n    description: \"Algorand wallet\",\n    url: \"https://perawallet.app\",\n    icons: [\"https://perawallet.app/icon.png\"],\n  },\n  // Required in React Native, optional elsewhere (defaults to localStorage):\n  // storage: <ISessionStorage adapter, see \"React Native\" below>\n});\n\n// The dapp asks to connect\nconnector.on(\"session_request\", (error, payload) => {\n  if (error) throw error;\n  const { peerMeta } = payload.params[0];\n  // ...show approval UI for peerMeta...\n  connector.approveSession({\n    accounts: [\"ALGORANDADDRESS...\"],\n    chainId: 4160,\n  });\n  // or: connector.rejectSession({ message: \"User rejected\" });\n});\n\n// The dapp sends a JSON-RPC call (e.g. a signing request)\nconnector.on(\"call_request\", (error, payload) => {\n  if (error) throw error;\n  if (payload.method === \"algo_signTxn\") {\n    // ...sign payload.params...\n    connector.approveRequest({ id: payload.id, result: [signedTxn] });\n    // or: connector.rejectRequest({ id: payload.id, error: { message: \"Rejected\" } });\n  }\n});\n\nconnector.on(\"disconnect\", error => {\n  // session ended by the peer\n});\n\n// End the session from the wallet side\nawait connector.killSession();\n```\n\n### Dapp side\n\nA dapp creates a session on a bridge and displays the pairing URI to the user:\n\n```ts\nimport WalletConnect from \"@perawallet/walletconnect\";\n\nconst connector = new WalletConnect({\n  bridge: \"https://your-bridge.example.com\", // your self-hosted bridge server\n  clientMeta: {\n    name: \"My Dapp\",\n    description: \"Example dapp\",\n    url: \"https://dapp.example.com\",\n    icons: [\"https://dapp.example.com/icon.png\"],\n  },\n  qrcodeModal: {\n    open: (uri, cb) => showQrCode(uri), // render the wc: URI as a QR code\n    close: () => hideQrCode(),\n  },\n});\n\nawait connector.createSession({ chainId: 4160 });\n// connector.uri now holds the \"wc:...\" pairing URI\n\nconnector.on(\"connect\", (error, payload) => {\n  if (error) throw error;\n  const { accounts } = payload.params[0]; // wallet approved\n});\n\nconnector.on(\"session_update\", (error, payload) => {\n  if (error) throw error;\n  const { accounts } = payload.params[0]; // wallet changed accounts/chain\n});\n\n// Send a custom JSON-RPC request to the wallet\nconst signed = await connector.sendCustomRequest(\n  { method: \"algo_signTxn\", params: [[{ txn: base64Txn }]] },\n  { forcePushNotification: true },\n);\n\nawait connector.killSession();\n```\n\n> **Note on bridges:** the original public `*.bridge.walletconnect.org` servers\n> have been shut down by ReOwn. Wallet-side connections take the bridge from\n> the `wc:` URI automatically; dapp-side code should pass the URL of a bridge\n> server you operate via the `bridge` option.\n\n### React Native\n\nTwo requirements, both enforced with clear errors:\n\n1. **`crypto.getRandomValues` must exist globally _before_ constructing\n   `WalletConnect`.** Install and import a polyfill such as\n   [`react-native-quick-crypto`](https://github.com/margelo/react-native-quick-crypto)\n   or [`react-native-get-random-values`](https://github.com/LinusU/react-native-get-random-values)\n   at the top of your app's entry point. The constructor throws if it is\n   missing.\n\n2. **Inject a storage adapter.** React Native has no `localStorage`, so pass a\n   synchronous adapter via the `storage` option to persist sessions. With\n   [MMKV](https://github.com/mrousavy/react-native-mmkv) (synchronous, ideal):\n\n```ts\nimport { MMKV } from \"react-native-mmkv\";\nimport WalletConnect, { type IWalletConnectSession } from \"@perawallet/walletconnect\";\n\nconst mmkv = new MMKV();\nconst STORAGE_KEY = \"walletconnect\";\n\nconst storage = {\n  getSession: (): IWalletConnectSession | null => {\n    const json = mmkv.getString(STORAGE_KEY);\n    return json ? JSON.parse(json) : null;\n  },\n  setSession: (session: IWalletConnectSession) => {\n    mmkv.set(STORAGE_KEY, JSON.stringify(session));\n    return session;\n  },\n  removeSession: () => {\n    mmkv.delete(STORAGE_KEY);\n  },\n};\n\nconst connector = new WalletConnect({ uri, clientMeta, storage });\n```\n\nThe adapter interface is synchronous (`getSession` / `setSession` /\n`removeSession`). If you use AsyncStorage, hydrate the session into memory at\napp startup and back the adapter with that in-memory copy.\n\n## Security posture\n\n- **Two runtime dependencies, both audited crypto primitives:**\n  `@noble/ciphers` (AES-CBC) and `@noble/hashes` (HMAC-SHA256, SHA-512,\n  Keccak). Nothing else ships at runtime.\n- **Proven wire compatibility:** a golden interop test suite runs every\n  session lifecycle (connect, approve, custom requests, update, kill) in both\n  orientations against the original `@walletconnect/client@1.8.0` as an\n  oracle, plus byte-level encryption/HMAC interop vectors.\n- **7-day dependency cooldown:** `minimumReleaseAge` is enforced so freshly\n  published (potentially compromised) dependency versions cannot enter the\n  lockfile for a week.\n- **Hardened CI:** all GitHub Actions are SHA-pinned; CodeQL static analysis,\n  OpenSSF Scorecard, and SBOM generation run on every change.\n- **Provenance-verified releases:** publishing uses npm OIDC trusted\n  publishing with Sigstore provenance — no long-lived npm tokens exist. See\n  [RELEASING.md](https://github.com/perawallet/pera-walletconnect-ts/blob/main/RELEASING.md).\n\n## Development\n\n```sh\npnpm install          # install (frozen lockfile in CI)\npnpm build            # build ESM + CJS + .d.ts into packages/walletconnect/dist\npnpm test             # run the full vitest suite (incl. interop tests)\npnpm test:coverage    # tests with coverage\npnpm lint             # oxlint\npnpm format           # oxfmt\npnpm typecheck        # tsc --noEmit\n```\n\nThis is a pnpm workspace; the single published package lives at\n[`packages/walletconnect`](https://github.com/perawallet/pera-walletconnect-ts/tree/main/packages/walletconnect).\nNode.js ≥ 22 is required.\n\n## License\n\n[Apache-2.0](https://github.com/perawallet/pera-walletconnect-ts/blob/main/LICENSE).\nThis project is a fork and modernization of\n[WalletConnect v1.x](https://github.com/WalletConnect/walletconnect-monorepo)\n(Copyright 2020 WalletConnect) — see\n[NOTICE](https://github.com/perawallet/pera-walletconnect-ts/blob/main/NOTICE)\nfor full attribution.\n","readmeFilename":"README.md"}