pepay-streams-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +405 -0
  2. package/dist/api/index.d.mts +321 -0
  3. package/dist/api/index.d.ts +321 -0
  4. package/dist/api/index.js +312 -0
  5. package/dist/api/index.js.map +1 -0
  6. package/dist/api/index.mjs +306 -0
  7. package/dist/api/index.mjs.map +1 -0
  8. package/dist/automation/index.d.mts +140 -0
  9. package/dist/automation/index.d.ts +140 -0
  10. package/dist/automation/index.js +331 -0
  11. package/dist/automation/index.js.map +1 -0
  12. package/dist/automation/index.mjs +326 -0
  13. package/dist/automation/index.mjs.map +1 -0
  14. package/dist/campaigns/index.d.mts +286 -0
  15. package/dist/campaigns/index.d.ts +286 -0
  16. package/dist/campaigns/index.js +652 -0
  17. package/dist/campaigns/index.js.map +1 -0
  18. package/dist/campaigns/index.mjs +645 -0
  19. package/dist/campaigns/index.mjs.map +1 -0
  20. package/dist/claims/index.d.mts +190 -0
  21. package/dist/claims/index.d.ts +190 -0
  22. package/dist/claims/index.js +414 -0
  23. package/dist/claims/index.js.map +1 -0
  24. package/dist/claims/index.mjs +409 -0
  25. package/dist/claims/index.mjs.map +1 -0
  26. package/dist/index-BTG0TRJt.d.mts +555 -0
  27. package/dist/index-BTG0TRJt.d.ts +555 -0
  28. package/dist/index.d.mts +170 -0
  29. package/dist/index.d.ts +170 -0
  30. package/dist/index.js +2926 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/index.mjs +2888 -0
  33. package/dist/index.mjs.map +1 -0
  34. package/dist/marketplace/index.d.mts +225 -0
  35. package/dist/marketplace/index.d.ts +225 -0
  36. package/dist/marketplace/index.js +529 -0
  37. package/dist/marketplace/index.js.map +1 -0
  38. package/dist/marketplace/index.mjs +524 -0
  39. package/dist/marketplace/index.mjs.map +1 -0
  40. package/dist/react/index.d.mts +185 -0
  41. package/dist/react/index.d.ts +185 -0
  42. package/dist/react/index.js +340 -0
  43. package/dist/react/index.js.map +1 -0
  44. package/dist/react/index.mjs +333 -0
  45. package/dist/react/index.mjs.map +1 -0
  46. package/dist/staking/index.d.mts +158 -0
  47. package/dist/staking/index.d.ts +158 -0
  48. package/dist/staking/index.js +359 -0
  49. package/dist/staking/index.js.map +1 -0
  50. package/dist/staking/index.mjs +354 -0
  51. package/dist/staking/index.mjs.map +1 -0
  52. package/package.json +106 -0
  53. package/src/api/index.ts +577 -0
  54. package/src/automation/index.ts +436 -0
  55. package/src/campaigns/index.ts +835 -0
  56. package/src/claims/index.ts +530 -0
  57. package/src/client.ts +518 -0
  58. package/src/index.ts +101 -0
  59. package/src/marketplace/index.ts +730 -0
  60. package/src/react/index.ts +498 -0
  61. package/src/staking/index.ts +449 -0
  62. package/src/types/index.ts +631 -0
@@ -0,0 +1,306 @@
1
+ // src/api/index.ts
2
+ var ApiClient = class {
3
+ baseUrl;
4
+ chainId;
5
+ constructor(baseUrl, chainId) {
6
+ this.baseUrl = baseUrl.endsWith("/") ? baseUrl.slice(0, -1) : baseUrl;
7
+ this.chainId = chainId;
8
+ }
9
+ // ============================================================================
10
+ // Campaign Queries
11
+ // ============================================================================
12
+ /**
13
+ * Get campaigns with optional filtering
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const campaigns = await sdk.api.getCampaigns({
18
+ * kind: 'vested_airdrop',
19
+ * status: 'active',
20
+ * page: 1,
21
+ * pageSize: 20,
22
+ * });
23
+ * ```
24
+ */
25
+ async getCampaigns(params = {}) {
26
+ const searchParams = new URLSearchParams();
27
+ if (params.kind) searchParams.set("kind", params.kind);
28
+ if (params.creator) searchParams.set("creator", params.creator);
29
+ if (params.token) searchParams.set("token", params.token);
30
+ if (params.status) searchParams.set("status", params.status);
31
+ if (params.page) searchParams.set("page", String(params.page));
32
+ if (params.pageSize) searchParams.set("pageSize", String(params.pageSize));
33
+ if (params.sortBy) searchParams.set("sortBy", params.sortBy);
34
+ if (params.sortOrder) searchParams.set("sortOrder", params.sortOrder);
35
+ searchParams.set("chainId", String(this.chainId));
36
+ return this.fetch(
37
+ `/v1/campaigns?${searchParams.toString()}`
38
+ );
39
+ }
40
+ /**
41
+ * Get a single campaign by ID
42
+ */
43
+ async getCampaign(campaignId) {
44
+ return this.fetch(
45
+ `/v1/campaigns/${campaignId}?chainId=${this.chainId}`
46
+ );
47
+ }
48
+ /**
49
+ * Get campaign recipients
50
+ */
51
+ async getCampaignRecipients(campaignId, params = {}) {
52
+ const searchParams = new URLSearchParams();
53
+ searchParams.set("chainId", String(this.chainId));
54
+ if (params.page) searchParams.set("page", String(params.page));
55
+ if (params.pageSize) searchParams.set("pageSize", String(params.pageSize));
56
+ return this.fetch(
57
+ `/v1/campaigns/${campaignId}/recipients?${searchParams.toString()}`
58
+ );
59
+ }
60
+ /**
61
+ * Get campaign activity/claims
62
+ */
63
+ async getCampaignActivity(campaignId, params = {}) {
64
+ const searchParams = new URLSearchParams();
65
+ searchParams.set("chainId", String(this.chainId));
66
+ if (params.page) searchParams.set("page", String(params.page));
67
+ if (params.pageSize) searchParams.set("pageSize", String(params.pageSize));
68
+ return this.fetch(
69
+ `/v1/campaigns/${campaignId}/activity?${searchParams.toString()}`
70
+ );
71
+ }
72
+ // ============================================================================
73
+ // Order Queries
74
+ // ============================================================================
75
+ /**
76
+ * Get marketplace orders with optional filtering
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * const orders = await sdk.api.getOrders({
81
+ * orderType: 'tradable',
82
+ * status: 'open',
83
+ * sortBy: 'totalPrice',
84
+ * sortOrder: 'asc',
85
+ * });
86
+ * ```
87
+ */
88
+ async getOrders(params = {}) {
89
+ const searchParams = new URLSearchParams();
90
+ if (params.orderType) searchParams.set("orderType", params.orderType);
91
+ if (params.seller) searchParams.set("seller", params.seller);
92
+ if (params.sellToken) searchParams.set("sellToken", params.sellToken);
93
+ if (params.payToken) searchParams.set("payToken", params.payToken);
94
+ if (params.status) searchParams.set("status", params.status);
95
+ if (params.campaignId) searchParams.set("campaignId", params.campaignId);
96
+ if (params.page) searchParams.set("page", String(params.page));
97
+ if (params.pageSize) searchParams.set("pageSize", String(params.pageSize));
98
+ if (params.sortBy) searchParams.set("sortBy", params.sortBy);
99
+ if (params.sortOrder) searchParams.set("sortOrder", params.sortOrder);
100
+ searchParams.set("chainId", String(this.chainId));
101
+ return this.fetch(
102
+ `/v1/marketplace/orders?${searchParams.toString()}`
103
+ );
104
+ }
105
+ /**
106
+ * Get a single order by ID
107
+ */
108
+ async getOrder(orderId) {
109
+ return this.fetch(
110
+ `/v1/marketplace/orders/${orderId}?chainId=${this.chainId}`
111
+ );
112
+ }
113
+ /**
114
+ * Get order price quote
115
+ */
116
+ async getOrderQuote(orderId) {
117
+ return this.fetch(
118
+ `/v1/marketplace/orders/${orderId}/quote?chainId=${this.chainId}`
119
+ );
120
+ }
121
+ // ============================================================================
122
+ // Staking Queries
123
+ // ============================================================================
124
+ /**
125
+ * Get staking pools with optional filtering
126
+ */
127
+ async getStakingPools(params = {}) {
128
+ const searchParams = new URLSearchParams();
129
+ if (params.stakeToken) searchParams.set("stakeToken", params.stakeToken);
130
+ if (params.rewardToken) searchParams.set("rewardToken", params.rewardToken);
131
+ if (params.creator) searchParams.set("creator", params.creator);
132
+ if (params.isActive !== void 0)
133
+ searchParams.set("isActive", String(params.isActive));
134
+ if (params.page) searchParams.set("page", String(params.page));
135
+ if (params.pageSize) searchParams.set("pageSize", String(params.pageSize));
136
+ searchParams.set("chainId", String(this.chainId));
137
+ return this.fetch(
138
+ `/v1/staking/pools?${searchParams.toString()}`
139
+ );
140
+ }
141
+ /**
142
+ * Get a single staking pool by ID
143
+ */
144
+ async getStakingPool(poolId) {
145
+ return this.fetch(
146
+ `/v1/staking/pools/${poolId}?chainId=${this.chainId}`
147
+ );
148
+ }
149
+ /**
150
+ * Get stakers for a pool
151
+ */
152
+ async getPoolStakers(poolId, params = {}) {
153
+ const searchParams = new URLSearchParams();
154
+ searchParams.set("chainId", String(this.chainId));
155
+ if (params.page) searchParams.set("page", String(params.page));
156
+ if (params.pageSize) searchParams.set("pageSize", String(params.pageSize));
157
+ return this.fetch(
158
+ `/v1/staking/pools/${poolId}/stakers?${searchParams.toString()}`
159
+ );
160
+ }
161
+ // ============================================================================
162
+ // Wallet Queries
163
+ // ============================================================================
164
+ /**
165
+ * Get wallet activity summary
166
+ *
167
+ * @example
168
+ * ```typescript
169
+ * const activity = await sdk.api.getWalletActivity(address);
170
+ * console.log('Campaigns:', activity.campaigns.length);
171
+ * console.log('Open orders:', activity.openOrders.length);
172
+ * console.log('Stakes:', activity.stakes.length);
173
+ * ```
174
+ */
175
+ async getWalletActivity(address) {
176
+ return this.fetch(
177
+ `/v1/wallets/${address}?chainId=${this.chainId}`
178
+ );
179
+ }
180
+ /**
181
+ * Get wallet claims history
182
+ */
183
+ async getWalletClaims(address, params = {}) {
184
+ const searchParams = new URLSearchParams();
185
+ searchParams.set("chainId", String(this.chainId));
186
+ if (params.page) searchParams.set("page", String(params.page));
187
+ if (params.pageSize) searchParams.set("pageSize", String(params.pageSize));
188
+ return this.fetch(
189
+ `/v1/wallets/${address}/claims?${searchParams.toString()}`
190
+ );
191
+ }
192
+ /**
193
+ * Get wallet positions (campaigns where wallet has allocations)
194
+ */
195
+ async getWalletPositions(address) {
196
+ return this.fetch(
197
+ `/v1/wallets/${address}/positions?chainId=${this.chainId}`
198
+ );
199
+ }
200
+ // ============================================================================
201
+ // Token Queries
202
+ // ============================================================================
203
+ /**
204
+ * Search for tokens
205
+ *
206
+ * @example
207
+ * ```typescript
208
+ * const tokens = await sdk.api.searchTokens('USDC');
209
+ * ```
210
+ */
211
+ async searchTokens(query) {
212
+ return this.fetch(
213
+ `/v1/tokens?q=${encodeURIComponent(query)}&chainId=${this.chainId}`
214
+ );
215
+ }
216
+ /**
217
+ * Get token information by address
218
+ */
219
+ async getToken(address) {
220
+ return this.fetch(
221
+ `/v1/tokens/${address}?chainId=${this.chainId}`
222
+ );
223
+ }
224
+ /**
225
+ * Get token price
226
+ */
227
+ async getTokenPrice(address) {
228
+ return this.fetch(
229
+ `/v1/tokens/${address}/price?chainId=${this.chainId}`
230
+ );
231
+ }
232
+ // ============================================================================
233
+ // Health & Status
234
+ // ============================================================================
235
+ /**
236
+ * Check API health
237
+ */
238
+ async health() {
239
+ return this.fetch("/health");
240
+ }
241
+ /**
242
+ * Get supported chains
243
+ */
244
+ async getChains() {
245
+ return this.fetch("/v1/chains");
246
+ }
247
+ // ============================================================================
248
+ // Actions (Transaction Preparation)
249
+ // ============================================================================
250
+ /**
251
+ * Prepare a claim transaction
252
+ *
253
+ * Returns the calldata for a claim transaction.
254
+ */
255
+ async prepareClaimTx(params) {
256
+ return this.fetch("/v1/actions/claim", {
257
+ method: "POST",
258
+ body: JSON.stringify({
259
+ ...params,
260
+ chainId: this.chainId
261
+ })
262
+ });
263
+ }
264
+ /**
265
+ * Prepare a fill order transaction
266
+ */
267
+ async prepareFillOrderTx(params) {
268
+ return this.fetch("/v1/actions/fill-order", {
269
+ method: "POST",
270
+ body: JSON.stringify({
271
+ ...params,
272
+ chainId: this.chainId
273
+ })
274
+ });
275
+ }
276
+ // ============================================================================
277
+ // Helpers
278
+ // ============================================================================
279
+ async fetch(endpoint, options = {}) {
280
+ const url = `${this.baseUrl}${endpoint}`;
281
+ const response = await fetch(url, {
282
+ ...options,
283
+ headers: {
284
+ "Content-Type": "application/json",
285
+ ...options.headers
286
+ }
287
+ });
288
+ if (!response.ok) {
289
+ const error = await response.text();
290
+ throw new ApiError(response.status, error);
291
+ }
292
+ return response.json();
293
+ }
294
+ };
295
+ var ApiError = class extends Error {
296
+ constructor(status, message) {
297
+ super(`API Error (${status}): ${message}`);
298
+ this.status = status;
299
+ this.name = "ApiError";
300
+ }
301
+ };
302
+ var api_default = ApiClient;
303
+
304
+ export { ApiClient, ApiError, api_default as default };
305
+ //# sourceMappingURL=index.mjs.map
306
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/api/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\r\n * API Client Module\r\n *\r\n * Provides methods for querying indexed blockchain data:\r\n * - Campaign queries\r\n * - Order queries\r\n * - Wallet activity\r\n * - Token information\r\n * - Staking pool queries\r\n */\r\nimport type { Address } from 'viem';\r\nimport type {\r\n ApiCampaign,\r\n ApiOrder,\r\n ApiStakingPool,\r\n PaginatedResponse,\r\n} from '../types';\r\n\r\n/**\r\n * Query parameters for campaigns\r\n */\r\nexport interface CampaignQueryParams {\r\n /** Filter by campaign kind */\r\n kind?: 'instant_airdrop' | 'vested_airdrop' | 'lock' | 'vesting';\r\n /** Filter by creator address */\r\n creator?: Address;\r\n /** Filter by token address */\r\n token?: Address;\r\n /** Filter by status */\r\n status?: 'active' | 'paused' | 'finalized';\r\n /** Page number (1-indexed) */\r\n page?: number;\r\n /** Items per page */\r\n pageSize?: number;\r\n /** Sort field */\r\n sortBy?: 'createdAt' | 'totalAllocated' | 'recipientCount';\r\n /** Sort direction */\r\n sortOrder?: 'asc' | 'desc';\r\n}\r\n\r\n/**\r\n * Query parameters for orders\r\n */\r\nexport interface OrderQueryParams {\r\n /** Filter by order type */\r\n orderType?: 'instant' | 'vested' | 'tradable';\r\n /** Filter by seller */\r\n seller?: Address;\r\n /** Filter by sell token */\r\n sellToken?: Address;\r\n /** Filter by pay token */\r\n payToken?: Address;\r\n /** Filter by status */\r\n status?: 'open' | 'filled' | 'canceled' | 'expired';\r\n /** Filter by campaign (for tradable) */\r\n campaignId?: string;\r\n /** Page number */\r\n page?: number;\r\n /** Items per page */\r\n pageSize?: number;\r\n /** Sort field */\r\n sortBy?: 'createdAt' | 'totalPrice' | 'expiresAt';\r\n /** Sort direction */\r\n sortOrder?: 'asc' | 'desc';\r\n}\r\n\r\n/**\r\n * Query parameters for staking pools\r\n */\r\nexport interface PoolQueryParams {\r\n /** Filter by stake token */\r\n stakeToken?: Address;\r\n /** Filter by reward token */\r\n rewardToken?: Address;\r\n /** Filter by creator */\r\n creator?: Address;\r\n /** Filter by active status */\r\n isActive?: boolean;\r\n /** Page number */\r\n page?: number;\r\n /** Items per page */\r\n pageSize?: number;\r\n}\r\n\r\n/**\r\n * Wallet activity summary\r\n */\r\nexport interface WalletActivity {\r\n address: Address;\r\n /** Campaigns where wallet is a recipient */\r\n campaigns: {\r\n id: string;\r\n kind: string;\r\n allocated: string;\r\n claimed: string;\r\n due: string;\r\n }[];\r\n /** Open orders created by wallet */\r\n openOrders: ApiOrder[];\r\n /** Staking positions */\r\n stakes: {\r\n poolId: string;\r\n amount: string;\r\n pendingRewards: string;\r\n }[];\r\n /** Total value across all positions (in USD if available) */\r\n totalValue?: string;\r\n}\r\n\r\n/**\r\n * Token information from enrichment\r\n */\r\nexport interface TokenInfo {\r\n address: Address;\r\n chainId: number;\r\n symbol: string;\r\n name: string;\r\n decimals: number;\r\n logoUrl?: string;\r\n priceUsd?: string;\r\n marketCap?: string;\r\n volume24h?: string;\r\n}\r\n\r\n/**\r\n * API client for indexed blockchain data\r\n */\r\nexport class ApiClient {\r\n private readonly baseUrl: string;\r\n private readonly chainId: number;\r\n\r\n constructor(baseUrl: string, chainId: number) {\r\n this.baseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;\r\n this.chainId = chainId;\r\n }\r\n\r\n // ============================================================================\r\n // Campaign Queries\r\n // ============================================================================\r\n\r\n /**\r\n * Get campaigns with optional filtering\r\n *\r\n * @example\r\n * ```typescript\r\n * const campaigns = await sdk.api.getCampaigns({\r\n * kind: 'vested_airdrop',\r\n * status: 'active',\r\n * page: 1,\r\n * pageSize: 20,\r\n * });\r\n * ```\r\n */\r\n async getCampaigns(\r\n params: CampaignQueryParams = {}\r\n ): Promise<PaginatedResponse<ApiCampaign>> {\r\n const searchParams = new URLSearchParams();\r\n\r\n if (params.kind) searchParams.set('kind', params.kind);\r\n if (params.creator) searchParams.set('creator', params.creator);\r\n if (params.token) searchParams.set('token', params.token);\r\n if (params.status) searchParams.set('status', params.status);\r\n if (params.page) searchParams.set('page', String(params.page));\r\n if (params.pageSize) searchParams.set('pageSize', String(params.pageSize));\r\n if (params.sortBy) searchParams.set('sortBy', params.sortBy);\r\n if (params.sortOrder) searchParams.set('sortOrder', params.sortOrder);\r\n\r\n searchParams.set('chainId', String(this.chainId));\r\n\r\n return this.fetch<PaginatedResponse<ApiCampaign>>(\r\n `/v1/campaigns?${searchParams.toString()}`\r\n );\r\n }\r\n\r\n /**\r\n * Get a single campaign by ID\r\n */\r\n async getCampaign(campaignId: string): Promise<ApiCampaign> {\r\n return this.fetch<ApiCampaign>(\r\n `/v1/campaigns/${campaignId}?chainId=${this.chainId}`\r\n );\r\n }\r\n\r\n /**\r\n * Get campaign recipients\r\n */\r\n async getCampaignRecipients(\r\n campaignId: string,\r\n params: { page?: number; pageSize?: number } = {}\r\n ): Promise<\r\n PaginatedResponse<{\r\n address: Address;\r\n allocated: string;\r\n claimed: string;\r\n blocked: boolean;\r\n }>\r\n > {\r\n const searchParams = new URLSearchParams();\r\n searchParams.set('chainId', String(this.chainId));\r\n if (params.page) searchParams.set('page', String(params.page));\r\n if (params.pageSize) searchParams.set('pageSize', String(params.pageSize));\r\n\r\n return this.fetch(\r\n `/v1/campaigns/${campaignId}/recipients?${searchParams.toString()}`\r\n );\r\n }\r\n\r\n /**\r\n * Get campaign activity/claims\r\n */\r\n async getCampaignActivity(\r\n campaignId: string,\r\n params: { page?: number; pageSize?: number } = {}\r\n ): Promise<\r\n PaginatedResponse<{\r\n recipient: Address;\r\n amount: string;\r\n timestamp: string;\r\n txHash: string;\r\n }>\r\n > {\r\n const searchParams = new URLSearchParams();\r\n searchParams.set('chainId', String(this.chainId));\r\n if (params.page) searchParams.set('page', String(params.page));\r\n if (params.pageSize) searchParams.set('pageSize', String(params.pageSize));\r\n\r\n return this.fetch(\r\n `/v1/campaigns/${campaignId}/activity?${searchParams.toString()}`\r\n );\r\n }\r\n\r\n // ============================================================================\r\n // Order Queries\r\n // ============================================================================\r\n\r\n /**\r\n * Get marketplace orders with optional filtering\r\n *\r\n * @example\r\n * ```typescript\r\n * const orders = await sdk.api.getOrders({\r\n * orderType: 'tradable',\r\n * status: 'open',\r\n * sortBy: 'totalPrice',\r\n * sortOrder: 'asc',\r\n * });\r\n * ```\r\n */\r\n async getOrders(\r\n params: OrderQueryParams = {}\r\n ): Promise<PaginatedResponse<ApiOrder>> {\r\n const searchParams = new URLSearchParams();\r\n\r\n if (params.orderType) searchParams.set('orderType', params.orderType);\r\n if (params.seller) searchParams.set('seller', params.seller);\r\n if (params.sellToken) searchParams.set('sellToken', params.sellToken);\r\n if (params.payToken) searchParams.set('payToken', params.payToken);\r\n if (params.status) searchParams.set('status', params.status);\r\n if (params.campaignId) searchParams.set('campaignId', params.campaignId);\r\n if (params.page) searchParams.set('page', String(params.page));\r\n if (params.pageSize) searchParams.set('pageSize', String(params.pageSize));\r\n if (params.sortBy) searchParams.set('sortBy', params.sortBy);\r\n if (params.sortOrder) searchParams.set('sortOrder', params.sortOrder);\r\n\r\n searchParams.set('chainId', String(this.chainId));\r\n\r\n return this.fetch<PaginatedResponse<ApiOrder>>(\r\n `/v1/marketplace/orders?${searchParams.toString()}`\r\n );\r\n }\r\n\r\n /**\r\n * Get a single order by ID\r\n */\r\n async getOrder(orderId: string): Promise<ApiOrder> {\r\n return this.fetch<ApiOrder>(\r\n `/v1/marketplace/orders/${orderId}?chainId=${this.chainId}`\r\n );\r\n }\r\n\r\n /**\r\n * Get order price quote\r\n */\r\n async getOrderQuote(orderId: string): Promise<{\r\n totalPrice: string;\r\n protocolFee: string;\r\n sellerReceives: string;\r\n isValid: boolean;\r\n }> {\r\n return this.fetch(\r\n `/v1/marketplace/orders/${orderId}/quote?chainId=${this.chainId}`\r\n );\r\n }\r\n\r\n // ============================================================================\r\n // Staking Queries\r\n // ============================================================================\r\n\r\n /**\r\n * Get staking pools with optional filtering\r\n */\r\n async getStakingPools(\r\n params: PoolQueryParams = {}\r\n ): Promise<PaginatedResponse<ApiStakingPool>> {\r\n const searchParams = new URLSearchParams();\r\n\r\n if (params.stakeToken) searchParams.set('stakeToken', params.stakeToken);\r\n if (params.rewardToken) searchParams.set('rewardToken', params.rewardToken);\r\n if (params.creator) searchParams.set('creator', params.creator);\r\n if (params.isActive !== undefined)\r\n searchParams.set('isActive', String(params.isActive));\r\n if (params.page) searchParams.set('page', String(params.page));\r\n if (params.pageSize) searchParams.set('pageSize', String(params.pageSize));\r\n\r\n searchParams.set('chainId', String(this.chainId));\r\n\r\n return this.fetch<PaginatedResponse<ApiStakingPool>>(\r\n `/v1/staking/pools?${searchParams.toString()}`\r\n );\r\n }\r\n\r\n /**\r\n * Get a single staking pool by ID\r\n */\r\n async getStakingPool(poolId: string): Promise<ApiStakingPool> {\r\n return this.fetch<ApiStakingPool>(\r\n `/v1/staking/pools/${poolId}?chainId=${this.chainId}`\r\n );\r\n }\r\n\r\n /**\r\n * Get stakers for a pool\r\n */\r\n async getPoolStakers(\r\n poolId: string,\r\n params: { page?: number; pageSize?: number } = {}\r\n ): Promise<\r\n PaginatedResponse<{\r\n address: Address;\r\n amount: string;\r\n pendingRewards: string;\r\n }>\r\n > {\r\n const searchParams = new URLSearchParams();\r\n searchParams.set('chainId', String(this.chainId));\r\n if (params.page) searchParams.set('page', String(params.page));\r\n if (params.pageSize) searchParams.set('pageSize', String(params.pageSize));\r\n\r\n return this.fetch(\r\n `/v1/staking/pools/${poolId}/stakers?${searchParams.toString()}`\r\n );\r\n }\r\n\r\n // ============================================================================\r\n // Wallet Queries\r\n // ============================================================================\r\n\r\n /**\r\n * Get wallet activity summary\r\n *\r\n * @example\r\n * ```typescript\r\n * const activity = await sdk.api.getWalletActivity(address);\r\n * console.log('Campaigns:', activity.campaigns.length);\r\n * console.log('Open orders:', activity.openOrders.length);\r\n * console.log('Stakes:', activity.stakes.length);\r\n * ```\r\n */\r\n async getWalletActivity(address: Address): Promise<WalletActivity> {\r\n return this.fetch<WalletActivity>(\r\n `/v1/wallets/${address}?chainId=${this.chainId}`\r\n );\r\n }\r\n\r\n /**\r\n * Get wallet claims history\r\n */\r\n async getWalletClaims(\r\n address: Address,\r\n params: { page?: number; pageSize?: number } = {}\r\n ): Promise<\r\n PaginatedResponse<{\r\n campaignId: string;\r\n amount: string;\r\n timestamp: string;\r\n txHash: string;\r\n }>\r\n > {\r\n const searchParams = new URLSearchParams();\r\n searchParams.set('chainId', String(this.chainId));\r\n if (params.page) searchParams.set('page', String(params.page));\r\n if (params.pageSize) searchParams.set('pageSize', String(params.pageSize));\r\n\r\n return this.fetch(\r\n `/v1/wallets/${address}/claims?${searchParams.toString()}`\r\n );\r\n }\r\n\r\n /**\r\n * Get wallet positions (campaigns where wallet has allocations)\r\n */\r\n async getWalletPositions(\r\n address: Address\r\n ): Promise<\r\n {\r\n campaignId: string;\r\n kind: string;\r\n token: Address;\r\n allocated: string;\r\n claimed: string;\r\n due: string;\r\n vestingProgress: number;\r\n }[]\r\n > {\r\n return this.fetch(\r\n `/v1/wallets/${address}/positions?chainId=${this.chainId}`\r\n );\r\n }\r\n\r\n // ============================================================================\r\n // Token Queries\r\n // ============================================================================\r\n\r\n /**\r\n * Search for tokens\r\n *\r\n * @example\r\n * ```typescript\r\n * const tokens = await sdk.api.searchTokens('USDC');\r\n * ```\r\n */\r\n async searchTokens(query: string): Promise<TokenInfo[]> {\r\n return this.fetch<TokenInfo[]>(\r\n `/v1/tokens?q=${encodeURIComponent(query)}&chainId=${this.chainId}`\r\n );\r\n }\r\n\r\n /**\r\n * Get token information by address\r\n */\r\n async getToken(address: Address): Promise<TokenInfo> {\r\n return this.fetch<TokenInfo>(\r\n `/v1/tokens/${address}?chainId=${this.chainId}`\r\n );\r\n }\r\n\r\n /**\r\n * Get token price\r\n */\r\n async getTokenPrice(address: Address): Promise<{\r\n priceUsd: string;\r\n priceChange24h: string;\r\n timestamp: string;\r\n }> {\r\n return this.fetch(\r\n `/v1/tokens/${address}/price?chainId=${this.chainId}`\r\n );\r\n }\r\n\r\n // ============================================================================\r\n // Health & Status\r\n // ============================================================================\r\n\r\n /**\r\n * Check API health\r\n */\r\n async health(): Promise<{\r\n status: 'ok' | 'degraded' | 'down';\r\n indexerBlockHeight: number;\r\n chainBlockHeight: number;\r\n lag: number;\r\n }> {\r\n return this.fetch('/health');\r\n }\r\n\r\n /**\r\n * Get supported chains\r\n */\r\n async getChains(): Promise<\r\n {\r\n chainId: number;\r\n name: string;\r\n rpcUrl: string;\r\n diamondAddress: Address;\r\n }[]\r\n > {\r\n return this.fetch('/v1/chains');\r\n }\r\n\r\n // ============================================================================\r\n // Actions (Transaction Preparation)\r\n // ============================================================================\r\n\r\n /**\r\n * Prepare a claim transaction\r\n *\r\n * Returns the calldata for a claim transaction.\r\n */\r\n async prepareClaimTx(params: {\r\n campaignId: string;\r\n recipient: Address;\r\n }): Promise<{\r\n to: Address;\r\n data: `0x${string}`;\r\n value: string;\r\n estimatedGas: string;\r\n }> {\r\n return this.fetch('/v1/actions/claim', {\r\n method: 'POST',\r\n body: JSON.stringify({\r\n ...params,\r\n chainId: this.chainId,\r\n }),\r\n });\r\n }\r\n\r\n /**\r\n * Prepare a fill order transaction\r\n */\r\n async prepareFillOrderTx(params: {\r\n orderId: string;\r\n }): Promise<{\r\n to: Address;\r\n data: `0x${string}`;\r\n value: string;\r\n estimatedGas: string;\r\n }> {\r\n return this.fetch('/v1/actions/fill-order', {\r\n method: 'POST',\r\n body: JSON.stringify({\r\n ...params,\r\n chainId: this.chainId,\r\n }),\r\n });\r\n }\r\n\r\n // ============================================================================\r\n // Helpers\r\n // ============================================================================\r\n\r\n private async fetch<T>(\r\n endpoint: string,\r\n options: RequestInit = {}\r\n ): Promise<T> {\r\n const url = `${this.baseUrl}${endpoint}`;\r\n\r\n const response = await fetch(url, {\r\n ...options,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n ...options.headers,\r\n },\r\n });\r\n\r\n if (!response.ok) {\r\n const error = await response.text();\r\n throw new ApiError(response.status, error);\r\n }\r\n\r\n return response.json() as Promise<T>;\r\n }\r\n}\r\n\r\n/**\r\n * API error class\r\n */\r\nexport class ApiError extends Error {\r\n constructor(\r\n public readonly status: number,\r\n message: string\r\n ) {\r\n super(`API Error (${status}): ${message}`);\r\n this.name = 'ApiError';\r\n }\r\n}\r\n\r\nexport default ApiClient;\r\n"]}
@@ -0,0 +1,140 @@
1
+ import { PublicClient, WalletClient, Address } from 'viem';
2
+ import { E as EnableAutoWithdrawParams, T as TransactionResult, h as EnableAutoReleaseParams, A as AutomationStatus } from '../index-BTG0TRJt.mjs';
3
+
4
+ /**
5
+ * Automation Module
6
+ *
7
+ * Provides methods for keeper automation:
8
+ * - Enable/disable auto-withdraw for vesting campaigns
9
+ * - Enable/disable auto-release for locks
10
+ * - Query automation status
11
+ */
12
+
13
+ /**
14
+ * Automation module for keeper-powered operations
15
+ */
16
+ declare class AutomationModule {
17
+ private readonly publicClient;
18
+ private readonly walletClient;
19
+ private readonly diamondAddress;
20
+ constructor(publicClient: PublicClient, walletClient: WalletClient | undefined, diamondAddress: Address);
21
+ /**
22
+ * Enable auto-withdraw for a vesting campaign
23
+ *
24
+ * Keepers will automatically claim vested tokens on behalf of recipients.
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const result = await sdk.automation.enableAutoWithdraw({
29
+ * campaignId: 1n,
30
+ * frequency: 7 * 24 * 60 * 60, // Weekly
31
+ * tipAmount: parseEther('0.1'), // 0.1 ETH for keeper
32
+ * });
33
+ * ```
34
+ */
35
+ enableAutoWithdraw(params: EnableAutoWithdrawParams): Promise<TransactionResult>;
36
+ /**
37
+ * Disable auto-withdraw for a campaign
38
+ *
39
+ * Returns remaining tip balance to caller.
40
+ */
41
+ disableAutoWithdraw(campaignId: bigint): Promise<TransactionResult>;
42
+ /**
43
+ * Enable auto-release for a lock campaign
44
+ *
45
+ * Keepers will automatically release tokens when unlock time passes.
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * const result = await sdk.automation.enableAutoRelease({
50
+ * campaignId: 5n,
51
+ * frequency: 3600, // Check every hour
52
+ * tipAmount: parseEther('0.05'), // 0.05 ETH for keeper
53
+ * });
54
+ * ```
55
+ */
56
+ enableAutoRelease(params: EnableAutoReleaseParams & {
57
+ frequency?: number;
58
+ }): Promise<TransactionResult>;
59
+ /**
60
+ * Disable auto-release for a lock campaign
61
+ */
62
+ disableAutoRelease(campaignId: bigint): Promise<TransactionResult>;
63
+ /**
64
+ * Get auto-withdraw status for a campaign
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * const status = await sdk.automation.getAutoWithdrawStatus(campaignId);
69
+ * console.log('Enabled:', status.enabled);
70
+ * console.log('Next run:', new Date(status.nextRun * 1000));
71
+ * console.log('Tip balance:', formatEther(status.tipBalance));
72
+ * ```
73
+ */
74
+ getAutoWithdrawStatus(campaignId: bigint): Promise<AutomationStatus>;
75
+ /**
76
+ * Get auto-release status for a lock campaign
77
+ */
78
+ getAutoReleaseStatus(campaignId: bigint): Promise<{
79
+ enabled: boolean;
80
+ frequency: number;
81
+ lastRun: number;
82
+ nextRun: number;
83
+ }>;
84
+ /**
85
+ * Preview automation for specific recipients
86
+ */
87
+ previewAutomation(campaignId: bigint, recipients: Address[]): Promise<{
88
+ pendingCount: bigint;
89
+ nextFeeWei: bigint;
90
+ escrowWei: bigint;
91
+ }>;
92
+ /**
93
+ * Get automation run statistics
94
+ */
95
+ getAutomationStats(campaignId: bigint, lockMode?: boolean): Promise<{
96
+ runsObserved: number;
97
+ avgRecipientsPerRun: number;
98
+ lastRecipientsProcessed: number;
99
+ maxRecipientsPerRun: number;
100
+ }>;
101
+ /**
102
+ * Check if auto-withdraw is currently runnable
103
+ *
104
+ * Returns true if cooldown has passed and there are pending recipients.
105
+ */
106
+ isAutoWithdrawRunnable(campaignId: bigint): Promise<boolean>;
107
+ /**
108
+ * Check if auto-release is currently runnable
109
+ */
110
+ isAutoReleaseRunnable(campaignId: bigint): Promise<boolean>;
111
+ /**
112
+ * Execute auto-withdraw for specific recipients (keeper only)
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * // Get recipients from registry or external source
117
+ * const recipients = ['0x...', '0x...', '0x...'];
118
+ * await sdk.automation.executeAutoWithdraw(campaignId, recipients);
119
+ * ```
120
+ */
121
+ executeAutoWithdraw(campaignId: bigint, recipients: Address[]): Promise<TransactionResult>;
122
+ /**
123
+ * Execute auto-withdraw using registry cursor (keeper only)
124
+ *
125
+ * Processes up to batchSize recipients from the registry.
126
+ */
127
+ executeAutoWithdrawNext(campaignId: bigint, batchSize?: number): Promise<TransactionResult>;
128
+ /**
129
+ * Execute auto-release for specific recipients (keeper only)
130
+ */
131
+ executeAutoRelease(campaignId: bigint, recipients: Address[]): Promise<TransactionResult>;
132
+ /**
133
+ * Execute auto-release using registry cursor (keeper only)
134
+ */
135
+ executeAutoReleaseNext(campaignId: bigint, batchSize?: number): Promise<TransactionResult>;
136
+ private requireWallet;
137
+ private createTransactionResult;
138
+ }
139
+
140
+ export { AutomationModule, AutomationModule as default };
@@ -0,0 +1,140 @@
1
+ import { PublicClient, WalletClient, Address } from 'viem';
2
+ import { E as EnableAutoWithdrawParams, T as TransactionResult, h as EnableAutoReleaseParams, A as AutomationStatus } from '../index-BTG0TRJt.js';
3
+
4
+ /**
5
+ * Automation Module
6
+ *
7
+ * Provides methods for keeper automation:
8
+ * - Enable/disable auto-withdraw for vesting campaigns
9
+ * - Enable/disable auto-release for locks
10
+ * - Query automation status
11
+ */
12
+
13
+ /**
14
+ * Automation module for keeper-powered operations
15
+ */
16
+ declare class AutomationModule {
17
+ private readonly publicClient;
18
+ private readonly walletClient;
19
+ private readonly diamondAddress;
20
+ constructor(publicClient: PublicClient, walletClient: WalletClient | undefined, diamondAddress: Address);
21
+ /**
22
+ * Enable auto-withdraw for a vesting campaign
23
+ *
24
+ * Keepers will automatically claim vested tokens on behalf of recipients.
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const result = await sdk.automation.enableAutoWithdraw({
29
+ * campaignId: 1n,
30
+ * frequency: 7 * 24 * 60 * 60, // Weekly
31
+ * tipAmount: parseEther('0.1'), // 0.1 ETH for keeper
32
+ * });
33
+ * ```
34
+ */
35
+ enableAutoWithdraw(params: EnableAutoWithdrawParams): Promise<TransactionResult>;
36
+ /**
37
+ * Disable auto-withdraw for a campaign
38
+ *
39
+ * Returns remaining tip balance to caller.
40
+ */
41
+ disableAutoWithdraw(campaignId: bigint): Promise<TransactionResult>;
42
+ /**
43
+ * Enable auto-release for a lock campaign
44
+ *
45
+ * Keepers will automatically release tokens when unlock time passes.
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * const result = await sdk.automation.enableAutoRelease({
50
+ * campaignId: 5n,
51
+ * frequency: 3600, // Check every hour
52
+ * tipAmount: parseEther('0.05'), // 0.05 ETH for keeper
53
+ * });
54
+ * ```
55
+ */
56
+ enableAutoRelease(params: EnableAutoReleaseParams & {
57
+ frequency?: number;
58
+ }): Promise<TransactionResult>;
59
+ /**
60
+ * Disable auto-release for a lock campaign
61
+ */
62
+ disableAutoRelease(campaignId: bigint): Promise<TransactionResult>;
63
+ /**
64
+ * Get auto-withdraw status for a campaign
65
+ *
66
+ * @example
67
+ * ```typescript
68
+ * const status = await sdk.automation.getAutoWithdrawStatus(campaignId);
69
+ * console.log('Enabled:', status.enabled);
70
+ * console.log('Next run:', new Date(status.nextRun * 1000));
71
+ * console.log('Tip balance:', formatEther(status.tipBalance));
72
+ * ```
73
+ */
74
+ getAutoWithdrawStatus(campaignId: bigint): Promise<AutomationStatus>;
75
+ /**
76
+ * Get auto-release status for a lock campaign
77
+ */
78
+ getAutoReleaseStatus(campaignId: bigint): Promise<{
79
+ enabled: boolean;
80
+ frequency: number;
81
+ lastRun: number;
82
+ nextRun: number;
83
+ }>;
84
+ /**
85
+ * Preview automation for specific recipients
86
+ */
87
+ previewAutomation(campaignId: bigint, recipients: Address[]): Promise<{
88
+ pendingCount: bigint;
89
+ nextFeeWei: bigint;
90
+ escrowWei: bigint;
91
+ }>;
92
+ /**
93
+ * Get automation run statistics
94
+ */
95
+ getAutomationStats(campaignId: bigint, lockMode?: boolean): Promise<{
96
+ runsObserved: number;
97
+ avgRecipientsPerRun: number;
98
+ lastRecipientsProcessed: number;
99
+ maxRecipientsPerRun: number;
100
+ }>;
101
+ /**
102
+ * Check if auto-withdraw is currently runnable
103
+ *
104
+ * Returns true if cooldown has passed and there are pending recipients.
105
+ */
106
+ isAutoWithdrawRunnable(campaignId: bigint): Promise<boolean>;
107
+ /**
108
+ * Check if auto-release is currently runnable
109
+ */
110
+ isAutoReleaseRunnable(campaignId: bigint): Promise<boolean>;
111
+ /**
112
+ * Execute auto-withdraw for specific recipients (keeper only)
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * // Get recipients from registry or external source
117
+ * const recipients = ['0x...', '0x...', '0x...'];
118
+ * await sdk.automation.executeAutoWithdraw(campaignId, recipients);
119
+ * ```
120
+ */
121
+ executeAutoWithdraw(campaignId: bigint, recipients: Address[]): Promise<TransactionResult>;
122
+ /**
123
+ * Execute auto-withdraw using registry cursor (keeper only)
124
+ *
125
+ * Processes up to batchSize recipients from the registry.
126
+ */
127
+ executeAutoWithdrawNext(campaignId: bigint, batchSize?: number): Promise<TransactionResult>;
128
+ /**
129
+ * Execute auto-release for specific recipients (keeper only)
130
+ */
131
+ executeAutoRelease(campaignId: bigint, recipients: Address[]): Promise<TransactionResult>;
132
+ /**
133
+ * Execute auto-release using registry cursor (keeper only)
134
+ */
135
+ executeAutoReleaseNext(campaignId: bigint, batchSize?: number): Promise<TransactionResult>;
136
+ private requireWallet;
137
+ private createTransactionResult;
138
+ }
139
+
140
+ export { AutomationModule, AutomationModule as default };