@oxyhq/services 0.0.85 → 0.1.1

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 (144) hide show
  1. package/README.md +165 -81
  2. package/dist/backend/auth.d.ts +37 -0
  3. package/dist/backend/auth.js +81 -0
  4. package/dist/backend/index.d.ts +12 -0
  5. package/dist/backend/index.js +20 -0
  6. package/dist/backend/karma.d.ts +45 -0
  7. package/dist/backend/karma.js +83 -0
  8. package/dist/backend/users.d.ts +39 -0
  9. package/dist/backend/users.js +87 -0
  10. package/dist/backend/wallet.d.ts +29 -0
  11. package/dist/backend/wallet.js +68 -0
  12. package/dist/bundle.js +2 -0
  13. package/dist/bundle.js.LICENSE.txt +1 -0
  14. package/dist/frontend/context/OxyContext.d.ts +20 -0
  15. package/dist/frontend/context/OxyContext.js +97 -0
  16. package/dist/frontend/hooks/useAuth.d.ts +19 -0
  17. package/dist/frontend/hooks/useAuth.js +234 -0
  18. package/dist/frontend/hooks/useKarma.d.ts +27 -0
  19. package/dist/frontend/hooks/useKarma.js +187 -0
  20. package/dist/frontend/hooks/useUser.d.ts +13 -0
  21. package/dist/frontend/hooks/useUser.js +136 -0
  22. package/dist/frontend/hooks/useWallet.d.ts +14 -0
  23. package/dist/frontend/hooks/useWallet.js +174 -0
  24. package/dist/frontend/index.d.ts +6 -0
  25. package/dist/frontend/index.js +14 -0
  26. package/dist/index.d.ts +3 -7
  27. package/dist/index.js +33 -6
  28. package/dist/shared/api-client.d.ts +15 -0
  29. package/dist/shared/api-client.js +197 -0
  30. package/dist/shared/types.d.ts +135 -0
  31. package/dist/shared/types.js +2 -0
  32. package/package.json +43 -57
  33. package/dist/assets/dot-icon.d.ts +0 -3
  34. package/dist/assets/dot-icon.d.ts.map +0 -1
  35. package/dist/assets/dot-icon.js +0 -6
  36. package/dist/assets/verified-icon.d.ts +0 -3
  37. package/dist/assets/verified-icon.d.ts.map +0 -1
  38. package/dist/assets/verified-icon.js +0 -10
  39. package/dist/components/assets/oxy-logo.d.ts +0 -3
  40. package/dist/components/assets/oxy-logo.d.ts.map +0 -1
  41. package/dist/components/assets/oxy-logo.js +0 -30
  42. package/dist/components/auth/AccountSwitcherModal.d.ts +0 -7
  43. package/dist/components/auth/AccountSwitcherModal.d.ts.map +0 -1
  44. package/dist/components/auth/AccountSwitcherModal.js +0 -91
  45. package/dist/components/auth/SessionOwnerButton.d.ts +0 -3
  46. package/dist/components/auth/SessionOwnerButton.d.ts.map +0 -1
  47. package/dist/components/auth/SessionOwnerButton.js +0 -35
  48. package/dist/components/auth/SignInButton.d.ts +0 -8
  49. package/dist/components/auth/SignInButton.d.ts.map +0 -1
  50. package/dist/components/auth/SignInButton.js +0 -15
  51. package/dist/components/auth/styles/account-switcher-modal.module.css +0 -29
  52. package/dist/components/auth/styles/account-switcher-modal.module.css.map +0 -1
  53. package/dist/components/auth/styles/oavatar.module.css +0 -34
  54. package/dist/components/auth/styles/oavatar.module.css.map +0 -1
  55. package/dist/components/auth/styles/session-owner-modal.module.css +0 -35
  56. package/dist/components/auth/styles/session-owner-modal.module.css.map +0 -1
  57. package/dist/components/auth/styles/sign-in-button.module.css +0 -30
  58. package/dist/components/auth/styles/sign-in-button.module.css.map +0 -1
  59. package/dist/components/elements/button/components/button.d.ts +0 -7
  60. package/dist/components/elements/button/components/button.d.ts.map +0 -1
  61. package/dist/components/elements/button/components/button.js +0 -6
  62. package/dist/components/elements/button/components/styles/button.module.css +0 -25
  63. package/dist/components/elements/button/components/styles/button.module.css.map +0 -1
  64. package/dist/components/elements/button/index.d.ts +0 -2
  65. package/dist/components/elements/button/index.d.ts.map +0 -1
  66. package/dist/components/elements/button/index.js +0 -1
  67. package/dist/components/elements/ellipsis-wrapper/components/EllipsisWrapper.d.ts +0 -5
  68. package/dist/components/elements/ellipsis-wrapper/components/EllipsisWrapper.d.ts.map +0 -1
  69. package/dist/components/elements/ellipsis-wrapper/components/EllipsisWrapper.js +0 -4
  70. package/dist/components/elements/ellipsis-wrapper/components/ellipsis-wrapper.d.ts +0 -5
  71. package/dist/components/elements/ellipsis-wrapper/components/ellipsis-wrapper.d.ts.map +0 -1
  72. package/dist/components/elements/ellipsis-wrapper/components/ellipsis-wrapper.js +0 -4
  73. package/dist/components/elements/ellipsis-wrapper/components/styles/ellipses-wrapper.module.css +0 -11
  74. package/dist/components/elements/ellipsis-wrapper/components/styles/ellipses-wrapper.module.css.map +0 -1
  75. package/dist/components/elements/ellipsis-wrapper/index.d.ts +0 -2
  76. package/dist/components/elements/ellipsis-wrapper/index.d.ts.map +0 -1
  77. package/dist/components/elements/ellipsis-wrapper/index.js +0 -1
  78. package/dist/components/elements/modal/components/confirmation-modal.d.ts +0 -12
  79. package/dist/components/elements/modal/components/confirmation-modal.d.ts.map +0 -1
  80. package/dist/components/elements/modal/components/confirmation-modal.js +0 -21
  81. package/dist/components/elements/modal/components/modal.d.ts +0 -13
  82. package/dist/components/elements/modal/components/modal.d.ts.map +0 -1
  83. package/dist/components/elements/modal/components/modal.js +0 -111
  84. package/dist/components/elements/modal/components/styles/confirmation-modal.module.css +0 -105
  85. package/dist/components/elements/modal/components/styles/confirmation-modal.module.css.map +0 -1
  86. package/dist/components/elements/modal/components/styles/modal.module.css +0 -10
  87. package/dist/components/elements/modal/components/styles/modal.module.css.map +0 -1
  88. package/dist/components/elements/modal/hooks/use-track-position.d.ts +0 -5
  89. package/dist/components/elements/modal/hooks/use-track-position.d.ts.map +0 -1
  90. package/dist/components/elements/modal/hooks/use-track-position.js +0 -35
  91. package/dist/components/elements/modal/index.d.ts +0 -4
  92. package/dist/components/elements/modal/index.d.ts.map +0 -1
  93. package/dist/components/elements/modal/index.js +0 -3
  94. package/dist/config/index.d.ts +0 -21
  95. package/dist/config/index.d.ts.map +0 -1
  96. package/dist/config/index.js +0 -7
  97. package/dist/features/profile/components/avatar.d.ts +0 -10
  98. package/dist/features/profile/components/avatar.d.ts.map +0 -1
  99. package/dist/features/profile/components/avatar.js +0 -7
  100. package/dist/features/profile/components/styles/avatar.module.css +0 -15
  101. package/dist/features/profile/components/styles/avatar.module.css.map +0 -1
  102. package/dist/features/profile/components/styles/user-name.module.css +0 -18
  103. package/dist/features/profile/components/styles/user-name.module.css.map +0 -1
  104. package/dist/features/profile/components/styles/user-username.module.css +0 -6
  105. package/dist/features/profile/components/styles/user-username.module.css.map +0 -1
  106. package/dist/features/profile/components/user-name.d.ts +0 -7
  107. package/dist/features/profile/components/user-name.d.ts.map +0 -1
  108. package/dist/features/profile/components/user-name.js +0 -8
  109. package/dist/features/profile/components/user-username.d.ts +0 -5
  110. package/dist/features/profile/components/user-username.d.ts.map +0 -1
  111. package/dist/features/profile/components/user-username.js +0 -7
  112. package/dist/features/profile/index.d.ts +0 -4
  113. package/dist/features/profile/index.d.ts.map +0 -1
  114. package/dist/features/profile/index.js +0 -3
  115. package/dist/hooks/get-user.d.ts +0 -2
  116. package/dist/hooks/get-user.d.ts.map +0 -1
  117. package/dist/hooks/get-user.js +0 -31
  118. package/dist/hooks/getClientKey.d.ts +0 -2
  119. package/dist/hooks/getClientKey.d.ts.map +0 -1
  120. package/dist/hooks/getClientKey.js +0 -19
  121. package/dist/hooks/getUserById.d.ts +0 -11
  122. package/dist/hooks/getUserById.d.ts.map +0 -1
  123. package/dist/hooks/getUserById.js +0 -31
  124. package/dist/hooks/use-user.d.ts +0 -14
  125. package/dist/hooks/use-user.d.ts.map +0 -1
  126. package/dist/hooks/use-user.js +0 -8
  127. package/dist/hooks/useCrossDomainStorage.d.ts +0 -6
  128. package/dist/hooks/useCrossDomainStorage.d.ts.map +0 -1
  129. package/dist/hooks/useCrossDomainStorage.js +0 -24
  130. package/dist/hooks/useOxySession.d.ts +0 -30
  131. package/dist/hooks/useOxySession.d.ts.map +0 -1
  132. package/dist/hooks/useOxySession.js +0 -64
  133. package/dist/index.css +0 -5
  134. package/dist/index.css.map +0 -1
  135. package/dist/index.d.ts.map +0 -1
  136. package/dist/interfaces/index.d.ts +0 -10
  137. package/dist/interfaces/index.d.ts.map +0 -1
  138. package/dist/interfaces/index.js +0 -1
  139. package/dist/types/index.d.ts +0 -2
  140. package/dist/types/index.d.ts.map +0 -1
  141. package/dist/types/index.js +0 -1
  142. package/dist/utils/cn.d.ts +0 -3
  143. package/dist/utils/cn.d.ts.map +0 -1
  144. package/dist/utils/cn.js +0 -5
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useKarma = void 0;
4
+ const react_1 = require("react");
5
+ const api_client_1 = require("../../shared/api-client");
6
+ const OxyContext_1 = require("../context/OxyContext");
7
+ const useKarma = (options) => {
8
+ const context = (0, OxyContext_1.useOxyContext)();
9
+ const apiUrl = (options === null || options === void 0 ? void 0 : options.apiUrl) || context.apiUrl;
10
+ const getToken = (options === null || options === void 0 ? void 0 : options.getToken) || context.getToken;
11
+ if (!apiUrl) {
12
+ throw new Error('API URL is required. Provide it either through options or OxyProvider.');
13
+ }
14
+ const [apiClient] = (0, react_1.useState)(() => new api_client_1.ApiClient({
15
+ apiUrl,
16
+ }));
17
+ // Get a user's karma total
18
+ const getUserKarma = (0, react_1.useCallback)(async (userId) => {
19
+ try {
20
+ return await apiClient.request({
21
+ method: 'GET',
22
+ url: `/karma/${userId}/total`,
23
+ headers: getToken ? {
24
+ Authorization: `Bearer ${getToken() || ''}`
25
+ } : undefined
26
+ });
27
+ }
28
+ catch (error) {
29
+ return {
30
+ success: false,
31
+ error: error.message || 'Failed to get karma'
32
+ };
33
+ }
34
+ }, [apiClient, getToken]);
35
+ // Get a user's karma history
36
+ const getUserKarmaHistory = (0, react_1.useCallback)(async (userId, limit, offset) => {
37
+ try {
38
+ if (!getToken) {
39
+ return {
40
+ success: false,
41
+ error: 'Authentication token is required'
42
+ };
43
+ }
44
+ const params = {};
45
+ if (limit !== undefined)
46
+ params.limit = limit.toString();
47
+ if (offset !== undefined)
48
+ params.offset = offset.toString();
49
+ return await apiClient.request({
50
+ method: 'GET',
51
+ url: `/karma/${userId}/history`,
52
+ params,
53
+ headers: {
54
+ Authorization: `Bearer ${getToken() || ''}`
55
+ }
56
+ });
57
+ }
58
+ catch (error) {
59
+ return {
60
+ success: false,
61
+ error: error.message || 'Failed to get karma history'
62
+ };
63
+ }
64
+ }, [apiClient, getToken]);
65
+ // Award karma to a user
66
+ const awardKarma = (0, react_1.useCallback)(async (karmaAction) => {
67
+ try {
68
+ if (!getToken) {
69
+ return {
70
+ success: false,
71
+ error: 'Authentication token is required'
72
+ };
73
+ }
74
+ return await apiClient.request({
75
+ method: 'POST',
76
+ url: '/karma/award',
77
+ data: karmaAction,
78
+ headers: {
79
+ Authorization: `Bearer ${getToken() || ''}`
80
+ }
81
+ });
82
+ }
83
+ catch (error) {
84
+ return {
85
+ success: false,
86
+ error: error.message || 'Failed to award karma'
87
+ };
88
+ }
89
+ }, [apiClient, getToken]);
90
+ // Deduct karma from a user
91
+ const deductKarma = (0, react_1.useCallback)(async (karmaAction) => {
92
+ try {
93
+ if (!getToken) {
94
+ return {
95
+ success: false,
96
+ error: 'Authentication token is required'
97
+ };
98
+ }
99
+ return await apiClient.request({
100
+ method: 'POST',
101
+ url: '/karma/deduct',
102
+ data: karmaAction,
103
+ headers: {
104
+ Authorization: `Bearer ${getToken() || ''}`
105
+ }
106
+ });
107
+ }
108
+ catch (error) {
109
+ return {
110
+ success: false,
111
+ error: error.message || 'Failed to deduct karma'
112
+ };
113
+ }
114
+ }, [apiClient, getToken]);
115
+ // Get karma leaderboard
116
+ const getKarmaLeaderboard = (0, react_1.useCallback)(async (limit = 10, offset = 0) => {
117
+ try {
118
+ return await apiClient.request({
119
+ method: 'GET',
120
+ url: '/karma/leaderboard',
121
+ params: { limit, offset },
122
+ headers: getToken ? {
123
+ Authorization: `Bearer ${getToken() || ''}`
124
+ } : undefined
125
+ });
126
+ }
127
+ catch (error) {
128
+ return {
129
+ success: false,
130
+ error: error.message || 'Failed to get karma leaderboard'
131
+ };
132
+ }
133
+ }, [apiClient, getToken]);
134
+ // Get karma rules
135
+ const getKarmaRules = (0, react_1.useCallback)(async () => {
136
+ try {
137
+ return await apiClient.request({
138
+ method: 'GET',
139
+ url: '/karma/rules',
140
+ headers: getToken ? {
141
+ Authorization: `Bearer ${getToken() || ''}`
142
+ } : undefined
143
+ });
144
+ }
145
+ catch (error) {
146
+ return {
147
+ success: false,
148
+ error: error.message || 'Failed to get karma rules'
149
+ };
150
+ }
151
+ }, [apiClient, getToken]);
152
+ // Admin only: Create or update karma rule
153
+ const createOrUpdateKarmaRule = (0, react_1.useCallback)(async (rule) => {
154
+ try {
155
+ if (!getToken) {
156
+ return {
157
+ success: false,
158
+ error: 'Authentication token is required'
159
+ };
160
+ }
161
+ return await apiClient.request({
162
+ method: 'POST',
163
+ url: '/karma/rules',
164
+ data: rule,
165
+ headers: {
166
+ Authorization: `Bearer ${getToken() || ''}`
167
+ }
168
+ });
169
+ }
170
+ catch (error) {
171
+ return {
172
+ success: false,
173
+ error: error.message || 'Failed to create or update karma rule'
174
+ };
175
+ }
176
+ }, [apiClient, getToken]);
177
+ return {
178
+ getUserKarma,
179
+ getUserKarmaHistory,
180
+ awardKarma,
181
+ deductKarma,
182
+ getKarmaLeaderboard,
183
+ getKarmaRules,
184
+ createOrUpdateKarmaRule
185
+ };
186
+ };
187
+ exports.useKarma = useKarma;
@@ -0,0 +1,13 @@
1
+ import { ApiResponse, UserProfile, PrivacySettings } from '../../shared/types';
2
+ interface UseUserOptions {
3
+ apiUrl?: string;
4
+ getToken?: () => string | null;
5
+ }
6
+ export declare const useUser: (options?: UseUserOptions) => {
7
+ getUserById: (userId: string) => Promise<ApiResponse<UserProfile>>;
8
+ updateUserProfile: (userId: string, profileData: Partial<UserProfile>) => Promise<ApiResponse<UserProfile>>;
9
+ getPrivacySettings: (userId: string) => Promise<ApiResponse<PrivacySettings>>;
10
+ updatePrivacySettings: (userId: string, settings: Partial<PrivacySettings>) => Promise<ApiResponse<PrivacySettings>>;
11
+ searchUsers: (query: string, limit?: number) => Promise<ApiResponse<UserProfile[]>>;
12
+ };
13
+ export {};
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useUser = void 0;
4
+ const react_1 = require("react");
5
+ const api_client_1 = require("../../shared/api-client");
6
+ const OxyContext_1 = require("../context/OxyContext");
7
+ const useUser = (options) => {
8
+ const context = (0, OxyContext_1.useOxyContext)();
9
+ const apiUrl = (options === null || options === void 0 ? void 0 : options.apiUrl) || context.apiUrl;
10
+ const getToken = (options === null || options === void 0 ? void 0 : options.getToken) || context.getToken;
11
+ if (!apiUrl) {
12
+ throw new Error('API URL is required. Provide it either through options or OxyProvider.');
13
+ }
14
+ const [apiClient] = (0, react_1.useState)(() => new api_client_1.ApiClient({
15
+ apiUrl,
16
+ }));
17
+ // Get a user's profile by ID
18
+ const getUserById = (0, react_1.useCallback)(async (userId) => {
19
+ try {
20
+ return await apiClient.request({
21
+ method: 'GET',
22
+ url: `/users/${userId}`,
23
+ headers: getToken ? {
24
+ Authorization: `Bearer ${getToken() || ''}`
25
+ } : undefined
26
+ });
27
+ }
28
+ catch (error) {
29
+ return {
30
+ success: false,
31
+ error: error.message || 'Failed to get user profile'
32
+ };
33
+ }
34
+ }, [apiClient, getToken]);
35
+ // Update a user's profile
36
+ const updateUserProfile = (0, react_1.useCallback)(async (userId, profileData) => {
37
+ try {
38
+ if (!getToken) {
39
+ return {
40
+ success: false,
41
+ error: 'Authentication token is required'
42
+ };
43
+ }
44
+ return await apiClient.request({
45
+ method: 'PATCH',
46
+ url: `/users/${userId}`,
47
+ data: profileData,
48
+ headers: {
49
+ Authorization: `Bearer ${getToken() || ''}`
50
+ }
51
+ });
52
+ }
53
+ catch (error) {
54
+ return {
55
+ success: false,
56
+ error: error.message || 'Failed to update user profile'
57
+ };
58
+ }
59
+ }, [apiClient, getToken]);
60
+ // Get a user's privacy settings
61
+ const getPrivacySettings = (0, react_1.useCallback)(async (userId) => {
62
+ try {
63
+ if (!getToken) {
64
+ return {
65
+ success: false,
66
+ error: 'Authentication token is required'
67
+ };
68
+ }
69
+ return await apiClient.request({
70
+ method: 'GET',
71
+ url: `/privacy/${userId}`,
72
+ headers: {
73
+ Authorization: `Bearer ${getToken() || ''}`
74
+ }
75
+ });
76
+ }
77
+ catch (error) {
78
+ return {
79
+ success: false,
80
+ error: error.message || 'Failed to get privacy settings'
81
+ };
82
+ }
83
+ }, [apiClient, getToken]);
84
+ // Update a user's privacy settings
85
+ const updatePrivacySettings = (0, react_1.useCallback)(async (userId, settings) => {
86
+ try {
87
+ if (!getToken) {
88
+ return {
89
+ success: false,
90
+ error: 'Authentication token is required'
91
+ };
92
+ }
93
+ return await apiClient.request({
94
+ method: 'PATCH',
95
+ url: `/privacy/${userId}`,
96
+ data: settings,
97
+ headers: {
98
+ Authorization: `Bearer ${getToken() || ''}`
99
+ }
100
+ });
101
+ }
102
+ catch (error) {
103
+ return {
104
+ success: false,
105
+ error: error.message || 'Failed to update privacy settings'
106
+ };
107
+ }
108
+ }, [apiClient, getToken]);
109
+ // Search for users
110
+ const searchUsers = (0, react_1.useCallback)(async (query, limit = 10) => {
111
+ try {
112
+ return await apiClient.request({
113
+ method: 'GET',
114
+ url: '/users/search',
115
+ params: { query, limit },
116
+ headers: getToken ? {
117
+ Authorization: `Bearer ${getToken() || ''}`
118
+ } : undefined
119
+ });
120
+ }
121
+ catch (error) {
122
+ return {
123
+ success: false,
124
+ error: error.message || 'Failed to search users'
125
+ };
126
+ }
127
+ }, [apiClient, getToken]);
128
+ return {
129
+ getUserById,
130
+ updateUserProfile,
131
+ getPrivacySettings,
132
+ updatePrivacySettings,
133
+ searchUsers
134
+ };
135
+ };
136
+ exports.useUser = useUser;
@@ -0,0 +1,14 @@
1
+ import { ApiResponse, WalletInfo, TransactionInfo, TransferRequest, PurchaseRequest, WithdrawalRequest } from '../../shared/types';
2
+ interface UseWalletOptions {
3
+ apiUrl?: string;
4
+ getToken?: () => string | null;
5
+ }
6
+ export declare const useWallet: (options?: UseWalletOptions) => {
7
+ getWallet: (userId: string) => Promise<ApiResponse<WalletInfo>>;
8
+ getTransactionHistory: (userId: string, limit?: number, offset?: number) => Promise<ApiResponse<TransactionInfo[]>>;
9
+ transferFunds: (transferRequest: TransferRequest) => Promise<ApiResponse<TransactionInfo>>;
10
+ processPurchase: (purchaseRequest: PurchaseRequest) => Promise<ApiResponse<TransactionInfo>>;
11
+ requestWithdrawal: (withdrawalRequest: WithdrawalRequest) => Promise<ApiResponse<TransactionInfo>>;
12
+ getTransaction: (transactionId: string) => Promise<ApiResponse<TransactionInfo>>;
13
+ };
14
+ export {};
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useWallet = void 0;
4
+ const react_1 = require("react");
5
+ const api_client_1 = require("../../shared/api-client");
6
+ const OxyContext_1 = require("../context/OxyContext");
7
+ const useWallet = (options) => {
8
+ const context = (0, OxyContext_1.useOxyContext)();
9
+ const apiUrl = (options === null || options === void 0 ? void 0 : options.apiUrl) || context.apiUrl;
10
+ const getToken = (options === null || options === void 0 ? void 0 : options.getToken) || context.getToken;
11
+ if (!apiUrl) {
12
+ throw new Error('API URL is required. Provide it either through options or OxyProvider.');
13
+ }
14
+ const [apiClient] = (0, react_1.useState)(() => new api_client_1.ApiClient({
15
+ apiUrl,
16
+ }));
17
+ // Get wallet information for the current user
18
+ const getWallet = (0, react_1.useCallback)(async (userId) => {
19
+ try {
20
+ if (!getToken) {
21
+ return {
22
+ success: false,
23
+ error: 'Authentication token is required'
24
+ };
25
+ }
26
+ return await apiClient.request({
27
+ method: 'GET',
28
+ url: `/wallet/${userId}`,
29
+ headers: {
30
+ Authorization: `Bearer ${getToken() || ''}`
31
+ }
32
+ });
33
+ }
34
+ catch (error) {
35
+ return {
36
+ success: false,
37
+ error: error.message || 'Failed to get wallet information'
38
+ };
39
+ }
40
+ }, [apiClient, getToken]);
41
+ // Get transaction history
42
+ const getTransactionHistory = (0, react_1.useCallback)(async (userId, limit = 10, offset = 0) => {
43
+ try {
44
+ if (!getToken) {
45
+ return {
46
+ success: false,
47
+ error: 'Authentication token is required'
48
+ };
49
+ }
50
+ return await apiClient.request({
51
+ method: 'GET',
52
+ url: `/wallet/transactions/${userId}`,
53
+ params: { limit, offset },
54
+ headers: {
55
+ Authorization: `Bearer ${getToken() || ''}`
56
+ }
57
+ });
58
+ }
59
+ catch (error) {
60
+ return {
61
+ success: false,
62
+ error: error.message || 'Failed to get transaction history'
63
+ };
64
+ }
65
+ }, [apiClient, getToken]);
66
+ // Transfer funds to another user
67
+ const transferFunds = (0, react_1.useCallback)(async (transferRequest) => {
68
+ try {
69
+ if (!getToken) {
70
+ return {
71
+ success: false,
72
+ error: 'Authentication token is required'
73
+ };
74
+ }
75
+ return await apiClient.request({
76
+ method: 'POST',
77
+ url: '/wallet/transfer',
78
+ data: transferRequest,
79
+ headers: {
80
+ Authorization: `Bearer ${getToken() || ''}`
81
+ }
82
+ });
83
+ }
84
+ catch (error) {
85
+ return {
86
+ success: false,
87
+ error: error.message || 'Failed to transfer funds'
88
+ };
89
+ }
90
+ }, [apiClient, getToken]);
91
+ // Process a purchase
92
+ const processPurchase = (0, react_1.useCallback)(async (purchaseRequest) => {
93
+ try {
94
+ if (!getToken) {
95
+ return {
96
+ success: false,
97
+ error: 'Authentication token is required'
98
+ };
99
+ }
100
+ return await apiClient.request({
101
+ method: 'POST',
102
+ url: '/wallet/purchase',
103
+ data: purchaseRequest,
104
+ headers: {
105
+ Authorization: `Bearer ${getToken() || ''}`
106
+ }
107
+ });
108
+ }
109
+ catch (error) {
110
+ return {
111
+ success: false,
112
+ error: error.message || 'Failed to process purchase'
113
+ };
114
+ }
115
+ }, [apiClient, getToken]);
116
+ // Request a withdrawal
117
+ const requestWithdrawal = (0, react_1.useCallback)(async (withdrawalRequest) => {
118
+ try {
119
+ if (!getToken) {
120
+ return {
121
+ success: false,
122
+ error: 'Authentication token is required'
123
+ };
124
+ }
125
+ return await apiClient.request({
126
+ method: 'POST',
127
+ url: '/wallet/withdraw',
128
+ data: withdrawalRequest,
129
+ headers: {
130
+ Authorization: `Bearer ${getToken() || ''}`
131
+ }
132
+ });
133
+ }
134
+ catch (error) {
135
+ return {
136
+ success: false,
137
+ error: error.message || 'Failed to request withdrawal'
138
+ };
139
+ }
140
+ }, [apiClient, getToken]);
141
+ // Get a specific transaction
142
+ const getTransaction = (0, react_1.useCallback)(async (transactionId) => {
143
+ try {
144
+ if (!getToken) {
145
+ return {
146
+ success: false,
147
+ error: 'Authentication token is required'
148
+ };
149
+ }
150
+ return await apiClient.request({
151
+ method: 'GET',
152
+ url: `/wallet/transaction/${transactionId}`,
153
+ headers: {
154
+ Authorization: `Bearer ${getToken() || ''}`
155
+ }
156
+ });
157
+ }
158
+ catch (error) {
159
+ return {
160
+ success: false,
161
+ error: error.message || 'Failed to get transaction'
162
+ };
163
+ }
164
+ }, [apiClient, getToken]);
165
+ return {
166
+ getWallet,
167
+ getTransactionHistory,
168
+ transferFunds,
169
+ processPurchase,
170
+ requestWithdrawal,
171
+ getTransaction
172
+ };
173
+ };
174
+ exports.useWallet = useWallet;
@@ -0,0 +1,6 @@
1
+ import { useAuth } from './hooks/useAuth';
2
+ import { useUser } from './hooks/useUser';
3
+ import { useKarma } from './hooks/useKarma';
4
+ import { useWallet } from './hooks/useWallet';
5
+ import { OxyProvider, useOxyContext } from './context/OxyContext';
6
+ export { useAuth, useUser, useKarma, useWallet, OxyProvider, useOxyContext };
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useOxyContext = exports.OxyProvider = exports.useWallet = exports.useKarma = exports.useUser = exports.useAuth = void 0;
4
+ const useAuth_1 = require("./hooks/useAuth");
5
+ Object.defineProperty(exports, "useAuth", { enumerable: true, get: function () { return useAuth_1.useAuth; } });
6
+ const useUser_1 = require("./hooks/useUser");
7
+ Object.defineProperty(exports, "useUser", { enumerable: true, get: function () { return useUser_1.useUser; } });
8
+ const useKarma_1 = require("./hooks/useKarma");
9
+ Object.defineProperty(exports, "useKarma", { enumerable: true, get: function () { return useKarma_1.useKarma; } });
10
+ const useWallet_1 = require("./hooks/useWallet");
11
+ Object.defineProperty(exports, "useWallet", { enumerable: true, get: function () { return useWallet_1.useWallet; } });
12
+ const OxyContext_1 = require("./context/OxyContext");
13
+ Object.defineProperty(exports, "OxyProvider", { enumerable: true, get: function () { return OxyContext_1.OxyProvider; } });
14
+ Object.defineProperty(exports, "useOxyContext", { enumerable: true, get: function () { return OxyContext_1.useOxyContext; } });
package/dist/index.d.ts CHANGED
@@ -1,7 +1,3 @@
1
- import useOxySession from "./hooks/useOxySession";
2
- import getUserById from "./hooks/getUserById";
3
- import SignInButton from "./components/auth/SignInButton";
4
- import { AccountSwitcherModal } from "./components/auth/AccountSwitcherModal";
5
- import { SessionOwnerButton } from "./components/auth/SessionOwnerButton";
6
- export { useOxySession, getUserById, SignInButton, AccountSwitcherModal, SessionOwnerButton, };
7
- //# sourceMappingURL=index.d.ts.map
1
+ export * from './shared/types';
2
+ export { OxyAuthBackend, OxyUsersBackend, OxyKarmaBackend, OxyWalletBackend } from './backend';
3
+ export { useAuth, useUser, useKarma, useWallet, OxyProvider, useOxyContext } from './frontend';
package/dist/index.js CHANGED
@@ -1,6 +1,33 @@
1
- import useOxySession from "./hooks/useOxySession";
2
- import getUserById from "./hooks/getUserById";
3
- import SignInButton from "./components/auth/SignInButton";
4
- import { AccountSwitcherModal } from "./components/auth/AccountSwitcherModal";
5
- import { SessionOwnerButton } from "./components/auth/SessionOwnerButton";
6
- export { useOxySession, getUserById, SignInButton, AccountSwitcherModal, SessionOwnerButton, };
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.useOxyContext = exports.OxyProvider = exports.useWallet = exports.useKarma = exports.useUser = exports.useAuth = exports.OxyWalletBackend = exports.OxyKarmaBackend = exports.OxyUsersBackend = exports.OxyAuthBackend = void 0;
18
+ // Export types
19
+ __exportStar(require("./shared/types"), exports);
20
+ // Export backend services
21
+ var backend_1 = require("./backend");
22
+ Object.defineProperty(exports, "OxyAuthBackend", { enumerable: true, get: function () { return backend_1.OxyAuthBackend; } });
23
+ Object.defineProperty(exports, "OxyUsersBackend", { enumerable: true, get: function () { return backend_1.OxyUsersBackend; } });
24
+ Object.defineProperty(exports, "OxyKarmaBackend", { enumerable: true, get: function () { return backend_1.OxyKarmaBackend; } });
25
+ Object.defineProperty(exports, "OxyWalletBackend", { enumerable: true, get: function () { return backend_1.OxyWalletBackend; } });
26
+ // Export frontend hooks and context
27
+ var frontend_1 = require("./frontend");
28
+ Object.defineProperty(exports, "useAuth", { enumerable: true, get: function () { return frontend_1.useAuth; } });
29
+ Object.defineProperty(exports, "useUser", { enumerable: true, get: function () { return frontend_1.useUser; } });
30
+ Object.defineProperty(exports, "useKarma", { enumerable: true, get: function () { return frontend_1.useKarma; } });
31
+ Object.defineProperty(exports, "useWallet", { enumerable: true, get: function () { return frontend_1.useWallet; } });
32
+ Object.defineProperty(exports, "OxyProvider", { enumerable: true, get: function () { return frontend_1.OxyProvider; } });
33
+ Object.defineProperty(exports, "useOxyContext", { enumerable: true, get: function () { return frontend_1.useOxyContext; } });
@@ -0,0 +1,15 @@
1
+ import { AxiosRequestConfig } from 'axios';
2
+ import { ApiResponse, AuthTokens, OxyAuthConfig } from './types';
3
+ export declare class ApiClient {
4
+ private axiosInstance;
5
+ private config;
6
+ private tokenRefreshTimeout?;
7
+ constructor(config: OxyAuthConfig);
8
+ request<T>(config: AxiosRequestConfig): Promise<ApiResponse<T>>;
9
+ private getAccessToken;
10
+ private getRefreshToken;
11
+ storeTokens(tokens: AuthTokens): void;
12
+ clearTokens(): void;
13
+ private refreshToken;
14
+ private setupTokenRefresh;
15
+ }