@johnqh/indexer_client 0.0.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 (74) hide show
  1. package/README.md +576 -0
  2. package/dist/business/index.d.ts +2 -0
  3. package/dist/business/index.d.ts.map +1 -0
  4. package/dist/business/index.js +2 -0
  5. package/dist/business/index.js.map +1 -0
  6. package/dist/business/indexer-service.d.ts +27 -0
  7. package/dist/business/indexer-service.d.ts.map +1 -0
  8. package/dist/business/indexer-service.js +74 -0
  9. package/dist/business/indexer-service.js.map +1 -0
  10. package/dist/hooks/index.d.ts +9 -0
  11. package/dist/hooks/index.d.ts.map +1 -0
  12. package/dist/hooks/index.js +9 -0
  13. package/dist/hooks/index.js.map +1 -0
  14. package/dist/hooks/mocks.d.ts +15 -0
  15. package/dist/hooks/mocks.d.ts.map +1 -0
  16. package/dist/hooks/mocks.js +163 -0
  17. package/dist/hooks/mocks.js.map +1 -0
  18. package/dist/hooks/useIndexerMail.d.ts +20 -0
  19. package/dist/hooks/useIndexerMail.d.ts.map +1 -0
  20. package/dist/hooks/useIndexerMail.js +160 -0
  21. package/dist/hooks/useIndexerMail.js.map +1 -0
  22. package/dist/hooks/useIndexerNameService.d.ts +5 -0
  23. package/dist/hooks/useIndexerNameService.d.ts.map +1 -0
  24. package/dist/hooks/useIndexerNameService.js +30 -0
  25. package/dist/hooks/useIndexerNameService.js.map +1 -0
  26. package/dist/hooks/useIndexerPoints.d.ts +10 -0
  27. package/dist/hooks/useIndexerPoints.d.ts.map +1 -0
  28. package/dist/hooks/useIndexerPoints.js +100 -0
  29. package/dist/hooks/useIndexerPoints.js.map +1 -0
  30. package/dist/hooks/useReferralCode.d.ts +11 -0
  31. package/dist/hooks/useReferralCode.d.ts.map +1 -0
  32. package/dist/hooks/useReferralCode.js +42 -0
  33. package/dist/hooks/useReferralCode.js.map +1 -0
  34. package/dist/hooks/useReferralConsumption.d.ts +9 -0
  35. package/dist/hooks/useReferralConsumption.d.ts.map +1 -0
  36. package/dist/hooks/useReferralConsumption.js +49 -0
  37. package/dist/hooks/useReferralConsumption.js.map +1 -0
  38. package/dist/hooks/useReferralShare.d.ts +7 -0
  39. package/dist/hooks/useReferralShare.d.ts.map +1 -0
  40. package/dist/hooks/useReferralShare.js +18 -0
  41. package/dist/hooks/useReferralShare.js.map +1 -0
  42. package/dist/hooks/useReferralStats.d.ts +11 -0
  43. package/dist/hooks/useReferralStats.d.ts.map +1 -0
  44. package/dist/hooks/useReferralStats.js +42 -0
  45. package/dist/hooks/useReferralStats.js.map +1 -0
  46. package/dist/index.d.ts +11 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +5 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/network/IndexerClient.d.ts +77 -0
  51. package/dist/network/IndexerClient.d.ts.map +1 -0
  52. package/dist/network/IndexerClient.js +258 -0
  53. package/dist/network/IndexerClient.js.map +1 -0
  54. package/dist/utils/index.d.ts +5 -0
  55. package/dist/utils/index.d.ts.map +1 -0
  56. package/dist/utils/index.js +5 -0
  57. package/dist/utils/index.js.map +1 -0
  58. package/dist/utils/indexer-admin.d.ts +106 -0
  59. package/dist/utils/indexer-admin.d.ts.map +1 -0
  60. package/dist/utils/indexer-admin.js +112 -0
  61. package/dist/utils/indexer-admin.js.map +1 -0
  62. package/dist/utils/indexer-factory.d.ts +13 -0
  63. package/dist/utils/indexer-factory.d.ts.map +1 -0
  64. package/dist/utils/indexer-factory.js +24 -0
  65. package/dist/utils/indexer-factory.js.map +1 -0
  66. package/dist/utils/indexer-graphql.d.ts +152 -0
  67. package/dist/utils/indexer-graphql.d.ts.map +1 -0
  68. package/dist/utils/indexer-graphql.js +210 -0
  69. package/dist/utils/indexer-graphql.js.map +1 -0
  70. package/dist/utils/indexer-webhooks.d.ts +60 -0
  71. package/dist/utils/indexer-webhooks.d.ts.map +1 -0
  72. package/dist/utils/indexer-webhooks.js +68 -0
  73. package/dist/utils/indexer-webhooks.js.map +1 -0
  74. package/package.json +72 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAIA,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EACL,cAAc,EACd,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,9 @@
1
+ export * from './useIndexerPoints';
2
+ export * from './useIndexerMail';
3
+ export { useWalletNames, useResolveNameToAddress, } from './useIndexerNameService';
4
+ export * from './useReferralCode';
5
+ export * from './useReferralShare';
6
+ export * from './useReferralConsumption';
7
+ export * from './useReferralStats';
8
+ export { IndexerMockData } from './mocks';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAIA,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EACL,cAAc,EACd,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { AddressValidationResponse, DelegatedFromResponse, DelegatedToResponse, EmailAccountsResponse, EntitlementResponse, LeaderboardResponse, NonceResponse, PointsResponse, SignInMessageResponse, SiteStatsResponse } from '@johnqh/types';
2
+ export declare class IndexerMockData {
3
+ static getLeaderboard(count?: number): LeaderboardResponse;
4
+ static getSiteStats(): SiteStatsResponse;
5
+ static getValidation(username: string): AddressValidationResponse;
6
+ static getSigningMessage(walletAddress: string, chainId: number, domain: string): SignInMessageResponse;
7
+ static getWalletAccounts(walletAddress: string): EmailAccountsResponse;
8
+ static getDelegatedTo(walletAddress: string): DelegatedToResponse;
9
+ static getDelegatedFrom(_walletAddress: string): DelegatedFromResponse;
10
+ static createNonce(_username: string): NonceResponse;
11
+ static getNonce(_username: string): NonceResponse;
12
+ static getEntitlement(walletAddress: string): EntitlementResponse;
13
+ static getPointsBalance(walletAddress: string): PointsResponse;
14
+ }
15
+ //# sourceMappingURL=mocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../src/hooks/mocks.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,yBAAyB,EAEzB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAEvB,qBAAa,eAAe;IAC1B,MAAM,CAAC,cAAc,CAAC,KAAK,GAAE,MAAW,GAAG,mBAAmB;IA8B9D,MAAM,CAAC,YAAY,IAAI,iBAAiB;IAaxC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,yBAAyB;IAajE,MAAM,CAAC,iBAAiB,CACtB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,qBAAqB;IAcxB,MAAM,CAAC,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,qBAAqB;IAiBtE,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,mBAAmB;IAcjE,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,qBAAqB;IAWtE,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa;IAWpD,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa;IAWjD,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,mBAAmB;IAqBjE,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc;CAe/D"}
@@ -0,0 +1,163 @@
1
+ export class IndexerMockData {
2
+ static getLeaderboard(count = 10) {
3
+ return {
4
+ success: true,
5
+ data: {
6
+ leaderboard: [
7
+ {
8
+ walletAddress: '0x1234...5678',
9
+ chainType: 'ethereum',
10
+ pointsEarned: '5000',
11
+ lastActivityDate: new Date().toISOString(),
12
+ },
13
+ {
14
+ walletAddress: '0x2345...6789',
15
+ chainType: 'ethereum',
16
+ pointsEarned: '4500',
17
+ lastActivityDate: new Date().toISOString(),
18
+ },
19
+ {
20
+ walletAddress: '0x3456...7890',
21
+ chainType: 'ethereum',
22
+ pointsEarned: '4000',
23
+ lastActivityDate: new Date().toISOString(),
24
+ },
25
+ ].slice(0, count),
26
+ },
27
+ error: null,
28
+ timestamp: new Date().toISOString(),
29
+ };
30
+ }
31
+ static getSiteStats() {
32
+ return {
33
+ success: true,
34
+ data: {
35
+ totalUsers: 150,
36
+ totalPoints: '250000',
37
+ lastUpdated: new Date().toISOString(),
38
+ },
39
+ error: null,
40
+ timestamp: new Date().toISOString(),
41
+ };
42
+ }
43
+ static getValidation(username) {
44
+ return {
45
+ success: true,
46
+ data: {
47
+ walletAddress: username.toLowerCase(),
48
+ chainType: 'ethereum',
49
+ name: null,
50
+ },
51
+ error: null,
52
+ timestamp: new Date().toISOString(),
53
+ };
54
+ }
55
+ static getSigningMessage(walletAddress, chainId, domain) {
56
+ return {
57
+ success: true,
58
+ data: {
59
+ walletAddress,
60
+ chainType: 'ethereum',
61
+ message: `Sign this message to authenticate with ${domain}`,
62
+ chainId: chainId || undefined,
63
+ },
64
+ error: null,
65
+ timestamp: new Date().toISOString(),
66
+ };
67
+ }
68
+ static getWalletAccounts(walletAddress) {
69
+ return {
70
+ success: true,
71
+ data: {
72
+ accounts: [
73
+ {
74
+ walletAddress,
75
+ chainType: 'ethereum',
76
+ names: [{ name: 'user@0xmail.box', entitled: true }],
77
+ },
78
+ ],
79
+ },
80
+ error: null,
81
+ timestamp: new Date().toISOString(),
82
+ };
83
+ }
84
+ static getDelegatedTo(walletAddress) {
85
+ return {
86
+ success: true,
87
+ data: {
88
+ walletAddress,
89
+ chainType: 'ethereum',
90
+ chainId: null,
91
+ txHash: null,
92
+ },
93
+ error: null,
94
+ timestamp: new Date().toISOString(),
95
+ };
96
+ }
97
+ static getDelegatedFrom(_walletAddress) {
98
+ return {
99
+ success: true,
100
+ data: {
101
+ from: [],
102
+ },
103
+ error: null,
104
+ timestamp: new Date().toISOString(),
105
+ };
106
+ }
107
+ static createNonce(_username) {
108
+ return {
109
+ success: true,
110
+ data: {
111
+ nonce: Math.random().toString(36).substring(2, 15),
112
+ },
113
+ error: null,
114
+ timestamp: new Date().toISOString(),
115
+ };
116
+ }
117
+ static getNonce(_username) {
118
+ return {
119
+ success: true,
120
+ data: {
121
+ nonce: 'mock-nonce-12345',
122
+ },
123
+ error: null,
124
+ timestamp: new Date().toISOString(),
125
+ };
126
+ }
127
+ static getEntitlement(walletAddress) {
128
+ return {
129
+ success: true,
130
+ data: {
131
+ walletAddress,
132
+ chainType: 'ethereum',
133
+ entitlement: {
134
+ type: 'nameservice',
135
+ hasEntitlement: true,
136
+ isActive: true,
137
+ productIdentifier: null,
138
+ store: null,
139
+ },
140
+ message: 'User has premium entitlement',
141
+ verified: true,
142
+ },
143
+ error: null,
144
+ timestamp: new Date().toISOString(),
145
+ };
146
+ }
147
+ static getPointsBalance(walletAddress) {
148
+ return {
149
+ success: true,
150
+ data: {
151
+ walletAddress,
152
+ chainType: 'ethereum',
153
+ pointsEarned: '1000',
154
+ lastActivityDate: new Date().toISOString(),
155
+ createdAt: null,
156
+ updatedAt: null,
157
+ },
158
+ error: null,
159
+ timestamp: new Date().toISOString(),
160
+ };
161
+ }
162
+ }
163
+ //# sourceMappingURL=mocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mocks.js","sourceRoot":"","sources":["../../src/hooks/mocks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { type AddressValidationResponse, type DelegatedFromResponse, type DelegatedToResponse, type EmailAccountsResponse, type EntitlementResponse, type LeaderboardResponse, type NonceResponse, type Optional, type PointsResponse, type SignInMessageResponse, type SiteStatsResponse } from '@johnqh/types';
2
+ interface UseIndexerMailReturn {
3
+ isLoading: boolean;
4
+ error: Optional<string>;
5
+ validateUsername: (username: string) => Promise<Optional<AddressValidationResponse>>;
6
+ getSigningMessage: (walletAddress: string, chainId: number, domain: string, url: string) => Promise<Optional<SignInMessageResponse>>;
7
+ getPointsLeaderboard: (count?: number) => Promise<Optional<LeaderboardResponse>>;
8
+ getPointsSiteStats: () => Promise<Optional<SiteStatsResponse>>;
9
+ getWalletAccounts: (walletAddress: string, signature: string, message: string, referralCode?: string) => Promise<Optional<EmailAccountsResponse>>;
10
+ getDelegatedTo: (walletAddress: string, signature: string, message: string) => Promise<Optional<DelegatedToResponse>>;
11
+ getDelegatedFrom: (walletAddress: string, signature: string, message: string) => Promise<Optional<DelegatedFromResponse>>;
12
+ createNonce: (username: string, signature: string, message: string) => Promise<Optional<NonceResponse>>;
13
+ getNonce: (username: string, signature: string, message: string) => Promise<Optional<NonceResponse>>;
14
+ getEntitlement: (walletAddress: string, signature: string, message: string) => Promise<Optional<EntitlementResponse>>;
15
+ getPointsBalance: (walletAddress: string, signature: string, message: string) => Promise<Optional<PointsResponse>>;
16
+ clearError: () => void;
17
+ }
18
+ declare const useIndexerMail: (endpointUrl: string, dev?: boolean, devMode?: boolean) => UseIndexerMailReturn;
19
+ export { useIndexerMail, type UseIndexerMailReturn };
20
+ //# sourceMappingURL=useIndexerMail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIndexerMail.d.ts","sourceRoot":"","sources":["../../src/hooks/useIndexerMail.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EAEvB,MAAM,eAAe,CAAC;AAGvB,UAAU,oBAAoB;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAExB,gBAAgB,EAAE,CAChB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAClD,iBAAiB,EAAE,CACjB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,KACR,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC9C,oBAAoB,EAAE,CACpB,KAAK,CAAC,EAAE,MAAM,KACX,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC5C,kBAAkB,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAE/D,iBAAiB,EAAE,CACjB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,KAClB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC9C,cAAc,EAAE,CACd,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC5C,gBAAgB,EAAE,CAChB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC9C,WAAW,EAAE,CACX,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACtC,QAAQ,EAAE,CACR,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACtC,cAAc,EAAE,CACd,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC5C,gBAAgB,EAAE,CAChB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;IACvC,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAOD,QAAA,MAAM,cAAc,GAClB,aAAa,MAAM,EACnB,MAAK,OAAe,EACpB,UAAS,OAAe,KACvB,oBAgRF,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,160 @@
1
+ import { useCallback } from 'react';
2
+ import { IndexerClient } from '../network/IndexerClient';
3
+ import { useApiCall, } from '@johnqh/types';
4
+ import { IndexerMockData } from './mocks';
5
+ const useIndexerMail = (endpointUrl, dev = false, devMode = false) => {
6
+ const indexerClient = new IndexerClient(endpointUrl, dev);
7
+ const { isLoading, error, clearError, execute } = useApiCall({
8
+ context: 'IndexerMail',
9
+ });
10
+ const validateUsername = useCallback(execute(async (username) => {
11
+ try {
12
+ return await indexerClient.validateUsername(username);
13
+ }
14
+ catch (err) {
15
+ if (devMode) {
16
+ console.warn('[DevMode] validateUsername failed, returning mock data:', err);
17
+ return IndexerMockData.getValidation(username);
18
+ }
19
+ throw err;
20
+ }
21
+ }), [execute, indexerClient, devMode]);
22
+ const getSigningMessage = useCallback(execute(async (walletAddress, chainId, domain, url) => {
23
+ try {
24
+ return await indexerClient.getMessage(chainId, walletAddress, domain, url);
25
+ }
26
+ catch (err) {
27
+ if (devMode) {
28
+ console.warn('[DevMode] getSigningMessage failed, returning mock data:', err);
29
+ return IndexerMockData.getSigningMessage(walletAddress, chainId, domain);
30
+ }
31
+ throw err;
32
+ }
33
+ }), [execute, indexerClient, devMode]);
34
+ const getPointsLeaderboard = useCallback(execute(async (count = 10) => {
35
+ try {
36
+ return await indexerClient.getPointsLeaderboard(count);
37
+ }
38
+ catch (err) {
39
+ if (devMode) {
40
+ console.warn('[DevMode] getPointsLeaderboard failed, returning mock data:', err);
41
+ return IndexerMockData.getLeaderboard();
42
+ }
43
+ throw err;
44
+ }
45
+ }), [execute, indexerClient, devMode]);
46
+ const getPointsSiteStats = useCallback(execute(async () => {
47
+ try {
48
+ return await indexerClient.getPointsSiteStats();
49
+ }
50
+ catch (err) {
51
+ if (devMode) {
52
+ console.warn('[DevMode] getPointsSiteStats failed, returning mock data:', err);
53
+ return IndexerMockData.getSiteStats();
54
+ }
55
+ throw err;
56
+ }
57
+ }), [execute, indexerClient, devMode]);
58
+ const getWalletAccounts = useCallback(execute(async (walletAddress, signature, message, referralCode) => {
59
+ try {
60
+ return await indexerClient.getWalletAccounts(walletAddress, signature, message, referralCode);
61
+ }
62
+ catch (err) {
63
+ if (devMode) {
64
+ console.warn('[DevMode] getWalletAccounts failed, returning mock data:', err);
65
+ return IndexerMockData.getWalletAccounts(walletAddress);
66
+ }
67
+ throw err;
68
+ }
69
+ }), [execute, indexerClient, devMode]);
70
+ const getDelegatedTo = useCallback(execute(async (walletAddress, signature, message) => {
71
+ try {
72
+ return await indexerClient.getDelegatedTo(walletAddress, signature, message);
73
+ }
74
+ catch (err) {
75
+ if (devMode) {
76
+ console.warn('[DevMode] getDelegatedTo failed, returning mock data:', err);
77
+ return IndexerMockData.getDelegatedTo(walletAddress);
78
+ }
79
+ throw err;
80
+ }
81
+ }), [execute, indexerClient, devMode]);
82
+ const getDelegatedFrom = useCallback(execute(async (walletAddress, signature, message) => {
83
+ try {
84
+ return await indexerClient.getDelegatedFrom(walletAddress, signature, message);
85
+ }
86
+ catch (err) {
87
+ if (devMode) {
88
+ console.warn('[DevMode] getDelegatedFrom failed, returning mock data:', err);
89
+ return IndexerMockData.getDelegatedFrom(walletAddress);
90
+ }
91
+ throw err;
92
+ }
93
+ }), [execute, indexerClient, devMode]);
94
+ const createNonce = useCallback(execute(async (username, signature, message) => {
95
+ try {
96
+ return await indexerClient.createNonce(username, signature, message);
97
+ }
98
+ catch (err) {
99
+ if (devMode) {
100
+ console.warn('[DevMode] createNonce failed, returning mock data:', err);
101
+ return IndexerMockData.createNonce(username);
102
+ }
103
+ throw err;
104
+ }
105
+ }), [execute, indexerClient, devMode]);
106
+ const getNonce = useCallback(execute(async (username, signature, message) => {
107
+ try {
108
+ return await indexerClient.getNonce(username, signature, message);
109
+ }
110
+ catch (err) {
111
+ if (devMode) {
112
+ console.warn('[DevMode] getNonce failed, returning mock data:', err);
113
+ return IndexerMockData.getNonce(username);
114
+ }
115
+ throw err;
116
+ }
117
+ }), [execute, indexerClient, devMode]);
118
+ const getEntitlement = useCallback(execute(async (walletAddress, signature, message) => {
119
+ try {
120
+ return await indexerClient.getEntitlement(walletAddress, signature, message);
121
+ }
122
+ catch (err) {
123
+ if (devMode) {
124
+ console.warn('[DevMode] getEntitlement failed, returning mock data:', err);
125
+ return IndexerMockData.getEntitlement(walletAddress);
126
+ }
127
+ throw err;
128
+ }
129
+ }), [execute, indexerClient, devMode]);
130
+ const getPointsBalance = useCallback(execute(async (walletAddress, signature, message) => {
131
+ try {
132
+ return await indexerClient.getPointsBalance(walletAddress, signature, message);
133
+ }
134
+ catch (err) {
135
+ if (devMode) {
136
+ console.warn('[DevMode] getPointsBalance failed, returning mock data:', err);
137
+ return IndexerMockData.getPointsBalance(walletAddress);
138
+ }
139
+ throw err;
140
+ }
141
+ }), [execute, indexerClient, devMode]);
142
+ return {
143
+ isLoading,
144
+ error,
145
+ validateUsername,
146
+ getSigningMessage,
147
+ getPointsLeaderboard,
148
+ getPointsSiteStats,
149
+ getWalletAccounts,
150
+ getDelegatedTo,
151
+ getDelegatedFrom,
152
+ createNonce,
153
+ getNonce,
154
+ getEntitlement,
155
+ getPointsBalance,
156
+ clearError,
157
+ };
158
+ };
159
+ export { useIndexerMail };
160
+ //# sourceMappingURL=useIndexerMail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIndexerMail.js","sourceRoot":"","sources":["../../src/hooks/useIndexerMail.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';
2
+ import type { NameResolutionResponse, NameServiceResponse } from '@johnqh/types';
3
+ export declare const useWalletNames: (endpointUrl: string, dev: boolean, walletAddress: string, signature: string, message: string, options?: UseQueryOptions<NameServiceResponse>) => UseQueryResult<NameServiceResponse>;
4
+ export declare const useResolveNameToAddress: (endpointUrl: string, dev: boolean, name: string, options?: UseQueryOptions<NameResolutionResponse>) => UseQueryResult<NameResolutionResponse>;
5
+ //# sourceMappingURL=useIndexerNameService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIndexerNameService.d.ts","sourceRoot":"","sources":["../../src/hooks/useIndexerNameService.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EACf,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,eAAe,CAAC;AAmCvB,eAAO,MAAM,cAAc,GACzB,aAAa,MAAM,EACnB,KAAK,OAAO,EACZ,eAAe,MAAM,EACrB,WAAW,MAAM,EACjB,SAAS,MAAM,EACf,UAAU,eAAe,CAAC,mBAAmB,CAAC,KAC7C,cAAc,CAAC,mBAAmB,CAYpC,CAAC;AA0BF,eAAO,MAAM,uBAAuB,GAClC,aAAa,MAAM,EACnB,KAAK,OAAO,EACZ,MAAM,MAAM,EACZ,UAAU,eAAe,CAAC,sBAAsB,CAAC,KAChD,cAAc,CAAC,sBAAsB,CAYvC,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { useQuery, } from '@tanstack/react-query';
2
+ import { IndexerClient } from '../network/IndexerClient';
3
+ const STALE_TIMES = {
4
+ NAME_SERVICE_RESOLUTION: 5 * 60 * 1000,
5
+ };
6
+ export const useWalletNames = (endpointUrl, dev, walletAddress, signature, message, options) => {
7
+ const client = new IndexerClient(endpointUrl, dev);
8
+ return useQuery({
9
+ queryKey: ['indexer', 'wallet-names', walletAddress],
10
+ queryFn: async () => {
11
+ return await client.getWalletNames(walletAddress, signature, message);
12
+ },
13
+ staleTime: STALE_TIMES.NAME_SERVICE_RESOLUTION,
14
+ enabled: !!walletAddress && !!signature && !!message,
15
+ ...options,
16
+ });
17
+ };
18
+ export const useResolveNameToAddress = (endpointUrl, dev, name, options) => {
19
+ const client = new IndexerClient(endpointUrl, dev);
20
+ return useQuery({
21
+ queryKey: ['indexer', 'resolve-name', name],
22
+ queryFn: async () => {
23
+ return await client.resolveNameToAddress(name);
24
+ },
25
+ staleTime: STALE_TIMES.NAME_SERVICE_RESOLUTION,
26
+ enabled: !!name,
27
+ ...options,
28
+ });
29
+ };
30
+ //# sourceMappingURL=useIndexerNameService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIndexerNameService.js","sourceRoot":"","sources":["../../src/hooks/useIndexerNameService.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,GAGT,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGzD,MAAM,WAAW,GAAG;IAClB,uBAAuB,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;CACvC,CAAC;AA6BF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,WAAmB,EACnB,GAAY,EACZ,aAAqB,EACrB,SAAiB,EACjB,OAAe,EACf,OAA8C,EACT,EAAE;IACvC,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAEnD,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,CAAC;QACpD,OAAO,EAAE,KAAK,IAAkC,EAAE;YAChD,OAAO,MAAM,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACxE,CAAC;QACD,SAAS,EAAE,WAAW,CAAC,uBAAuB;QAC9C,OAAO,EAAE,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO;QACpD,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC,CAAC;AA0BF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,WAAmB,EACnB,GAAY,EACZ,IAAY,EACZ,OAAiD,EACT,EAAE;IAC1C,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAEnD,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC;QAC3C,OAAO,EAAE,KAAK,IAAqC,EAAE;YACnD,OAAO,MAAM,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC;QACD,SAAS,EAAE,WAAW,CAAC,uBAAuB;QAC9C,OAAO,EAAE,CAAC,CAAC,IAAI;QACf,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { LeaderboardResponse, SiteStatsResponse } from '@johnqh/types';
2
+ declare function useIndexerPoints(endpointUrl: string, dev?: boolean, devMode?: boolean): {
3
+ getPointsLeaderboard: (count?: number) => Promise<LeaderboardResponse>;
4
+ getPointsSiteStats: () => Promise<SiteStatsResponse>;
5
+ isLoading: boolean;
6
+ error: string | null;
7
+ clearError: () => void;
8
+ };
9
+ export { useIndexerPoints };
10
+ //# sourceMappingURL=useIndexerPoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIndexerPoints.d.ts","sourceRoot":"","sources":["../../src/hooks/useIndexerPoints.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAe5E,iBAAS,gBAAgB,CACvB,WAAW,EAAE,MAAM,EACnB,GAAG,GAAE,OAAe,EACpB,OAAO,GAAE,OAAe;mCAeR,MAAM,KAAQ,OAAO,CAAC,mBAAmB,CAAC;8BAmDlC,OAAO,CAAC,iBAAiB,CAAC;;;;EA4DnD;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,100 @@
1
+ import { useCallback, useMemo, useState } from 'react';
2
+ import { IndexerClient } from '../network/IndexerClient';
3
+ import { IndexerMockData } from './mocks';
4
+ function useIndexerPoints(endpointUrl, dev = false, devMode = false) {
5
+ const [isLoading, setIsLoading] = useState(false);
6
+ const [error, setError] = useState(null);
7
+ const indexerClient = useMemo(() => {
8
+ return new IndexerClient(endpointUrl, dev);
9
+ }, [endpointUrl, dev]);
10
+ const clearError = useCallback(() => {
11
+ setError(null);
12
+ }, []);
13
+ const getPointsLeaderboard = useCallback(async (count = 10) => {
14
+ setIsLoading(true);
15
+ setError(null);
16
+ if (devMode) {
17
+ try {
18
+ const controller = new AbortController();
19
+ const timeoutId = setTimeout(() => controller.abort(), 2000);
20
+ const result = await Promise.race([
21
+ indexerClient.getPointsLeaderboard(count),
22
+ new Promise((_, reject) => {
23
+ setTimeout(() => reject(new Error('DevMode timeout')), 2000);
24
+ }),
25
+ ]);
26
+ clearTimeout(timeoutId);
27
+ return result;
28
+ }
29
+ catch (err) {
30
+ const errorMessage = err instanceof Error ? err.message : 'Failed to get leaderboard';
31
+ console.warn('[DevMode] getPointsLeaderboard failed quickly, returning mock data:', errorMessage);
32
+ setError(null);
33
+ return IndexerMockData.getLeaderboard(count);
34
+ }
35
+ finally {
36
+ setIsLoading(false);
37
+ }
38
+ }
39
+ try {
40
+ const result = await indexerClient.getPointsLeaderboard(count);
41
+ return result;
42
+ }
43
+ catch (err) {
44
+ const errorMessage = err instanceof Error ? err.message : 'Failed to get leaderboard';
45
+ setError(errorMessage);
46
+ throw err;
47
+ }
48
+ finally {
49
+ setIsLoading(false);
50
+ }
51
+ }, [indexerClient, devMode]);
52
+ const getPointsSiteStats = useCallback(async () => {
53
+ setIsLoading(true);
54
+ setError(null);
55
+ if (devMode) {
56
+ try {
57
+ const controller = new AbortController();
58
+ const timeoutId = setTimeout(() => controller.abort(), 2000);
59
+ const result = await Promise.race([
60
+ indexerClient.getPointsSiteStats(),
61
+ new Promise((_, reject) => {
62
+ setTimeout(() => reject(new Error('DevMode timeout')), 2000);
63
+ }),
64
+ ]);
65
+ clearTimeout(timeoutId);
66
+ return result;
67
+ }
68
+ catch (err) {
69
+ const errorMessage = err instanceof Error ? err.message : 'Failed to get site stats';
70
+ console.warn('[DevMode] getPointsSiteStats failed quickly, returning mock data:', errorMessage);
71
+ setError(null);
72
+ return IndexerMockData.getSiteStats();
73
+ }
74
+ finally {
75
+ setIsLoading(false);
76
+ }
77
+ }
78
+ try {
79
+ const result = await indexerClient.getPointsSiteStats();
80
+ return result;
81
+ }
82
+ catch (err) {
83
+ const errorMessage = err instanceof Error ? err.message : 'Failed to get site stats';
84
+ setError(errorMessage);
85
+ throw err;
86
+ }
87
+ finally {
88
+ setIsLoading(false);
89
+ }
90
+ }, [indexerClient, devMode]);
91
+ return {
92
+ getPointsLeaderboard,
93
+ getPointsSiteStats,
94
+ isLoading,
95
+ error,
96
+ clearError,
97
+ };
98
+ }
99
+ export { useIndexerPoints };
100
+ //# sourceMappingURL=useIndexerPoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIndexerPoints.js","sourceRoot":"","sources":["../../src/hooks/useIndexerPoints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Optional } from '@johnqh/types';
2
+ import { type ReferralCodeResponse } from '../network/IndexerClient';
3
+ export declare const useReferralCode: (endpointUrl: string, dev: boolean) => {
4
+ referralCode: Optional<ReferralCodeResponse>;
5
+ isLoading: boolean;
6
+ error: Optional<string>;
7
+ fetchReferralCode: (walletAddress: string, signature: string, message: string) => Promise<ReferralCodeResponse>;
8
+ clearError: () => void;
9
+ reset: () => void;
10
+ };
11
+ //# sourceMappingURL=useReferralCode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useReferralCode.d.ts","sourceRoot":"","sources":["../../src/hooks/useReferralCode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAC;AAsBlC,eAAO,MAAM,eAAe,GAAI,aAAa,MAAM,EAAE,KAAK,OAAO;;;;uCASvC,MAAM,aAAa,MAAM,WAAW,MAAM;;;CA0CnE,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { useCallback, useState } from 'react';
2
+ import { IndexerClient, } from '../network/IndexerClient';
3
+ export const useReferralCode = (endpointUrl, dev) => {
4
+ const [referralCode, setReferralCode] = useState(null);
5
+ const [isLoading, setIsLoading] = useState(false);
6
+ const [error, setError] = useState(null);
7
+ const client = new IndexerClient(endpointUrl, dev);
8
+ const fetchReferralCode = useCallback(async (walletAddress, signature, message) => {
9
+ setIsLoading(true);
10
+ setError(null);
11
+ try {
12
+ const response = await client.getReferralCode(walletAddress, signature, message);
13
+ setReferralCode(response);
14
+ return response;
15
+ }
16
+ catch (err) {
17
+ const errorMessage = err instanceof Error ? err.message : 'Failed to get referral code';
18
+ setError(errorMessage);
19
+ throw err;
20
+ }
21
+ finally {
22
+ setIsLoading(false);
23
+ }
24
+ }, [client]);
25
+ const clearError = useCallback(() => {
26
+ setError(null);
27
+ }, []);
28
+ const reset = useCallback(() => {
29
+ setReferralCode(null);
30
+ setError(null);
31
+ setIsLoading(false);
32
+ }, []);
33
+ return {
34
+ referralCode,
35
+ isLoading,
36
+ error,
37
+ fetchReferralCode,
38
+ clearError,
39
+ reset,
40
+ };
41
+ };
42
+ //# sourceMappingURL=useReferralCode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useReferralCode.js","sourceRoot":"","sources":["../../src/hooks/useReferralCode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE9C,OAAO,EACL,aAAa,GAEd,MAAM,0BAA0B,CAAC;AAsBlC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,WAAmB,EAAE,GAAY,EAAE,EAAE;IACnE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GACnC,QAAQ,CAAiC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAEnD,MAAM,iBAAiB,GAAG,WAAW,CACnC,KAAK,EAAE,aAAqB,EAAE,SAAiB,EAAE,OAAe,EAAE,EAAE;QAClE,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,eAAe,CAC3C,aAAa,EACb,SAAS,EACT,OAAO,CACR,CAAC;YACF,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC1B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC;YACrE,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvB,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,YAAY;QACZ,SAAS;QACT,KAAK;QACL,iBAAiB;QACjB,UAAU;QACV,KAAK;KACN,CAAC;AACJ,CAAC,CAAC"}