shogun-relay-sdk 1.1.3 → 1.1.5

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.
package/dist/index.d.ts CHANGED
@@ -7,6 +7,7 @@ import { DealsModule } from './modules/deals';
7
7
  import { RegistryModule } from './modules/registry';
8
8
  import { UploadsModule } from './modules/uploads';
9
9
  import { BridgeModule } from './modules/bridge';
10
+ export * from './types';
10
11
  export declare class ShogunRelaySDK {
11
12
  private client;
12
13
  system: SystemModule;
package/dist/index.js CHANGED
@@ -1,4 +1,18 @@
1
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
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
17
  exports.ShogunRelaySDK = void 0;
4
18
  const client_1 = require("./client");
@@ -10,6 +24,8 @@ const deals_1 = require("./modules/deals");
10
24
  const registry_1 = require("./modules/registry");
11
25
  const uploads_1 = require("./modules/uploads");
12
26
  const bridge_1 = require("./modules/bridge");
27
+ // Export types
28
+ __exportStar(require("./types"), exports);
13
29
  class ShogunRelaySDK {
14
30
  constructor(config) {
15
31
  this.client = new client_1.ApiClient(config);
@@ -214,4 +214,56 @@ export declare class BridgeModule {
214
214
  message: string;
215
215
  error?: string;
216
216
  }>;
217
+ /**
218
+ * Get all transactions (deposits, withdrawals, transfers) for a user
219
+ * Returns a unified list of all transaction types sorted by timestamp
220
+ * @param userAddress User's Ethereum address
221
+ * @returns Transaction history
222
+ */
223
+ getTransactions(userAddress: string): Promise<{
224
+ success: boolean;
225
+ user: string;
226
+ transactions: Array<{
227
+ type: 'deposit' | 'withdrawal' | 'transfer';
228
+ txHash: string;
229
+ from?: string;
230
+ to?: string;
231
+ amount: string;
232
+ amountEth: string;
233
+ timestamp: number;
234
+ blockNumber?: number;
235
+ nonce?: string;
236
+ batchId?: string;
237
+ status: 'pending' | 'completed' | 'batched';
238
+ }>;
239
+ count: number;
240
+ summary: {
241
+ deposits: number;
242
+ withdrawals: number;
243
+ transfers: number;
244
+ };
245
+ }>;
246
+ /**
247
+ * Get detailed information about a specific transaction by hash
248
+ * Searches across deposits, withdrawals, and transfers
249
+ * @param txHash Transaction hash
250
+ * @returns Transaction details
251
+ */
252
+ getTransaction(txHash: string): Promise<{
253
+ success: boolean;
254
+ transaction?: {
255
+ type: 'deposit' | 'withdrawal' | 'transfer';
256
+ txHash: string;
257
+ from?: string;
258
+ to?: string;
259
+ amount: string;
260
+ amountEth: string;
261
+ timestamp: number;
262
+ blockNumber?: number;
263
+ nonce?: string;
264
+ status: 'pending' | 'completed' | 'batched';
265
+ };
266
+ source?: 'deposit' | 'withdrawal' | 'transfer';
267
+ error?: string;
268
+ }>;
217
269
  }
@@ -106,5 +106,23 @@ class BridgeModule {
106
106
  async reconcileBalance(userAddress) {
107
107
  return this.client.post('/api/v1/bridge/reconcile-balance', { user: userAddress });
108
108
  }
109
+ /**
110
+ * Get all transactions (deposits, withdrawals, transfers) for a user
111
+ * Returns a unified list of all transaction types sorted by timestamp
112
+ * @param userAddress User's Ethereum address
113
+ * @returns Transaction history
114
+ */
115
+ async getTransactions(userAddress) {
116
+ return this.client.get(`/api/v1/bridge/transactions/${userAddress}`);
117
+ }
118
+ /**
119
+ * Get detailed information about a specific transaction by hash
120
+ * Searches across deposits, withdrawals, and transfers
121
+ * @param txHash Transaction hash
122
+ * @returns Transaction details
123
+ */
124
+ async getTransaction(txHash) {
125
+ return this.client.get(`/api/v1/bridge/transaction/${txHash}`);
126
+ }
109
127
  }
110
128
  exports.BridgeModule = BridgeModule;
@@ -1,15 +1,16 @@
1
1
  import { ApiClient } from '../client';
2
+ import { ReputationResponse, ReputationLeaderboardResponse, BestRelaysResponse, NetworkStatsResponse, RelayInfoResponse, RelaysListResponse } from '../types';
2
3
  export declare class NetworkModule {
3
4
  private client;
4
5
  constructor(client: ApiClient);
5
- getRelays(timeout?: number, maxAge?: number): Promise<any>;
6
- getRelay(host: string): Promise<any>;
7
- getStats(): Promise<any>;
6
+ getRelays(timeout?: number, maxAge?: number): Promise<RelaysListResponse>;
7
+ getRelay(host: string): Promise<RelayInfoResponse>;
8
+ getStats(): Promise<NetworkStatsResponse>;
8
9
  getProof(cid: string, challenge?: string): Promise<any>;
9
10
  verifyProof(proof: any): Promise<any>;
10
- getReputation(host: string): Promise<any>;
11
- getReputationLeaderboard(minScore?: number, limit?: number): Promise<any>;
12
- getBestRelays(count?: number, minScore?: number, excludeHost?: string): Promise<any>;
11
+ getReputation(host: string): Promise<ReputationResponse>;
12
+ getReputationLeaderboard(minScore?: number, limit?: number): Promise<ReputationLeaderboardResponse>;
13
+ getBestRelays(count?: number, minScore?: number, excludeHost?: string): Promise<BestRelaysResponse>;
13
14
  getOnChainRelays(chainId?: number): Promise<any>;
14
15
  getOnChainRelay(address: string, chainId?: number): Promise<any>;
15
16
  getOnChainParams(chainId?: number): Promise<any>;
@@ -0,0 +1,243 @@
1
+ /**
2
+ * Type definitions for Shogun Relay SDK
3
+ */
4
+ /**
5
+ * Reputation Score Breakdown
6
+ */
7
+ export interface ReputationScoreBreakdown {
8
+ uptime: number;
9
+ proofSuccess: number;
10
+ responseTime: number;
11
+ pinFulfillment: number;
12
+ longevity: number;
13
+ resourceEfficiency?: number;
14
+ storageCapacity?: number;
15
+ dataQuality?: number;
16
+ reliability?: number;
17
+ dealPerformance?: number;
18
+ networkHealth?: number;
19
+ }
20
+ /**
21
+ * Reputation Weights
22
+ */
23
+ export interface ReputationWeights {
24
+ uptime: number;
25
+ proofSuccess: number;
26
+ responseTime: number;
27
+ pinFulfillment: number;
28
+ longevity: number;
29
+ }
30
+ /**
31
+ * Calculated Reputation Score
32
+ */
33
+ export interface ReputationScore {
34
+ total: number;
35
+ tier: 'excellent' | 'good' | 'average' | 'poor' | 'unreliable';
36
+ breakdown: ReputationScoreBreakdown;
37
+ weights: ReputationWeights;
38
+ hasEnoughData: boolean;
39
+ }
40
+ /**
41
+ * Reputation Metrics
42
+ */
43
+ export interface ReputationMetrics {
44
+ host?: string;
45
+ firstSeenTimestamp?: number;
46
+ lastSeenTimestamp?: number;
47
+ dataPoints?: number;
48
+ proofsTotal?: number;
49
+ proofsSuccessful?: number;
50
+ proofsFailed?: number;
51
+ avgResponseTimeMs?: number;
52
+ responseTimeSamples?: number;
53
+ pinRequestsReceived?: number;
54
+ pinRequestsFulfilled?: number;
55
+ expectedPulses?: number;
56
+ receivedPulses?: number;
57
+ uptimePercent?: number;
58
+ bridgeBatchSubmissionsTotal?: number;
59
+ bridgeBatchSubmissionsSuccessful?: number;
60
+ bridgeBatchSubmissionsFailed?: number;
61
+ bridgeProofsTotal?: number;
62
+ bridgeProofsSuccessful?: number;
63
+ bridgeProofsFailed?: number;
64
+ bridgeAvgProofResponseTimeMs?: number;
65
+ bridgeProofResponseTimeSamples?: number;
66
+ avgConnections?: number;
67
+ maxConnections?: number;
68
+ avgMemoryUsageMB?: number;
69
+ maxMemoryUsageMB?: number;
70
+ storageCapacityMB?: number;
71
+ storageUsedMB?: number;
72
+ storageUtilizationPercent?: number;
73
+ ipfsRepoSizeMB?: number;
74
+ ipfsPinsCount?: number;
75
+ avgLatencyMs?: number;
76
+ latencySamples?: number;
77
+ throughputMBps?: number;
78
+ errorRate?: number;
79
+ meanTimeBetweenFailures?: number;
80
+ meanTimeToRecovery?: number;
81
+ downtimeEvents?: number;
82
+ totalDowntimeMs?: number;
83
+ dataIntegrityChecks?: number;
84
+ dataIntegrityFailures?: number;
85
+ dataFreshnessMs?: number;
86
+ peerConnections?: number;
87
+ networkReachability?: number;
88
+ dealsTotal?: number;
89
+ dealsActive?: number;
90
+ dealsCompleted?: number;
91
+ dealsFailed?: number;
92
+ dealFulfillmentRate?: number;
93
+ subscriptionsTotal?: number;
94
+ subscriptionsActive?: number;
95
+ subscriptionRetentionRate?: number;
96
+ apiRequestsTotal?: number;
97
+ apiRequestsSuccessful?: number;
98
+ apiRequestsFailed?: number;
99
+ apiUptimePercent?: number;
100
+ securityIncidents?: number;
101
+ lastSecurityIncident?: number;
102
+ score?: number;
103
+ tier?: string;
104
+ lastScoreUpdate?: number;
105
+ proofSuccessRate?: number;
106
+ }
107
+ /**
108
+ * Leaderboard Entry with calculated score
109
+ */
110
+ export interface ReputationLeaderboardEntry extends ReputationMetrics {
111
+ calculatedScore: ReputationScore;
112
+ }
113
+ /**
114
+ * Reputation API Response
115
+ */
116
+ export interface ReputationResponse {
117
+ success: boolean;
118
+ host?: string;
119
+ reputation?: ReputationLeaderboardEntry;
120
+ error?: string;
121
+ }
122
+ /**
123
+ * Reputation Leaderboard Response
124
+ */
125
+ export interface ReputationLeaderboardResponse {
126
+ success: boolean;
127
+ count: number;
128
+ leaderboard: ReputationLeaderboardEntry[];
129
+ filters?: {
130
+ minScore?: number;
131
+ tier?: string;
132
+ limit?: number;
133
+ };
134
+ error?: string;
135
+ }
136
+ /**
137
+ * Best Relays Response
138
+ */
139
+ export interface BestRelaysResponse {
140
+ success: boolean;
141
+ count: number;
142
+ relays: Array<{
143
+ host: string;
144
+ score: number;
145
+ tier: string;
146
+ uptime: number;
147
+ lastSeen: number;
148
+ }>;
149
+ error?: string;
150
+ }
151
+ /**
152
+ * Network Stats Response
153
+ */
154
+ export interface NetworkStatsResponse {
155
+ success: boolean;
156
+ stats: {
157
+ totalRelays: number;
158
+ activeRelays: number;
159
+ totalConnections: number;
160
+ totalStorageBytes: number;
161
+ totalStorageMB: number;
162
+ totalStorageGB: string;
163
+ totalPins: number;
164
+ totalActiveDeals: number;
165
+ totalActiveSubscriptions: number;
166
+ totalDealStorageMB: number;
167
+ totalSubscriptionStorageMB: number;
168
+ };
169
+ timestamp: number;
170
+ debug?: {
171
+ relaysFound: number;
172
+ relaysWithPulse: number;
173
+ sources: {
174
+ pulse: string;
175
+ deals: string;
176
+ subscriptions: string;
177
+ ipfsDirect: string;
178
+ };
179
+ };
180
+ error?: string;
181
+ }
182
+ /**
183
+ * Relay Info Response
184
+ */
185
+ export interface RelayInfoResponse {
186
+ success: boolean;
187
+ host: string;
188
+ endpoint?: string;
189
+ lastSeen?: number;
190
+ uptime?: number;
191
+ connections?: {
192
+ active?: number;
193
+ total?: number;
194
+ };
195
+ memory?: {
196
+ heapUsed?: number;
197
+ heapTotal?: number;
198
+ rss?: number;
199
+ };
200
+ ipfs?: {
201
+ connected: boolean;
202
+ repoSize?: number;
203
+ repoSizeMB?: number;
204
+ numPins?: number;
205
+ numObjects?: number;
206
+ };
207
+ storage?: {
208
+ used?: number;
209
+ capacity?: number;
210
+ };
211
+ error?: string;
212
+ }
213
+ /**
214
+ * Relays List Response
215
+ */
216
+ export interface RelaysListResponse {
217
+ success: boolean;
218
+ count: number;
219
+ relays: Array<{
220
+ host: string;
221
+ endpoint: string | null;
222
+ lastSeen: number;
223
+ uptime?: number;
224
+ connections?: {
225
+ active?: number;
226
+ total?: number;
227
+ };
228
+ memory?: {
229
+ heapUsed?: number;
230
+ heapTotal?: number;
231
+ };
232
+ ipfs?: {
233
+ connected: boolean;
234
+ repoSize?: number;
235
+ numPins?: number;
236
+ };
237
+ storage?: {
238
+ used?: number;
239
+ capacity?: number;
240
+ };
241
+ }>;
242
+ error?: string;
243
+ }
package/dist/types.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ /**
3
+ * Type definitions for Shogun Relay SDK
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shogun-relay-sdk",
3
- "version": "1.1.3",
3
+ "version": "1.1.5",
4
4
  "description": "SDK for interacting with Shogun Relay API - HTTP client for IPFS, deals, registry, and network operations",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",