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