fare-privy-core 1.7.8 → 1.8.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 (109) hide show
  1. package/README.md +105 -26
  2. package/dist/PrivyProviderTest.d.ts +1 -1
  3. package/dist/PrivyProviderTest.d.ts.map +1 -1
  4. package/dist/PrivyProviderTest.js +9 -43
  5. package/dist/PrivyProviderTest.js.map +1 -1
  6. package/dist/index.d.ts +44 -6
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +55 -6
  9. package/dist/index.js.map +1 -1
  10. package/dist/src/components/WalletOverview.d.ts +12 -0
  11. package/dist/src/components/WalletOverview.d.ts.map +1 -0
  12. package/dist/src/components/WalletOverview.js +46 -0
  13. package/dist/src/components/WalletOverview.js.map +1 -0
  14. package/dist/src/components/shared/Button/index.d.ts +22 -0
  15. package/dist/src/components/shared/Button/index.d.ts.map +1 -0
  16. package/dist/src/components/shared/Button/index.js +16 -0
  17. package/dist/src/components/shared/Button/index.js.map +1 -0
  18. package/dist/src/components/shared/Button/style.d.ts +560 -0
  19. package/dist/src/components/shared/Button/style.d.ts.map +1 -0
  20. package/dist/src/components/shared/Button/style.js +249 -0
  21. package/dist/src/components/shared/Button/style.js.map +1 -0
  22. package/dist/src/components/shared/Modal/Card.d.ts +4 -0
  23. package/dist/src/components/shared/Modal/Card.d.ts.map +1 -0
  24. package/dist/src/components/shared/Modal/Card.js +30 -0
  25. package/dist/src/components/shared/Modal/Card.js.map +1 -0
  26. package/dist/src/components/shared/Modal/ModalFooter.d.ts +7 -0
  27. package/dist/src/components/shared/Modal/ModalFooter.d.ts.map +1 -0
  28. package/dist/src/components/shared/Modal/ModalFooter.js +10 -0
  29. package/dist/src/components/shared/Modal/ModalFooter.js.map +1 -0
  30. package/dist/src/components/shared/Modal/ModalHeader.d.ts +8 -0
  31. package/dist/src/components/shared/Modal/ModalHeader.d.ts.map +1 -0
  32. package/dist/src/components/shared/Modal/ModalHeader.js +30 -0
  33. package/dist/src/components/shared/Modal/ModalHeader.js.map +1 -0
  34. package/dist/src/components/shared/Modal/animations.d.ts +4 -0
  35. package/dist/src/components/shared/Modal/animations.d.ts.map +1 -0
  36. package/dist/src/components/shared/Modal/animations.js +26 -0
  37. package/dist/src/components/shared/Modal/animations.js.map +1 -0
  38. package/dist/src/components/shared/Modal/styles.d.ts +1625 -0
  39. package/dist/src/components/shared/Modal/styles.d.ts.map +1 -0
  40. package/dist/src/components/shared/Modal/styles.js +210 -0
  41. package/dist/src/components/shared/Modal/styles.js.map +1 -0
  42. package/dist/src/components/shared/Modal/types.d.ts +18 -0
  43. package/dist/src/components/shared/Modal/types.d.ts.map +1 -0
  44. package/dist/src/components/shared/Modal/types.js +2 -0
  45. package/dist/src/components/shared/Modal/types.js.map +1 -0
  46. package/dist/src/hooks/index.d.ts.map +1 -0
  47. package/dist/src/hooks/index.js.map +1 -0
  48. package/dist/src/hooks/useActiveWallet.d.ts +19 -0
  49. package/dist/src/hooks/useActiveWallet.d.ts.map +1 -0
  50. package/dist/{hooks → src/hooks}/useActiveWallet.js +15 -23
  51. package/dist/src/hooks/useActiveWallet.js.map +1 -0
  52. package/dist/src/hooks/useAuthActions.d.ts.map +1 -0
  53. package/dist/src/hooks/useAuthActions.js.map +1 -0
  54. package/dist/{hooks → src/hooks}/useConnectedWallets.d.ts +2 -2
  55. package/dist/src/hooks/useConnectedWallets.d.ts.map +1 -0
  56. package/dist/{hooks → src/hooks}/useConnectedWallets.js +10 -10
  57. package/dist/src/hooks/useConnectedWallets.js.map +1 -0
  58. package/dist/src/hooks/useIsAuthenticated.d.ts.map +1 -0
  59. package/dist/{hooks → src/hooks}/useIsAuthenticated.js +3 -3
  60. package/dist/src/hooks/useIsAuthenticated.js.map +1 -0
  61. package/dist/src/hooks/useWalletAddresses.d.ts.map +1 -0
  62. package/dist/src/hooks/useWalletAddresses.js +42 -0
  63. package/dist/src/hooks/useWalletAddresses.js.map +1 -0
  64. package/dist/{hooks → src/hooks}/useWalletBalance.d.ts +1 -1
  65. package/dist/src/hooks/useWalletBalance.d.ts.map +1 -0
  66. package/dist/src/hooks/useWalletBalance.js +147 -0
  67. package/dist/src/hooks/useWalletBalance.js.map +1 -0
  68. package/dist/src/modals/SelectWalletModal/index.d.ts +30 -0
  69. package/dist/src/modals/SelectWalletModal/index.d.ts.map +1 -0
  70. package/dist/src/modals/SelectWalletModal/index.js +68 -0
  71. package/dist/src/modals/SelectWalletModal/index.js.map +1 -0
  72. package/dist/src/modals/SelectWalletModal/styles.d.ts +3001 -0
  73. package/dist/src/modals/SelectWalletModal/styles.d.ts.map +1 -0
  74. package/dist/src/modals/SelectWalletModal/styles.js +137 -0
  75. package/dist/src/modals/SelectWalletModal/styles.js.map +1 -0
  76. package/dist/src/modals/SelectWalletModal/variants.d.ts +6 -0
  77. package/dist/src/modals/SelectWalletModal/variants.d.ts.map +1 -0
  78. package/dist/src/modals/SelectWalletModal/variants.js +59 -0
  79. package/dist/src/modals/SelectWalletModal/variants.js.map +1 -0
  80. package/dist/src/store/switchWallet.d.ts.map +1 -0
  81. package/dist/src/store/switchWallet.js.map +1 -0
  82. package/package.json +114 -98
  83. package/dist/farePrivy/store/switchWallet.d.ts.map +0 -1
  84. package/dist/farePrivy/store/switchWallet.js.map +0 -1
  85. package/dist/hooks/index.d.ts.map +0 -1
  86. package/dist/hooks/index.js.map +0 -1
  87. package/dist/hooks/useActiveWallet.d.ts +0 -24
  88. package/dist/hooks/useActiveWallet.d.ts.map +0 -1
  89. package/dist/hooks/useActiveWallet.js.map +0 -1
  90. package/dist/hooks/useAuthActions.d.ts.map +0 -1
  91. package/dist/hooks/useAuthActions.js.map +0 -1
  92. package/dist/hooks/useConnectedWallets.d.ts.map +0 -1
  93. package/dist/hooks/useConnectedWallets.js.map +0 -1
  94. package/dist/hooks/useIsAuthenticated.d.ts.map +0 -1
  95. package/dist/hooks/useIsAuthenticated.js.map +0 -1
  96. package/dist/hooks/useWalletAddresses.d.ts.map +0 -1
  97. package/dist/hooks/useWalletAddresses.js +0 -50
  98. package/dist/hooks/useWalletAddresses.js.map +0 -1
  99. package/dist/hooks/useWalletBalance.d.ts.map +0 -1
  100. package/dist/hooks/useWalletBalance.js +0 -99
  101. package/dist/hooks/useWalletBalance.js.map +0 -1
  102. /package/dist/{hooks → src/hooks}/index.d.ts +0 -0
  103. /package/dist/{hooks → src/hooks}/index.js +0 -0
  104. /package/dist/{hooks → src/hooks}/useAuthActions.d.ts +0 -0
  105. /package/dist/{hooks → src/hooks}/useAuthActions.js +0 -0
  106. /package/dist/{hooks → src/hooks}/useIsAuthenticated.d.ts +0 -0
  107. /package/dist/{hooks → src/hooks}/useWalletAddresses.d.ts +0 -0
  108. /package/dist/{farePrivy → src}/store/switchWallet.d.ts +0 -0
  109. /package/dist/{farePrivy → src}/store/switchWallet.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/shared/Modal/styles.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,sBAAsB,EAAE,GAapC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,GAiB3B,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4EzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,GAW9B,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGxB,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUvB,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW7B,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBtB,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBxB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,GAW1B,CAAC"}
@@ -0,0 +1,210 @@
1
+ import { motion } from "framer-motion";
2
+ import styled from "styled-components";
3
+ import { Button } from "../Button";
4
+ export const SModalOverlayContainer = styled(motion.div) `
5
+ position: fixed;
6
+ inset: 0;
7
+ background-color: rgba(0, 0, 0, 0.8);
8
+ z-index: 999;
9
+ display: flex;
10
+ justify-content: center;
11
+ align-items: center;
12
+ text-align: justify;
13
+
14
+ @media (min-aspect-ratio: 16/9) and (max-width: 992px) and (orientation: landscape) {
15
+ display: none;
16
+ }
17
+ `;
18
+ export const SModalWrapper = styled(motion.div) `
19
+ position: fixed;
20
+ top: 50%;
21
+ left: 50%;
22
+ transform: translate(-50%, -50%);
23
+ z-index: 1000;
24
+ display: flex;
25
+ justify-content: center;
26
+ align-items: center;
27
+ height: 100%;
28
+ min-width: 450px;
29
+ box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
30
+
31
+ @media (max-width: 600px) {
32
+ min-width: 300px;
33
+ width: 90%;
34
+ }
35
+ `;
36
+ export const SModalContent = styled.div `
37
+ display: flex;
38
+ flex-direction: column;
39
+ justify-content: flex-start;
40
+ align-items: center;
41
+ background-color: black;
42
+ height: 90%;
43
+ max-height: 800px;
44
+ width: 600px;
45
+ border-radius: 6px;
46
+ overflow: hidden;
47
+ position: relative;
48
+
49
+ &.card-modal-content {
50
+ height: 600px;
51
+
52
+ @media (max-height: 605px) {
53
+ height: 500px;
54
+ }
55
+ }
56
+
57
+ &.fund-modal-content {
58
+ padding: 2rem;
59
+ width: 440px;
60
+ text-align: left;
61
+ background-color: #1c1c1e;
62
+ border-radius: 2.5rem !important;
63
+ overflow: hidden;
64
+ border-radius: 16px;
65
+ text-align: justify;
66
+
67
+ @media (max-width: 992px) {
68
+ padding: 14px;
69
+ width: 100%;
70
+ text-align: left;
71
+ }
72
+ }
73
+
74
+ &.support-modal {
75
+ display: flex;
76
+ flex-direction: column;
77
+ text-align: center;
78
+ align-items: center;
79
+ justify-content: center;
80
+ margin: auto;
81
+ padding: 16px 0;
82
+ height: 330px;
83
+ width: 100%;
84
+
85
+ p {
86
+ text-align: center;
87
+ font-size: 16px;
88
+ margin: 0;
89
+ }
90
+ }
91
+
92
+ &.offer-modal {
93
+ padding: 32px;
94
+ flex-direction: row;
95
+
96
+ h2 {
97
+ color: #4af5d3;
98
+ }
99
+
100
+ @media (max-width: 992px) {
101
+ flex-direction: column;
102
+ padding: 16px 24px;
103
+ height: 600px;
104
+ overflow-y: auto;
105
+ }
106
+ }
107
+
108
+ @media (max-width: 992px) {
109
+ width: 320px;
110
+ text-align: center;
111
+ }
112
+ `;
113
+ export const SFundModalButton = styled(Button) `
114
+ height: 30px;
115
+ width: 30px;
116
+ padding: 0;
117
+ border: none;
118
+ background-color: transparent;
119
+ font-family: system-ui, sans-serif;
120
+
121
+ &:hover {
122
+ border: none;
123
+ }
124
+ `;
125
+ export const SModalHeader = styled.div `
126
+ padding: 0 16px;
127
+ width: 100%;
128
+ `;
129
+ export const SModalTitle = styled.h2 `
130
+ font-size: 20px;
131
+ font-weight: 600;
132
+ color: white;
133
+ line-height: 1;
134
+
135
+ @media (max-width: 600px) {
136
+ font-size: 18px;
137
+ margin-inline: 12px;
138
+ }
139
+ `;
140
+ export const SModalDescription = styled.p `
141
+ font-size: 16px;
142
+ color: #aaa;
143
+ margin: 8px 0;
144
+ text-align: justify;
145
+
146
+ @media (max-width: 600px) {
147
+ font-size: 14px;
148
+ margin-inline: 12px;
149
+ text-align: left;
150
+ }
151
+ `;
152
+ export const SModalBody = styled.div `
153
+ overflow-y: auto;
154
+ flex-grow: 1;
155
+ width: 100%;
156
+ padding: 16px;
157
+
158
+ @media (max-width: 600px) {
159
+ padding: 8px;
160
+ overflow-x: hidden;
161
+ }
162
+
163
+ &.support-modal-content {
164
+ width: 100%;
165
+ width: -moz-available; /* WebKit-based browsers will ignore this. */
166
+ width: -webkit-fill-available; /* Firefox will ignore this. */
167
+ align-items: center;
168
+ justify-content: center;
169
+ margin: auto;
170
+ height: 100%;
171
+ line-height: 1.5;
172
+
173
+ @media (max-width: 992px) {
174
+ padding: 20px 24px;
175
+ }
176
+ }
177
+ `;
178
+ export const SModalFooter = styled.div `
179
+ width: 100%;
180
+ display: flex;
181
+ justify-content: space-between;
182
+ align-items: center;
183
+
184
+ &.submit-button {
185
+ position: absolute;
186
+ bottom: 20px;
187
+ left: 50%;
188
+ transform: translateX(-50%);
189
+ display: flex;
190
+ justify-content: center;
191
+ }
192
+
193
+ .next-button {
194
+ display: flex;
195
+ justify-content: flex-end;
196
+ }
197
+ `;
198
+ export const SModalButton = styled(Button) `
199
+ width: 30px !important;
200
+ aspect-ratio: 1;
201
+ padding: 0;
202
+ border: none;
203
+ background-color: transparent;
204
+ font-family: system-ui, sans-serif;
205
+
206
+ &:hover {
207
+ border: none;
208
+ }
209
+ `;
210
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../src/components/shared/Modal/styles.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,MAAM,CAAC,MAAM,sBAAsB,GAAQ,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;;;;;;;;;;;;;CAa5D,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAQ,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;;;;;;;;;;;;;;;;;CAiBnD,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4EtC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAQ,MAAM,CAAC,MAAM,CAAC,CAAA;;;;;;;;;;;CAWlD,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA;;;CAGrC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAA;;;;;;;;;;CAUnC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAA;;;;;;;;;;;CAWxC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;CAyBnC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;CAmBrC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAQ,MAAM,CAAC,MAAM,CAAC,CAAA;;;;;;;;;;;CAW9C,CAAC"}
@@ -0,0 +1,18 @@
1
+ export interface ModalCardProps {
2
+ title: React.ReactNode;
3
+ description?: React.ReactNode;
4
+ children: React.ReactNode;
5
+ submit?: React.ReactNode;
6
+ isVisible?: boolean;
7
+ setIsVisible?: (isVisible: boolean) => void;
8
+ className?: string;
9
+ stepIdx?: number;
10
+ onClose?: () => void;
11
+ setStepIdx?: (idx: number) => void;
12
+ maxHeight?: string;
13
+ style?: React.CSSProperties;
14
+ closeIcon: any;
15
+ caretLeftIcon: any;
16
+ isMobileScreen: any;
17
+ }
18
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/shared/Modal/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,EAAE,GAAG,CAAC;IACf,aAAa,EAAE,GAAG,CAAC;IACnB,cAAc,EAAE,GAAG,CAAC;CACrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/components/shared/Modal/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;;;;;;;;;;GAcG"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,2CAA2C;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,gDAAgD;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,iCAAiC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;;;;;;;;;;GAcG"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * useActiveWallet - Active wallet management (previous stable version)
3
+ * Based on the working pattern from your casino app
4
+ */
5
+ import { type ConnectedWallet } from "@privy-io/react-auth";
6
+ export interface IActiveWallet extends ConnectedWallet {
7
+ getEthereumProvider: () => Promise<any>;
8
+ getSolanaProvider?: () => Promise<any>;
9
+ }
10
+ export declare const useActiveWallet: () => {
11
+ activeWallet: ConnectedWallet;
12
+ isWalletAuthed: boolean;
13
+ walletAddress: string;
14
+ ready: boolean;
15
+ authenticated: boolean;
16
+ readyAndAuth: boolean;
17
+ wallets: ConnectedWallet[];
18
+ };
19
+ //# sourceMappingURL=useActiveWallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useActiveWallet.d.ts","sourceRoot":"","sources":["../../../src/hooks/useActiveWallet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,mBAAmB,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;CACxC;AAED,eAAO,MAAM,eAAe;;;;;;;;CAyD3B,CAAC"}
@@ -4,33 +4,25 @@
4
4
  */
5
5
  import { useMemo } from "react";
6
6
  import { usePrivy, useWallets, } from "@privy-io/react-auth";
7
- // Deprecated: IActiveWallet. Use ActiveWallet discriminated union instead.
8
- export function useActiveWallet() {
7
+ export const useActiveWallet = () => {
9
8
  const { ready, authenticated } = usePrivy();
10
9
  const { wallets: unlinkedWallets } = useWallets();
11
- // Type narrowing: filter and map wallets to EVM or Solana type
12
- const wallets = useMemo(() => {
13
- return unlinkedWallets.filter((wallet) => wallet.linked).map((wallet) => {
14
- if (wallet.getEthereumProvider) {
15
- return { ...wallet, walletType: "evm" };
16
- }
17
- else if (wallet.getSolanaProvider) {
18
- return { ...wallet, walletType: "solana" };
19
- }
20
- return wallet;
21
- });
22
- }, [unlinkedWallets]);
23
- // Select first linked wallet as active
10
+ const wallets = useMemo(() => unlinkedWallets.filter((wallet) => wallet.linked), [unlinkedWallets]);
11
+ // Previous stable pattern: select first linked wallet as active
12
+ // Type guard for IActiveWallet
13
+ function isActiveWallet(obj) {
14
+ return (obj &&
15
+ typeof obj.getEthereumProvider === "function" &&
16
+ // If you need Solana, you can add:
17
+ (typeof obj.getSolanaProvider === "function" ||
18
+ typeof obj.getSolanaProvider === "undefined"));
19
+ }
24
20
  const activeWallet = useMemo(() => {
25
21
  if (!ready || !authenticated || wallets.length === 0)
26
22
  return null;
27
- // Only return EvmWallet or SolanaWallet
28
- const w = wallets[0];
29
- if (w.walletType === "evm")
30
- return w;
31
- if (w.walletType === "solana")
32
- return w;
33
- return null;
23
+ const selectedWallet = wallets[0];
24
+ // Only return if it passes the type guard
25
+ return isActiveWallet(selectedWallet) ? selectedWallet : null;
34
26
  }, [ready, authenticated, wallets]);
35
27
  const walletAddress = useMemo(() => activeWallet?.address || "", [activeWallet]);
36
28
  const isWalletAuthed = useMemo(() => Boolean(activeWallet), [activeWallet]);
@@ -52,5 +44,5 @@ export function useActiveWallet() {
52
44
  readyAndAuth,
53
45
  wallets,
54
46
  ]);
55
- }
47
+ };
56
48
  //# sourceMappingURL=useActiveWallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useActiveWallet.js","sourceRoot":"","sources":["../../../src/hooks/useActiveWallet.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EACL,QAAQ,EACR,UAAU,GAEX,MAAM,sBAAsB,CAAC;AAO9B,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC5C,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,UAAU,EAAE,CAAC;IAClD,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EACvD,CAAC,eAAe,CAAC,CAClB,CAAC;IAEF,gEAAgE;IAChE,+BAA+B;IAC/B,SAAS,cAAc,CAAC,GAAQ;QAC9B,OAAO,CACL,GAAG;YACH,OAAO,GAAG,CAAC,mBAAmB,KAAK,UAAU;YAC7C,mCAAmC;YACnC,CAAC,OAAO,GAAG,CAAC,iBAAiB,KAAK,UAAU;gBAC1C,OAAO,GAAG,CAAC,iBAAiB,KAAK,WAAW,CAAC,CAChD,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAChC,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAClE,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAClC,0CAA0C;QAC1C,OAAO,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;IAChE,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;IAEpC,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,YAAY,EAAE,OAAO,IAAI,EAAE,EACjC,CAAC,YAAY,CAAC,CACf,CAAC;IACF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,KAAK,IAAI,aAAa,EAC5B,CAAC,KAAK,EAAE,aAAa,CAAC,CACvB,CAAC;IAEF,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,YAAY;QACZ,cAAc;QACd,aAAa;QACb,KAAK;QACL,aAAa;QACb,YAAY;QACZ,OAAO;KACR,CAAC,EACF;QACE,YAAY;QACZ,cAAc;QACd,aAAa;QACb,KAAK;QACL,aAAa;QACb,YAAY;QACZ,OAAO;KACR,CACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAuthActions.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAuthActions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,eAAO,MAAM,cAAc;IAMvB,yCAAyC;;IAEzC,yCAAyC;;IAEzC,uCAAuC;;IAEvC,8CAA8C;;CAGjD,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAuthActions.js","sourceRoot":"","sources":["../../../src/hooks/useAuthActions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAErE,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,QAAQ,EAAE,CAAC;IAE5C,OAAO;QACL,yCAAyC;QACzC,KAAK;QACL,yCAAyC;QACzC,MAAM;QACN,uCAAuC;QACvC,OAAO,EAAE,KAAK;QACd,8CAA8C;QAC9C,eAAe,EAAE,aAAa;KAC/B,CAAC;AACJ,CAAC,CAAC"}
@@ -3,8 +3,8 @@
3
3
  * Get active/connected wallets for both Ethereum and Solana
4
4
  */
5
5
  export declare const useConnectedWallets: () => {
6
- /** All linked wallets */
7
- linkedWallets: import("@privy-io/react-auth").ConnectedWallet[];
6
+ /** All connected/linked wallets */
7
+ connectedWallets: import("@privy-io/react-auth").ConnectedWallet[];
8
8
  /** Primary wallet (first connected) */
9
9
  primaryWallet: import("@privy-io/react-auth").ConnectedWallet;
10
10
  /** Embedded Privy wallet if exists */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useConnectedWallets.d.ts","sourceRoot":"","sources":["../../../src/hooks/useConnectedWallets.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,eAAO,MAAM,mBAAmB;IA6B5B,mCAAmC;;IAEnC,uCAAuC;;IAEvC,sCAAsC;;IAEtC,0DAA0D;;IAE1D,oCAAoC;;IAEpC,6BAA6B;;CAGhC,CAAC"}
@@ -7,23 +7,23 @@ import { usePrivy, useWallets as usePrivyWallets } from "@privy-io/react-auth";
7
7
  export const useConnectedWallets = () => {
8
8
  const { ready, authenticated } = usePrivy();
9
9
  const { wallets } = usePrivyWallets();
10
- const linkedWallets = useMemo(() => wallets.filter((wallet) => wallet.linked), [wallets]);
10
+ const connectedWallets = useMemo(() => wallets.filter((wallet) => wallet.linked), [wallets]);
11
11
  const primaryWallet = useMemo(() => {
12
- if (!ready || !authenticated || linkedWallets.length === 0)
12
+ if (!ready || !authenticated || connectedWallets.length === 0)
13
13
  return null;
14
- return linkedWallets[0];
15
- }, [ready, authenticated, linkedWallets]);
14
+ return connectedWallets[0];
15
+ }, [ready, authenticated, connectedWallets]);
16
16
  const embeddedWallet = useMemo(() => {
17
- return (linkedWallets.find((wallet) => wallet.connectorType === "embedded") ||
17
+ return (connectedWallets.find((wallet) => wallet.connectorType === "embedded") ||
18
18
  null);
19
- }, [linkedWallets]);
19
+ }, [connectedWallets]);
20
20
  const externalWallet = useMemo(() => {
21
- return (linkedWallets.find((wallet) => wallet.connectorType !== "embedded") ||
21
+ return (connectedWallets.find((wallet) => wallet.connectorType !== "embedded") ||
22
22
  null);
23
- }, [linkedWallets]);
23
+ }, [connectedWallets]);
24
24
  return {
25
- /** All linked wallets */
26
- linkedWallets,
25
+ /** All connected/linked wallets */
26
+ connectedWallets,
27
27
  /** Primary wallet (first connected) */
28
28
  primaryWallet,
29
29
  /** Embedded Privy wallet if exists */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useConnectedWallets.js","sourceRoot":"","sources":["../../../src/hooks/useConnectedWallets.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,EAAE;IACtC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC5C,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;IAEtC,MAAM,gBAAgB,GAAG,OAAO,CAC9B,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAC/C,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3E,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAE7C,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,OAAO,CACL,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,KAAK,UAAU,CAAC;YACtE,IAAI,CACL,CAAC;IACJ,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,OAAO,CACL,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,KAAK,UAAU,CAAC;YACtE,IAAI,CACL,CAAC;IACJ,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,OAAO;QACL,mCAAmC;QACnC,gBAAgB;QAChB,uCAAuC;QACvC,aAAa;QACb,sCAAsC;QACtC,cAAc;QACd,0DAA0D;QAC1D,cAAc;QACd,oCAAoC;QACpC,eAAe,EAAE,aAAa,IAAI,KAAK;QACvC,6BAA6B;QAC7B,OAAO,EAAE,KAAK;KACf,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIsAuthenticated.d.ts","sourceRoot":"","sources":["../../../src/hooks/useIsAuthenticated.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,eAAO,MAAM,kBAAkB;IAQ3B,qDAAqD;;IAErD,6BAA6B;;IAE7B,kCAAkC;;IAElC,wBAAwB;;CAG3B,CAAC"}
@@ -6,8 +6,8 @@ import { usePrivy } from "@privy-io/react-auth";
6
6
  import { useConnectedWallets } from "./useConnectedWallets";
7
7
  export const useIsAuthenticated = () => {
8
8
  const { user, ready, authenticated } = usePrivy();
9
- const { linkedWallets } = useConnectedWallets();
10
- const hasWallet = linkedWallets.length > 0;
9
+ const { connectedWallets } = useConnectedWallets();
10
+ const hasWallet = connectedWallets.length > 0;
11
11
  const isFullyAuthenticated = authenticated && ready && hasWallet;
12
12
  return {
13
13
  /** User is authenticated and has wallet connected */
@@ -15,7 +15,7 @@ export const useIsAuthenticated = () => {
15
15
  /** User object from Privy */
16
16
  user,
17
17
  /** Number of connected wallets */
18
- walletCount: linkedWallets.length,
18
+ walletCount: connectedWallets.length,
19
19
  /** Privy ready state */
20
20
  isReady: ready,
21
21
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIsAuthenticated.js","sourceRoot":"","sources":["../../../src/hooks/useIsAuthenticated.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,QAAQ,EAAE,CAAC;IAClD,MAAM,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAEnD,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9C,MAAM,oBAAoB,GAAG,aAAa,IAAI,KAAK,IAAI,SAAS,CAAC;IAEjE,OAAO;QACL,qDAAqD;QACrD,eAAe,EAAE,oBAAoB;QACrC,6BAA6B;QAC7B,IAAI;QACJ,kCAAkC;QAClC,WAAW,EAAE,gBAAgB,CAAC,MAAM;QACpC,wBAAwB;QACxB,OAAO,EAAE,KAAK;KACf,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWalletAddresses.d.ts","sourceRoot":"","sources":["../../../src/hooks/useWalletAddresses.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,eAAO,MAAM,kBAAkB;IA6B3B,oCAAoC;;IAEpC,kCAAkC;;IAElC,+BAA+B;;IAE/B,6BAA6B;;CAGhC,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * useWalletAddresses - Address extraction by chain type
3
+ * Get wallet addresses organized by blockchain
4
+ */
5
+ import { useMemo } from "react";
6
+ import { useConnectedWallets } from "./useConnectedWallets";
7
+ export const useWalletAddresses = () => {
8
+ const { connectedWallets } = useConnectedWallets();
9
+ const ethereumAddresses = useMemo(() => {
10
+ return connectedWallets
11
+ .filter((w) => {
12
+ // Multiple ways to check for Ethereum wallets
13
+ const { chainType, walletClientType, connectorType } = w;
14
+ return (chainType === "ethereum" ||
15
+ walletClientType === "ethereum" ||
16
+ connectorType === "embedded" || // Embedded wallets are usually Ethereum
17
+ connectorType === "injected" || // MetaMask, etc.
18
+ !chainType // Default to Ethereum if no chain type specified
19
+ );
20
+ })
21
+ .map((w) => w.address);
22
+ }, [connectedWallets]);
23
+ const solanaAddresses = useMemo(() => {
24
+ return connectedWallets
25
+ .filter((w) => {
26
+ const { chainType, walletClientType } = w;
27
+ return chainType === "solana" || walletClientType === "solana";
28
+ })
29
+ .map((w) => w.address);
30
+ }, [connectedWallets]);
31
+ return {
32
+ /** All Ethereum wallet addresses */
33
+ ethereumAddresses,
34
+ /** All Solana wallet addresses */
35
+ solanaAddresses,
36
+ /** Primary Ethereum address */
37
+ primaryEthereumAddress: ethereumAddresses[0] || null,
38
+ /** Primary Solana address */
39
+ primarySolanaAddress: solanaAddresses[0] || null,
40
+ };
41
+ };
42
+ //# sourceMappingURL=useWalletAddresses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWalletAddresses.js","sourceRoot":"","sources":["../../../src/hooks/useWalletAddresses.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAa,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAU5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,MAAM,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAEnD,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE;QACrC,OAAQ,gBAA6B;aAClC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACZ,8CAA8C;YAC9C,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;YACzD,OAAO,CACL,SAAS,KAAK,UAAU;gBACxB,gBAAgB,KAAK,UAAU;gBAC/B,aAAa,KAAK,UAAU,IAAI,wCAAwC;gBACxE,aAAa,KAAK,UAAU,IAAI,iBAAiB;gBACjD,CAAC,SAAS,CAAC,iDAAiD;aAC7D,CAAC;QACJ,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE;QACnC,OAAQ,gBAA6B;aAClC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACZ,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC;YAC1C,OAAO,SAAS,KAAK,QAAQ,IAAI,gBAAgB,KAAK,QAAQ,CAAC;QACjE,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,OAAO;QACL,oCAAoC;QACpC,iBAAiB;QACjB,kCAAkC;QAClC,eAAe;QACf,+BAA+B;QAC/B,sBAAsB,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,IAAI;QACpD,6BAA6B;QAC7B,oBAAoB,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,IAAI;KACjD,CAAC;AACJ,CAAC,CAAC"}
@@ -2,7 +2,7 @@ export interface WalletBalance {
2
2
  ethereumBalance: string | null;
3
3
  solanaBalance: string | null;
4
4
  loading: boolean;
5
- error: Error | string | null;
5
+ error: string | null;
6
6
  refetchBalance: () => void;
7
7
  }
8
8
  export declare function useWalletBalance(): WalletBalance;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWalletBalance.d.ts","sourceRoot":"","sources":["../../../src/hooks/useWalletBalance.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CA+IhD"}
@@ -0,0 +1,147 @@
1
+ // ...existing code from previous stable version (single implementation only)...
2
+ import { useState, useEffect, useCallback, useRef } from "react";
3
+ import { useActiveWallet } from "./useActiveWallet";
4
+ export function useWalletBalance() {
5
+ const { activeWallet } = useActiveWallet();
6
+ const [ethereumBalance, setEthereumBalance] = useState(null);
7
+ const [solanaBalance, setSolanaBalance] = useState(null);
8
+ const [loading, setLoading] = useState(false);
9
+ const [error, setError] = useState(null);
10
+ const fetchingRef = useRef(false);
11
+ const fetchBalances = useCallback(async () => {
12
+ if (!activeWallet || fetchingRef.current) {
13
+ return;
14
+ }
15
+ fetchingRef.current = true;
16
+ setLoading(true);
17
+ setError(null);
18
+ try {
19
+ // For Ethereum wallets, try to get balance
20
+ if (activeWallet.address && activeWallet.getEthereumProvider) {
21
+ try {
22
+ // Try to get provider and fetch balance
23
+ const provider = await activeWallet.getEthereumProvider();
24
+ if (provider && provider.request) {
25
+ const balance = await provider.request({
26
+ method: "eth_getBalance",
27
+ params: [activeWallet.address, "latest"],
28
+ });
29
+ // Convert from hex wei to ETH
30
+ const balanceInWei = parseInt(balance, 16);
31
+ const balanceInEth = (balanceInWei / Math.pow(10, 18)).toFixed(4);
32
+ setEthereumBalance(balanceInEth);
33
+ }
34
+ else {
35
+ // If no provider available, set placeholder
36
+ setEthereumBalance("0.0000");
37
+ }
38
+ }
39
+ catch (providerError) {
40
+ console.log("Provider balance fetch failed, using placeholder:", providerError);
41
+ setEthereumBalance("0.0000");
42
+ }
43
+ }
44
+ else {
45
+ setEthereumBalance(null);
46
+ }
47
+ // Solana placeholder (Privy doesn't support Solana balances in React SDK yet)
48
+ setSolanaBalance(null);
49
+ }
50
+ catch (fetchError) {
51
+ console.error("Error fetching wallet balance:", fetchError);
52
+ setError("Failed to fetch balance");
53
+ setEthereumBalance(null);
54
+ setSolanaBalance(null);
55
+ }
56
+ finally {
57
+ setLoading(false);
58
+ fetchingRef.current = false;
59
+ }
60
+ }, [activeWallet?.address]);
61
+ // Reset balances when wallet changes
62
+ useEffect(() => {
63
+ let cancelled = false;
64
+ const safeSetEthereumBalance = (val) => {
65
+ if (!cancelled)
66
+ setEthereumBalance(val);
67
+ };
68
+ const safeSetSolanaBalance = (val) => {
69
+ if (!cancelled)
70
+ setSolanaBalance(val);
71
+ };
72
+ const safeSetError = (val) => {
73
+ if (!cancelled)
74
+ setError(val);
75
+ };
76
+ const safeSetLoading = (val) => {
77
+ if (!cancelled)
78
+ setLoading(val);
79
+ };
80
+ const fetchBalancesWithCancel = async () => {
81
+ if (!activeWallet || fetchingRef.current) {
82
+ return;
83
+ }
84
+ fetchingRef.current = true;
85
+ safeSetLoading(true);
86
+ safeSetError(null);
87
+ try {
88
+ // For Ethereum wallets, try to get balance
89
+ if (activeWallet.address && activeWallet.getEthereumProvider) {
90
+ try {
91
+ const provider = await activeWallet.getEthereumProvider();
92
+ if (provider && provider.request) {
93
+ const balance = await provider.request({
94
+ method: "eth_getBalance",
95
+ params: [activeWallet.address, "latest"],
96
+ });
97
+ const balanceInWei = parseInt(balance, 16);
98
+ const balanceInEth = (balanceInWei / Math.pow(10, 18)).toFixed(4);
99
+ safeSetEthereumBalance(balanceInEth);
100
+ }
101
+ else {
102
+ safeSetEthereumBalance("0.0000");
103
+ }
104
+ }
105
+ catch (providerError) {
106
+ console.log("Provider balance fetch failed, using placeholder:", providerError);
107
+ safeSetEthereumBalance("0.0000");
108
+ }
109
+ }
110
+ else {
111
+ safeSetEthereumBalance(null);
112
+ }
113
+ // Solana placeholder
114
+ safeSetSolanaBalance(null);
115
+ }
116
+ catch (fetchError) {
117
+ console.error("Error fetching wallet balance:", fetchError);
118
+ safeSetError("Failed to fetch balance");
119
+ safeSetEthereumBalance(null);
120
+ safeSetSolanaBalance(null);
121
+ }
122
+ finally {
123
+ safeSetLoading(false);
124
+ fetchingRef.current = false;
125
+ }
126
+ };
127
+ if (activeWallet?.address) {
128
+ fetchBalancesWithCancel();
129
+ }
130
+ else {
131
+ safeSetEthereumBalance(null);
132
+ safeSetSolanaBalance(null);
133
+ safeSetError(null);
134
+ }
135
+ return () => {
136
+ cancelled = true;
137
+ };
138
+ }, [activeWallet?.address]);
139
+ return {
140
+ ethereumBalance,
141
+ solanaBalance,
142
+ loading,
143
+ error,
144
+ refetchBalance: fetchBalances,
145
+ };
146
+ }
147
+ //# sourceMappingURL=useWalletBalance.js.map