@sudobility/contracts 1.16.4 → 1.17.10

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 (663) hide show
  1. package/README.md +16 -2
  2. package/artifacts/contracts/Mailer.sol/Mailer.d.ts +242 -16
  3. package/artifacts/contracts/Mailer.sol/Mailer.dbg.json +1 -1
  4. package/artifacts/contracts/Mailer.sol/Mailer.json +237 -11
  5. package/artifacts/contracts/MockUSDC.sol/MockUSDC.d.ts +2 -2
  6. package/artifacts/contracts/MockUSDC.sol/MockUSDC.dbg.json +1 -1
  7. package/artifacts/contracts/MockUSDC.sol/MockUSDC.json +2 -2
  8. package/artifacts/contracts/examples/MailerIntegrationExample.sol/MailerIntegrationExample.d.ts +299 -0
  9. package/artifacts/contracts/examples/MailerIntegrationExample.sol/MailerIntegrationExample.dbg.json +4 -0
  10. package/artifacts/contracts/examples/MailerIntegrationExample.sol/MailerIntegrationExample.json +249 -0
  11. package/artifacts/contracts/examples/MailerIntegrationExample.sol/artifacts.d.ts +21 -0
  12. package/artifacts/contracts/interfaces/IERC20.sol/IERC20.dbg.json +1 -1
  13. package/artifacts/contracts/interfaces/IMailer.sol/IMailer.d.ts +216 -0
  14. package/artifacts/contracts/interfaces/IMailer.sol/IMailer.dbg.json +4 -0
  15. package/artifacts/contracts/interfaces/IMailer.sol/IMailer.json +166 -0
  16. package/artifacts/contracts/interfaces/IMailer.sol/artifacts.d.ts +21 -0
  17. package/contracts/Mailer.sol +922 -0
  18. package/contracts/MockUSDC.sol +106 -0
  19. package/contracts/examples/MailerIntegrationExample.sol +189 -0
  20. package/contracts/interfaces/IERC20.sol +33 -0
  21. package/contracts/interfaces/IMailer.sol +86 -0
  22. package/dist/evm/src/evm/evm-mailer-client.d.ts +184 -8
  23. package/dist/evm/src/evm/evm-mailer-client.d.ts.map +1 -1
  24. package/dist/evm/src/evm/evm-mailer-client.js +3 -2
  25. package/dist/evm/src/evm/evm-mailer-client.js.map +1 -1
  26. package/dist/evm/src/evm/index.d.ts +2 -2
  27. package/dist/evm/src/evm/index.d.ts.map +1 -1
  28. package/dist/evm/src/evm/index.js +1 -1
  29. package/dist/evm/src/evm/index.js.map +1 -1
  30. package/dist/evm/typechain-types/@openzeppelin/contracts/index.d.ts +7 -0
  31. package/dist/evm/typechain-types/@openzeppelin/contracts/index.d.ts.map +1 -0
  32. package/dist/evm/typechain-types/@openzeppelin/contracts/index.js +3 -0
  33. package/dist/evm/typechain-types/@openzeppelin/contracts/index.js.map +1 -0
  34. package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/IERC1967.d.ts +66 -0
  35. package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/IERC1967.d.ts.map +1 -0
  36. package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/IERC1967.js +3 -0
  37. package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/IERC1967.js.map +1 -0
  38. package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.d.ts +26 -0
  39. package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.d.ts.map +1 -0
  40. package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.js +3 -0
  41. package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.js.map +1 -0
  42. package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.d.ts +2 -0
  43. package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.d.ts.map +1 -0
  44. package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.js +3 -0
  45. package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.js.map +1 -0
  46. package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/index.d.ts +4 -0
  47. package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/index.d.ts.map +1 -0
  48. package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/index.js +3 -0
  49. package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/index.js.map +1 -0
  50. package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.d.ts +21 -0
  51. package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.d.ts.map +1 -0
  52. package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.js +3 -0
  53. package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.js.map +1 -0
  54. package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/ERC1967/index.d.ts +2 -0
  55. package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/ERC1967/index.d.ts.map +1 -0
  56. package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/ERC1967/index.js +3 -0
  57. package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/ERC1967/index.js.map +1 -0
  58. package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/beacon/IBeacon.d.ts +26 -0
  59. package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/beacon/IBeacon.d.ts.map +1 -0
  60. package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/beacon/IBeacon.js +3 -0
  61. package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/beacon/IBeacon.js.map +1 -0
  62. package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/beacon/index.d.ts +2 -0
  63. package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/beacon/index.d.ts.map +1 -0
  64. package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/beacon/index.js +3 -0
  65. package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/beacon/index.js.map +1 -0
  66. package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/index.d.ts +5 -0
  67. package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/index.d.ts.map +1 -0
  68. package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/index.js +3 -0
  69. package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/index.js.map +1 -0
  70. package/dist/evm/typechain-types/@openzeppelin/contracts/utils/Address.d.ts +21 -0
  71. package/dist/evm/typechain-types/@openzeppelin/contracts/utils/Address.d.ts.map +1 -0
  72. package/dist/evm/typechain-types/@openzeppelin/contracts/utils/Address.js +3 -0
  73. package/dist/evm/typechain-types/@openzeppelin/contracts/utils/Address.js.map +1 -0
  74. package/dist/evm/typechain-types/@openzeppelin/contracts/utils/Errors.d.ts +21 -0
  75. package/dist/evm/typechain-types/@openzeppelin/contracts/utils/Errors.d.ts.map +1 -0
  76. package/dist/evm/typechain-types/@openzeppelin/contracts/utils/Errors.js +3 -0
  77. package/dist/evm/typechain-types/@openzeppelin/contracts/utils/Errors.js.map +1 -0
  78. package/dist/evm/typechain-types/@openzeppelin/contracts/utils/index.d.ts +3 -0
  79. package/dist/evm/typechain-types/@openzeppelin/contracts/utils/index.d.ts.map +1 -0
  80. package/dist/evm/typechain-types/@openzeppelin/contracts/utils/index.js +3 -0
  81. package/dist/evm/typechain-types/@openzeppelin/contracts/utils/index.js.map +1 -0
  82. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.d.ts +69 -0
  83. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.d.ts.map +1 -0
  84. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.js +3 -0
  85. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.js.map +1 -0
  86. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/access/index.d.ts +2 -0
  87. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/access/index.d.ts.map +1 -0
  88. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/access/index.js.map +1 -0
  89. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/index.d.ts +7 -0
  90. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/index.d.ts.map +1 -0
  91. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/index.js +3 -0
  92. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/index.js.map +1 -0
  93. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.d.ts +3 -0
  94. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.d.ts.map +1 -0
  95. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.js +3 -0
  96. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.js.map +1 -0
  97. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.d.ts +37 -0
  98. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.d.ts.map +1 -0
  99. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.js +3 -0
  100. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.js.map +1 -0
  101. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.d.ts +74 -0
  102. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.d.ts.map +1 -0
  103. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.js +3 -0
  104. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.js.map +1 -0
  105. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.d.ts +3 -0
  106. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.d.ts.map +1 -0
  107. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.js +3 -0
  108. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.js.map +1 -0
  109. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.d.ts +37 -0
  110. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.d.ts.map +1 -0
  111. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.js +3 -0
  112. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.js.map +1 -0
  113. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.d.ts +2 -0
  114. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.d.ts.map +1 -0
  115. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.js +3 -0
  116. package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.js.map +1 -0
  117. package/dist/evm/typechain-types/@openzeppelin/index.d.ts +5 -0
  118. package/dist/evm/typechain-types/@openzeppelin/index.d.ts.map +1 -0
  119. package/dist/evm/typechain-types/@openzeppelin/index.js +3 -0
  120. package/dist/evm/typechain-types/@openzeppelin/index.js.map +1 -0
  121. package/dist/evm/typechain-types/{Mailer.d.ts → contracts/Mailer.d.ts} +135 -21
  122. package/dist/evm/typechain-types/contracts/Mailer.d.ts.map +1 -0
  123. package/dist/evm/typechain-types/contracts/Mailer.js.map +1 -0
  124. package/dist/evm/typechain-types/{MockUSDC.d.ts → contracts/MockUSDC.d.ts} +1 -1
  125. package/dist/evm/typechain-types/contracts/MockUSDC.d.ts.map +1 -0
  126. package/dist/evm/typechain-types/contracts/MockUSDC.js.map +1 -0
  127. package/dist/evm/typechain-types/contracts/examples/MailerIntegrationExample.d.ts +170 -0
  128. package/dist/evm/typechain-types/contracts/examples/MailerIntegrationExample.d.ts.map +1 -0
  129. package/dist/evm/typechain-types/contracts/examples/MailerIntegrationExample.js +3 -0
  130. package/dist/evm/typechain-types/contracts/examples/MailerIntegrationExample.js.map +1 -0
  131. package/dist/evm/typechain-types/contracts/examples/index.d.ts +2 -0
  132. package/dist/evm/typechain-types/contracts/examples/index.d.ts.map +1 -0
  133. package/dist/evm/typechain-types/contracts/examples/index.js +3 -0
  134. package/dist/evm/typechain-types/contracts/examples/index.js.map +1 -0
  135. package/dist/evm/typechain-types/contracts/index.d.ts +7 -0
  136. package/dist/evm/typechain-types/contracts/index.d.ts.map +1 -0
  137. package/dist/evm/typechain-types/contracts/index.js +3 -0
  138. package/dist/evm/typechain-types/contracts/index.js.map +1 -0
  139. package/dist/{unified/typechain-types → evm/typechain-types/contracts}/interfaces/IERC20.d.ts +1 -1
  140. package/dist/evm/typechain-types/contracts/interfaces/IERC20.d.ts.map +1 -0
  141. package/dist/evm/typechain-types/contracts/interfaces/IERC20.js.map +1 -0
  142. package/dist/evm/typechain-types/contracts/interfaces/IMailer.d.ts +118 -0
  143. package/dist/evm/typechain-types/contracts/interfaces/IMailer.d.ts.map +1 -0
  144. package/dist/evm/typechain-types/contracts/interfaces/IMailer.js +3 -0
  145. package/dist/evm/typechain-types/contracts/interfaces/IMailer.js.map +1 -0
  146. package/dist/evm/typechain-types/contracts/interfaces/index.d.ts +3 -0
  147. package/dist/evm/typechain-types/contracts/interfaces/index.d.ts.map +1 -0
  148. package/dist/evm/typechain-types/contracts/interfaces/index.js +3 -0
  149. package/dist/evm/typechain-types/contracts/interfaces/index.js.map +1 -0
  150. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/index.d.ts +4 -0
  151. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/index.d.ts.map +1 -0
  152. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/index.js +43 -0
  153. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/index.js.map +1 -0
  154. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.d.ts +43 -0
  155. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.d.ts.map +1 -0
  156. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.js +65 -0
  157. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.js.map +1 -0
  158. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.d.ts +18 -0
  159. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.d.ts.map +1 -0
  160. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.js +33 -0
  161. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.js.map +1 -0
  162. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.d.ts +2 -0
  163. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.d.ts.map +1 -0
  164. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.js +9 -0
  165. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.js.map +1 -0
  166. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/index.d.ts +3 -0
  167. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/index.d.ts.map +1 -0
  168. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/index.js +43 -0
  169. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/index.js.map +1 -0
  170. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.d.ts +51 -0
  171. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.d.ts.map +1 -0
  172. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.js +78 -0
  173. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.js.map +1 -0
  174. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/index.d.ts +2 -0
  175. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/index.d.ts.map +1 -0
  176. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/index.js +9 -0
  177. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/index.js.map +1 -0
  178. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.d.ts +18 -0
  179. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.d.ts.map +1 -0
  180. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.js +33 -0
  181. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.js.map +1 -0
  182. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/index.d.ts +2 -0
  183. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/index.d.ts.map +1 -0
  184. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/index.js +9 -0
  185. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/index.js.map +1 -0
  186. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/index.d.ts +3 -0
  187. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/index.d.ts.map +1 -0
  188. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/index.js +42 -0
  189. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/index.js.map +1 -0
  190. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.d.ts +31 -0
  191. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.d.ts.map +1 -0
  192. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.js +51 -0
  193. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.js.map +1 -0
  194. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/Errors__factory.d.ts +51 -0
  195. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/Errors__factory.d.ts.map +1 -0
  196. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/Errors__factory.js +77 -0
  197. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/Errors__factory.js.map +1 -0
  198. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/index.d.ts +3 -0
  199. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/index.d.ts.map +1 -0
  200. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/index.js +11 -0
  201. package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/index.js.map +1 -0
  202. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.d.ts +83 -0
  203. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.d.ts.map +1 -0
  204. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.js +117 -0
  205. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.js.map +1 -0
  206. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.d.ts +2 -0
  207. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.d.ts.map +1 -0
  208. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.js +9 -0
  209. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.js.map +1 -0
  210. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.d.ts +4 -0
  211. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.d.ts.map +1 -0
  212. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.js +43 -0
  213. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.js.map +1 -0
  214. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.d.ts +2 -0
  215. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.d.ts.map +1 -0
  216. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.js +41 -0
  217. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.js.map +1 -0
  218. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.d.ts +26 -0
  219. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.d.ts.map +1 -0
  220. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.js +43 -0
  221. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.js.map +1 -0
  222. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.d.ts +106 -0
  223. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.d.ts.map +1 -0
  224. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.js +148 -0
  225. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.js.map +1 -0
  226. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.d.ts +3 -0
  227. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.d.ts.map +1 -0
  228. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.js +11 -0
  229. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.js.map +1 -0
  230. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.d.ts +26 -0
  231. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.d.ts.map +1 -0
  232. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.js +43 -0
  233. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.js.map +1 -0
  234. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.d.ts +2 -0
  235. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.d.ts.map +1 -0
  236. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.js +9 -0
  237. package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.js.map +1 -0
  238. package/dist/evm/typechain-types/factories/@openzeppelin/index.d.ts +3 -0
  239. package/dist/evm/typechain-types/factories/@openzeppelin/index.d.ts.map +1 -0
  240. package/dist/evm/typechain-types/factories/@openzeppelin/index.js +42 -0
  241. package/dist/evm/typechain-types/factories/@openzeppelin/index.js.map +1 -0
  242. package/dist/evm/typechain-types/factories/contracts/Mailer__factory.d.ts +1061 -0
  243. package/dist/evm/typechain-types/factories/contracts/Mailer__factory.d.ts.map +1 -0
  244. package/dist/evm/typechain-types/factories/contracts/Mailer__factory.js +1364 -0
  245. package/dist/evm/typechain-types/factories/contracts/Mailer__factory.js.map +1 -0
  246. package/dist/evm/typechain-types/factories/{MockUSDC__factory.d.ts → contracts/MockUSDC__factory.d.ts} +3 -3
  247. package/dist/evm/typechain-types/factories/contracts/MockUSDC__factory.d.ts.map +1 -0
  248. package/dist/evm/typechain-types/factories/{MockUSDC__factory.js → contracts/MockUSDC__factory.js} +1 -1
  249. package/dist/evm/typechain-types/factories/contracts/MockUSDC__factory.js.map +1 -0
  250. package/dist/evm/typechain-types/factories/contracts/examples/MailerIntegrationExample__factory.d.ts +209 -0
  251. package/dist/evm/typechain-types/factories/contracts/examples/MailerIntegrationExample__factory.d.ts.map +1 -0
  252. package/dist/evm/typechain-types/factories/contracts/examples/MailerIntegrationExample__factory.js +278 -0
  253. package/dist/evm/typechain-types/factories/contracts/examples/MailerIntegrationExample__factory.js.map +1 -0
  254. package/dist/evm/typechain-types/factories/contracts/examples/index.d.ts +2 -0
  255. package/dist/evm/typechain-types/factories/contracts/examples/index.d.ts.map +1 -0
  256. package/dist/evm/typechain-types/factories/contracts/examples/index.js +9 -0
  257. package/dist/evm/typechain-types/factories/contracts/examples/index.js.map +1 -0
  258. package/dist/evm/typechain-types/factories/contracts/index.d.ts +5 -0
  259. package/dist/evm/typechain-types/factories/contracts/index.d.ts.map +1 -0
  260. package/dist/evm/typechain-types/factories/contracts/index.js +46 -0
  261. package/dist/evm/typechain-types/factories/contracts/index.js.map +1 -0
  262. package/dist/evm/typechain-types/factories/{interfaces → contracts/interfaces}/IERC20__factory.d.ts +1 -1
  263. package/dist/evm/typechain-types/factories/contracts/interfaces/IERC20__factory.d.ts.map +1 -0
  264. package/dist/evm/typechain-types/factories/contracts/interfaces/IERC20__factory.js.map +1 -0
  265. package/dist/evm/typechain-types/factories/contracts/interfaces/IMailer__factory.d.ts +130 -0
  266. package/dist/evm/typechain-types/factories/contracts/interfaces/IMailer__factory.d.ts.map +1 -0
  267. package/dist/evm/typechain-types/factories/contracts/interfaces/IMailer__factory.js +175 -0
  268. package/dist/evm/typechain-types/factories/contracts/interfaces/IMailer__factory.js.map +1 -0
  269. package/dist/evm/typechain-types/factories/contracts/interfaces/index.d.ts +3 -0
  270. package/dist/evm/typechain-types/factories/contracts/interfaces/index.d.ts.map +1 -0
  271. package/dist/evm/typechain-types/factories/{interfaces → contracts/interfaces}/index.js +3 -1
  272. package/dist/evm/typechain-types/factories/contracts/interfaces/index.js.map +1 -0
  273. package/dist/evm/typechain-types/factories/index.d.ts +2 -3
  274. package/dist/evm/typechain-types/factories/index.d.ts.map +1 -1
  275. package/dist/evm/typechain-types/factories/index.js +3 -6
  276. package/dist/evm/typechain-types/factories/index.js.map +1 -1
  277. package/dist/evm/typechain-types/index.d.ts +34 -8
  278. package/dist/evm/typechain-types/index.d.ts.map +1 -1
  279. package/dist/evm/typechain-types/index.js +28 -4
  280. package/dist/evm/typechain-types/index.js.map +1 -1
  281. package/dist/unified/src/evm/evm-mailer-client.d.ts +184 -8
  282. package/dist/unified/src/evm/evm-mailer-client.d.ts.map +1 -1
  283. package/dist/unified/src/evm/evm-mailer-client.js +3 -2
  284. package/dist/unified/src/evm/evm-mailer-client.js.map +1 -1
  285. package/dist/unified/src/evm/index.d.ts +2 -2
  286. package/dist/unified/src/evm/index.d.ts.map +1 -1
  287. package/dist/unified/src/evm/index.js +1 -1
  288. package/dist/unified/src/evm/index.js.map +1 -1
  289. package/dist/unified/typechain-types/@openzeppelin/contracts/index.d.ts +7 -0
  290. package/dist/unified/typechain-types/@openzeppelin/contracts/index.d.ts.map +1 -0
  291. package/dist/unified/typechain-types/@openzeppelin/contracts/index.js +2 -0
  292. package/dist/unified/typechain-types/@openzeppelin/contracts/index.js.map +1 -0
  293. package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/IERC1967.d.ts +66 -0
  294. package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/IERC1967.d.ts.map +1 -0
  295. package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/IERC1967.js +2 -0
  296. package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/IERC1967.js.map +1 -0
  297. package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.d.ts +26 -0
  298. package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.d.ts.map +1 -0
  299. package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.js +2 -0
  300. package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.js.map +1 -0
  301. package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.d.ts +2 -0
  302. package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.d.ts.map +1 -0
  303. package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.js +2 -0
  304. package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.js.map +1 -0
  305. package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/index.d.ts +4 -0
  306. package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/index.d.ts.map +1 -0
  307. package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/index.js +2 -0
  308. package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/index.js.map +1 -0
  309. package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.d.ts +21 -0
  310. package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.d.ts.map +1 -0
  311. package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.js +2 -0
  312. package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.js.map +1 -0
  313. package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/ERC1967/index.d.ts +2 -0
  314. package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/ERC1967/index.d.ts.map +1 -0
  315. package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/ERC1967/index.js +2 -0
  316. package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/ERC1967/index.js.map +1 -0
  317. package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/beacon/IBeacon.d.ts +26 -0
  318. package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/beacon/IBeacon.d.ts.map +1 -0
  319. package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/beacon/IBeacon.js +2 -0
  320. package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/beacon/IBeacon.js.map +1 -0
  321. package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/beacon/index.d.ts +2 -0
  322. package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/beacon/index.d.ts.map +1 -0
  323. package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/beacon/index.js +2 -0
  324. package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/beacon/index.js.map +1 -0
  325. package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/index.d.ts +5 -0
  326. package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/index.d.ts.map +1 -0
  327. package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/index.js +2 -0
  328. package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/index.js.map +1 -0
  329. package/dist/unified/typechain-types/@openzeppelin/contracts/utils/Address.d.ts +21 -0
  330. package/dist/unified/typechain-types/@openzeppelin/contracts/utils/Address.d.ts.map +1 -0
  331. package/dist/unified/typechain-types/@openzeppelin/contracts/utils/Address.js +2 -0
  332. package/dist/unified/typechain-types/@openzeppelin/contracts/utils/Address.js.map +1 -0
  333. package/dist/unified/typechain-types/@openzeppelin/contracts/utils/Errors.d.ts +21 -0
  334. package/dist/unified/typechain-types/@openzeppelin/contracts/utils/Errors.d.ts.map +1 -0
  335. package/dist/unified/typechain-types/@openzeppelin/contracts/utils/Errors.js +2 -0
  336. package/dist/unified/typechain-types/@openzeppelin/contracts/utils/Errors.js.map +1 -0
  337. package/dist/unified/typechain-types/@openzeppelin/contracts/utils/index.d.ts +3 -0
  338. package/dist/unified/typechain-types/@openzeppelin/contracts/utils/index.d.ts.map +1 -0
  339. package/dist/unified/typechain-types/@openzeppelin/contracts/utils/index.js +2 -0
  340. package/dist/unified/typechain-types/@openzeppelin/contracts/utils/index.js.map +1 -0
  341. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.d.ts +69 -0
  342. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.d.ts.map +1 -0
  343. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.js +2 -0
  344. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.js.map +1 -0
  345. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/access/index.d.ts +2 -0
  346. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/access/index.d.ts.map +1 -0
  347. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/access/index.js.map +1 -0
  348. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/index.d.ts +7 -0
  349. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/index.d.ts.map +1 -0
  350. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/index.js +2 -0
  351. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/index.js.map +1 -0
  352. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.d.ts +3 -0
  353. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.d.ts.map +1 -0
  354. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.js +2 -0
  355. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.js.map +1 -0
  356. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.d.ts +37 -0
  357. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.d.ts.map +1 -0
  358. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.js +2 -0
  359. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.js.map +1 -0
  360. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.d.ts +74 -0
  361. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.d.ts.map +1 -0
  362. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.js +2 -0
  363. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.js.map +1 -0
  364. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.d.ts +3 -0
  365. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.d.ts.map +1 -0
  366. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.js +2 -0
  367. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.js.map +1 -0
  368. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.d.ts +37 -0
  369. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.d.ts.map +1 -0
  370. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.js +2 -0
  371. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.js.map +1 -0
  372. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.d.ts +2 -0
  373. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.d.ts.map +1 -0
  374. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.js +2 -0
  375. package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.js.map +1 -0
  376. package/dist/unified/typechain-types/@openzeppelin/index.d.ts +5 -0
  377. package/dist/unified/typechain-types/@openzeppelin/index.d.ts.map +1 -0
  378. package/dist/unified/typechain-types/@openzeppelin/index.js +2 -0
  379. package/dist/unified/typechain-types/@openzeppelin/index.js.map +1 -0
  380. package/dist/unified/typechain-types/{Mailer.d.ts → contracts/Mailer.d.ts} +135 -21
  381. package/dist/unified/typechain-types/contracts/Mailer.d.ts.map +1 -0
  382. package/dist/unified/typechain-types/contracts/Mailer.js.map +1 -0
  383. package/dist/unified/typechain-types/{MockUSDC.d.ts → contracts/MockUSDC.d.ts} +1 -1
  384. package/dist/unified/typechain-types/contracts/MockUSDC.d.ts.map +1 -0
  385. package/dist/unified/typechain-types/contracts/MockUSDC.js.map +1 -0
  386. package/dist/unified/typechain-types/contracts/examples/MailerIntegrationExample.d.ts +170 -0
  387. package/dist/unified/typechain-types/contracts/examples/MailerIntegrationExample.d.ts.map +1 -0
  388. package/dist/unified/typechain-types/contracts/examples/MailerIntegrationExample.js +2 -0
  389. package/dist/unified/typechain-types/contracts/examples/MailerIntegrationExample.js.map +1 -0
  390. package/dist/unified/typechain-types/contracts/examples/index.d.ts +2 -0
  391. package/dist/unified/typechain-types/contracts/examples/index.d.ts.map +1 -0
  392. package/dist/unified/typechain-types/contracts/examples/index.js +2 -0
  393. package/dist/unified/typechain-types/contracts/examples/index.js.map +1 -0
  394. package/dist/unified/typechain-types/contracts/index.d.ts +7 -0
  395. package/dist/unified/typechain-types/contracts/index.d.ts.map +1 -0
  396. package/dist/unified/typechain-types/contracts/index.js +2 -0
  397. package/dist/unified/typechain-types/contracts/index.js.map +1 -0
  398. package/dist/{evm/typechain-types → unified/typechain-types/contracts}/interfaces/IERC20.d.ts +1 -1
  399. package/dist/unified/typechain-types/contracts/interfaces/IERC20.d.ts.map +1 -0
  400. package/dist/unified/typechain-types/contracts/interfaces/IERC20.js.map +1 -0
  401. package/dist/unified/typechain-types/contracts/interfaces/IMailer.d.ts +118 -0
  402. package/dist/unified/typechain-types/contracts/interfaces/IMailer.d.ts.map +1 -0
  403. package/dist/unified/typechain-types/contracts/interfaces/IMailer.js +2 -0
  404. package/dist/unified/typechain-types/contracts/interfaces/IMailer.js.map +1 -0
  405. package/dist/unified/typechain-types/contracts/interfaces/index.d.ts +3 -0
  406. package/dist/unified/typechain-types/contracts/interfaces/index.d.ts.map +1 -0
  407. package/dist/unified/typechain-types/contracts/interfaces/index.js +2 -0
  408. package/dist/unified/typechain-types/contracts/interfaces/index.js.map +1 -0
  409. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/index.d.ts +4 -0
  410. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/index.d.ts.map +1 -0
  411. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/index.js +7 -0
  412. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/index.js.map +1 -0
  413. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.d.ts +43 -0
  414. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.d.ts.map +1 -0
  415. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.js +61 -0
  416. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.js.map +1 -0
  417. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.d.ts +18 -0
  418. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.d.ts.map +1 -0
  419. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.js +29 -0
  420. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.js.map +1 -0
  421. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.d.ts +2 -0
  422. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.d.ts.map +1 -0
  423. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.js +5 -0
  424. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.js.map +1 -0
  425. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/index.d.ts +3 -0
  426. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/index.d.ts.map +1 -0
  427. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/index.js +6 -0
  428. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/index.js.map +1 -0
  429. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.d.ts +51 -0
  430. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.d.ts.map +1 -0
  431. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.js +74 -0
  432. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.js.map +1 -0
  433. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/index.d.ts +2 -0
  434. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/index.d.ts.map +1 -0
  435. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/index.js +5 -0
  436. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/index.js.map +1 -0
  437. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.d.ts +18 -0
  438. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.d.ts.map +1 -0
  439. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.js +29 -0
  440. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.js.map +1 -0
  441. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/index.d.ts +2 -0
  442. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/index.d.ts.map +1 -0
  443. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/index.js +5 -0
  444. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/index.js.map +1 -0
  445. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/index.d.ts +3 -0
  446. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/index.d.ts.map +1 -0
  447. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/index.js +6 -0
  448. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/index.js.map +1 -0
  449. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.d.ts +31 -0
  450. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.d.ts.map +1 -0
  451. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.js +47 -0
  452. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.js.map +1 -0
  453. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/Errors__factory.d.ts +51 -0
  454. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/Errors__factory.d.ts.map +1 -0
  455. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/Errors__factory.js +73 -0
  456. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/Errors__factory.js.map +1 -0
  457. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/index.d.ts +3 -0
  458. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/index.d.ts.map +1 -0
  459. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/index.js +6 -0
  460. package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/index.js.map +1 -0
  461. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.d.ts +83 -0
  462. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.d.ts.map +1 -0
  463. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.js +113 -0
  464. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.js.map +1 -0
  465. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.d.ts +2 -0
  466. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.d.ts.map +1 -0
  467. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.js +5 -0
  468. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.js.map +1 -0
  469. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.d.ts +4 -0
  470. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.d.ts.map +1 -0
  471. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.js +7 -0
  472. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.js.map +1 -0
  473. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.d.ts +2 -0
  474. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.d.ts.map +1 -0
  475. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.js +5 -0
  476. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.js.map +1 -0
  477. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.d.ts +26 -0
  478. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.d.ts.map +1 -0
  479. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.js +39 -0
  480. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.js.map +1 -0
  481. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.d.ts +106 -0
  482. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.d.ts.map +1 -0
  483. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.js +144 -0
  484. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.js.map +1 -0
  485. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.d.ts +3 -0
  486. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.d.ts.map +1 -0
  487. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.js +6 -0
  488. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.js.map +1 -0
  489. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.d.ts +26 -0
  490. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.d.ts.map +1 -0
  491. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.js +39 -0
  492. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.js.map +1 -0
  493. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.d.ts +2 -0
  494. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.d.ts.map +1 -0
  495. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.js +5 -0
  496. package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.js.map +1 -0
  497. package/dist/unified/typechain-types/factories/@openzeppelin/index.d.ts +3 -0
  498. package/dist/unified/typechain-types/factories/@openzeppelin/index.d.ts.map +1 -0
  499. package/dist/unified/typechain-types/factories/@openzeppelin/index.js +6 -0
  500. package/dist/unified/typechain-types/factories/@openzeppelin/index.js.map +1 -0
  501. package/dist/unified/typechain-types/factories/contracts/Mailer__factory.d.ts +1061 -0
  502. package/dist/unified/typechain-types/factories/contracts/Mailer__factory.d.ts.map +1 -0
  503. package/dist/unified/typechain-types/factories/contracts/Mailer__factory.js +1360 -0
  504. package/dist/unified/typechain-types/factories/contracts/Mailer__factory.js.map +1 -0
  505. package/dist/unified/typechain-types/factories/{MockUSDC__factory.d.ts → contracts/MockUSDC__factory.d.ts} +3 -3
  506. package/dist/unified/typechain-types/factories/contracts/MockUSDC__factory.d.ts.map +1 -0
  507. package/dist/unified/typechain-types/factories/{MockUSDC__factory.js → contracts/MockUSDC__factory.js} +1 -1
  508. package/dist/unified/typechain-types/factories/contracts/MockUSDC__factory.js.map +1 -0
  509. package/dist/unified/typechain-types/factories/contracts/examples/MailerIntegrationExample__factory.d.ts +209 -0
  510. package/dist/unified/typechain-types/factories/contracts/examples/MailerIntegrationExample__factory.d.ts.map +1 -0
  511. package/dist/unified/typechain-types/factories/contracts/examples/MailerIntegrationExample__factory.js +274 -0
  512. package/dist/unified/typechain-types/factories/contracts/examples/MailerIntegrationExample__factory.js.map +1 -0
  513. package/dist/unified/typechain-types/factories/contracts/examples/index.d.ts +2 -0
  514. package/dist/unified/typechain-types/factories/contracts/examples/index.d.ts.map +1 -0
  515. package/dist/unified/typechain-types/factories/contracts/examples/index.js +5 -0
  516. package/dist/unified/typechain-types/factories/contracts/examples/index.js.map +1 -0
  517. package/dist/unified/typechain-types/factories/contracts/index.d.ts +5 -0
  518. package/dist/unified/typechain-types/factories/contracts/index.d.ts.map +1 -0
  519. package/dist/unified/typechain-types/factories/contracts/index.js +8 -0
  520. package/dist/unified/typechain-types/factories/contracts/index.js.map +1 -0
  521. package/dist/unified/typechain-types/factories/{interfaces → contracts/interfaces}/IERC20__factory.d.ts +1 -1
  522. package/dist/unified/typechain-types/factories/contracts/interfaces/IERC20__factory.d.ts.map +1 -0
  523. package/dist/unified/typechain-types/factories/contracts/interfaces/IERC20__factory.js.map +1 -0
  524. package/dist/unified/typechain-types/factories/contracts/interfaces/IMailer__factory.d.ts +130 -0
  525. package/dist/unified/typechain-types/factories/contracts/interfaces/IMailer__factory.d.ts.map +1 -0
  526. package/dist/unified/typechain-types/factories/contracts/interfaces/IMailer__factory.js +171 -0
  527. package/dist/unified/typechain-types/factories/contracts/interfaces/IMailer__factory.js.map +1 -0
  528. package/dist/unified/typechain-types/factories/contracts/interfaces/index.d.ts +3 -0
  529. package/dist/unified/typechain-types/factories/contracts/interfaces/index.d.ts.map +1 -0
  530. package/dist/unified/typechain-types/factories/{interfaces → contracts/interfaces}/index.js +1 -0
  531. package/dist/unified/typechain-types/factories/contracts/interfaces/index.js.map +1 -0
  532. package/dist/unified/typechain-types/factories/index.d.ts +2 -3
  533. package/dist/unified/typechain-types/factories/index.d.ts.map +1 -1
  534. package/dist/unified/typechain-types/factories/index.js +2 -3
  535. package/dist/unified/typechain-types/factories/index.js.map +1 -1
  536. package/dist/unified/typechain-types/index.d.ts +34 -8
  537. package/dist/unified/typechain-types/index.d.ts.map +1 -1
  538. package/dist/unified/typechain-types/index.js +15 -3
  539. package/dist/unified/typechain-types/index.js.map +1 -1
  540. package/package.json +9 -3
  541. package/programs/mailer/Cargo.toml +13 -0
  542. package/programs/mailer/src/cpi.rs +330 -0
  543. package/programs/mailer/src/lib.rs +252 -114
  544. package/programs/mailer/tests/integration_tests.rs +8399 -146
  545. package/programs/mailer/tests/integration_tests.rs.backup +5124 -0
  546. package/programs/mailer-integration-example/Cargo.toml +23 -0
  547. package/programs/mailer-integration-example/src/lib.rs +362 -0
  548. package/typechain-types/@openzeppelin/contracts/index.ts +9 -0
  549. package/typechain-types/@openzeppelin/contracts/interfaces/IERC1967.ts +168 -0
  550. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.ts +90 -0
  551. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.ts +4 -0
  552. package/typechain-types/@openzeppelin/contracts/interfaces/index.ts +6 -0
  553. package/typechain-types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.ts +69 -0
  554. package/typechain-types/@openzeppelin/contracts/proxy/ERC1967/index.ts +4 -0
  555. package/typechain-types/@openzeppelin/contracts/proxy/beacon/IBeacon.ts +90 -0
  556. package/typechain-types/@openzeppelin/contracts/proxy/beacon/index.ts +4 -0
  557. package/typechain-types/@openzeppelin/contracts/proxy/index.ts +7 -0
  558. package/typechain-types/@openzeppelin/contracts/utils/Address.ts +69 -0
  559. package/typechain-types/@openzeppelin/contracts/utils/Errors.ts +69 -0
  560. package/typechain-types/@openzeppelin/contracts/utils/index.ts +5 -0
  561. package/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.ts +186 -0
  562. package/typechain-types/@openzeppelin/contracts-upgradeable/access/index.ts +4 -0
  563. package/typechain-types/@openzeppelin/contracts-upgradeable/index.ts +9 -0
  564. package/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.ts +5 -0
  565. package/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.ts +105 -0
  566. package/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.ts +196 -0
  567. package/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts +5 -0
  568. package/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.ts +105 -0
  569. package/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.ts +4 -0
  570. package/typechain-types/@openzeppelin/index.ts +7 -0
  571. package/typechain-types/{Mailer.ts → contracts/Mailer.ts} +237 -19
  572. package/typechain-types/{MockUSDC.ts → contracts/MockUSDC.ts} +1 -1
  573. package/typechain-types/contracts/examples/MailerIntegrationExample.ts +352 -0
  574. package/typechain-types/contracts/examples/index.ts +4 -0
  575. package/typechain-types/contracts/index.ts +9 -0
  576. package/typechain-types/{interfaces → contracts/interfaces}/IERC20.ts +1 -1
  577. package/typechain-types/contracts/interfaces/IMailer.ts +225 -0
  578. package/typechain-types/{interfaces → contracts/interfaces}/index.ts +1 -0
  579. package/typechain-types/factories/@openzeppelin/contracts/index.ts +6 -0
  580. package/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.ts +67 -0
  581. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.ts +38 -0
  582. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.ts +4 -0
  583. package/typechain-types/factories/@openzeppelin/contracts/interfaces/index.ts +5 -0
  584. package/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.ts +105 -0
  585. package/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/index.ts +4 -0
  586. package/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.ts +35 -0
  587. package/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/index.ts +4 -0
  588. package/typechain-types/factories/@openzeppelin/contracts/proxy/index.ts +5 -0
  589. package/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.ts +75 -0
  590. package/typechain-types/factories/@openzeppelin/contracts/utils/Errors__factory.ts +101 -0
  591. package/typechain-types/factories/@openzeppelin/contracts/utils/index.ts +5 -0
  592. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.ts +122 -0
  593. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.ts +4 -0
  594. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.ts +6 -0
  595. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.ts +4 -0
  596. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.ts +48 -0
  597. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.ts +153 -0
  598. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts +5 -0
  599. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.ts +48 -0
  600. package/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.ts +4 -0
  601. package/typechain-types/factories/@openzeppelin/index.ts +5 -0
  602. package/typechain-types/factories/contracts/Mailer__factory.ts +1385 -0
  603. package/typechain-types/factories/{MockUSDC__factory.ts → contracts/MockUSDC__factory.ts} +3 -3
  604. package/typechain-types/factories/contracts/examples/MailerIntegrationExample__factory.ts +330 -0
  605. package/typechain-types/factories/contracts/examples/index.ts +4 -0
  606. package/typechain-types/factories/contracts/index.ts +7 -0
  607. package/typechain-types/factories/{interfaces → contracts/interfaces}/IERC20__factory.ts +4 -1
  608. package/typechain-types/factories/contracts/interfaces/IMailer__factory.ts +177 -0
  609. package/typechain-types/factories/{interfaces → contracts/interfaces}/index.ts +1 -0
  610. package/typechain-types/factories/index.ts +2 -3
  611. package/typechain-types/hardhat.d.ts +216 -0
  612. package/typechain-types/index.ts +34 -8
  613. package/dist/evm/typechain-types/Mailer.d.ts.map +0 -1
  614. package/dist/evm/typechain-types/Mailer.js.map +0 -1
  615. package/dist/evm/typechain-types/MockUSDC.d.ts.map +0 -1
  616. package/dist/evm/typechain-types/MockUSDC.js.map +0 -1
  617. package/dist/evm/typechain-types/factories/Mailer__factory.d.ts +0 -885
  618. package/dist/evm/typechain-types/factories/Mailer__factory.d.ts.map +0 -1
  619. package/dist/evm/typechain-types/factories/Mailer__factory.js +0 -1138
  620. package/dist/evm/typechain-types/factories/Mailer__factory.js.map +0 -1
  621. package/dist/evm/typechain-types/factories/MockUSDC__factory.d.ts.map +0 -1
  622. package/dist/evm/typechain-types/factories/MockUSDC__factory.js.map +0 -1
  623. package/dist/evm/typechain-types/factories/interfaces/IERC20__factory.d.ts.map +0 -1
  624. package/dist/evm/typechain-types/factories/interfaces/IERC20__factory.js.map +0 -1
  625. package/dist/evm/typechain-types/factories/interfaces/index.d.ts +0 -2
  626. package/dist/evm/typechain-types/factories/interfaces/index.d.ts.map +0 -1
  627. package/dist/evm/typechain-types/factories/interfaces/index.js.map +0 -1
  628. package/dist/evm/typechain-types/interfaces/IERC20.d.ts.map +0 -1
  629. package/dist/evm/typechain-types/interfaces/IERC20.js.map +0 -1
  630. package/dist/evm/typechain-types/interfaces/index.d.ts +0 -2
  631. package/dist/evm/typechain-types/interfaces/index.d.ts.map +0 -1
  632. package/dist/evm/typechain-types/interfaces/index.js.map +0 -1
  633. package/dist/unified/typechain-types/Mailer.d.ts.map +0 -1
  634. package/dist/unified/typechain-types/Mailer.js.map +0 -1
  635. package/dist/unified/typechain-types/MockUSDC.d.ts.map +0 -1
  636. package/dist/unified/typechain-types/MockUSDC.js.map +0 -1
  637. package/dist/unified/typechain-types/factories/Mailer__factory.d.ts +0 -885
  638. package/dist/unified/typechain-types/factories/Mailer__factory.d.ts.map +0 -1
  639. package/dist/unified/typechain-types/factories/Mailer__factory.js +0 -1134
  640. package/dist/unified/typechain-types/factories/Mailer__factory.js.map +0 -1
  641. package/dist/unified/typechain-types/factories/MockUSDC__factory.d.ts.map +0 -1
  642. package/dist/unified/typechain-types/factories/MockUSDC__factory.js.map +0 -1
  643. package/dist/unified/typechain-types/factories/interfaces/IERC20__factory.d.ts.map +0 -1
  644. package/dist/unified/typechain-types/factories/interfaces/IERC20__factory.js.map +0 -1
  645. package/dist/unified/typechain-types/factories/interfaces/index.d.ts +0 -2
  646. package/dist/unified/typechain-types/factories/interfaces/index.d.ts.map +0 -1
  647. package/dist/unified/typechain-types/factories/interfaces/index.js.map +0 -1
  648. package/dist/unified/typechain-types/interfaces/IERC20.d.ts.map +0 -1
  649. package/dist/unified/typechain-types/interfaces/IERC20.js.map +0 -1
  650. package/dist/unified/typechain-types/interfaces/index.d.ts +0 -2
  651. package/dist/unified/typechain-types/interfaces/index.d.ts.map +0 -1
  652. package/dist/unified/typechain-types/interfaces/index.js.map +0 -1
  653. package/typechain-types/factories/Mailer__factory.ts +0 -1170
  654. /package/dist/evm/typechain-types/{interfaces → @openzeppelin/contracts-upgradeable/access}/index.js +0 -0
  655. /package/dist/evm/typechain-types/{Mailer.js → contracts/Mailer.js} +0 -0
  656. /package/dist/evm/typechain-types/{MockUSDC.js → contracts/MockUSDC.js} +0 -0
  657. /package/dist/evm/typechain-types/{interfaces → contracts/interfaces}/IERC20.js +0 -0
  658. /package/dist/evm/typechain-types/factories/{interfaces → contracts/interfaces}/IERC20__factory.js +0 -0
  659. /package/dist/unified/typechain-types/{interfaces → @openzeppelin/contracts-upgradeable/access}/index.js +0 -0
  660. /package/dist/unified/typechain-types/{Mailer.js → contracts/Mailer.js} +0 -0
  661. /package/dist/unified/typechain-types/{MockUSDC.js → contracts/MockUSDC.js} +0 -0
  662. /package/dist/unified/typechain-types/{interfaces → contracts/interfaces}/IERC20.js +0 -0
  663. /package/dist/unified/typechain-types/factories/{interfaces → contracts/interfaces}/IERC20__factory.js +0 -0
@@ -12,10 +12,11 @@
12
12
  //!
13
13
  //! ## Program Architecture
14
14
  //!
15
- //! The program uses Program Derived Addresses (PDAs) for:
16
- //! - Mailer state: `[b"mailer"]`
17
- //! - Recipient claims: `[b"claim", recipient.key()]`
18
- //! - Delegations: `[b"delegation", delegator.key()]`
15
+ //! The program uses Program Derived Addresses (PDAs) with version byte for future-proofing:
16
+ //! - Mailer state: `[b"mailer"]` (no version - global singleton)
17
+ //! - Recipient claims: `[b"claim", &[1], recipient.key()]` (v1)
18
+ //! - Delegations: `[b"delegation", &[1], delegator.key()]` (v1)
19
+ //! - Fee discounts: `[b"discount", &[1], account.key()]` (v1)
19
20
  //!
20
21
  //! ## Fee Structure
21
22
  //!
@@ -54,6 +55,14 @@ const DELEGATION_FEE: u64 = 10_000_000;
54
55
  /// Claim period for revenue shares: 60 days in seconds
55
56
  const CLAIM_PERIOD: i64 = 60 * 24 * 60 * 60;
56
57
 
58
+ /// PDA version byte for forward compatibility
59
+ /// Allows future upgrades to use different PDA structures without collision
60
+ const PDA_VERSION: u8 = 1;
61
+
62
+ // CPI module for cross-program invocations
63
+ #[cfg(feature = "cpi")]
64
+ pub mod cpi;
65
+
57
66
  #[cfg(not(feature = "no-entrypoint"))]
58
67
  solana_program::entrypoint!(process_instruction);
59
68
 
@@ -72,6 +81,19 @@ pub struct MailerState {
72
81
 
73
82
  impl MailerState {
74
83
  pub const LEN: usize = 32 + 32 + 8 + 8 + 8 + 1 + 1 + 1; // 91 bytes
84
+
85
+ pub fn increase_owner_claimable(&mut self, amount: u64) -> Result<(), ProgramError> {
86
+ if amount == 0 {
87
+ return Ok(());
88
+ }
89
+
90
+ self.owner_claimable = self
91
+ .owner_claimable
92
+ .checked_add(amount)
93
+ .ok_or(MailerError::MathOverflow)?;
94
+
95
+ Ok(())
96
+ }
75
97
  }
76
98
 
77
99
  /// Recipient claim account (optimized for smaller rent cost)
@@ -125,6 +147,9 @@ pub enum MailerInstruction {
125
147
  Initialize { usdc_mint: Pubkey },
126
148
 
127
149
  /// Send message with optional revenue sharing
150
+ /// SOFT-FAIL BEHAVIOR: Does not revert on fee payment failure. No log message emitted if payment fails.
151
+ /// This design allows composability - calling programs won't fail if message sending fails.
152
+ /// Monitor program logs: if transaction succeeds but no log appears, message was dropped due to fee failure.
128
153
  /// Accounts:
129
154
  /// 0. `[signer]` Sender
130
155
  /// 1. `[writable]` Recipient claim account (PDA)
@@ -142,6 +167,7 @@ pub enum MailerInstruction {
142
167
  },
143
168
 
144
169
  /// Send prepared message with optional revenue sharing (references off-chain content via mailId)
170
+ /// SOFT-FAIL BEHAVIOR: Does not revert on fee payment failure. See Send instruction for details.
145
171
  /// Accounts:
146
172
  /// 0. `[signer]` Sender
147
173
  /// 1. `[writable]` Recipient claim account (PDA)
@@ -159,6 +185,7 @@ pub enum MailerInstruction {
159
185
 
160
186
  /// Send message to email address (no wallet address known)
161
187
  /// Charges only 10% owner fee since recipient wallet is unknown
188
+ /// SOFT-FAIL BEHAVIOR: Does not revert on fee payment failure. See Send instruction for details.
162
189
  /// Accounts:
163
190
  /// 0. `[signer]` Sender
164
191
  /// 1. `[]` Mailer state account (PDA)
@@ -173,6 +200,7 @@ pub enum MailerInstruction {
173
200
 
174
201
  /// Send prepared message to email address (no wallet address known)
175
202
  /// Charges only 10% owner fee since recipient wallet is unknown
203
+ /// SOFT-FAIL BEHAVIOR: Does not revert on fee payment failure. See Send instruction for details.
176
204
  /// Accounts:
177
205
  /// 0. `[signer]` Sender
178
206
  /// 1. `[]` Mailer state account (PDA)
@@ -182,6 +210,7 @@ pub enum MailerInstruction {
182
210
  SendPreparedToEmail { to_email: String, mail_id: String },
183
211
 
184
212
  /// Send message through webhook (referenced by webhookId)
213
+ /// SOFT-FAIL BEHAVIOR: Does not revert on fee payment failure. See Send instruction for details.
185
214
  /// Accounts:
186
215
  /// 0. `[signer]` Sender
187
216
  /// 1. `[writable]` Recipient claim account (PDA)
@@ -198,6 +227,9 @@ pub enum MailerInstruction {
198
227
  },
199
228
 
200
229
  /// Claim recipient share
230
+ /// TIMESTAMP DEPENDENCY: Uses Clock::get()?.unix_timestamp for expiration checks (60 days).
231
+ /// Validators can manipulate timestamps by ±30 seconds or more. Claims near the deadline
232
+ /// have a small risk of denial. Recommended: Claim well before the 60-day deadline.
201
233
  /// Accounts:
202
234
  /// 0. `[signer]` Recipient
203
235
  /// 1. `[writable]` Recipient claim account (PDA)
@@ -217,12 +249,20 @@ pub enum MailerInstruction {
217
249
  ClaimOwnerShare,
218
250
 
219
251
  /// Set send fee (owner only)
252
+ /// WARNING: Fee changes take effect IMMEDIATELY with no time delay or notification.
253
+ /// This allows quick response to market conditions but requires user trust.
254
+ /// - No maximum fee cap enforced
255
+ /// - Users with pending transactions may pay different fees than expected
256
+ /// - Monitor program logs for FeeUpdated events
257
+ ///
220
258
  /// Accounts:
221
259
  /// 0. `[signer]` Owner
222
260
  /// 1. `[writable]` Mailer state account (PDA)
223
261
  SetFee { new_fee: u64 },
224
262
 
225
263
  /// Delegate to another address
264
+ /// WARNING: Delegation fee is NON-REFUNDABLE, even if the delegate rejects the delegation.
265
+ /// The fee is an anti-spam measure and goes to the contract owner regardless of delegation outcome.
226
266
  /// Accounts:
227
267
  /// 0. `[signer]` Delegator
228
268
  /// 1. `[writable]` Delegation account (PDA)
@@ -234,6 +274,8 @@ pub enum MailerInstruction {
234
274
  DelegateTo { delegate: Option<Pubkey> },
235
275
 
236
276
  /// Reject delegation
277
+ /// NOTE: Rejecting a delegation does NOT refund the delegation fee paid by the delegator.
278
+ /// The fee is an anti-spam measure and is non-refundable by design.
237
279
  /// Accounts:
238
280
  /// 0. `[signer]` Rejector
239
281
  /// 1. `[writable]` Delegation account (PDA)
@@ -241,6 +283,8 @@ pub enum MailerInstruction {
241
283
  RejectDelegation,
242
284
 
243
285
  /// Set delegation fee (owner only)
286
+ /// WARNING: Fee changes take effect IMMEDIATELY with no time delay.
287
+ /// See SetFee instruction for detailed implications of instant fee changes.
244
288
  /// Accounts:
245
289
  /// 0. `[signer]` Owner
246
290
  /// 1. `[writable]` Mailer state account (PDA)
@@ -346,6 +390,8 @@ pub enum MailerError {
346
390
  ContractNotPaused,
347
391
  #[error("Invalid percentage (must be 0-100)")]
348
392
  InvalidPercentage,
393
+ #[error("Math overflow")]
394
+ MathOverflow,
349
395
  }
350
396
 
351
397
  impl From<MailerError> for ProgramError {
@@ -557,12 +603,15 @@ fn process_send(
557
603
  calculate_fee_with_discount(program_id, sender.key, accounts, mailer_state.send_fee)?
558
604
  };
559
605
 
606
+ // Track whether fee was paid successfully
607
+ let fee_paid: bool;
608
+
560
609
  if revenue_share_to_receiver {
561
610
  // Priority mode: full fee with revenue sharing
562
611
 
563
612
  // Create or load recipient claim account
564
613
  let (claim_pda, claim_bump) =
565
- Pubkey::find_program_address(&[b"claim", to.as_ref()], program_id);
614
+ Pubkey::find_program_address(&[b"claim", &[PDA_VERSION], to.as_ref()], program_id);
566
615
 
567
616
  if recipient_claim.key != &claim_pda {
568
617
  return Err(MailerError::InvalidPDA.into());
@@ -587,9 +636,19 @@ fn process_send(
587
636
  recipient_claim.clone(),
588
637
  system_program.clone(),
589
638
  ],
590
- &[&[b"claim", to.as_ref(), &[claim_bump]]],
639
+ &[&[b"claim", &[PDA_VERSION], to.as_ref(), &[claim_bump]]],
591
640
  )?;
592
641
 
642
+ // Verify account is rent-exempt
643
+ let account_lamports = recipient_claim.lamports();
644
+ if !rent.is_exempt(account_lamports, space) {
645
+ msg!("ERROR: Recipient claim account not rent-exempt! {} lamports for {} bytes",
646
+ account_lamports, space);
647
+ return Err(ProgramError::InsufficientFunds);
648
+ }
649
+ msg!("Created rent-exempt recipient claim account: {} lamports for {} bytes",
650
+ account_lamports, space);
651
+
593
652
  // Initialize claim account
594
653
  let mut claim_data = recipient_claim.try_borrow_mut_data()?;
595
654
  claim_data[0..8]
@@ -606,8 +665,7 @@ fn process_send(
606
665
  drop(claim_data);
607
666
  }
608
667
 
609
- // Transfer effective fee (may be discounted)
610
- // If transfer fails, silently fail without emitting event
668
+ // Transfer effective fee (may be discounted) and track success
611
669
  if effective_fee > 0 {
612
670
  let transfer_result = invoke(
613
671
  &spl_token::instruction::transfer(
@@ -626,24 +684,24 @@ fn process_send(
626
684
  ],
627
685
  );
628
686
 
629
- // If transfer fails, return Ok without logging
687
+ // Check if transfer succeeded
630
688
  if transfer_result.is_err() {
631
- return Ok(());
632
- }
633
-
634
- // Record revenue shares (only if fee > 0 and transfer succeeded)
635
- if record_shares(recipient_claim, mailer_account, to, effective_fee).is_err() {
636
- return Ok(());
689
+ fee_paid = false;
690
+ } else {
691
+ // Record revenue shares (only if fee > 0 and transfer succeeded)
692
+ fee_paid = record_shares(recipient_claim, mailer_account, to, effective_fee).is_ok();
637
693
  }
694
+ } else {
695
+ fee_paid = true; // No fee required
638
696
  }
639
697
 
640
- msg!("Priority mail sent from {} to {}: {} (revenue share enabled, resolve sender: {}, effective fee: {})", sender.key, to, subject, _resolve_sender_to_name, effective_fee);
698
+ // Always log the message with fee_paid status
699
+ msg!("Priority mail sent from {} to {}: {} (revenue share enabled, resolve sender: {}, effective fee: {}, fee paid: {})", sender.key, to, subject, _resolve_sender_to_name, effective_fee, fee_paid);
641
700
  } else {
642
701
  // Standard mode: 10% fee only, no revenue sharing
643
702
  let owner_fee = (effective_fee * 10) / 100; // 10% of effective fee
644
703
 
645
- // Transfer only owner fee (10%)
646
- // If transfer fails, silently fail without emitting event
704
+ // Transfer only owner fee (10%) and track success
647
705
  if owner_fee > 0 {
648
706
  let transfer_result = invoke(
649
707
  &spl_token::instruction::transfer(
@@ -662,25 +720,29 @@ fn process_send(
662
720
  ],
663
721
  );
664
722
 
665
- // If transfer fails, return Ok without logging
666
- if transfer_result.is_err() {
667
- return Ok(());
668
- }
723
+ // Check if transfer succeeded
724
+ fee_paid = transfer_result.is_ok();
725
+ } else {
726
+ fee_paid = true; // No fee required
669
727
  }
670
728
 
671
- // Update owner claimable
672
- let mut mailer_data = mailer_account.try_borrow_mut_data()?;
673
- let mut mailer_state: MailerState = BorshDeserialize::deserialize(&mut &mailer_data[8..])?;
674
- mailer_state.owner_claimable += owner_fee;
675
- mailer_state.serialize(&mut &mut mailer_data[8..])?;
729
+ // Update owner claimable only if fee was paid
730
+ if fee_paid && owner_fee > 0 {
731
+ let mut mailer_data = mailer_account.try_borrow_mut_data()?;
732
+ let mut mailer_state: MailerState = BorshDeserialize::deserialize(&mut &mailer_data[8..])?;
733
+ mailer_state.increase_owner_claimable(owner_fee)?;
734
+ mailer_state.serialize(&mut &mut mailer_data[8..])?;
735
+ }
676
736
 
737
+ // Always log the message with fee_paid status
677
738
  msg!(
678
- "Standard mail sent from {} to {}: {} (resolve sender: {}, effective fee: {})",
739
+ "Standard mail sent from {} to {}: {} (resolve sender: {}, effective fee: {}, fee paid: {})",
679
740
  sender.key,
680
741
  to,
681
742
  subject,
682
743
  _resolve_sender_to_name,
683
- effective_fee
744
+ effective_fee,
745
+ fee_paid
684
746
  );
685
747
  }
686
748
 
@@ -731,12 +793,15 @@ fn process_send_prepared(
731
793
  calculate_fee_with_discount(program_id, sender.key, accounts, mailer_state.send_fee)?
732
794
  };
733
795
 
796
+ // Track whether fee was paid successfully
797
+ let fee_paid: bool;
798
+
734
799
  if revenue_share_to_receiver {
735
800
  // Priority mode: full fee with revenue sharing
736
801
 
737
802
  // Create or load recipient claim account
738
803
  let (claim_pda, claim_bump) =
739
- Pubkey::find_program_address(&[b"claim", to.as_ref()], program_id);
804
+ Pubkey::find_program_address(&[b"claim", &[PDA_VERSION], to.as_ref()], program_id);
740
805
 
741
806
  if recipient_claim.key != &claim_pda {
742
807
  return Err(MailerError::InvalidPDA.into());
@@ -761,9 +826,19 @@ fn process_send_prepared(
761
826
  recipient_claim.clone(),
762
827
  system_program.clone(),
763
828
  ],
764
- &[&[b"claim", to.as_ref(), &[claim_bump]]],
829
+ &[&[b"claim", &[PDA_VERSION], to.as_ref(), &[claim_bump]]],
765
830
  )?;
766
831
 
832
+ // Verify account is rent-exempt
833
+ let account_lamports = recipient_claim.lamports();
834
+ if !rent.is_exempt(account_lamports, space) {
835
+ msg!("ERROR: Recipient claim account not rent-exempt! {} lamports for {} bytes",
836
+ account_lamports, space);
837
+ return Err(ProgramError::InsufficientFunds);
838
+ }
839
+ msg!("Created rent-exempt recipient claim account: {} lamports for {} bytes",
840
+ account_lamports, space);
841
+
767
842
  // Initialize claim account
768
843
  let mut claim_data = recipient_claim.try_borrow_mut_data()?;
769
844
  claim_data[0..8]
@@ -780,7 +855,7 @@ fn process_send_prepared(
780
855
  drop(claim_data);
781
856
  }
782
857
 
783
- // Transfer effective fee (may be discounted)
858
+ // Transfer effective fee (may be discounted) and track success
784
859
  if effective_fee > 0 {
785
860
  let transfer_result = invoke(
786
861
  &spl_token::instruction::transfer(
@@ -799,22 +874,24 @@ fn process_send_prepared(
799
874
  ],
800
875
  );
801
876
 
877
+ // Check if transfer succeeded
802
878
  if transfer_result.is_err() {
803
- return Ok(());
804
- }
805
-
806
- // Record revenue shares (only if fee > 0)
807
- if record_shares(recipient_claim, mailer_account, to, effective_fee).is_err() {
808
- return Ok(());
879
+ fee_paid = false;
880
+ } else {
881
+ // Record revenue shares (only if fee > 0 and transfer succeeded)
882
+ fee_paid = record_shares(recipient_claim, mailer_account, to, effective_fee).is_ok();
809
883
  }
884
+ } else {
885
+ fee_paid = true; // No fee required
810
886
  }
811
887
 
812
- msg!("Priority prepared mail sent from {} to {} (mailId: {}, revenue share enabled, resolve sender: {}, effective fee: {})", sender.key, to, mail_id, _resolve_sender_to_name, effective_fee);
888
+ // Always log the message with fee_paid status
889
+ msg!("Priority prepared mail sent from {} to {} (mailId: {}, revenue share enabled, resolve sender: {}, effective fee: {}, fee paid: {})", sender.key, to, mail_id, _resolve_sender_to_name, effective_fee, fee_paid);
813
890
  } else {
814
891
  // Standard mode: 10% fee only, no revenue sharing
815
892
  let owner_fee = (effective_fee * 10) / 100; // 10% of effective fee
816
893
 
817
- // Transfer only owner fee (10%)
894
+ // Transfer only owner fee (10%) and track success
818
895
  if owner_fee > 0 {
819
896
  let transfer_result = invoke(
820
897
  &spl_token::instruction::transfer(
@@ -833,24 +910,29 @@ fn process_send_prepared(
833
910
  ],
834
911
  );
835
912
 
836
- if transfer_result.is_err() {
837
- return Ok(());
838
- }
913
+ // Check if transfer succeeded
914
+ fee_paid = transfer_result.is_ok();
915
+ } else {
916
+ fee_paid = true; // No fee required
839
917
  }
840
918
 
841
- // Update owner claimable
842
- let mut mailer_data = mailer_account.try_borrow_mut_data()?;
843
- let mut mailer_state: MailerState = BorshDeserialize::deserialize(&mut &mailer_data[8..])?;
844
- mailer_state.owner_claimable += owner_fee;
845
- mailer_state.serialize(&mut &mut mailer_data[8..])?;
919
+ // Update owner claimable only if fee was paid
920
+ if fee_paid && owner_fee > 0 {
921
+ let mut mailer_data = mailer_account.try_borrow_mut_data()?;
922
+ let mut mailer_state: MailerState = BorshDeserialize::deserialize(&mut &mailer_data[8..])?;
923
+ mailer_state.increase_owner_claimable(owner_fee)?;
924
+ mailer_state.serialize(&mut &mut mailer_data[8..])?;
925
+ }
846
926
 
927
+ // Always log the message with fee_paid status
847
928
  msg!(
848
- "Standard prepared mail sent from {} to {} (mailId: {}, resolve sender: {}, effective fee: {})",
929
+ "Standard prepared mail sent from {} to {} (mailId: {}, resolve sender: {}, effective fee: {}, fee paid: {})",
849
930
  sender.key,
850
931
  to,
851
932
  mail_id,
852
933
  _resolve_sender_to_name,
853
- effective_fee
934
+ effective_fee,
935
+ fee_paid
854
936
  );
855
937
  }
856
938
 
@@ -901,8 +983,8 @@ fn process_send_to_email(
901
983
  // Calculate 10% owner fee (no revenue share since no wallet address)
902
984
  let owner_fee = (effective_fee * 10) / 100;
903
985
 
904
- // Transfer fee from sender to mailer
905
- if owner_fee > 0 {
986
+ // Transfer fee from sender to mailer and track success
987
+ let fee_paid: bool = if owner_fee > 0 {
906
988
  let transfer_ix = spl_token::instruction::transfer(
907
989
  token_program.key,
908
990
  sender_usdc.key,
@@ -922,23 +1004,28 @@ fn process_send_to_email(
922
1004
  ],
923
1005
  );
924
1006
 
925
- if transfer_result.is_err() {
926
- return Ok(());
927
- }
928
- }
1007
+ // Check if transfer succeeded
1008
+ transfer_result.is_ok()
1009
+ } else {
1010
+ true // No fee required
1011
+ };
929
1012
 
930
- // Update owner claimable
931
- let mut mailer_data = mailer_account.try_borrow_mut_data()?;
932
- let mut mailer_state: MailerState = BorshDeserialize::deserialize(&mut &mailer_data[8..])?;
933
- mailer_state.owner_claimable += owner_fee;
934
- mailer_state.serialize(&mut &mut mailer_data[8..])?;
1013
+ // Update owner claimable only if fee was paid
1014
+ if fee_paid && owner_fee > 0 {
1015
+ let mut mailer_data = mailer_account.try_borrow_mut_data()?;
1016
+ let mut mailer_state: MailerState = BorshDeserialize::deserialize(&mut &mailer_data[8..])?;
1017
+ mailer_state.increase_owner_claimable(owner_fee)?;
1018
+ mailer_state.serialize(&mut &mut mailer_data[8..])?;
1019
+ }
935
1020
 
1021
+ // Always log the message with fee_paid status
936
1022
  msg!(
937
- "Mail sent from {} to email {}: {} (effective fee: {})",
1023
+ "Mail sent from {} to email {}: {} (effective fee: {}, fee paid: {})",
938
1024
  sender.key,
939
1025
  to_email,
940
1026
  subject,
941
- effective_fee
1027
+ effective_fee,
1028
+ fee_paid
942
1029
  );
943
1030
 
944
1031
  Ok(())
@@ -987,8 +1074,8 @@ fn process_send_prepared_to_email(
987
1074
  // Calculate 10% owner fee (no revenue share since no wallet address)
988
1075
  let owner_fee = (effective_fee * 10) / 100;
989
1076
 
990
- // Transfer fee from sender to mailer
991
- if owner_fee > 0 {
1077
+ // Transfer fee from sender to mailer and track success
1078
+ let fee_paid: bool = if owner_fee > 0 {
992
1079
  let transfer_ix = spl_token::instruction::transfer(
993
1080
  token_program.key,
994
1081
  sender_usdc.key,
@@ -1008,23 +1095,28 @@ fn process_send_prepared_to_email(
1008
1095
  ],
1009
1096
  );
1010
1097
 
1011
- if transfer_result.is_err() {
1012
- return Ok(());
1013
- }
1014
- }
1098
+ // Check if transfer succeeded
1099
+ transfer_result.is_ok()
1100
+ } else {
1101
+ true // No fee required
1102
+ };
1015
1103
 
1016
- // Update owner claimable
1017
- let mut mailer_data = mailer_account.try_borrow_mut_data()?;
1018
- let mut mailer_state: MailerState = BorshDeserialize::deserialize(&mut &mailer_data[8..])?;
1019
- mailer_state.owner_claimable += owner_fee;
1020
- mailer_state.serialize(&mut &mut mailer_data[8..])?;
1104
+ // Update owner claimable only if fee was paid
1105
+ if fee_paid && owner_fee > 0 {
1106
+ let mut mailer_data = mailer_account.try_borrow_mut_data()?;
1107
+ let mut mailer_state: MailerState = BorshDeserialize::deserialize(&mut &mailer_data[8..])?;
1108
+ mailer_state.increase_owner_claimable(owner_fee)?;
1109
+ mailer_state.serialize(&mut &mut mailer_data[8..])?;
1110
+ }
1021
1111
 
1112
+ // Always log the message with fee_paid status
1022
1113
  msg!(
1023
- "Prepared mail sent from {} to email {} (mailId: {}, effective fee: {})",
1114
+ "Prepared mail sent from {} to email {} (mailId: {}, effective fee: {}, fee paid: {})",
1024
1115
  sender.key,
1025
1116
  to_email,
1026
1117
  mail_id,
1027
- effective_fee
1118
+ effective_fee,
1119
+ fee_paid
1028
1120
  );
1029
1121
 
1030
1122
  Ok(())
@@ -1074,12 +1166,15 @@ fn process_send_through_webhook(
1074
1166
  calculate_fee_with_discount(program_id, sender.key, accounts, mailer_state.send_fee)?
1075
1167
  };
1076
1168
 
1169
+ // Track whether fee was paid successfully
1170
+ let fee_paid: bool;
1171
+
1077
1172
  if revenue_share_to_receiver {
1078
1173
  // Priority mode: full fee with revenue sharing
1079
1174
 
1080
1175
  // Create or load recipient claim account
1081
1176
  let (claim_pda, claim_bump) =
1082
- Pubkey::find_program_address(&[b"claim", to.as_ref()], program_id);
1177
+ Pubkey::find_program_address(&[b"claim", &[PDA_VERSION], to.as_ref()], program_id);
1083
1178
 
1084
1179
  if recipient_claim.key != &claim_pda {
1085
1180
  return Err(MailerError::InvalidPDA.into());
@@ -1104,9 +1199,19 @@ fn process_send_through_webhook(
1104
1199
  recipient_claim.clone(),
1105
1200
  system_program.clone(),
1106
1201
  ],
1107
- &[&[b"claim", to.as_ref(), &[claim_bump]]],
1202
+ &[&[b"claim", &[PDA_VERSION], to.as_ref(), &[claim_bump]]],
1108
1203
  )?;
1109
1204
 
1205
+ // Verify account is rent-exempt
1206
+ let account_lamports = recipient_claim.lamports();
1207
+ if !rent.is_exempt(account_lamports, space) {
1208
+ msg!("ERROR: Recipient claim account not rent-exempt! {} lamports for {} bytes",
1209
+ account_lamports, space);
1210
+ return Err(ProgramError::InsufficientFunds);
1211
+ }
1212
+ msg!("Created rent-exempt recipient claim account: {} lamports for {} bytes",
1213
+ account_lamports, space);
1214
+
1110
1215
  // Initialize claim account
1111
1216
  let mut claim_data = recipient_claim.try_borrow_mut_data()?;
1112
1217
  claim_data[0..8]
@@ -1123,7 +1228,7 @@ fn process_send_through_webhook(
1123
1228
  drop(claim_data);
1124
1229
  }
1125
1230
 
1126
- // Transfer effective fee (may be discounted)
1231
+ // Transfer effective fee (may be discounted) and track success
1127
1232
  if effective_fee > 0 {
1128
1233
  let transfer_result = invoke(
1129
1234
  &spl_token::instruction::transfer(
@@ -1142,22 +1247,24 @@ fn process_send_through_webhook(
1142
1247
  ],
1143
1248
  );
1144
1249
 
1250
+ // Check if transfer succeeded
1145
1251
  if transfer_result.is_err() {
1146
- return Ok(());
1147
- }
1148
-
1149
- // Record revenue shares (only if fee > 0)
1150
- if record_shares(recipient_claim, mailer_account, to, effective_fee).is_err() {
1151
- return Ok(());
1252
+ fee_paid = false;
1253
+ } else {
1254
+ // Record revenue shares (only if fee > 0 and transfer succeeded)
1255
+ fee_paid = record_shares(recipient_claim, mailer_account, to, effective_fee).is_ok();
1152
1256
  }
1257
+ } else {
1258
+ fee_paid = true; // No fee required
1153
1259
  }
1154
1260
 
1155
- msg!("Webhook mail sent from {} to {} (webhookId: {}, revenue share enabled, resolve sender: {}, effective fee: {})", sender.key, to, webhook_id, _resolve_sender_to_name, effective_fee);
1261
+ // Always log the message with fee_paid status
1262
+ msg!("Webhook mail sent from {} to {} (webhookId: {}, revenue share enabled, resolve sender: {}, effective fee: {}, fee paid: {})", sender.key, to, webhook_id, _resolve_sender_to_name, effective_fee, fee_paid);
1156
1263
  } else {
1157
1264
  // Standard mode: 10% fee only, no revenue sharing
1158
1265
  let owner_fee = (effective_fee * 10) / 100; // 10% of effective fee
1159
1266
 
1160
- // Transfer only owner fee (10%)
1267
+ // Transfer only owner fee (10%) and track success
1161
1268
  if owner_fee > 0 {
1162
1269
  let transfer_result = invoke(
1163
1270
  &spl_token::instruction::transfer(
@@ -1176,24 +1283,29 @@ fn process_send_through_webhook(
1176
1283
  ],
1177
1284
  );
1178
1285
 
1179
- if transfer_result.is_err() {
1180
- return Ok(());
1181
- }
1286
+ // Check if transfer succeeded
1287
+ fee_paid = transfer_result.is_ok();
1288
+ } else {
1289
+ fee_paid = true; // No fee required
1182
1290
  }
1183
1291
 
1184
- // Update owner claimable
1185
- let mut mailer_data = mailer_account.try_borrow_mut_data()?;
1186
- let mut mailer_state: MailerState = BorshDeserialize::deserialize(&mut &mailer_data[8..])?;
1187
- mailer_state.owner_claimable += owner_fee;
1188
- mailer_state.serialize(&mut &mut mailer_data[8..])?;
1292
+ // Update owner claimable only if fee was paid
1293
+ if fee_paid && owner_fee > 0 {
1294
+ let mut mailer_data = mailer_account.try_borrow_mut_data()?;
1295
+ let mut mailer_state: MailerState = BorshDeserialize::deserialize(&mut &mailer_data[8..])?;
1296
+ mailer_state.increase_owner_claimable(owner_fee)?;
1297
+ mailer_state.serialize(&mut &mut mailer_data[8..])?;
1298
+ }
1189
1299
 
1300
+ // Always log the message with fee_paid status
1190
1301
  msg!(
1191
- "Webhook mail sent from {} to {} (webhookId: {}, resolve sender: {}, effective fee: {})",
1302
+ "Webhook mail sent from {} to {} (webhookId: {}, resolve sender: {}, effective fee: {}, fee paid: {})",
1192
1303
  sender.key,
1193
1304
  to,
1194
1305
  webhook_id,
1195
1306
  _resolve_sender_to_name,
1196
- effective_fee
1307
+ effective_fee,
1308
+ fee_paid
1197
1309
  );
1198
1310
  }
1199
1311
 
@@ -1216,7 +1328,7 @@ fn process_claim_recipient_share(_program_id: &Pubkey, accounts: &[AccountInfo])
1216
1328
 
1217
1329
  let (mailer_pda, _) = assert_mailer_account(_program_id, mailer_account)?;
1218
1330
  let (claim_pda, _) =
1219
- Pubkey::find_program_address(&[b"claim", recipient.key.as_ref()], _program_id);
1331
+ Pubkey::find_program_address(&[b"claim", &[PDA_VERSION], recipient.key.as_ref()], _program_id);
1220
1332
  if recipient_claim.key != &claim_pda {
1221
1333
  return Err(MailerError::InvalidPDA.into());
1222
1334
  }
@@ -1405,7 +1517,7 @@ fn process_delegate_to(
1405
1517
 
1406
1518
  // Verify delegation account PDA
1407
1519
  let (delegation_pda, delegation_bump) =
1408
- Pubkey::find_program_address(&[b"delegation", delegator.key.as_ref()], program_id);
1520
+ Pubkey::find_program_address(&[b"delegation", &[PDA_VERSION], delegator.key.as_ref()], program_id);
1409
1521
 
1410
1522
  if delegation_account.key != &delegation_pda {
1411
1523
  return Err(MailerError::InvalidPDA.into());
@@ -1430,9 +1542,19 @@ fn process_delegate_to(
1430
1542
  delegation_account.clone(),
1431
1543
  system_program.clone(),
1432
1544
  ],
1433
- &[&[b"delegation", delegator.key.as_ref(), &[delegation_bump]]],
1545
+ &[&[b"delegation", &[PDA_VERSION], delegator.key.as_ref(), &[delegation_bump]]],
1434
1546
  )?;
1435
1547
 
1548
+ // Verify account is rent-exempt
1549
+ let account_lamports = delegation_account.lamports();
1550
+ if !rent.is_exempt(account_lamports, space) {
1551
+ msg!("ERROR: Delegation account not rent-exempt! {} lamports for {} bytes",
1552
+ account_lamports, space);
1553
+ return Err(ProgramError::InsufficientFunds);
1554
+ }
1555
+ msg!("Created rent-exempt delegation account: {} lamports for {} bytes",
1556
+ account_lamports, space);
1557
+
1436
1558
  // Initialize delegation account
1437
1559
  let mut delegation_data = delegation_account.try_borrow_mut_data()?;
1438
1560
  delegation_data[0..8]
@@ -1472,7 +1594,7 @@ fn process_delegate_to(
1472
1594
  let mut mailer_data_mut = mailer_account.try_borrow_mut_data()?;
1473
1595
  let mut mailer_state_mut: MailerState =
1474
1596
  BorshDeserialize::deserialize(&mut &mailer_data_mut[8..])?;
1475
- mailer_state_mut.owner_claimable += mailer_state.delegation_fee;
1597
+ mailer_state_mut.increase_owner_claimable(mailer_state.delegation_fee)?;
1476
1598
  mailer_state_mut.serialize(&mut &mut mailer_data_mut[8..])?;
1477
1599
  drop(mailer_data_mut);
1478
1600
  }
@@ -1607,7 +1729,7 @@ fn process_set_custom_fee_percentage(
1607
1729
 
1608
1730
  // Verify fee discount account PDA
1609
1731
  let (discount_pda, bump) =
1610
- Pubkey::find_program_address(&[b"discount", account.as_ref()], program_id);
1732
+ Pubkey::find_program_address(&[b"discount", &[PDA_VERSION], account.as_ref()], program_id);
1611
1733
 
1612
1734
  if fee_discount_account.key != &discount_pda {
1613
1735
  return Err(MailerError::InvalidPDA.into());
@@ -1632,9 +1754,19 @@ fn process_set_custom_fee_percentage(
1632
1754
  fee_discount_account.clone(),
1633
1755
  system_program.clone(),
1634
1756
  ],
1635
- &[&[b"discount", account.as_ref(), &[bump]]],
1757
+ &[&[b"discount", &[PDA_VERSION], account.as_ref(), &[bump]]],
1636
1758
  )?;
1637
1759
 
1760
+ // Verify account is rent-exempt
1761
+ let account_lamports = fee_discount_account.lamports();
1762
+ if !rent.is_exempt(account_lamports, space) {
1763
+ msg!("ERROR: Fee discount account not rent-exempt! {} lamports for {} bytes",
1764
+ account_lamports, space);
1765
+ return Err(ProgramError::InsufficientFunds);
1766
+ }
1767
+ msg!("Created rent-exempt fee discount account: {} lamports for {} bytes",
1768
+ account_lamports, space);
1769
+
1638
1770
  // Initialize discount account
1639
1771
  let mut discount_data = fee_discount_account.try_borrow_mut_data()?;
1640
1772
  discount_data[0..8]
@@ -1693,7 +1825,7 @@ fn process_clear_custom_fee_percentage(
1693
1825
 
1694
1826
  // Verify fee discount account PDA
1695
1827
  let (discount_pda, _) =
1696
- Pubkey::find_program_address(&[b"discount", account.as_ref()], program_id);
1828
+ Pubkey::find_program_address(&[b"discount", &[PDA_VERSION], account.as_ref()], program_id);
1697
1829
 
1698
1830
  if fee_discount_account.key != &discount_pda {
1699
1831
  return Err(MailerError::InvalidPDA.into());
@@ -1776,7 +1908,7 @@ fn record_shares(
1776
1908
  // Update owner's claimable amount
1777
1909
  let mut mailer_data = mailer_account.try_borrow_mut_data()?;
1778
1910
  let mut mailer_state: MailerState = BorshDeserialize::deserialize(&mut &mailer_data[8..])?;
1779
- mailer_state.owner_claimable += owner_amount;
1911
+ mailer_state.increase_owner_claimable(owner_amount)?;
1780
1912
  mailer_state.serialize(&mut &mut mailer_data[8..])?;
1781
1913
 
1782
1914
  msg!(
@@ -1797,7 +1929,7 @@ fn calculate_fee_with_discount(
1797
1929
  ) -> Result<u64, ProgramError> {
1798
1930
  // Try to find fee discount account
1799
1931
  let (discount_pda, _) =
1800
- Pubkey::find_program_address(&[b"discount", account.as_ref()], program_id);
1932
+ Pubkey::find_program_address(&[b"discount", &[PDA_VERSION], account.as_ref()], program_id);
1801
1933
 
1802
1934
  // Check if any account in the accounts slice matches the discount PDA
1803
1935
  let discount_account = accounts.iter().find(|acc| acc.key == &discount_pda);
@@ -1875,6 +2007,10 @@ fn process_pause(_program_id: &Pubkey, accounts: &[AccountInfo]) -> ProgramResul
1875
2007
  assert_token_account(owner_usdc, owner.key, &mailer_state.usdc_mint)?;
1876
2008
  assert_token_account(mailer_usdc, &mailer_pda, &mailer_state.usdc_mint)?;
1877
2009
 
2010
+ // Save updated state BEFORE external call (CEI pattern)
2011
+ mailer_state.serialize(&mut &mut mailer_data[8..])?;
2012
+ drop(mailer_data); // Release borrow before external call
2013
+
1878
2014
  // Transfer USDC from mailer to owner
1879
2015
  invoke_signed(
1880
2016
  &spl_token::instruction::transfer(
@@ -1895,11 +2031,11 @@ fn process_pause(_program_id: &Pubkey, accounts: &[AccountInfo]) -> ProgramResul
1895
2031
  )?;
1896
2032
 
1897
2033
  msg!("Distributed owner funds during pause: {}", amount);
2034
+ } else {
2035
+ // Save updated state even if no distribution
2036
+ mailer_state.serialize(&mut &mut mailer_data[8..])?;
1898
2037
  }
1899
2038
 
1900
- // Save updated state
1901
- mailer_state.serialize(&mut &mut mailer_data[8..])?;
1902
-
1903
2039
  msg!("Contract paused by owner: {}", owner.key);
1904
2040
  Ok(())
1905
2041
  }
@@ -1965,7 +2101,7 @@ fn process_distribute_claimable_funds(
1965
2101
  }
1966
2102
 
1967
2103
  // Verify recipient claim PDA
1968
- let (claim_pda, _) = Pubkey::find_program_address(&[b"claim", recipient.as_ref()], _program_id);
2104
+ let (claim_pda, _) = Pubkey::find_program_address(&[b"claim", &[PDA_VERSION], recipient.as_ref()], _program_id);
1969
2105
  if recipient_claim_account.key != &claim_pda {
1970
2106
  return Err(MailerError::InvalidPDA.into());
1971
2107
  }
@@ -1987,6 +2123,10 @@ fn process_distribute_claimable_funds(
1987
2123
  assert_token_account(recipient_usdc, &recipient, &mailer_state.usdc_mint)?;
1988
2124
  assert_token_account(mailer_usdc, &mailer_pda, &mailer_state.usdc_mint)?;
1989
2125
 
2126
+ // Save updated state BEFORE external call (CEI pattern)
2127
+ claim_state.serialize(&mut &mut claim_data[8..])?;
2128
+ drop(claim_data); // Release borrow before external call
2129
+
1990
2130
  // Transfer USDC from mailer to recipient
1991
2131
  invoke_signed(
1992
2132
  &spl_token::instruction::transfer(
@@ -2006,8 +2146,6 @@ fn process_distribute_claimable_funds(
2006
2146
  &[&[b"mailer", &[mailer_state.bump]]],
2007
2147
  )?;
2008
2148
 
2009
- claim_state.serialize(&mut &mut claim_data[8..])?;
2010
-
2011
2149
  msg!("Distributed claimable funds to {}: {}", recipient, amount);
2012
2150
  Ok(())
2013
2151
  }
@@ -2038,7 +2176,7 @@ fn process_claim_expired_shares(
2038
2176
  }
2039
2177
 
2040
2178
  // Verify recipient claim PDA
2041
- let (claim_pda, _) = Pubkey::find_program_address(&[b"claim", recipient.as_ref()], program_id);
2179
+ let (claim_pda, _) = Pubkey::find_program_address(&[b"claim", &[PDA_VERSION], recipient.as_ref()], program_id);
2042
2180
  if recipient_claim_account.key != &claim_pda {
2043
2181
  return Err(MailerError::InvalidPDA.into());
2044
2182
  }
@@ -2065,7 +2203,7 @@ fn process_claim_expired_shares(
2065
2203
  claim_state.serialize(&mut &mut claim_data[8..])?;
2066
2204
  drop(claim_data);
2067
2205
 
2068
- mailer_state.owner_claimable += amount;
2206
+ mailer_state.increase_owner_claimable(amount)?;
2069
2207
  mailer_state.serialize(&mut &mut mailer_data[8..])?;
2070
2208
 
2071
2209
  msg!("Expired shares claimed for {}: {}", recipient, amount);