@wangjinbao/wallet-connect 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/README.md +187 -0
  2. package/dist/cjs/index.js +11 -0
  3. package/dist/cjs/index.js.map +1 -0
  4. package/dist/cjs/styles.css +3 -0
  5. package/dist/cjs/types/components/AccountModal.d.ts +6 -0
  6. package/dist/cjs/types/components/AccountModal.d.ts.map +1 -0
  7. package/dist/cjs/types/components/ChainSwitcher.d.ts +6 -0
  8. package/dist/cjs/types/components/ChainSwitcher.d.ts.map +1 -0
  9. package/dist/cjs/types/components/ConnectButton.d.ts +2 -0
  10. package/dist/cjs/types/components/ConnectButton.d.ts.map +1 -0
  11. package/dist/cjs/types/components/WalletModal.d.ts +6 -0
  12. package/dist/cjs/types/components/WalletModal.d.ts.map +1 -0
  13. package/dist/cjs/types/components/WalletProvider.d.ts +13 -0
  14. package/dist/cjs/types/components/WalletProvider.d.ts.map +1 -0
  15. package/dist/cjs/types/context/WalletContext.d.ts +7 -0
  16. package/dist/cjs/types/context/WalletContext.d.ts.map +1 -0
  17. package/dist/cjs/types/hooks/useWallet.d.ts +6 -0
  18. package/dist/cjs/types/hooks/useWallet.d.ts.map +1 -0
  19. package/dist/cjs/types/index.d.ts +9 -0
  20. package/dist/cjs/types/index.d.ts.map +1 -0
  21. package/dist/cjs/types/types/index.d.ts +2 -0
  22. package/dist/cjs/types/types/index.d.ts.map +1 -0
  23. package/dist/cjs/types/types/wallet.d.ts +89 -0
  24. package/dist/cjs/types/types/wallet.d.ts.map +1 -0
  25. package/dist/cjs/types/utils/chains.d.ts +26 -0
  26. package/dist/cjs/types/utils/chains.d.ts.map +1 -0
  27. package/dist/cjs/types/utils/errors.d.ts +30 -0
  28. package/dist/cjs/types/utils/errors.d.ts.map +1 -0
  29. package/dist/cjs/types/utils/format.d.ts +9 -0
  30. package/dist/cjs/types/utils/format.d.ts.map +1 -0
  31. package/dist/cjs/types/wallets/BaseWallet.d.ts +86 -0
  32. package/dist/cjs/types/wallets/BaseWallet.d.ts.map +1 -0
  33. package/dist/cjs/types/wallets/CoinbaseWallet.d.ts +16 -0
  34. package/dist/cjs/types/wallets/CoinbaseWallet.d.ts.map +1 -0
  35. package/dist/cjs/types/wallets/MetaMaskWallet.d.ts +16 -0
  36. package/dist/cjs/types/wallets/MetaMaskWallet.d.ts.map +1 -0
  37. package/dist/cjs/types/wallets/OKXWallet.d.ts +16 -0
  38. package/dist/cjs/types/wallets/OKXWallet.d.ts.map +1 -0
  39. package/dist/cjs/types/wallets/PhantomWallet.d.ts +20 -0
  40. package/dist/cjs/types/wallets/PhantomWallet.d.ts.map +1 -0
  41. package/dist/cjs/types/wallets/index.d.ts +15 -0
  42. package/dist/cjs/types/wallets/index.d.ts.map +1 -0
  43. package/dist/esm/index.js +11 -0
  44. package/dist/esm/index.js.map +1 -0
  45. package/dist/esm/styles.css +3 -0
  46. package/dist/esm/types/components/AccountModal.d.ts +6 -0
  47. package/dist/esm/types/components/AccountModal.d.ts.map +1 -0
  48. package/dist/esm/types/components/ChainSwitcher.d.ts +6 -0
  49. package/dist/esm/types/components/ChainSwitcher.d.ts.map +1 -0
  50. package/dist/esm/types/components/ConnectButton.d.ts +2 -0
  51. package/dist/esm/types/components/ConnectButton.d.ts.map +1 -0
  52. package/dist/esm/types/components/WalletModal.d.ts +6 -0
  53. package/dist/esm/types/components/WalletModal.d.ts.map +1 -0
  54. package/dist/esm/types/components/WalletProvider.d.ts +13 -0
  55. package/dist/esm/types/components/WalletProvider.d.ts.map +1 -0
  56. package/dist/esm/types/context/WalletContext.d.ts +7 -0
  57. package/dist/esm/types/context/WalletContext.d.ts.map +1 -0
  58. package/dist/esm/types/hooks/useWallet.d.ts +6 -0
  59. package/dist/esm/types/hooks/useWallet.d.ts.map +1 -0
  60. package/dist/esm/types/index.d.ts +9 -0
  61. package/dist/esm/types/index.d.ts.map +1 -0
  62. package/dist/esm/types/types/index.d.ts +2 -0
  63. package/dist/esm/types/types/index.d.ts.map +1 -0
  64. package/dist/esm/types/types/wallet.d.ts +89 -0
  65. package/dist/esm/types/types/wallet.d.ts.map +1 -0
  66. package/dist/esm/types/utils/chains.d.ts +26 -0
  67. package/dist/esm/types/utils/chains.d.ts.map +1 -0
  68. package/dist/esm/types/utils/errors.d.ts +30 -0
  69. package/dist/esm/types/utils/errors.d.ts.map +1 -0
  70. package/dist/esm/types/utils/format.d.ts +9 -0
  71. package/dist/esm/types/utils/format.d.ts.map +1 -0
  72. package/dist/esm/types/wallets/BaseWallet.d.ts +86 -0
  73. package/dist/esm/types/wallets/BaseWallet.d.ts.map +1 -0
  74. package/dist/esm/types/wallets/CoinbaseWallet.d.ts +16 -0
  75. package/dist/esm/types/wallets/CoinbaseWallet.d.ts.map +1 -0
  76. package/dist/esm/types/wallets/MetaMaskWallet.d.ts +16 -0
  77. package/dist/esm/types/wallets/MetaMaskWallet.d.ts.map +1 -0
  78. package/dist/esm/types/wallets/OKXWallet.d.ts +16 -0
  79. package/dist/esm/types/wallets/OKXWallet.d.ts.map +1 -0
  80. package/dist/esm/types/wallets/PhantomWallet.d.ts +20 -0
  81. package/dist/esm/types/wallets/PhantomWallet.d.ts.map +1 -0
  82. package/dist/esm/types/wallets/index.d.ts +15 -0
  83. package/dist/esm/types/wallets/index.d.ts.map +1 -0
  84. package/dist/types/index.d.ts +273 -0
  85. package/package.json +72 -0
@@ -0,0 +1,3 @@
1
+ /*
2
+ ! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com
3
+ */*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.wjb-connect-button{border-radius:.75rem;font-weight:700;padding:.625rem 1rem;transition-duration:.2s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.wjb-connect-button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-offset-width:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid transparent;outline-offset:2px}.wjb-connect-button{align-items:center;display:flex;gap:.5rem;justify-content:center}.wjb-connect-button-primary{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.wjb-connect-button-primary:hover{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.wjb-connect-button-primary{--tw-text-opacity:1;--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);color:rgb(255 255 255/var(--tw-text-opacity))}.wjb-connect-button-primary,.wjb-connect-button-primary:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.wjb-connect-button-primary:hover{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);--tw-scale-x:1.02;--tw-scale-y:1.02}.wjb-connect-button-primary:active,.wjb-connect-button-primary:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.wjb-connect-button-primary:active{--tw-scale-x:0.98;--tw-scale-y:0.98}.wjb-connect-button-primary:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.wjb-wallet-connected{align-items:center;display:flex;gap:.75rem}.wjb-wallet-info-group{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(229 231 235/var(--tw-border-opacity));border-radius:.75rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);display:flex;padding:.25rem}@media (prefers-color-scheme:dark){.wjb-wallet-info-group{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity));border-color:rgb(55 65 81/var(--tw-border-opacity))}}.wjb-chain-button{align-items:center;border-radius:.5rem;display:flex;gap:.5rem;padding:.375rem .75rem}.wjb-chain-button:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}@media (prefers-color-scheme:dark){.wjb-chain-button:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}}.wjb-chain-button{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity));font-size:.875rem;font-weight:700;line-height:1.25rem;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}@media (prefers-color-scheme:dark){.wjb-chain-button{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}}.wjb-balance{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity));display:none;font-size:.875rem;font-weight:500;line-height:1.25rem;padding-left:.75rem;padding-right:.75rem}@media (min-width:640px){.wjb-balance{display:block}}@media (prefers-color-scheme:dark){.wjb-balance{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity))}}.wjb-account-button{--tw-bg-opacity:1;align-items:center;background-color:rgb(243 244 246/var(--tw-bg-opacity));border-radius:.5rem;display:flex;gap:.5rem;margin-left:.25rem;padding:.375rem .75rem}@media (prefers-color-scheme:dark){.wjb-account-button{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}}.wjb-account-button:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}@media (prefers-color-scheme:dark){.wjb-account-button:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}}.wjb-account-button{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity));font-size:.875rem;font-weight:700;line-height:1.25rem;transition-duration:.2s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}@media (prefers-color-scheme:dark){.wjb-account-button{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}}.wjb-account-avatar{--tw-gradient-from:#60a5fa var(--tw-gradient-from-position);--tw-gradient-to:rgba(96,165,250,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);--tw-gradient-to:#a855f7 var(--tw-gradient-to-position);--tw-shadow:inset 0 2px 4px 0 rgba(0,0,0,.05);--tw-shadow-colored:inset 0 2px 4px 0 var(--tw-shadow-color);background-image:linear-gradient(to bottom right,var(--tw-gradient-stops));border-radius:9999px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);height:1.5rem;width:1.5rem}.wjb-modal-overlay{--tw-backdrop-blur:blur(2px);align-items:center;animation:fade-in .2s ease-out;backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);background-color:rgba(0,0,0,.4);display:flex;inset:0;justify-content:center;padding:1rem;position:fixed;z-index:50}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.wjb-modal-overlay{animation:fadeIn .2s ease-in-out}.wjb-wallet-modal-content{--tw-bg-opacity:1;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:1.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}@media (prefers-color-scheme:dark){.wjb-wallet-modal-content{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}}.wjb-wallet-modal-content{display:flex;flex-direction:column;max-width:48rem;overflow:hidden;width:100%}@media (min-width:768px){.wjb-wallet-modal-content{flex-direction:row}}.wjb-wallet-modal-content{animation:scale-up cubic-bezier(.16,1,.3,1) .2s ease-out}.wjb-modal-left{--tw-border-opacity:1;border-bottom-width:1px;border-color:rgb(243 244 246/var(--tw-border-opacity));padding:1.5rem;width:100%}@media (min-width:768px){.wjb-modal-left{border-bottom-width:0;border-right-width:1px;width:20rem}}@media (prefers-color-scheme:dark){.wjb-modal-left{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}}.wjb-modal-right{--tw-bg-opacity:1;align-items:center;background-color:rgb(249 250 251/var(--tw-bg-opacity));display:flex;flex:1 1 0%;flex-direction:column;justify-content:center;padding:1.5rem;text-align:center}@media (prefers-color-scheme:dark){.wjb-modal-right{background-color:rgba(31,41,55,.5)}}.wjb-modal-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1rem}.wjb-modal-title{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity));font-size:1.125rem;font-weight:700;line-height:1.75rem}@media (prefers-color-scheme:dark){.wjb-modal-title{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}}.wjb-wallet-list>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.wjb-wallet-option{align-items:center;border-radius:.75rem;display:flex;gap:.75rem;padding:.75rem 1rem;width:100%}.wjb-wallet-option:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}@media (prefers-color-scheme:dark){.wjb-wallet-option:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}}.wjb-wallet-option{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity));font-weight:700;text-align:left;transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}@media (prefers-color-scheme:dark){.wjb-wallet-option{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}}.wjb-chain-switcher-content{--tw-bg-opacity:1;--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:1rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);padding:.5rem;width:20rem}@media (prefers-color-scheme:dark){.wjb-chain-switcher-content{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}}.wjb-chain-switcher-content{animation:scale-up cubic-bezier(.16,1,.3,1) .2s ease-out}.wjb-chain-option{align-items:center;border-radius:.75rem;display:flex;justify-content:space-between;padding:.75rem 1rem;width:100%}.wjb-chain-option:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}@media (prefers-color-scheme:dark){.wjb-chain-option:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}}.wjb-chain-option{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity));font-weight:500}@media (prefers-color-scheme:dark){.wjb-chain-option{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}}.wjb-chain-option{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.wjb-chain-option.active{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity));color:rgb(59 130 246/var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.wjb-chain-option.active{background-color:rgba(30,58,138,.1)}}.wjb-chain-icon{border-radius:9999px;height:1.5rem;margin-right:.75rem;width:1.5rem}.wjb-account-modal-content{--tw-bg-opacity:1;--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:1.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);padding:2rem;text-align:center;width:20rem}@media (prefers-color-scheme:dark){.wjb-account-modal-content{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}}.wjb-account-modal-content{align-items:center;animation:scale-up cubic-bezier(.16,1,.3,1) .2s ease-out;display:flex;flex-direction:column;gap:1rem;position:relative}.wjb-account-modal-close{--tw-text-opacity:1;border-radius:9999px;color:rgb(156 163 175/var(--tw-text-opacity));padding:.5rem;position:absolute;right:1rem;top:1rem}.wjb-account-modal-close:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity));color:rgb(75 85 99/var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.wjb-account-modal-close:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}}.wjb-account-avatar-large{--tw-gradient-from:#60a5fa var(--tw-gradient-from-position);--tw-gradient-to:rgba(96,165,250,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);--tw-gradient-to:#a855f7 var(--tw-gradient-to-position);background-image:linear-gradient(to bottom right,var(--tw-gradient-stops));border-radius:9999px;height:5rem;margin-bottom:.5rem;width:5rem}.wjb-account-address-large{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity));font-size:1.25rem;font-weight:700;line-height:1.75rem}@media (prefers-color-scheme:dark){.wjb-account-address-large{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}}.wjb-account-balance-large{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity));font-weight:500}@media (prefers-color-scheme:dark){.wjb-account-balance-large{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}}.wjb-account-actions{display:flex;gap:.75rem;margin-top:1rem;width:100%}.wjb-action-button{align-items:center;border-radius:.75rem;display:flex;flex:1 1 0%;flex-direction:column;gap:.5rem;padding:.75rem}.wjb-action-button:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}@media (prefers-color-scheme:dark){.wjb-action-button:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}}.wjb-action-button{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity));font-size:.75rem;font-weight:500;line-height:1rem}@media (prefers-color-scheme:dark){.wjb-action-button{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}}.wjb-action-button{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes scale-up{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.mb-2{margin-bottom:.5rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.mt-1{margin-top:.25rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-12{height:3rem}.h-5{height:1.25rem}.h-8{height:2rem}.w-12{width:3rem}.w-5{width:1.25rem}.w-8{width:2rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.-rotate-12{--tw-rotate:-12deg}.-rotate-12,.-rotate-6{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-6{--tw-rotate:-6deg}.rotate-12{--tw-rotate:12deg}.rotate-12,.rotate-6{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-6{--tw-rotate:6deg}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-4{gap:1rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.border-b{border-bottom-width:1px}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}.bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}.bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity))}.bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity))}.bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.text-left{text-align:left}.text-\[10px\]{font-size:10px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}.text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.hover\:text-red-600:hover{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.hover\:opacity-100:hover{opacity:1}@media (min-width:768px){.md\:flex{display:flex}}@media (prefers-color-scheme:dark){.dark\:border-gray-800{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity))}.dark\:bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.dark\:text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.dark\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}}
@@ -0,0 +1,6 @@
1
+ interface AccountModalProps {
2
+ onClose: () => void;
3
+ }
4
+ export declare function AccountModal({ onClose }: AccountModalProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
6
+ //# sourceMappingURL=AccountModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountModal.d.ts","sourceRoot":"","sources":["../../../src/components/AccountModal.tsx"],"names":[],"mappings":"AAIA,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE,iBAAiB,2CAiF1D"}
@@ -0,0 +1,6 @@
1
+ interface ChainSwitcherProps {
2
+ onClose: () => void;
3
+ }
4
+ export declare function ChainSwitcher({ onClose }: ChainSwitcherProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
6
+ //# sourceMappingURL=ChainSwitcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChainSwitcher.d.ts","sourceRoot":"","sources":["../../../src/components/ChainSwitcher.tsx"],"names":[],"mappings":"AAGA,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,kBAAkB,2CAuD5D"}
@@ -0,0 +1,2 @@
1
+ export declare function ConnectButton(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ConnectButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectButton.d.ts","sourceRoot":"","sources":["../../../src/components/ConnectButton.tsx"],"names":[],"mappings":"AAOA,wBAAgB,aAAa,4CAgH5B"}
@@ -0,0 +1,6 @@
1
+ interface WalletModalProps {
2
+ onClose: () => void;
3
+ }
4
+ export declare function WalletModal({ onClose }: WalletModalProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
6
+ //# sourceMappingURL=WalletModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletModal.d.ts","sourceRoot":"","sources":["../../../src/components/WalletModal.tsx"],"names":[],"mappings":"AAIA,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE,gBAAgB,2CAuJxD"}
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ import { WalletProviderConfig } from "../types";
3
+ interface WalletProviderProps {
4
+ children: React.ReactNode;
5
+ config: WalletProviderConfig;
6
+ }
7
+ /**
8
+ * 钱包提供者组件
9
+ * 管理钱包连接状态并向子组件提供钱包上下文
10
+ */
11
+ export declare function WalletProvider({ children, config }: WalletProviderProps): import("react/jsx-runtime").JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=WalletProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletProvider.d.ts","sourceRoot":"","sources":["../../../src/components/WalletProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAkC,MAAM,UAAU,CAAC;AAKhF,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,EAAE,oBAAoB,CAAC;CAC9B;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,mBAAmB,2CAgRvE"}
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { WalletContextValue } from "../types";
3
+ /**
4
+ * 钱包上下文
5
+ */
6
+ export declare const WalletContext: import("react").Context<WalletContextValue | null>;
7
+ //# sourceMappingURL=WalletContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletContext.d.ts","sourceRoot":"","sources":["../../../src/context/WalletContext.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,aAAa,oDAAiD,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { WalletContextValue } from "../types";
2
+ /**
3
+ * 访问钱包上下文的 Hook
4
+ */
5
+ export declare function useWallet(): WalletContextValue;
6
+ //# sourceMappingURL=useWallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWallet.d.ts","sourceRoot":"","sources":["../../../src/hooks/useWallet.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C;;GAEG;AACH,wBAAgB,SAAS,IAAI,kBAAkB,CAQ9C"}
@@ -0,0 +1,9 @@
1
+ import "./components/styles.css";
2
+ export { WalletProvider } from "./components/WalletProvider";
3
+ export { ConnectButton } from "./components/ConnectButton";
4
+ export { useWallet } from "./hooks/useWallet";
5
+ export type { Chain, WalletInfo, WalletState, WalletContextValue, WalletProviderConfig, EthereumProvider, } from "./types";
6
+ export { BaseWallet, MetaMaskWallet, OKXWallet, PhantomWallet, CoinbaseWallet, } from "./wallets";
7
+ export { mainnet, sepolia, defaultChains } from "./utils/chains";
8
+ export { ErrorCode } from "./utils/errors";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,YAAY,EACV,KAAK,EACL,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,UAAU,EACV,cAAc,EACd,SAAS,EACT,aAAa,EACb,cAAc,GACf,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./wallet";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * 基于 EIP-1193 的以太坊提供者接口
3
+ */
4
+ export interface EthereumProvider {
5
+ request(args: RequestArguments): Promise<unknown>;
6
+ on(event: string, listener: (...args: unknown[]) => void): void;
7
+ removeListener(event: string, listener: (...args: unknown[]) => void): void;
8
+ isMetaMask?: boolean;
9
+ isOkxWallet?: boolean;
10
+ isCoinbaseWallet?: boolean;
11
+ isPhantom?: boolean;
12
+ }
13
+ /**
14
+ * JSON-RPC 调用请求参数
15
+ */
16
+ export interface RequestArguments {
17
+ method: string;
18
+ params?: unknown[] | Record<string, unknown>;
19
+ }
20
+ /**
21
+ * 链配置
22
+ */
23
+ export interface Chain {
24
+ chainId: string;
25
+ chainName: string;
26
+ nativeCurrency: {
27
+ name: string;
28
+ symbol: string;
29
+ decimals: number;
30
+ };
31
+ rpcUrls: string[];
32
+ blockExplorerUrls?: string[];
33
+ iconUrls?: string[];
34
+ }
35
+ /**
36
+ * 钱包信息
37
+ */
38
+ export interface WalletInfo {
39
+ id: string;
40
+ name: string;
41
+ icon?: string;
42
+ downloadUrl?: string;
43
+ }
44
+ /**
45
+ * 钱包连接状态
46
+ */
47
+ export interface WalletState {
48
+ isConnected: boolean;
49
+ account: string | null;
50
+ chainId: string | null;
51
+ balance: string | null;
52
+ wallet: WalletInfo | null;
53
+ }
54
+ /**
55
+ * 钱包事件类型
56
+ */
57
+ export type WalletEventType = "accountsChanged" | "chainChanged" | "connect" | "disconnect";
58
+ /**
59
+ * 事件监听器类型
60
+ */
61
+ export type WalletEventListener = (data: unknown) => void;
62
+ /**
63
+ * 钱包错误类型
64
+ */
65
+ export declare class WalletError extends Error {
66
+ code: number;
67
+ data?: unknown;
68
+ constructor(message: string, code: number, data?: unknown);
69
+ }
70
+ /**
71
+ * 钱包提供者上下文值
72
+ */
73
+ export interface WalletContextValue {
74
+ state: WalletState;
75
+ connect: (walletId: string) => Promise<void>;
76
+ disconnect: () => Promise<void>;
77
+ switchChain: (chainId: string) => Promise<void>;
78
+ availableWallets: WalletInfo[];
79
+ supportedChains: Chain[];
80
+ }
81
+ /**
82
+ * 钱包提供者配置
83
+ */
84
+ export interface WalletProviderConfig {
85
+ chains: Chain[];
86
+ autoConnect?: boolean;
87
+ appName?: string;
88
+ }
89
+ //# sourceMappingURL=wallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../../src/types/wallet.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAChE,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAC5E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,iBAAiB,GACjB,cAAc,GACd,SAAS,GACT,YAAY,CAAC;AAEjB;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;AAE1D;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;gBAEH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;CAM1D;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,gBAAgB,EAAE,UAAU,EAAE,CAAC;IAC/B,eAAe,EAAE,KAAK,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
@@ -0,0 +1,26 @@
1
+ import { Chain } from "../types";
2
+ /**
3
+ * 以太坊主网
4
+ */
5
+ export declare const mainnet: Chain;
6
+ /**
7
+ * Sepolia 测试网
8
+ */
9
+ export declare const sepolia: Chain;
10
+ /**
11
+ * 默认链列表
12
+ */
13
+ export declare const defaultChains: Chain[];
14
+ /**
15
+ * 根据 chainId 获取链配置
16
+ */
17
+ export declare function getChainById(chainId: string, chains: Chain[]): Chain | undefined;
18
+ /**
19
+ * 将 chainId 格式化为十六进制字符串
20
+ */
21
+ export declare function formatChainId(chainId: number | string): string;
22
+ /**
23
+ * 将 chainId 解析为数字
24
+ */
25
+ export declare function parseChainId(chainId: string): number;
26
+ //# sourceMappingURL=chains.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../../src/utils/chains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAUrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAUrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,EAAuB,CAAC;AAEzD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,KAAK,EAAE,GACd,KAAK,GAAG,SAAS,CAInB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAQ9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKpD"}
@@ -0,0 +1,30 @@
1
+ import { WalletError } from "../types";
2
+ /**
3
+ * 基于 EIP-1193 的错误代码
4
+ */
5
+ export declare const ErrorCode: {
6
+ readonly USER_REJECTED: 4001;
7
+ readonly UNAUTHORIZED: 4100;
8
+ readonly UNSUPPORTED_METHOD: 4200;
9
+ readonly DISCONNECTED: 4900;
10
+ readonly CHAIN_DISCONNECTED: 4901;
11
+ readonly UNRECOGNIZED_CHAIN: 4902;
12
+ readonly INVALID_PARAMS: -32602;
13
+ readonly INTERNAL_ERROR: -32603;
14
+ readonly PROVIDER_NOT_FOUND: -32000;
15
+ readonly WALLET_NOT_INSTALLED: -32001;
16
+ readonly ALREADY_CONNECTED: -32002;
17
+ };
18
+ /**
19
+ * 创建钱包错误
20
+ */
21
+ export declare function createWalletError(message: string, code: number, data?: unknown): WalletError;
22
+ /**
23
+ * 检查错误是否为用户拒绝
24
+ */
25
+ export declare function isUserRejectedError(error: unknown): boolean;
26
+ /**
27
+ * 解析提供者错误
28
+ */
29
+ export declare function parseProviderError(error: unknown): WalletError;
30
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;CAYZ,CAAC;AAEX;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,GACb,WAAW,CAEb;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQ3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAwB9D"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Format balance from hex/wei to formatted string
3
+ */
4
+ export declare function formatBalance(rawBalance: string | undefined): string;
5
+ /**
6
+ * Format address to short form 0x...1234
7
+ */
8
+ export declare function formatAddress(address: string | null | undefined): string;
9
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/utils/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAwBpE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGxE"}
@@ -0,0 +1,86 @@
1
+ import { EthereumProvider, RequestArguments, Chain, WalletInfo, WalletEventListener } from "../types";
2
+ /**
3
+ * 钱包基类(抽象类)
4
+ * 所有钱包实现都应继承此类
5
+ */
6
+ export declare abstract class BaseWallet {
7
+ protected provider: EthereumProvider | null;
8
+ protected eventListeners: Map<string, Set<WalletEventListener>>;
9
+ /**
10
+ * 获取钱包信息
11
+ */
12
+ abstract getInfo(): WalletInfo;
13
+ /**
14
+ * 检查钱包是否安装
15
+ */
16
+ abstract isInstalled(): boolean;
17
+ /**
18
+ * 获取提供者实例
19
+ */
20
+ abstract getProvider(): EthereumProvider | null;
21
+ /**
22
+ * 连接钱包
23
+ */
24
+ connect(): Promise<string[]>;
25
+ /**
26
+ * 断开钱包连接
27
+ */
28
+ disconnect(): Promise<void>;
29
+ /**
30
+ * 获取当前账户
31
+ */
32
+ getAccounts(): Promise<string[]>;
33
+ /**
34
+ * 获取当前账户余额
35
+ */
36
+ getBalance(address: string): Promise<string>;
37
+ /**
38
+ * 获取当前链 ID
39
+ */
40
+ getChainId(): Promise<string>;
41
+ /**
42
+ * 切换到指定链
43
+ */
44
+ switchChain(chain: Chain): Promise<void>;
45
+ /**
46
+ * 添加事件监听器
47
+ */
48
+ on(event: string, listener: WalletEventListener): void;
49
+ /**
50
+ * 移除事件监听器
51
+ */
52
+ off(event: string, listener: WalletEventListener): void;
53
+ /**
54
+ * 发起 JSON-RPC 请求
55
+ */
56
+ protected request<T = unknown>(args: RequestArguments): Promise<T>;
57
+ /**
58
+ * 设置提供者事件监听
59
+ */
60
+ protected setupEventListeners(): void;
61
+ /**
62
+ * 清理资源和监听器
63
+ */
64
+ protected cleanup(): void;
65
+ /**
66
+ * 处理账户变更事件
67
+ */
68
+ protected handleAccountsChanged: (accounts: unknown) => void;
69
+ /**
70
+ * 处理链变更事件
71
+ */
72
+ protected handleChainChanged: (chainId: unknown) => void;
73
+ /**
74
+ * 处理断开连接事件
75
+ */
76
+ protected handleDisconnect: () => void;
77
+ /**
78
+ * 向所有监听器触发事件
79
+ */
80
+ protected emit(event: string, data: unknown): void;
81
+ /**
82
+ * 检查错误是否为未知链错误
83
+ */
84
+ protected isUnrecognizedChainError(error: unknown): boolean;
85
+ }
86
+ //# sourceMappingURL=BaseWallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseWallet.d.ts","sourceRoot":"","sources":["../../../src/wallets/BaseWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,EACL,UAAU,EACV,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAOlB;;;GAGG;AACH,8BAAsB,UAAU;IAC9B,SAAS,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IACnD,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAa;IAE5E;;OAEG;IACH,QAAQ,CAAC,OAAO,IAAI,UAAU;IAE9B;;OAEG;IACH,QAAQ,CAAC,WAAW,IAAI,OAAO;IAE/B;;OAEG;IACH,QAAQ,CAAC,WAAW,IAAI,gBAAgB,GAAG,IAAI;IAE/C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAgClC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAgBtC;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBlD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAenC;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC9C;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAOtD;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAOvD;;OAEG;cACa,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC;IAaxE;;OAEG;IACH,SAAS,CAAC,mBAAmB,IAAI,IAAI;IAQrC;;OAEG;IACH,SAAS,CAAC,OAAO,IAAI,IAAI;IAazB;;OAEG;IACH,SAAS,CAAC,qBAAqB,aAAc,OAAO,KAAG,IAAI,CAEzD;IAEF;;OAEG;IACH,SAAS,CAAC,kBAAkB,YAAa,OAAO,KAAG,IAAI,CAErD;IAEF;;OAEG;IACH,SAAS,CAAC,gBAAgB,QAAO,IAAI,CAGnC;IAEF;;OAEG;IACH,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAalD;;OAEG;IACH,SAAS,CAAC,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;CAM5D"}
@@ -0,0 +1,16 @@
1
+ import { BaseWallet } from "./BaseWallet";
2
+ import { EthereumProvider, WalletInfo } from "../types";
3
+ declare global {
4
+ interface Window {
5
+ coinbaseWalletExtension?: EthereumProvider;
6
+ }
7
+ }
8
+ /**
9
+ * Coinbase 钱包实现
10
+ */
11
+ export declare class CoinbaseWallet extends BaseWallet {
12
+ getInfo(): WalletInfo;
13
+ isInstalled(): boolean;
14
+ getProvider(): EthereumProvider | null;
15
+ }
16
+ //# sourceMappingURL=CoinbaseWallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoinbaseWallet.d.ts","sourceRoot":"","sources":["../../../src/wallets/CoinbaseWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAExD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,uBAAuB,CAAC,EAAE,gBAAgB,CAAC;KAC5C;CACF;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,UAAU;IAC5C,OAAO,IAAI,UAAU;IAQrB,WAAW,IAAI,OAAO;IAKtB,WAAW,IAAI,gBAAgB,GAAG,IAAI;CAIvC"}
@@ -0,0 +1,16 @@
1
+ import { BaseWallet } from "./BaseWallet";
2
+ import { EthereumProvider, WalletInfo } from "../types";
3
+ declare global {
4
+ interface Window {
5
+ ethereum?: EthereumProvider;
6
+ }
7
+ }
8
+ /**
9
+ * MetaMask 钱包实现
10
+ */
11
+ export declare class MetaMaskWallet extends BaseWallet {
12
+ getInfo(): WalletInfo;
13
+ isInstalled(): boolean;
14
+ getProvider(): EthereumProvider | null;
15
+ }
16
+ //# sourceMappingURL=MetaMaskWallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetaMaskWallet.d.ts","sourceRoot":"","sources":["../../../src/wallets/MetaMaskWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAExD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,QAAQ,CAAC,EAAE,gBAAgB,CAAC;KAC7B;CACF;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,UAAU;IAC5C,OAAO,IAAI,UAAU;IAQrB,WAAW,IAAI,OAAO;IAKtB,WAAW,IAAI,gBAAgB,GAAG,IAAI;CAWvC"}
@@ -0,0 +1,16 @@
1
+ import { BaseWallet } from "./BaseWallet";
2
+ import { EthereumProvider, WalletInfo } from "../types";
3
+ declare global {
4
+ interface Window {
5
+ okxwallet?: EthereumProvider;
6
+ }
7
+ }
8
+ /**
9
+ * OKX 钱包实现
10
+ */
11
+ export declare class OKXWallet extends BaseWallet {
12
+ getInfo(): WalletInfo;
13
+ isInstalled(): boolean;
14
+ getProvider(): EthereumProvider | null;
15
+ }
16
+ //# sourceMappingURL=OKXWallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OKXWallet.d.ts","sourceRoot":"","sources":["../../../src/wallets/OKXWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAExD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,SAAS,CAAC,EAAE,gBAAgB,CAAC;KAC9B;CACF;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,UAAU;IACvC,OAAO,IAAI,UAAU;IAQrB,WAAW,IAAI,OAAO;IAKtB,WAAW,IAAI,gBAAgB,GAAG,IAAI;CAIvC"}
@@ -0,0 +1,20 @@
1
+ import { BaseWallet } from "./BaseWallet";
2
+ import { EthereumProvider, WalletInfo } from "../types";
3
+ declare global {
4
+ interface Window {
5
+ phantom?: {
6
+ ethereum?: EthereumProvider;
7
+ };
8
+ }
9
+ }
10
+ /**
11
+ * Phantom 钱包实现
12
+ * Phantom 支持 Solana 和 Ethereum
13
+ * 我们使用 ethereum 属性以兼容 EVM
14
+ */
15
+ export declare class PhantomWallet extends BaseWallet {
16
+ getInfo(): WalletInfo;
17
+ isInstalled(): boolean;
18
+ getProvider(): EthereumProvider | null;
19
+ }
20
+ //# sourceMappingURL=PhantomWallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhantomWallet.d.ts","sourceRoot":"","sources":["../../../src/wallets/PhantomWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAExD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,OAAO,CAAC,EAAE;YACR,QAAQ,CAAC,EAAE,gBAAgB,CAAC;SAC7B,CAAC;KACH;CACF;AAED;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAC3C,OAAO,IAAI,UAAU;IAQrB,WAAW,IAAI,OAAO;IAKtB,WAAW,IAAI,gBAAgB,GAAG,IAAI;CAIvC"}
@@ -0,0 +1,15 @@
1
+ export { BaseWallet } from "./BaseWallet";
2
+ export { MetaMaskWallet } from "./MetaMaskWallet";
3
+ export { OKXWallet } from "./OKXWallet";
4
+ export { PhantomWallet } from "./PhantomWallet";
5
+ export { CoinbaseWallet } from "./CoinbaseWallet";
6
+ import { BaseWallet } from "./BaseWallet";
7
+ /**
8
+ * 所有可用钱包的注册表
9
+ */
10
+ export declare const walletRegistry: BaseWallet[];
11
+ /**
12
+ * 根据 ID 获取钱包
13
+ */
14
+ export declare function getWalletById(id: string): BaseWallet | undefined;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/wallets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMlD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,UAAU,EAKtC,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEhE"}