@sudobility/contracts 1.12.0 → 1.13.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 (128) hide show
  1. package/dist/evm/src/evm/{mailer-client.d.ts → evm-mailer-client.d.ts} +146 -50
  2. package/dist/evm/src/evm/evm-mailer-client.d.ts.map +1 -0
  3. package/dist/evm/src/evm/evm-mailer-client.js +924 -0
  4. package/dist/evm/src/evm/evm-mailer-client.js.map +1 -0
  5. package/dist/evm/src/evm/index.d.ts +1 -1
  6. package/dist/evm/src/evm/index.d.ts.map +1 -1
  7. package/dist/evm/src/evm/index.js +4 -4
  8. package/dist/evm/src/evm/index.js.map +1 -1
  9. package/dist/solana/solana/index.d.ts +1 -1
  10. package/dist/solana/solana/index.d.ts.map +1 -1
  11. package/dist/solana/solana/index.js +4 -3
  12. package/dist/solana/solana/index.js.map +1 -1
  13. package/dist/solana/solana/solana-mailer-client.d.ts +209 -0
  14. package/dist/solana/solana/solana-mailer-client.d.ts.map +1 -0
  15. package/dist/solana/solana/solana-mailer-client.js +1004 -0
  16. package/dist/solana/solana/solana-mailer-client.js.map +1 -0
  17. package/dist/solana/solana/types.d.ts +3 -2
  18. package/dist/solana/solana/types.d.ts.map +1 -1
  19. package/dist/solana/solana/types.js.map +1 -1
  20. package/dist/{unified-esm/src/evm/mailer-client.d.ts → unified/src/evm/evm-mailer-client.d.ts} +146 -50
  21. package/dist/unified/src/evm/evm-mailer-client.d.ts.map +1 -0
  22. package/dist/unified/src/evm/evm-mailer-client.js +924 -0
  23. package/dist/unified/src/evm/evm-mailer-client.js.map +1 -0
  24. package/dist/unified/src/evm/index.d.ts +1 -1
  25. package/dist/unified/src/evm/index.d.ts.map +1 -1
  26. package/dist/unified/src/evm/index.js +4 -4
  27. package/dist/unified/src/evm/index.js.map +1 -1
  28. package/dist/unified/src/react/context/MailerProvider.d.ts +26 -20
  29. package/dist/unified/src/react/context/MailerProvider.d.ts.map +1 -1
  30. package/dist/unified/src/react/context/MailerProvider.js +26 -26
  31. package/dist/unified/src/react/context/MailerProvider.js.map +1 -1
  32. package/dist/unified/src/react/hooks/useMailerMutations.d.ts +225 -192
  33. package/dist/unified/src/react/hooks/useMailerMutations.d.ts.map +1 -1
  34. package/dist/unified/src/react/hooks/useMailerMutations.js +263 -266
  35. package/dist/unified/src/react/hooks/useMailerMutations.js.map +1 -1
  36. package/dist/unified/src/react/hooks/useMailerQueries.d.ts +117 -63
  37. package/dist/unified/src/react/hooks/useMailerQueries.d.ts.map +1 -1
  38. package/dist/unified/src/react/hooks/useMailerQueries.js +239 -104
  39. package/dist/unified/src/react/hooks/useMailerQueries.js.map +1 -1
  40. package/dist/unified/src/react/index.d.ts +5 -3
  41. package/dist/unified/src/react/index.d.ts.map +1 -1
  42. package/dist/unified/src/react/index.js +41 -26
  43. package/dist/unified/src/react/index.js.map +1 -1
  44. package/dist/unified/src/solana/index.d.ts +1 -1
  45. package/dist/unified/src/solana/index.d.ts.map +1 -1
  46. package/dist/unified/src/solana/index.js +4 -3
  47. package/dist/unified/src/solana/index.js.map +1 -1
  48. package/dist/unified/src/solana/solana-mailer-client.d.ts +209 -0
  49. package/dist/unified/src/solana/solana-mailer-client.d.ts.map +1 -0
  50. package/dist/unified/src/solana/solana-mailer-client.js +1004 -0
  51. package/dist/unified/src/solana/solana-mailer-client.js.map +1 -0
  52. package/dist/unified/src/solana/types.d.ts +3 -2
  53. package/dist/unified/src/solana/types.d.ts.map +1 -1
  54. package/dist/unified/src/solana/types.js.map +1 -1
  55. package/dist/unified/src/unified/index.d.ts +1 -1
  56. package/dist/unified/src/unified/index.d.ts.map +1 -1
  57. package/dist/unified/src/unified/onchain-mailer-client.d.ts +187 -268
  58. package/dist/unified/src/unified/onchain-mailer-client.d.ts.map +1 -1
  59. package/dist/unified/src/unified/onchain-mailer-client.js +539 -1614
  60. package/dist/unified/src/unified/onchain-mailer-client.js.map +1 -1
  61. package/dist/unified/src/unified/types.d.ts +23 -6
  62. package/dist/unified/src/unified/types.d.ts.map +1 -1
  63. package/dist/{unified/src/evm/mailer-client.d.ts → unified-esm/src/evm/evm-mailer-client.d.ts} +146 -50
  64. package/dist/unified-esm/src/evm/evm-mailer-client.d.ts.map +1 -0
  65. package/dist/unified-esm/src/evm/evm-mailer-client.js +920 -0
  66. package/dist/unified-esm/src/evm/evm-mailer-client.js.map +1 -0
  67. package/dist/unified-esm/src/evm/index.d.ts +1 -1
  68. package/dist/unified-esm/src/evm/index.d.ts.map +1 -1
  69. package/dist/unified-esm/src/evm/index.js +2 -2
  70. package/dist/unified-esm/src/evm/index.js.map +1 -1
  71. package/dist/unified-esm/src/react/context/MailerProvider.d.ts +26 -20
  72. package/dist/unified-esm/src/react/context/MailerProvider.d.ts.map +1 -1
  73. package/dist/unified-esm/src/react/context/MailerProvider.js +25 -26
  74. package/dist/unified-esm/src/react/context/MailerProvider.js.map +1 -1
  75. package/dist/unified-esm/src/react/hooks/useMailerMutations.d.ts +225 -192
  76. package/dist/unified-esm/src/react/hooks/useMailerMutations.d.ts.map +1 -1
  77. package/dist/unified-esm/src/react/hooks/useMailerMutations.js +254 -262
  78. package/dist/unified-esm/src/react/hooks/useMailerMutations.js.map +1 -1
  79. package/dist/unified-esm/src/react/hooks/useMailerQueries.d.ts +117 -63
  80. package/dist/unified-esm/src/react/hooks/useMailerQueries.d.ts.map +1 -1
  81. package/dist/unified-esm/src/react/hooks/useMailerQueries.js +232 -102
  82. package/dist/unified-esm/src/react/hooks/useMailerQueries.js.map +1 -1
  83. package/dist/unified-esm/src/react/index.d.ts +5 -3
  84. package/dist/unified-esm/src/react/index.d.ts.map +1 -1
  85. package/dist/unified-esm/src/react/index.js +9 -5
  86. package/dist/unified-esm/src/react/index.js.map +1 -1
  87. package/dist/unified-esm/src/solana/index.d.ts +1 -1
  88. package/dist/unified-esm/src/solana/index.d.ts.map +1 -1
  89. package/dist/unified-esm/src/solana/index.js +2 -1
  90. package/dist/unified-esm/src/solana/index.js.map +1 -1
  91. package/dist/unified-esm/src/solana/solana-mailer-client.d.ts +209 -0
  92. package/dist/unified-esm/src/solana/solana-mailer-client.d.ts.map +1 -0
  93. package/dist/unified-esm/src/solana/solana-mailer-client.js +1000 -0
  94. package/dist/unified-esm/src/solana/solana-mailer-client.js.map +1 -0
  95. package/dist/unified-esm/src/solana/types.d.ts +3 -2
  96. package/dist/unified-esm/src/solana/types.d.ts.map +1 -1
  97. package/dist/unified-esm/src/solana/types.js.map +1 -1
  98. package/dist/unified-esm/src/unified/index.d.ts +1 -1
  99. package/dist/unified-esm/src/unified/index.d.ts.map +1 -1
  100. package/dist/unified-esm/src/unified/onchain-mailer-client.d.ts +187 -268
  101. package/dist/unified-esm/src/unified/onchain-mailer-client.d.ts.map +1 -1
  102. package/dist/unified-esm/src/unified/onchain-mailer-client.js +539 -1614
  103. package/dist/unified-esm/src/unified/onchain-mailer-client.js.map +1 -1
  104. package/dist/unified-esm/src/unified/types.d.ts +23 -6
  105. package/dist/unified-esm/src/unified/types.d.ts.map +1 -1
  106. package/package.json +5 -4
  107. package/programs/mailer/Cargo.toml +1 -1
  108. package/dist/evm/src/evm/mailer-client.d.ts.map +0 -1
  109. package/dist/evm/src/evm/mailer-client.js +0 -619
  110. package/dist/evm/src/evm/mailer-client.js.map +0 -1
  111. package/dist/solana/solana/mailer-client.d.ts +0 -282
  112. package/dist/solana/solana/mailer-client.d.ts.map +0 -1
  113. package/dist/solana/solana/mailer-client.js +0 -989
  114. package/dist/solana/solana/mailer-client.js.map +0 -1
  115. package/dist/unified/src/evm/mailer-client.d.ts.map +0 -1
  116. package/dist/unified/src/evm/mailer-client.js +0 -619
  117. package/dist/unified/src/evm/mailer-client.js.map +0 -1
  118. package/dist/unified/src/solana/mailer-client.d.ts +0 -282
  119. package/dist/unified/src/solana/mailer-client.d.ts.map +0 -1
  120. package/dist/unified/src/solana/mailer-client.js +0 -989
  121. package/dist/unified/src/solana/mailer-client.js.map +0 -1
  122. package/dist/unified-esm/src/evm/mailer-client.d.ts.map +0 -1
  123. package/dist/unified-esm/src/evm/mailer-client.js +0 -615
  124. package/dist/unified-esm/src/evm/mailer-client.js.map +0 -1
  125. package/dist/unified-esm/src/solana/mailer-client.d.ts +0 -282
  126. package/dist/unified-esm/src/solana/mailer-client.d.ts.map +0 -1
  127. package/dist/unified-esm/src/solana/mailer-client.js +0 -985
  128. package/dist/unified-esm/src/solana/mailer-client.js.map +0 -1
@@ -1,619 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MailerClient = void 0;
4
- const viem_1 = require("viem");
5
- const Mailer__factory_js_1 = require("../../typechain-types/factories/Mailer__factory.js");
6
- const MAILER_ABI = Mailer__factory_js_1.Mailer__factory.abi;
7
- const MAILER_BYTECODE = Mailer__factory_js_1.Mailer__factory.bytecode;
8
- /**
9
- * Normalize any Address-like input (string with checksum or lowercase) to checksum format.
10
- */
11
- function normalizeAddress(value) {
12
- return (0, viem_1.getAddress)(value);
13
- }
14
- /**
15
- * High-level client for interacting with the EVM Mailer contract.
16
- * Exposes every callable contract function with type-safe wrappers.
17
- * Includes automatic gas estimation with configurable buffer for all transactions.
18
- */
19
- class MailerClient {
20
- constructor(contractAddress, publicClient) {
21
- this.defaultGasMultiplier = 1.2; // 20% buffer by default
22
- this.contractAddress = normalizeAddress(contractAddress);
23
- this.publicClient = publicClient;
24
- }
25
- /**
26
- * Helper method to estimate gas for a transaction with optional buffer
27
- */
28
- async estimateGasWithBuffer(estimateFn, gasOptions) {
29
- // If gas limit is explicitly provided, use it
30
- if (gasOptions?.gasLimit) {
31
- return gasOptions.gasLimit;
32
- }
33
- try {
34
- // Estimate gas for the transaction
35
- const estimatedGas = await estimateFn();
36
- // Apply multiplier for safety buffer
37
- const multiplier = gasOptions?.gasMultiplier ?? this.defaultGasMultiplier;
38
- const gasWithBuffer = BigInt(Math.ceil(Number(estimatedGas) * multiplier));
39
- // Apply max gas limit if specified
40
- if (gasOptions?.maxGasLimit) {
41
- return gasWithBuffer > gasOptions.maxGasLimit ? gasOptions.maxGasLimit : gasWithBuffer;
42
- }
43
- return gasWithBuffer;
44
- }
45
- catch (error) {
46
- // If estimation fails, throw with helpful message
47
- if (error instanceof viem_1.EstimateGasExecutionError) {
48
- throw new Error(`Gas estimation failed: ${error.message}`);
49
- }
50
- throw error;
51
- }
52
- }
53
- /**
54
- * Helper method to build transaction parameters with gas options
55
- */
56
- buildTxParams(gasLimit, gasOptions) {
57
- const params = { gas: gasLimit };
58
- if (gasOptions?.maxFeePerGas) {
59
- params.maxFeePerGas = gasOptions.maxFeePerGas;
60
- }
61
- if (gasOptions?.maxPriorityFeePerGas) {
62
- params.maxPriorityFeePerGas = gasOptions.maxPriorityFeePerGas;
63
- }
64
- return params;
65
- }
66
- /**
67
- * Deploy a fresh Mailer contract instance with gas estimation.
68
- */
69
- static async deploy(walletClient, publicClient, account, usdcTokenAddress, ownerAddress, gasOptions) {
70
- // For deployment, we need to estimate gas differently
71
- // Use a reasonable default for deployment gas
72
- const estimatedGas = BigInt(3000000); // Default deployment gas
73
- // Apply gas buffer
74
- const multiplier = gasOptions?.gasMultiplier ?? 1.5; // Higher multiplier for deployment
75
- const gasLimit = gasOptions?.gasLimit ?? BigInt(Math.ceil(Number(estimatedGas) * multiplier));
76
- // Deploy with estimated gas
77
- const hash = await walletClient.deployContract({
78
- abi: MAILER_ABI,
79
- bytecode: MAILER_BYTECODE,
80
- args: [normalizeAddress(usdcTokenAddress), normalizeAddress(ownerAddress)],
81
- account,
82
- chain: walletClient.chain,
83
- gas: gasLimit,
84
- ...(gasOptions?.maxFeePerGas && { maxFeePerGas: gasOptions.maxFeePerGas }),
85
- ...(gasOptions?.maxPriorityFeePerGas && { maxPriorityFeePerGas: gasOptions.maxPriorityFeePerGas }),
86
- });
87
- const receipt = await publicClient.waitForTransactionReceipt({ hash });
88
- if (!receipt.contractAddress) {
89
- throw new Error('Contract deployment failed');
90
- }
91
- return {
92
- client: new MailerClient(receipt.contractAddress, publicClient),
93
- result: { hash, estimatedGas, gasLimit }
94
- };
95
- }
96
- getAddress() {
97
- return this.contractAddress;
98
- }
99
- /**
100
- * Core message send with explicit payer control and gas estimation.
101
- */
102
- async send(to, subject, body, payer, revenueShareToReceiver, resolveSenderToName, walletClient, account, gasOptions) {
103
- // Estimate gas for the transaction
104
- const gasLimit = await this.estimateGasWithBuffer(() => this.publicClient.estimateContractGas({
105
- address: this.contractAddress,
106
- abi: MAILER_ABI,
107
- functionName: 'send',
108
- args: [
109
- normalizeAddress(to),
110
- subject,
111
- body,
112
- normalizeAddress(payer),
113
- revenueShareToReceiver,
114
- resolveSenderToName,
115
- ],
116
- account,
117
- }), gasOptions);
118
- const hash = await walletClient.writeContract({
119
- address: this.contractAddress,
120
- abi: MAILER_ABI,
121
- functionName: 'send',
122
- args: [
123
- normalizeAddress(to),
124
- subject,
125
- body,
126
- normalizeAddress(payer),
127
- revenueShareToReceiver,
128
- resolveSenderToName,
129
- ],
130
- account,
131
- chain: walletClient.chain,
132
- ...this.buildTxParams(gasLimit, gasOptions),
133
- });
134
- return { hash, estimatedGas: gasLimit, gasLimit };
135
- }
136
- async sendPrepared(to, mailId, payer, revenueShareToReceiver, resolveSenderToName, walletClient, account, gasOptions) {
137
- // Estimate gas for the transaction
138
- const gasLimit = await this.estimateGasWithBuffer(() => this.publicClient.estimateContractGas({
139
- address: this.contractAddress,
140
- abi: MAILER_ABI,
141
- functionName: 'sendPrepared',
142
- args: [
143
- normalizeAddress(to),
144
- mailId,
145
- normalizeAddress(payer),
146
- revenueShareToReceiver,
147
- resolveSenderToName,
148
- ],
149
- account,
150
- }), gasOptions);
151
- const hash = await walletClient.writeContract({
152
- address: this.contractAddress,
153
- abi: MAILER_ABI,
154
- functionName: 'sendPrepared',
155
- args: [
156
- normalizeAddress(to),
157
- mailId,
158
- normalizeAddress(payer),
159
- revenueShareToReceiver,
160
- resolveSenderToName,
161
- ],
162
- account,
163
- chain: walletClient.chain,
164
- ...this.buildTxParams(gasLimit, gasOptions),
165
- });
166
- return { hash, estimatedGas: gasLimit, gasLimit };
167
- }
168
- async sendThroughWebhook(to, webhookId, payer, revenueShareToReceiver, resolveSenderToName, walletClient, account, gasOptions) {
169
- // Estimate gas for the transaction
170
- const gasLimit = await this.estimateGasWithBuffer(() => this.publicClient.estimateContractGas({
171
- address: this.contractAddress,
172
- abi: MAILER_ABI,
173
- functionName: 'sendThroughWebhook',
174
- args: [
175
- normalizeAddress(to),
176
- webhookId,
177
- normalizeAddress(payer),
178
- revenueShareToReceiver,
179
- resolveSenderToName,
180
- ],
181
- account,
182
- }), gasOptions);
183
- const hash = await walletClient.writeContract({
184
- address: this.contractAddress,
185
- abi: MAILER_ABI,
186
- functionName: 'sendThroughWebhook',
187
- args: [
188
- normalizeAddress(to),
189
- webhookId,
190
- normalizeAddress(payer),
191
- revenueShareToReceiver,
192
- resolveSenderToName,
193
- ],
194
- account,
195
- chain: walletClient.chain,
196
- ...this.buildTxParams(gasLimit, gasOptions),
197
- });
198
- return { hash, estimatedGas: gasLimit, gasLimit };
199
- }
200
- async sendToEmailAddress(toEmail, subject, body, payer, walletClient, account, gasOptions) {
201
- // Estimate gas for the transaction
202
- const gasLimit = await this.estimateGasWithBuffer(() => this.publicClient.estimateContractGas({
203
- address: this.contractAddress,
204
- abi: MAILER_ABI,
205
- functionName: 'sendToEmailAddress',
206
- args: [toEmail, subject, body, normalizeAddress(payer)],
207
- account,
208
- }), gasOptions);
209
- const hash = await walletClient.writeContract({
210
- address: this.contractAddress,
211
- abi: MAILER_ABI,
212
- functionName: 'sendToEmailAddress',
213
- args: [toEmail, subject, body, normalizeAddress(payer)],
214
- account,
215
- chain: walletClient.chain,
216
- ...this.buildTxParams(gasLimit, gasOptions),
217
- });
218
- return { hash, estimatedGas: gasLimit, gasLimit };
219
- }
220
- async sendPreparedToEmailAddress(toEmail, mailId, payer, walletClient, account, gasOptions) {
221
- // Estimate gas for the transaction
222
- const gasLimit = await this.estimateGasWithBuffer(() => this.publicClient.estimateContractGas({
223
- address: this.contractAddress,
224
- abi: MAILER_ABI,
225
- functionName: 'sendPreparedToEmailAddress',
226
- args: [toEmail, mailId, normalizeAddress(payer)],
227
- account,
228
- }), gasOptions);
229
- const hash = await walletClient.writeContract({
230
- address: this.contractAddress,
231
- abi: MAILER_ABI,
232
- functionName: 'sendPreparedToEmailAddress',
233
- args: [toEmail, mailId, normalizeAddress(payer)],
234
- account,
235
- chain: walletClient.chain,
236
- ...this.buildTxParams(gasLimit, gasOptions),
237
- });
238
- return { hash, estimatedGas: gasLimit, gasLimit };
239
- }
240
- async getFee() {
241
- return (await this.publicClient.readContract({
242
- address: this.contractAddress,
243
- abi: MAILER_ABI,
244
- functionName: 'getFee',
245
- }));
246
- }
247
- async getSendFee() {
248
- return (await this.publicClient.readContract({
249
- address: this.contractAddress,
250
- abi: MAILER_ABI,
251
- functionName: 'sendFee',
252
- }));
253
- }
254
- async setFee(newFee, walletClient, account, gasOptions) {
255
- // Estimate gas for the transaction
256
- const gasLimit = await this.estimateGasWithBuffer(() => this.publicClient.estimateContractGas({
257
- address: this.contractAddress,
258
- abi: MAILER_ABI,
259
- functionName: 'setFee',
260
- args: [newFee],
261
- account,
262
- }), gasOptions);
263
- const hash = await walletClient.writeContract({
264
- address: this.contractAddress,
265
- abi: MAILER_ABI,
266
- functionName: 'setFee',
267
- args: [newFee],
268
- account,
269
- chain: walletClient.chain,
270
- ...this.buildTxParams(gasLimit, gasOptions),
271
- });
272
- return { hash, estimatedGas: gasLimit, gasLimit };
273
- }
274
- async getUsdcToken() {
275
- return (await this.publicClient.readContract({
276
- address: this.contractAddress,
277
- abi: MAILER_ABI,
278
- functionName: 'usdcToken',
279
- }));
280
- }
281
- async getOwner() {
282
- return (await this.publicClient.readContract({
283
- address: this.contractAddress,
284
- abi: MAILER_ABI,
285
- functionName: 'owner',
286
- }));
287
- }
288
- async claimRecipientShare(walletClient, account, gasOptions) {
289
- // Estimate gas for the transaction
290
- const gasLimit = await this.estimateGasWithBuffer(() => this.publicClient.estimateContractGas({
291
- address: this.contractAddress,
292
- abi: MAILER_ABI,
293
- functionName: 'claimRecipientShare',
294
- account,
295
- }), gasOptions);
296
- const hash = await walletClient.writeContract({
297
- address: this.contractAddress,
298
- abi: MAILER_ABI,
299
- functionName: 'claimRecipientShare',
300
- account,
301
- chain: walletClient.chain,
302
- ...this.buildTxParams(gasLimit, gasOptions),
303
- });
304
- return { hash, estimatedGas: gasLimit, gasLimit };
305
- }
306
- async claimOwnerShare(walletClient, account, gasOptions) {
307
- // Estimate gas for the transaction
308
- const gasLimit = await this.estimateGasWithBuffer(() => this.publicClient.estimateContractGas({
309
- address: this.contractAddress,
310
- abi: MAILER_ABI,
311
- functionName: 'claimOwnerShare',
312
- account,
313
- }), gasOptions);
314
- const hash = await walletClient.writeContract({
315
- address: this.contractAddress,
316
- abi: MAILER_ABI,
317
- functionName: 'claimOwnerShare',
318
- account,
319
- chain: walletClient.chain,
320
- ...this.buildTxParams(gasLimit, gasOptions),
321
- });
322
- return { hash, estimatedGas: gasLimit, gasLimit };
323
- }
324
- async claimExpiredShares(recipient, walletClient, account, gasOptions) {
325
- // Estimate gas for the transaction
326
- const gasLimit = await this.estimateGasWithBuffer(() => this.publicClient.estimateContractGas({
327
- address: this.contractAddress,
328
- abi: MAILER_ABI,
329
- functionName: 'claimExpiredShares',
330
- args: [normalizeAddress(recipient)],
331
- account,
332
- }), gasOptions);
333
- const hash = await walletClient.writeContract({
334
- address: this.contractAddress,
335
- abi: MAILER_ABI,
336
- functionName: 'claimExpiredShares',
337
- args: [normalizeAddress(recipient)],
338
- account,
339
- chain: walletClient.chain,
340
- ...this.buildTxParams(gasLimit, gasOptions),
341
- });
342
- return { hash, estimatedGas: gasLimit, gasLimit };
343
- }
344
- async getRecipientClaimable(recipient) {
345
- const [amount, expiresAt, isExpired] = (await this.publicClient.readContract({
346
- address: this.contractAddress,
347
- abi: MAILER_ABI,
348
- functionName: 'getRecipientClaimable',
349
- args: [normalizeAddress(recipient)],
350
- }));
351
- return { amount, expiresAt, isExpired };
352
- }
353
- async getOwnerClaimable() {
354
- return (await this.publicClient.readContract({
355
- address: this.contractAddress,
356
- abi: MAILER_ABI,
357
- functionName: 'getOwnerClaimable',
358
- }));
359
- }
360
- async delegateTo(delegate, walletClient, account, gasOptions) {
361
- // Estimate gas for the transaction
362
- const gasLimit = await this.estimateGasWithBuffer(() => this.publicClient.estimateContractGas({
363
- address: this.contractAddress,
364
- abi: MAILER_ABI,
365
- functionName: 'delegateTo',
366
- args: [normalizeAddress(delegate)],
367
- account,
368
- }), gasOptions);
369
- const hash = await walletClient.writeContract({
370
- address: this.contractAddress,
371
- abi: MAILER_ABI,
372
- functionName: 'delegateTo',
373
- args: [normalizeAddress(delegate)],
374
- account,
375
- chain: walletClient.chain,
376
- ...this.buildTxParams(gasLimit, gasOptions),
377
- });
378
- return { hash, estimatedGas: gasLimit, gasLimit };
379
- }
380
- async rejectDelegation(delegatingAddress, walletClient, account, gasOptions) {
381
- // Estimate gas for the transaction
382
- const gasLimit = await this.estimateGasWithBuffer(() => this.publicClient.estimateContractGas({
383
- address: this.contractAddress,
384
- abi: MAILER_ABI,
385
- functionName: 'rejectDelegation',
386
- args: [normalizeAddress(delegatingAddress)],
387
- account,
388
- }), gasOptions);
389
- const hash = await walletClient.writeContract({
390
- address: this.contractAddress,
391
- abi: MAILER_ABI,
392
- functionName: 'rejectDelegation',
393
- args: [normalizeAddress(delegatingAddress)],
394
- account,
395
- chain: walletClient.chain,
396
- ...this.buildTxParams(gasLimit, gasOptions),
397
- });
398
- return { hash, estimatedGas: gasLimit, gasLimit };
399
- }
400
- async getDelegationFee() {
401
- return (await this.publicClient.readContract({
402
- address: this.contractAddress,
403
- abi: MAILER_ABI,
404
- functionName: 'getDelegationFee',
405
- }));
406
- }
407
- async setDelegationFee(newFee, walletClient, account, gasOptions) {
408
- // Estimate gas for the transaction
409
- const gasLimit = await this.estimateGasWithBuffer(() => this.publicClient.estimateContractGas({
410
- address: this.contractAddress,
411
- abi: MAILER_ABI,
412
- functionName: 'setDelegationFee',
413
- args: [newFee],
414
- account,
415
- }), gasOptions);
416
- const hash = await walletClient.writeContract({
417
- address: this.contractAddress,
418
- abi: MAILER_ABI,
419
- functionName: 'setDelegationFee',
420
- args: [newFee],
421
- account,
422
- chain: walletClient.chain,
423
- ...this.buildTxParams(gasLimit, gasOptions),
424
- });
425
- return { hash, estimatedGas: gasLimit, gasLimit };
426
- }
427
- async setCustomFeePercentage(target, percentage, walletClient, account, gasOptions) {
428
- // Estimate gas for the transaction
429
- const gasLimit = await this.estimateGasWithBuffer(() => this.publicClient.estimateContractGas({
430
- address: this.contractAddress,
431
- abi: MAILER_ABI,
432
- functionName: 'setCustomFeePercentage',
433
- args: [normalizeAddress(target), BigInt(percentage)],
434
- account,
435
- }), gasOptions);
436
- const hash = await walletClient.writeContract({
437
- address: this.contractAddress,
438
- abi: MAILER_ABI,
439
- functionName: 'setCustomFeePercentage',
440
- args: [normalizeAddress(target), BigInt(percentage)],
441
- account,
442
- chain: walletClient.chain,
443
- ...this.buildTxParams(gasLimit, gasOptions),
444
- });
445
- return { hash, estimatedGas: gasLimit, gasLimit };
446
- }
447
- async clearCustomFeePercentage(target, walletClient, account, gasOptions) {
448
- // Estimate gas for the transaction
449
- const gasLimit = await this.estimateGasWithBuffer(() => this.publicClient.estimateContractGas({
450
- address: this.contractAddress,
451
- abi: MAILER_ABI,
452
- functionName: 'clearCustomFeePercentage',
453
- args: [normalizeAddress(target)],
454
- account,
455
- }), gasOptions);
456
- const hash = await walletClient.writeContract({
457
- address: this.contractAddress,
458
- abi: MAILER_ABI,
459
- functionName: 'clearCustomFeePercentage',
460
- args: [normalizeAddress(target)],
461
- account,
462
- chain: walletClient.chain,
463
- ...this.buildTxParams(gasLimit, gasOptions),
464
- });
465
- return { hash, estimatedGas: gasLimit, gasLimit };
466
- }
467
- async getCustomFeePercentage(target) {
468
- const percentage = (await this.publicClient.readContract({
469
- address: this.contractAddress,
470
- abi: MAILER_ABI,
471
- functionName: 'getCustomFeePercentage',
472
- args: [normalizeAddress(target)],
473
- }));
474
- return Number(percentage);
475
- }
476
- async getCustomFeeDiscount(target) {
477
- const discount = (await this.publicClient.readContract({
478
- address: this.contractAddress,
479
- abi: MAILER_ABI,
480
- functionName: 'customFeeDiscount',
481
- args: [normalizeAddress(target)],
482
- }));
483
- return Number(discount);
484
- }
485
- async setPermission(contractAddress, walletClient, account, gasOptions) {
486
- // Estimate gas for the transaction
487
- const gasLimit = await this.estimateGasWithBuffer(() => this.publicClient.estimateContractGas({
488
- address: this.contractAddress,
489
- abi: MAILER_ABI,
490
- functionName: 'setPermission',
491
- args: [normalizeAddress(contractAddress)],
492
- account,
493
- }), gasOptions);
494
- const hash = await walletClient.writeContract({
495
- address: this.contractAddress,
496
- abi: MAILER_ABI,
497
- functionName: 'setPermission',
498
- args: [normalizeAddress(contractAddress)],
499
- account,
500
- chain: walletClient.chain,
501
- ...this.buildTxParams(gasLimit, gasOptions),
502
- });
503
- return { hash, estimatedGas: gasLimit, gasLimit };
504
- }
505
- async removePermission(contractAddress, walletClient, account, gasOptions) {
506
- // Estimate gas for the transaction
507
- const gasLimit = await this.estimateGasWithBuffer(() => this.publicClient.estimateContractGas({
508
- address: this.contractAddress,
509
- abi: MAILER_ABI,
510
- functionName: 'removePermission',
511
- args: [normalizeAddress(contractAddress)],
512
- account,
513
- }), gasOptions);
514
- const hash = await walletClient.writeContract({
515
- address: this.contractAddress,
516
- abi: MAILER_ABI,
517
- functionName: 'removePermission',
518
- args: [normalizeAddress(contractAddress)],
519
- account,
520
- chain: walletClient.chain,
521
- ...this.buildTxParams(gasLimit, gasOptions),
522
- });
523
- return { hash, estimatedGas: gasLimit, gasLimit };
524
- }
525
- async hasPermission(contractAddress, wallet) {
526
- const permitted = (await this.publicClient.readContract({
527
- address: this.contractAddress,
528
- abi: MAILER_ABI,
529
- functionName: 'permissions',
530
- args: [normalizeAddress(contractAddress), normalizeAddress(wallet)],
531
- }));
532
- return permitted;
533
- }
534
- async pause(walletClient, account, gasOptions) {
535
- // Estimate gas for the transaction
536
- const gasLimit = await this.estimateGasWithBuffer(() => this.publicClient.estimateContractGas({
537
- address: this.contractAddress,
538
- abi: MAILER_ABI,
539
- functionName: 'pause',
540
- account,
541
- }), gasOptions);
542
- const hash = await walletClient.writeContract({
543
- address: this.contractAddress,
544
- abi: MAILER_ABI,
545
- functionName: 'pause',
546
- account,
547
- chain: walletClient.chain,
548
- ...this.buildTxParams(gasLimit, gasOptions),
549
- });
550
- return { hash, estimatedGas: gasLimit, gasLimit };
551
- }
552
- async unpause(walletClient, account, gasOptions) {
553
- // Estimate gas for the transaction
554
- const gasLimit = await this.estimateGasWithBuffer(() => this.publicClient.estimateContractGas({
555
- address: this.contractAddress,
556
- abi: MAILER_ABI,
557
- functionName: 'unpause',
558
- account,
559
- }), gasOptions);
560
- const hash = await walletClient.writeContract({
561
- address: this.contractAddress,
562
- abi: MAILER_ABI,
563
- functionName: 'unpause',
564
- account,
565
- chain: walletClient.chain,
566
- ...this.buildTxParams(gasLimit, gasOptions),
567
- });
568
- return { hash, estimatedGas: gasLimit, gasLimit };
569
- }
570
- async emergencyUnpause(walletClient, account, gasOptions) {
571
- // Estimate gas for the transaction
572
- const gasLimit = await this.estimateGasWithBuffer(() => this.publicClient.estimateContractGas({
573
- address: this.contractAddress,
574
- abi: MAILER_ABI,
575
- functionName: 'emergencyUnpause',
576
- account,
577
- }), gasOptions);
578
- const hash = await walletClient.writeContract({
579
- address: this.contractAddress,
580
- abi: MAILER_ABI,
581
- functionName: 'emergencyUnpause',
582
- account,
583
- chain: walletClient.chain,
584
- ...this.buildTxParams(gasLimit, gasOptions),
585
- });
586
- return { hash, estimatedGas: gasLimit, gasLimit };
587
- }
588
- async isPaused() {
589
- return (await this.publicClient.readContract({
590
- address: this.contractAddress,
591
- abi: MAILER_ABI,
592
- functionName: 'isPaused',
593
- }));
594
- }
595
- async distributeClaimableFunds(recipient, walletClient, account, gasOptions) {
596
- // Estimate gas for the transaction
597
- const gasLimit = await this.estimateGasWithBuffer(() => this.publicClient.estimateContractGas({
598
- address: this.contractAddress,
599
- abi: MAILER_ABI,
600
- functionName: 'distributeClaimableFunds',
601
- args: [normalizeAddress(recipient)],
602
- account,
603
- }), gasOptions);
604
- const hash = await walletClient.writeContract({
605
- address: this.contractAddress,
606
- abi: MAILER_ABI,
607
- functionName: 'distributeClaimableFunds',
608
- args: [normalizeAddress(recipient)],
609
- account,
610
- chain: walletClient.chain,
611
- ...this.buildTxParams(gasLimit, gasOptions),
612
- });
613
- return { hash, estimatedGas: gasLimit, gasLimit };
614
- }
615
- }
616
- exports.MailerClient = MailerClient;
617
- MailerClient.abi = MAILER_ABI;
618
- MailerClient.bytecode = MAILER_BYTECODE;
619
- //# sourceMappingURL=mailer-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mailer-client.js","sourceRoot":"","sources":["../../../../src/evm/mailer-client.ts"],"names":[],"mappings":"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"}