@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,106 @@
1
+ import type { Optional } from '@johnqh/types';
2
+ import type { NetworkClient } from '@johnqh/di';
3
+ export interface IndexerAdminConfig {
4
+ indexerBackendUrl: string;
5
+ networkClient: NetworkClient;
6
+ }
7
+ export interface AdminCampaignConfig {
8
+ name: string;
9
+ description: string;
10
+ type: 'single_use' | 'multi_use' | 'timed';
11
+ pointsPerClaim: number;
12
+ maxClaims?: number;
13
+ maxUsesPerUser?: number;
14
+ startTime: string | Date;
15
+ endTime: string | Date;
16
+ targetRecipient?: string;
17
+ metadata?: any;
18
+ }
19
+ export interface AdminPointsAward {
20
+ targetAddress: string;
21
+ points: number;
22
+ reason: string;
23
+ }
24
+ export interface AdminUserFlag {
25
+ targetAddress: string;
26
+ flagged: boolean;
27
+ reason?: string;
28
+ }
29
+ export interface AdminOverviewStats {
30
+ totalUsers: number;
31
+ totalPoints: string;
32
+ totalTransactions: number;
33
+ activeCampaigns: number;
34
+ flaggedUsers: number;
35
+ totalAchievements: number;
36
+ topUsers: Array<{
37
+ walletAddress: string;
38
+ totalPoints: string;
39
+ currentStreak: number;
40
+ longestStreak: number;
41
+ }>;
42
+ activityBreakdown: Record<string, number>;
43
+ recentActivity: Array<{
44
+ id: string;
45
+ walletAddress: string;
46
+ activityType: string;
47
+ pointsAmount: number;
48
+ balanceBefore: string;
49
+ balanceAfter: string;
50
+ createdAt: number;
51
+ }>;
52
+ }
53
+ export interface AdminFlaggedUser {
54
+ walletAddress: string;
55
+ totalPoints: string;
56
+ lifetimeEarned: string;
57
+ flagReason: string;
58
+ lastActivityDate: Optional<number>;
59
+ updatedAt: number;
60
+ }
61
+ export interface AdminFlaggedUsers {
62
+ users: AdminFlaggedUser[];
63
+ pagination: {
64
+ page: number;
65
+ limit: number;
66
+ totalCount: number;
67
+ totalPages: number;
68
+ hasNext: boolean;
69
+ hasPrevious: boolean;
70
+ };
71
+ }
72
+ export interface AdminBulkCodesResponse {
73
+ message: string;
74
+ campaignId: string;
75
+ codes: string[];
76
+ count: number;
77
+ }
78
+ export declare class IndexerAdminHelper {
79
+ private config;
80
+ private client;
81
+ constructor(config: IndexerAdminConfig);
82
+ createCampaign(campaign: AdminCampaignConfig, walletAddress: string, signature: string, message?: string): Promise<{
83
+ campaignId: string;
84
+ message: string;
85
+ }>;
86
+ deactivateCampaign(campaignId: string, walletAddress: string, signature: string, message?: string): Promise<{
87
+ message: string;
88
+ }>;
89
+ awardPoints(award: AdminPointsAward, walletAddress: string, signature: string, message?: string): Promise<{
90
+ message: string;
91
+ targetAddress: string;
92
+ points: number;
93
+ reason: string;
94
+ }>;
95
+ flagUser(userFlag: AdminUserFlag, walletAddress: string, signature: string, message?: string): Promise<{
96
+ message: string;
97
+ targetAddress: string;
98
+ flagged: boolean;
99
+ reason: Optional<string>;
100
+ }>;
101
+ getOverviewStats(adminSignature: string): Promise<AdminOverviewStats>;
102
+ getFlaggedUsers(adminSignature: string, page?: number, limit?: number): Promise<AdminFlaggedUsers>;
103
+ generateBulkCodes(campaignId: string, count: number, walletAddress: string, signature: string, message?: string): Promise<AdminBulkCodesResponse>;
104
+ }
105
+ export declare const createIndexerAdminHelper: (indexerBackendUrl: string, networkClient: NetworkClient) => IndexerAdminHelper;
106
+ //# sourceMappingURL=indexer-admin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexer-admin.d.ts","sourceRoot":"","sources":["../../src/utils/indexer-admin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ const getIndexerBaseUrl = (config) => {
2
+ return config.indexerBackendUrl;
3
+ };
4
+ export class IndexerAdminHelper {
5
+ constructor(config) {
6
+ this.config = config;
7
+ this.client = config.networkClient;
8
+ }
9
+ async createCampaign(campaign, walletAddress, signature, message) {
10
+ const response = await this.client.post(`${getIndexerBaseUrl(this.config)}/admin/campaigns/create`, {
11
+ campaign,
12
+ walletAddress,
13
+ signature,
14
+ message,
15
+ });
16
+ if (!response.ok) {
17
+ throw new Error(response.data?.error ||
18
+ `HTTP error! status: ${response.status}`);
19
+ }
20
+ return response.data.data;
21
+ }
22
+ async deactivateCampaign(campaignId, walletAddress, signature, message) {
23
+ const response = await this.client.post(`${getIndexerBaseUrl(this.config)}/admin/campaigns/${encodeURIComponent(campaignId)}/deactivate`, {
24
+ walletAddress,
25
+ signature,
26
+ message,
27
+ });
28
+ if (!response.ok) {
29
+ throw new Error(response.data?.error ||
30
+ `HTTP error! status: ${response.status}`);
31
+ }
32
+ return response.data.data;
33
+ }
34
+ async awardPoints(award, walletAddress, signature, message) {
35
+ const response = await this.client.post(`${getIndexerBaseUrl(this.config)}/admin/points/award`, {
36
+ ...award,
37
+ walletAddress,
38
+ signature,
39
+ message,
40
+ });
41
+ if (!response.ok) {
42
+ throw new Error(response.data?.error ||
43
+ `HTTP error! status: ${response.status}`);
44
+ }
45
+ return response.data.data;
46
+ }
47
+ async flagUser(userFlag, walletAddress, signature, message) {
48
+ const response = await this.client.post(`${getIndexerBaseUrl(this.config)}/admin/points/flag-user`, {
49
+ ...userFlag,
50
+ walletAddress,
51
+ signature,
52
+ message,
53
+ });
54
+ if (!response.ok) {
55
+ throw new Error(response.data?.error ||
56
+ `HTTP error! status: ${response.status}`);
57
+ }
58
+ return response.data.data;
59
+ }
60
+ async getOverviewStats(adminSignature) {
61
+ const response = await this.client.get(`${getIndexerBaseUrl(this.config)}/admin/stats/overview`, {
62
+ headers: {
63
+ 'x-admin-signature': adminSignature,
64
+ },
65
+ });
66
+ if (!response.ok) {
67
+ throw new Error(response.data?.error ||
68
+ `HTTP error! status: ${response.status}`);
69
+ }
70
+ return response.data.data;
71
+ }
72
+ async getFlaggedUsers(adminSignature, page = 1, limit = 50) {
73
+ const params = new URLSearchParams({
74
+ page: page.toString(),
75
+ limit: limit.toString(),
76
+ });
77
+ const response = await this.client.get(`${getIndexerBaseUrl(this.config)}/admin/users/flagged?${params}`, {
78
+ headers: {
79
+ 'x-admin-signature': adminSignature,
80
+ },
81
+ });
82
+ if (!response.ok) {
83
+ throw new Error(response.data?.error ||
84
+ `HTTP error! status: ${response.status}`);
85
+ }
86
+ return response.data.data;
87
+ }
88
+ async generateBulkCodes(campaignId, count, walletAddress, signature, message) {
89
+ if (count <= 0 || count > 1000) {
90
+ throw new Error('Count must be between 1 and 1000');
91
+ }
92
+ const response = await this.client.post(`${getIndexerBaseUrl(this.config)}/admin/campaigns/bulk-codes`, {
93
+ campaignId,
94
+ count,
95
+ walletAddress,
96
+ signature,
97
+ message,
98
+ });
99
+ if (!response.ok) {
100
+ throw new Error(response.data?.error ||
101
+ `HTTP error! status: ${response.status}`);
102
+ }
103
+ return response.data.data;
104
+ }
105
+ }
106
+ export const createIndexerAdminHelper = (indexerBackendUrl, networkClient) => {
107
+ return new IndexerAdminHelper({
108
+ indexerBackendUrl,
109
+ networkClient,
110
+ });
111
+ };
112
+ //# sourceMappingURL=indexer-admin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexer-admin.js","sourceRoot":"","sources":["../../src/utils/indexer-admin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { AppConfig } from '@johnqh/types';
2
+ import { IndexerAdminHelper } from './indexer-admin';
3
+ import { IndexerGraphQLHelper } from './indexer-graphql';
4
+ import { IndexerWebhookHelper } from './indexer-webhooks';
5
+ export declare const createIndexerAdmin: (config: AppConfig) => IndexerAdminHelper;
6
+ export declare const createIndexerGraphQL: (config: AppConfig) => IndexerGraphQLHelper;
7
+ export declare const createIndexerWebhook: (config: AppConfig) => IndexerWebhookHelper;
8
+ export declare const createIndexerHelpers: (config: AppConfig) => {
9
+ admin: IndexerAdminHelper;
10
+ graphql: IndexerGraphQLHelper;
11
+ webhook: IndexerWebhookHelper;
12
+ };
13
+ //# sourceMappingURL=indexer-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexer-factory.d.ts","sourceRoot":"","sources":["../../src/utils/indexer-factory.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAA4B,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAEL,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAkB5B,eAAO,MAAM,kBAAkB,GAAI,QAAQ,SAAS,KAAG,kBAStD,CAAC;AAkBF,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,SAAS,KAChB,oBASF,CAAC;AAsBF,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,SAAS,KAChB,oBASF,CAAC;AAoBF,eAAO,MAAM,oBAAoB,GAAI,QAAQ,SAAS;;;;CAMrD,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { IndexerClient } from '../network/IndexerClient';
2
+ import { createIndexerAdminHelper } from './indexer-admin';
3
+ import { createIndexerGraphQLHelper, } from './indexer-graphql';
4
+ import { createIndexerWebhookHelper, } from './indexer-webhooks';
5
+ export const createIndexerAdmin = (config) => {
6
+ const networkClient = new IndexerClient(config.indexerBackendUrl || 'https://indexer.0xmail.box', config.devMode || false);
7
+ return createIndexerAdminHelper(config.indexerBackendUrl || 'https://indexer.0xmail.box', networkClient);
8
+ };
9
+ export const createIndexerGraphQL = (config) => {
10
+ const networkClient = new IndexerClient(config.indexerBackendUrl || 'https://indexer.0xmail.box', config.devMode || false);
11
+ return createIndexerGraphQLHelper(config.indexerBackendUrl || 'https://indexer.0xmail.box', networkClient);
12
+ };
13
+ export const createIndexerWebhook = (config) => {
14
+ const networkClient = new IndexerClient(config.indexerBackendUrl || 'https://indexer.0xmail.box', config.devMode || false);
15
+ return createIndexerWebhookHelper(config.indexerBackendUrl || 'https://indexer.0xmail.box', networkClient);
16
+ };
17
+ export const createIndexerHelpers = (config) => {
18
+ return {
19
+ admin: createIndexerAdmin(config),
20
+ graphql: createIndexerGraphQL(config),
21
+ webhook: createIndexerWebhook(config),
22
+ };
23
+ };
24
+ //# sourceMappingURL=indexer-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexer-factory.js","sourceRoot":"","sources":["../../src/utils/indexer-factory.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAsB,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACL,0BAA0B,GAE3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,0BAA0B,GAE3B,MAAM,oBAAoB,CAAC;AAkB5B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAiB,EAAsB,EAAE;IAC1E,MAAM,aAAa,GAAG,IAAI,aAAa,CACrC,MAAM,CAAC,iBAAiB,IAAI,4BAA4B,EACvD,MAAc,CAAC,OAAO,IAAI,KAAK,CACjC,CAAC;IACF,OAAO,wBAAwB,CAC7B,MAAM,CAAC,iBAAiB,IAAI,4BAA4B,EACxD,aAAa,CACd,CAAC;AACJ,CAAC,CAAC;AAkBF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,MAAiB,EACK,EAAE;IACxB,MAAM,aAAa,GAAG,IAAI,aAAa,CACrC,MAAM,CAAC,iBAAiB,IAAI,4BAA4B,EACvD,MAAc,CAAC,OAAO,IAAI,KAAK,CACjC,CAAC;IACF,OAAO,0BAA0B,CAC/B,MAAM,CAAC,iBAAiB,IAAI,4BAA4B,EACxD,aAAa,CACd,CAAC;AACJ,CAAC,CAAC;AAsBF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,MAAiB,EACK,EAAE;IACxB,MAAM,aAAa,GAAG,IAAI,aAAa,CACrC,MAAM,CAAC,iBAAiB,IAAI,4BAA4B,EACvD,MAAc,CAAC,OAAO,IAAI,KAAK,CACjC,CAAC;IACF,OAAO,0BAA0B,CAC/B,MAAM,CAAC,iBAAiB,IAAI,4BAA4B,EACxD,aAAa,CACd,CAAC;AACJ,CAAC,CAAC;AAoBF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAiB,EAAE,EAAE;IACxD,OAAO;QACL,KAAK,EAAE,kBAAkB,CAAC,MAAM,CAAC;QACjC,OAAO,EAAE,oBAAoB,CAAC,MAAM,CAAC;QACrC,OAAO,EAAE,oBAAoB,CAAC,MAAM,CAAC;KACtC,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,152 @@
1
+ import type { NetworkClient } from '@johnqh/di';
2
+ export interface IndexerGraphQLConfig {
3
+ indexerBackendUrl: string;
4
+ networkClient: NetworkClient;
5
+ }
6
+ export interface GraphQLResponse<T = unknown> {
7
+ data?: T;
8
+ errors?: Array<{
9
+ message: string;
10
+ locations?: Array<{
11
+ line: number;
12
+ column: number;
13
+ }>;
14
+ path?: string[];
15
+ }>;
16
+ }
17
+ export interface IndexerMail {
18
+ id: string;
19
+ chainId: number;
20
+ contractAddress: string;
21
+ from: string;
22
+ to: string;
23
+ subject: string;
24
+ body: string;
25
+ timestamp: string;
26
+ blockNumber: string;
27
+ transactionHash: string;
28
+ logIndex: number;
29
+ gasUsed?: string;
30
+ gasPrice?: string;
31
+ }
32
+ export interface IndexerPreparedMail {
33
+ id: string;
34
+ chainId: number;
35
+ contractAddress: string;
36
+ from: string;
37
+ to: string;
38
+ mailId: string;
39
+ timestamp: string;
40
+ blockNumber: string;
41
+ transactionHash: string;
42
+ logIndex: number;
43
+ gasUsed?: string;
44
+ gasPrice?: string;
45
+ }
46
+ export interface IndexerDelegation {
47
+ id: string;
48
+ chainId: number;
49
+ contractAddress: string;
50
+ delegator: string;
51
+ delegate: string;
52
+ isActive: boolean;
53
+ timestamp: string;
54
+ blockNumber: string;
55
+ transactionHash: string;
56
+ logIndex: number;
57
+ gasUsed?: string;
58
+ gasPrice?: string;
59
+ }
60
+ export interface IndexerUserStatistics {
61
+ id: string;
62
+ chainId: number;
63
+ address: string;
64
+ mailsSent: number;
65
+ mailsReceived: number;
66
+ preparedMailsSent: number;
67
+ preparedMailsReceived: number;
68
+ delegationsGiven: number;
69
+ delegationsReceived: number;
70
+ totalGasUsed: string;
71
+ averageGasPrice: string;
72
+ firstMailTimestamp?: string;
73
+ lastMailTimestamp?: string;
74
+ }
75
+ export interface IndexerChainStatistics {
76
+ id: string;
77
+ totalChains: number;
78
+ totalMails: number;
79
+ totalPreparedMails: number;
80
+ totalDelegations: number;
81
+ totalUsers: number;
82
+ totalGasUsed: string;
83
+ averageGasPrice: string;
84
+ }
85
+ export interface IndexerEventLog {
86
+ id: string;
87
+ chainId: number;
88
+ eventName: string;
89
+ contractAddress: string;
90
+ eventData: string;
91
+ timestamp: string;
92
+ blockNumber: string;
93
+ transactionHash: string;
94
+ logIndex: number;
95
+ }
96
+ export interface PaginationInput {
97
+ first?: number;
98
+ skip?: number;
99
+ orderBy?: string;
100
+ orderDirection?: 'asc' | 'desc';
101
+ }
102
+ export interface WhereInput {
103
+ chainId?: number;
104
+ chainId_in?: number[];
105
+ from?: string;
106
+ to?: string;
107
+ address?: string;
108
+ contractAddress?: string;
109
+ timestamp_gte?: string;
110
+ timestamp_lte?: string;
111
+ isActive?: boolean;
112
+ }
113
+ export declare class IndexerGraphQLHelper {
114
+ private config;
115
+ private client;
116
+ constructor(config: IndexerGraphQLConfig);
117
+ query<T = unknown>(query: string, variables?: Record<string, unknown>): Promise<T>;
118
+ getMails(where?: WhereInput, pagination?: PaginationInput): Promise<{
119
+ mails: {
120
+ items: IndexerMail[];
121
+ };
122
+ }>;
123
+ getPreparedMails(where?: WhereInput, pagination?: PaginationInput): Promise<{
124
+ preparedMails: {
125
+ items: IndexerPreparedMail[];
126
+ };
127
+ }>;
128
+ getDelegations(where?: WhereInput, pagination?: PaginationInput): Promise<{
129
+ delegations: {
130
+ items: IndexerDelegation[];
131
+ };
132
+ }>;
133
+ getUserStatistics(address: string, chainId?: number): Promise<{
134
+ userStatistics: {
135
+ items: IndexerUserStatistics[];
136
+ };
137
+ }>;
138
+ getChainStatistics(): Promise<{
139
+ chainStatistics: IndexerChainStatistics;
140
+ }>;
141
+ getEventLogs(where?: WhereInput, pagination?: PaginationInput): Promise<{
142
+ eventLogs: {
143
+ items: IndexerEventLog[];
144
+ };
145
+ }>;
146
+ getMailsFromAddress(fromAddress: string, chainId?: number, pagination?: PaginationInput): Promise<IndexerMail[]>;
147
+ getMailsToAddress(toAddress: string, chainId?: number, pagination?: PaginationInput): Promise<IndexerMail[]>;
148
+ getActiveDelegationsFromAddress(delegatorAddress: string, chainId?: number): Promise<IndexerDelegation[]>;
149
+ getActiveDelegationsToAddress(delegateAddress: string, chainId?: number): Promise<IndexerDelegation[]>;
150
+ }
151
+ export declare const createIndexerGraphQLHelper: (indexerBackendUrl: string, networkClient: NetworkClient) => IndexerGraphQLHelper;
152
+ //# sourceMappingURL=indexer-graphql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexer-graphql.d.ts","sourceRoot":"","sources":["../../src/utils/indexer-graphql.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,210 @@
1
+ const getIndexerGraphQLUrl = (config) => {
2
+ return `${config.indexerBackendUrl}/graphql`;
3
+ };
4
+ export class IndexerGraphQLHelper {
5
+ constructor(config) {
6
+ this.config = config;
7
+ this.client = config.networkClient;
8
+ }
9
+ async query(query, variables) {
10
+ const response = await this.client.post(getIndexerGraphQLUrl(this.config), {
11
+ query,
12
+ variables,
13
+ });
14
+ if (!response.ok) {
15
+ throw new Error(`HTTP error! status: ${response.status}`);
16
+ }
17
+ const result = response.data;
18
+ if (result.errors && result.errors.length > 0) {
19
+ const firstError = result.errors[0];
20
+ throw new Error(`GraphQL error: ${firstError ? firstError.message : 'Unknown GraphQL error'}`);
21
+ }
22
+ if (!result.data) {
23
+ throw new Error('No data returned from GraphQL query');
24
+ }
25
+ return result.data;
26
+ }
27
+ async getMails(where, pagination) {
28
+ const query = `
29
+ query GetMails($where: MailFilter, $first: Int, $skip: Int, $orderBy: String, $orderDirection: String) {
30
+ mails(where: $where, first: $first, skip: $skip, orderBy: $orderBy, orderDirection: $orderDirection) {
31
+ items {
32
+ id
33
+ chainId
34
+ contractAddress
35
+ from
36
+ to
37
+ subject
38
+ body
39
+ timestamp
40
+ blockNumber
41
+ transactionHash
42
+ logIndex
43
+ gasUsed
44
+ gasPrice
45
+ }
46
+ }
47
+ }
48
+ `;
49
+ return this.query(query, { where, ...pagination });
50
+ }
51
+ async getPreparedMails(where, pagination) {
52
+ const query = `
53
+ query GetPreparedMails($where: PreparedMailFilter, $first: Int, $skip: Int, $orderBy: String, $orderDirection: String) {
54
+ preparedMails(where: $where, first: $first, skip: $skip, orderBy: $orderBy, orderDirection: $orderDirection) {
55
+ items {
56
+ id
57
+ chainId
58
+ contractAddress
59
+ from
60
+ to
61
+ mailId
62
+ timestamp
63
+ blockNumber
64
+ transactionHash
65
+ logIndex
66
+ gasUsed
67
+ gasPrice
68
+ }
69
+ }
70
+ }
71
+ `;
72
+ return this.query(query, { where, ...pagination });
73
+ }
74
+ async getDelegations(where, pagination) {
75
+ const query = `
76
+ query GetDelegations($where: DelegationFilter, $first: Int, $skip: Int, $orderBy: String, $orderDirection: String) {
77
+ delegations(where: $where, first: $first, skip: $skip, orderBy: $orderBy, orderDirection: $orderDirection) {
78
+ items {
79
+ id
80
+ chainId
81
+ contractAddress
82
+ delegator
83
+ delegate
84
+ isActive
85
+ timestamp
86
+ blockNumber
87
+ transactionHash
88
+ logIndex
89
+ gasUsed
90
+ gasPrice
91
+ }
92
+ }
93
+ }
94
+ `;
95
+ return this.query(query, { where, ...pagination });
96
+ }
97
+ async getUserStatistics(address, chainId) {
98
+ const query = `
99
+ query GetUserStatistics($where: UserStatisticsFilter) {
100
+ userStatistics(where: $where) {
101
+ items {
102
+ id
103
+ chainId
104
+ address
105
+ mailsSent
106
+ mailsReceived
107
+ preparedMailsSent
108
+ preparedMailsReceived
109
+ delegationsGiven
110
+ delegationsReceived
111
+ totalGasUsed
112
+ averageGasPrice
113
+ firstMailTimestamp
114
+ lastMailTimestamp
115
+ }
116
+ }
117
+ }
118
+ `;
119
+ const where = chainId
120
+ ? { address: address.toLowerCase(), chainId }
121
+ : { address: address.toLowerCase() };
122
+ return this.query(query, { where });
123
+ }
124
+ async getChainStatistics() {
125
+ const query = `
126
+ query GetChainStatistics {
127
+ chainStatistics(id: "global") {
128
+ id
129
+ totalChains
130
+ totalMails
131
+ totalPreparedMails
132
+ totalDelegations
133
+ totalUsers
134
+ totalGasUsed
135
+ averageGasPrice
136
+ }
137
+ }
138
+ `;
139
+ return this.query(query);
140
+ }
141
+ async getEventLogs(where, pagination) {
142
+ const query = `
143
+ query GetEventLogs($where: EventLogFilter, $first: Int, $skip: Int, $orderBy: String, $orderDirection: String) {
144
+ eventLogs(where: $where, first: $first, skip: $skip, orderBy: $orderBy, orderDirection: $orderDirection) {
145
+ items {
146
+ id
147
+ chainId
148
+ eventName
149
+ contractAddress
150
+ eventData
151
+ timestamp
152
+ blockNumber
153
+ transactionHash
154
+ logIndex
155
+ }
156
+ }
157
+ }
158
+ `;
159
+ return this.query(query, { where, ...pagination });
160
+ }
161
+ async getMailsFromAddress(fromAddress, chainId, pagination) {
162
+ const where = chainId
163
+ ? { from: fromAddress.toLowerCase(), chainId }
164
+ : { from: fromAddress.toLowerCase() };
165
+ const result = await this.getMails(where, {
166
+ orderBy: 'timestamp',
167
+ orderDirection: 'desc',
168
+ ...pagination,
169
+ });
170
+ return result.mails.items;
171
+ }
172
+ async getMailsToAddress(toAddress, chainId, pagination) {
173
+ const where = chainId
174
+ ? { to: toAddress.toLowerCase(), chainId }
175
+ : { to: toAddress.toLowerCase() };
176
+ const result = await this.getMails(where, {
177
+ orderBy: 'timestamp',
178
+ orderDirection: 'desc',
179
+ ...pagination,
180
+ });
181
+ return result.mails.items;
182
+ }
183
+ async getActiveDelegationsFromAddress(delegatorAddress, chainId) {
184
+ const where = chainId
185
+ ? { delegator: delegatorAddress.toLowerCase(), isActive: true, chainId }
186
+ : { delegator: delegatorAddress.toLowerCase(), isActive: true };
187
+ const result = await this.getDelegations(where, {
188
+ orderBy: 'timestamp',
189
+ orderDirection: 'desc',
190
+ });
191
+ return result.delegations.items;
192
+ }
193
+ async getActiveDelegationsToAddress(delegateAddress, chainId) {
194
+ const where = chainId
195
+ ? { delegate: delegateAddress.toLowerCase(), isActive: true, chainId }
196
+ : { delegate: delegateAddress.toLowerCase(), isActive: true };
197
+ const result = await this.getDelegations(where, {
198
+ orderBy: 'timestamp',
199
+ orderDirection: 'desc',
200
+ });
201
+ return result.delegations.items;
202
+ }
203
+ }
204
+ export const createIndexerGraphQLHelper = (indexerBackendUrl, networkClient) => {
205
+ return new IndexerGraphQLHelper({
206
+ indexerBackendUrl,
207
+ networkClient,
208
+ });
209
+ };
210
+ //# sourceMappingURL=indexer-graphql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexer-graphql.js","sourceRoot":"","sources":["../../src/utils/indexer-graphql.ts"],"names":[],"mappings":"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"}