@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.
- package/README.md +16 -2
- package/artifacts/contracts/Mailer.sol/Mailer.d.ts +242 -16
- package/artifacts/contracts/Mailer.sol/Mailer.dbg.json +1 -1
- package/artifacts/contracts/Mailer.sol/Mailer.json +237 -11
- package/artifacts/contracts/MockUSDC.sol/MockUSDC.d.ts +2 -2
- package/artifacts/contracts/MockUSDC.sol/MockUSDC.dbg.json +1 -1
- package/artifacts/contracts/MockUSDC.sol/MockUSDC.json +2 -2
- package/artifacts/contracts/examples/MailerIntegrationExample.sol/MailerIntegrationExample.d.ts +299 -0
- package/artifacts/contracts/examples/MailerIntegrationExample.sol/MailerIntegrationExample.dbg.json +4 -0
- package/artifacts/contracts/examples/MailerIntegrationExample.sol/MailerIntegrationExample.json +249 -0
- package/artifacts/contracts/examples/MailerIntegrationExample.sol/artifacts.d.ts +21 -0
- package/artifacts/contracts/interfaces/IERC20.sol/IERC20.dbg.json +1 -1
- package/artifacts/contracts/interfaces/IMailer.sol/IMailer.d.ts +216 -0
- package/artifacts/contracts/interfaces/IMailer.sol/IMailer.dbg.json +4 -0
- package/artifacts/contracts/interfaces/IMailer.sol/IMailer.json +166 -0
- package/artifacts/contracts/interfaces/IMailer.sol/artifacts.d.ts +21 -0
- package/contracts/Mailer.sol +922 -0
- package/contracts/MockUSDC.sol +106 -0
- package/contracts/examples/MailerIntegrationExample.sol +189 -0
- package/contracts/interfaces/IERC20.sol +33 -0
- package/contracts/interfaces/IMailer.sol +86 -0
- package/dist/evm/src/evm/evm-mailer-client.d.ts +184 -8
- package/dist/evm/src/evm/evm-mailer-client.d.ts.map +1 -1
- package/dist/evm/src/evm/evm-mailer-client.js +3 -2
- package/dist/evm/src/evm/evm-mailer-client.js.map +1 -1
- package/dist/evm/src/evm/index.d.ts +2 -2
- package/dist/evm/src/evm/index.d.ts.map +1 -1
- package/dist/evm/src/evm/index.js +1 -1
- package/dist/evm/src/evm/index.js.map +1 -1
- package/dist/evm/typechain-types/@openzeppelin/contracts/index.d.ts +7 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/index.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/index.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/IERC1967.d.ts +66 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/IERC1967.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/IERC1967.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/IERC1967.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.d.ts +26 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.d.ts +2 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/index.d.ts +4 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/index.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/interfaces/index.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.d.ts +21 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/ERC1967/index.d.ts +2 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/ERC1967/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/ERC1967/index.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/ERC1967/index.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/beacon/IBeacon.d.ts +26 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/beacon/IBeacon.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/beacon/IBeacon.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/beacon/IBeacon.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/beacon/index.d.ts +2 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/beacon/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/beacon/index.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/beacon/index.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/index.d.ts +5 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/index.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/proxy/index.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/utils/Address.d.ts +21 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/utils/Address.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/utils/Address.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/utils/Address.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/utils/Errors.d.ts +21 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/utils/Errors.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/utils/Errors.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/utils/Errors.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/utils/index.d.ts +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/utils/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/utils/index.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts/utils/index.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.d.ts +69 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/access/index.d.ts +2 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/access/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/access/index.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/index.d.ts +7 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/index.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/index.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.d.ts +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.d.ts +37 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.d.ts +74 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.d.ts +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.d.ts +37 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.d.ts +2 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.js.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/index.d.ts +5 -0
- package/dist/evm/typechain-types/@openzeppelin/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/@openzeppelin/index.js +3 -0
- package/dist/evm/typechain-types/@openzeppelin/index.js.map +1 -0
- package/dist/evm/typechain-types/{Mailer.d.ts → contracts/Mailer.d.ts} +135 -21
- package/dist/evm/typechain-types/contracts/Mailer.d.ts.map +1 -0
- package/dist/evm/typechain-types/contracts/Mailer.js.map +1 -0
- package/dist/evm/typechain-types/{MockUSDC.d.ts → contracts/MockUSDC.d.ts} +1 -1
- package/dist/evm/typechain-types/contracts/MockUSDC.d.ts.map +1 -0
- package/dist/evm/typechain-types/contracts/MockUSDC.js.map +1 -0
- package/dist/evm/typechain-types/contracts/examples/MailerIntegrationExample.d.ts +170 -0
- package/dist/evm/typechain-types/contracts/examples/MailerIntegrationExample.d.ts.map +1 -0
- package/dist/evm/typechain-types/contracts/examples/MailerIntegrationExample.js +3 -0
- package/dist/evm/typechain-types/contracts/examples/MailerIntegrationExample.js.map +1 -0
- package/dist/evm/typechain-types/contracts/examples/index.d.ts +2 -0
- package/dist/evm/typechain-types/contracts/examples/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/contracts/examples/index.js +3 -0
- package/dist/evm/typechain-types/contracts/examples/index.js.map +1 -0
- package/dist/evm/typechain-types/contracts/index.d.ts +7 -0
- package/dist/evm/typechain-types/contracts/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/contracts/index.js +3 -0
- package/dist/evm/typechain-types/contracts/index.js.map +1 -0
- package/dist/{unified/typechain-types → evm/typechain-types/contracts}/interfaces/IERC20.d.ts +1 -1
- package/dist/evm/typechain-types/contracts/interfaces/IERC20.d.ts.map +1 -0
- package/dist/evm/typechain-types/contracts/interfaces/IERC20.js.map +1 -0
- package/dist/evm/typechain-types/contracts/interfaces/IMailer.d.ts +118 -0
- package/dist/evm/typechain-types/contracts/interfaces/IMailer.d.ts.map +1 -0
- package/dist/evm/typechain-types/contracts/interfaces/IMailer.js +3 -0
- package/dist/evm/typechain-types/contracts/interfaces/IMailer.js.map +1 -0
- package/dist/evm/typechain-types/contracts/interfaces/index.d.ts +3 -0
- package/dist/evm/typechain-types/contracts/interfaces/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/contracts/interfaces/index.js +3 -0
- package/dist/evm/typechain-types/contracts/interfaces/index.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/index.d.ts +4 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/index.js +43 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/index.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.d.ts +43 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.js +65 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.d.ts +18 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.js +33 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.d.ts +2 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.js +9 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/index.d.ts +3 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/index.js +43 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/interfaces/index.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.d.ts +51 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.js +78 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/index.d.ts +2 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/index.js +9 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/index.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.d.ts +18 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.js +33 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/index.d.ts +2 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/index.js +9 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/index.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/index.d.ts +3 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/index.js +42 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/proxy/index.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.d.ts +31 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.js +51 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/Errors__factory.d.ts +51 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/Errors__factory.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/Errors__factory.js +77 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/Errors__factory.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/index.d.ts +3 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/index.js +11 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts/utils/index.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.d.ts +83 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.js +117 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.d.ts +2 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.js +9 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.d.ts +4 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.js +43 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.d.ts +2 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.js +41 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.d.ts +26 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.js +43 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.d.ts +106 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.js +148 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.d.ts +3 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.js +11 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.d.ts +26 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.js +43 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.d.ts +2 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.js +9 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.js.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/index.d.ts +3 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/index.js +42 -0
- package/dist/evm/typechain-types/factories/@openzeppelin/index.js.map +1 -0
- package/dist/evm/typechain-types/factories/contracts/Mailer__factory.d.ts +1061 -0
- package/dist/evm/typechain-types/factories/contracts/Mailer__factory.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/contracts/Mailer__factory.js +1364 -0
- package/dist/evm/typechain-types/factories/contracts/Mailer__factory.js.map +1 -0
- package/dist/evm/typechain-types/factories/{MockUSDC__factory.d.ts → contracts/MockUSDC__factory.d.ts} +3 -3
- package/dist/evm/typechain-types/factories/contracts/MockUSDC__factory.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/{MockUSDC__factory.js → contracts/MockUSDC__factory.js} +1 -1
- package/dist/evm/typechain-types/factories/contracts/MockUSDC__factory.js.map +1 -0
- package/dist/evm/typechain-types/factories/contracts/examples/MailerIntegrationExample__factory.d.ts +209 -0
- package/dist/evm/typechain-types/factories/contracts/examples/MailerIntegrationExample__factory.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/contracts/examples/MailerIntegrationExample__factory.js +278 -0
- package/dist/evm/typechain-types/factories/contracts/examples/MailerIntegrationExample__factory.js.map +1 -0
- package/dist/evm/typechain-types/factories/contracts/examples/index.d.ts +2 -0
- package/dist/evm/typechain-types/factories/contracts/examples/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/contracts/examples/index.js +9 -0
- package/dist/evm/typechain-types/factories/contracts/examples/index.js.map +1 -0
- package/dist/evm/typechain-types/factories/contracts/index.d.ts +5 -0
- package/dist/evm/typechain-types/factories/contracts/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/contracts/index.js +46 -0
- package/dist/evm/typechain-types/factories/contracts/index.js.map +1 -0
- package/dist/evm/typechain-types/factories/{interfaces → contracts/interfaces}/IERC20__factory.d.ts +1 -1
- package/dist/evm/typechain-types/factories/contracts/interfaces/IERC20__factory.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/contracts/interfaces/IERC20__factory.js.map +1 -0
- package/dist/evm/typechain-types/factories/contracts/interfaces/IMailer__factory.d.ts +130 -0
- package/dist/evm/typechain-types/factories/contracts/interfaces/IMailer__factory.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/contracts/interfaces/IMailer__factory.js +175 -0
- package/dist/evm/typechain-types/factories/contracts/interfaces/IMailer__factory.js.map +1 -0
- package/dist/evm/typechain-types/factories/contracts/interfaces/index.d.ts +3 -0
- package/dist/evm/typechain-types/factories/contracts/interfaces/index.d.ts.map +1 -0
- package/dist/evm/typechain-types/factories/{interfaces → contracts/interfaces}/index.js +3 -1
- package/dist/evm/typechain-types/factories/contracts/interfaces/index.js.map +1 -0
- package/dist/evm/typechain-types/factories/index.d.ts +2 -3
- package/dist/evm/typechain-types/factories/index.d.ts.map +1 -1
- package/dist/evm/typechain-types/factories/index.js +3 -6
- package/dist/evm/typechain-types/factories/index.js.map +1 -1
- package/dist/evm/typechain-types/index.d.ts +34 -8
- package/dist/evm/typechain-types/index.d.ts.map +1 -1
- package/dist/evm/typechain-types/index.js +28 -4
- package/dist/evm/typechain-types/index.js.map +1 -1
- package/dist/unified/src/evm/evm-mailer-client.d.ts +184 -8
- package/dist/unified/src/evm/evm-mailer-client.d.ts.map +1 -1
- package/dist/unified/src/evm/evm-mailer-client.js +3 -2
- package/dist/unified/src/evm/evm-mailer-client.js.map +1 -1
- package/dist/unified/src/evm/index.d.ts +2 -2
- package/dist/unified/src/evm/index.d.ts.map +1 -1
- package/dist/unified/src/evm/index.js +1 -1
- package/dist/unified/src/evm/index.js.map +1 -1
- package/dist/unified/typechain-types/@openzeppelin/contracts/index.d.ts +7 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/index.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/index.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/IERC1967.d.ts +66 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/IERC1967.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/IERC1967.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/IERC1967.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.d.ts +26 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.d.ts +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/index.d.ts +4 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/index.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/interfaces/index.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.d.ts +21 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/ERC1967/index.d.ts +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/ERC1967/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/ERC1967/index.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/ERC1967/index.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/beacon/IBeacon.d.ts +26 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/beacon/IBeacon.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/beacon/IBeacon.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/beacon/IBeacon.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/beacon/index.d.ts +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/beacon/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/beacon/index.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/beacon/index.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/index.d.ts +5 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/index.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/proxy/index.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/utils/Address.d.ts +21 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/utils/Address.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/utils/Address.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/utils/Address.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/utils/Errors.d.ts +21 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/utils/Errors.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/utils/Errors.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/utils/Errors.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/utils/index.d.ts +3 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/utils/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/utils/index.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts/utils/index.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.d.ts +69 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/access/index.d.ts +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/access/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/access/index.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/index.d.ts +7 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/index.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/index.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.d.ts +3 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.d.ts +37 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.d.ts +74 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.d.ts +3 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.d.ts +37 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.d.ts +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.js.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/index.d.ts +5 -0
- package/dist/unified/typechain-types/@openzeppelin/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/@openzeppelin/index.js +2 -0
- package/dist/unified/typechain-types/@openzeppelin/index.js.map +1 -0
- package/dist/unified/typechain-types/{Mailer.d.ts → contracts/Mailer.d.ts} +135 -21
- package/dist/unified/typechain-types/contracts/Mailer.d.ts.map +1 -0
- package/dist/unified/typechain-types/contracts/Mailer.js.map +1 -0
- package/dist/unified/typechain-types/{MockUSDC.d.ts → contracts/MockUSDC.d.ts} +1 -1
- package/dist/unified/typechain-types/contracts/MockUSDC.d.ts.map +1 -0
- package/dist/unified/typechain-types/contracts/MockUSDC.js.map +1 -0
- package/dist/unified/typechain-types/contracts/examples/MailerIntegrationExample.d.ts +170 -0
- package/dist/unified/typechain-types/contracts/examples/MailerIntegrationExample.d.ts.map +1 -0
- package/dist/unified/typechain-types/contracts/examples/MailerIntegrationExample.js +2 -0
- package/dist/unified/typechain-types/contracts/examples/MailerIntegrationExample.js.map +1 -0
- package/dist/unified/typechain-types/contracts/examples/index.d.ts +2 -0
- package/dist/unified/typechain-types/contracts/examples/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/contracts/examples/index.js +2 -0
- package/dist/unified/typechain-types/contracts/examples/index.js.map +1 -0
- package/dist/unified/typechain-types/contracts/index.d.ts +7 -0
- package/dist/unified/typechain-types/contracts/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/contracts/index.js +2 -0
- package/dist/unified/typechain-types/contracts/index.js.map +1 -0
- package/dist/{evm/typechain-types → unified/typechain-types/contracts}/interfaces/IERC20.d.ts +1 -1
- package/dist/unified/typechain-types/contracts/interfaces/IERC20.d.ts.map +1 -0
- package/dist/unified/typechain-types/contracts/interfaces/IERC20.js.map +1 -0
- package/dist/unified/typechain-types/contracts/interfaces/IMailer.d.ts +118 -0
- package/dist/unified/typechain-types/contracts/interfaces/IMailer.d.ts.map +1 -0
- package/dist/unified/typechain-types/contracts/interfaces/IMailer.js +2 -0
- package/dist/unified/typechain-types/contracts/interfaces/IMailer.js.map +1 -0
- package/dist/unified/typechain-types/contracts/interfaces/index.d.ts +3 -0
- package/dist/unified/typechain-types/contracts/interfaces/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/contracts/interfaces/index.js +2 -0
- package/dist/unified/typechain-types/contracts/interfaces/index.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/index.d.ts +4 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/index.js +7 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/index.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.d.ts +43 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.js +61 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.d.ts +18 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.js +29 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.d.ts +2 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.js +5 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/index.d.ts +3 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/index.js +6 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/interfaces/index.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.d.ts +51 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.js +74 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/index.d.ts +2 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/index.js +5 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/index.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.d.ts +18 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.js +29 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/index.d.ts +2 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/index.js +5 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/index.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/index.d.ts +3 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/index.js +6 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/proxy/index.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.d.ts +31 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.js +47 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/Errors__factory.d.ts +51 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/Errors__factory.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/Errors__factory.js +73 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/Errors__factory.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/index.d.ts +3 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/index.js +6 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts/utils/index.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.d.ts +83 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.js +113 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.d.ts +2 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.js +5 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.d.ts +4 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.js +7 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.d.ts +2 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.js +5 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.d.ts +26 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.js +39 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.d.ts +106 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.js +144 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.d.ts +3 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.js +6 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.d.ts +26 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.js +39 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.d.ts +2 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.js +5 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.js.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/index.d.ts +3 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/index.js +6 -0
- package/dist/unified/typechain-types/factories/@openzeppelin/index.js.map +1 -0
- package/dist/unified/typechain-types/factories/contracts/Mailer__factory.d.ts +1061 -0
- package/dist/unified/typechain-types/factories/contracts/Mailer__factory.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/contracts/Mailer__factory.js +1360 -0
- package/dist/unified/typechain-types/factories/contracts/Mailer__factory.js.map +1 -0
- package/dist/unified/typechain-types/factories/{MockUSDC__factory.d.ts → contracts/MockUSDC__factory.d.ts} +3 -3
- package/dist/unified/typechain-types/factories/contracts/MockUSDC__factory.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/{MockUSDC__factory.js → contracts/MockUSDC__factory.js} +1 -1
- package/dist/unified/typechain-types/factories/contracts/MockUSDC__factory.js.map +1 -0
- package/dist/unified/typechain-types/factories/contracts/examples/MailerIntegrationExample__factory.d.ts +209 -0
- package/dist/unified/typechain-types/factories/contracts/examples/MailerIntegrationExample__factory.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/contracts/examples/MailerIntegrationExample__factory.js +274 -0
- package/dist/unified/typechain-types/factories/contracts/examples/MailerIntegrationExample__factory.js.map +1 -0
- package/dist/unified/typechain-types/factories/contracts/examples/index.d.ts +2 -0
- package/dist/unified/typechain-types/factories/contracts/examples/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/contracts/examples/index.js +5 -0
- package/dist/unified/typechain-types/factories/contracts/examples/index.js.map +1 -0
- package/dist/unified/typechain-types/factories/contracts/index.d.ts +5 -0
- package/dist/unified/typechain-types/factories/contracts/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/contracts/index.js +8 -0
- package/dist/unified/typechain-types/factories/contracts/index.js.map +1 -0
- package/dist/unified/typechain-types/factories/{interfaces → contracts/interfaces}/IERC20__factory.d.ts +1 -1
- package/dist/unified/typechain-types/factories/contracts/interfaces/IERC20__factory.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/contracts/interfaces/IERC20__factory.js.map +1 -0
- package/dist/unified/typechain-types/factories/contracts/interfaces/IMailer__factory.d.ts +130 -0
- package/dist/unified/typechain-types/factories/contracts/interfaces/IMailer__factory.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/contracts/interfaces/IMailer__factory.js +171 -0
- package/dist/unified/typechain-types/factories/contracts/interfaces/IMailer__factory.js.map +1 -0
- package/dist/unified/typechain-types/factories/contracts/interfaces/index.d.ts +3 -0
- package/dist/unified/typechain-types/factories/contracts/interfaces/index.d.ts.map +1 -0
- package/dist/unified/typechain-types/factories/{interfaces → contracts/interfaces}/index.js +1 -0
- package/dist/unified/typechain-types/factories/contracts/interfaces/index.js.map +1 -0
- package/dist/unified/typechain-types/factories/index.d.ts +2 -3
- package/dist/unified/typechain-types/factories/index.d.ts.map +1 -1
- package/dist/unified/typechain-types/factories/index.js +2 -3
- package/dist/unified/typechain-types/factories/index.js.map +1 -1
- package/dist/unified/typechain-types/index.d.ts +34 -8
- package/dist/unified/typechain-types/index.d.ts.map +1 -1
- package/dist/unified/typechain-types/index.js +15 -3
- package/dist/unified/typechain-types/index.js.map +1 -1
- package/package.json +9 -3
- package/programs/mailer/Cargo.toml +13 -0
- package/programs/mailer/src/cpi.rs +330 -0
- package/programs/mailer/src/lib.rs +252 -114
- package/programs/mailer/tests/integration_tests.rs +8399 -146
- package/programs/mailer/tests/integration_tests.rs.backup +5124 -0
- package/programs/mailer-integration-example/Cargo.toml +23 -0
- package/programs/mailer-integration-example/src/lib.rs +362 -0
- package/typechain-types/@openzeppelin/contracts/index.ts +9 -0
- package/typechain-types/@openzeppelin/contracts/interfaces/IERC1967.ts +168 -0
- package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.ts +90 -0
- package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.ts +4 -0
- package/typechain-types/@openzeppelin/contracts/interfaces/index.ts +6 -0
- package/typechain-types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.ts +69 -0
- package/typechain-types/@openzeppelin/contracts/proxy/ERC1967/index.ts +4 -0
- package/typechain-types/@openzeppelin/contracts/proxy/beacon/IBeacon.ts +90 -0
- package/typechain-types/@openzeppelin/contracts/proxy/beacon/index.ts +4 -0
- package/typechain-types/@openzeppelin/contracts/proxy/index.ts +7 -0
- package/typechain-types/@openzeppelin/contracts/utils/Address.ts +69 -0
- package/typechain-types/@openzeppelin/contracts/utils/Errors.ts +69 -0
- package/typechain-types/@openzeppelin/contracts/utils/index.ts +5 -0
- package/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.ts +186 -0
- package/typechain-types/@openzeppelin/contracts-upgradeable/access/index.ts +4 -0
- package/typechain-types/@openzeppelin/contracts-upgradeable/index.ts +9 -0
- package/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.ts +5 -0
- package/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.ts +105 -0
- package/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.ts +196 -0
- package/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts +5 -0
- package/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.ts +105 -0
- package/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.ts +4 -0
- package/typechain-types/@openzeppelin/index.ts +7 -0
- package/typechain-types/{Mailer.ts → contracts/Mailer.ts} +237 -19
- package/typechain-types/{MockUSDC.ts → contracts/MockUSDC.ts} +1 -1
- package/typechain-types/contracts/examples/MailerIntegrationExample.ts +352 -0
- package/typechain-types/contracts/examples/index.ts +4 -0
- package/typechain-types/contracts/index.ts +9 -0
- package/typechain-types/{interfaces → contracts/interfaces}/IERC20.ts +1 -1
- package/typechain-types/contracts/interfaces/IMailer.ts +225 -0
- package/typechain-types/{interfaces → contracts/interfaces}/index.ts +1 -0
- package/typechain-types/factories/@openzeppelin/contracts/index.ts +6 -0
- package/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.ts +67 -0
- package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.ts +38 -0
- package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/index.ts +4 -0
- package/typechain-types/factories/@openzeppelin/contracts/interfaces/index.ts +5 -0
- package/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.ts +105 -0
- package/typechain-types/factories/@openzeppelin/contracts/proxy/ERC1967/index.ts +4 -0
- package/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.ts +35 -0
- package/typechain-types/factories/@openzeppelin/contracts/proxy/beacon/index.ts +4 -0
- package/typechain-types/factories/@openzeppelin/contracts/proxy/index.ts +5 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.ts +75 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/Errors__factory.ts +101 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/index.ts +5 -0
- package/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.ts +122 -0
- package/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.ts +4 -0
- package/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.ts +6 -0
- package/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.ts +4 -0
- package/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.ts +48 -0
- package/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.ts +153 -0
- package/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts +5 -0
- package/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.ts +48 -0
- package/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.ts +4 -0
- package/typechain-types/factories/@openzeppelin/index.ts +5 -0
- package/typechain-types/factories/contracts/Mailer__factory.ts +1385 -0
- package/typechain-types/factories/{MockUSDC__factory.ts → contracts/MockUSDC__factory.ts} +3 -3
- package/typechain-types/factories/contracts/examples/MailerIntegrationExample__factory.ts +330 -0
- package/typechain-types/factories/contracts/examples/index.ts +4 -0
- package/typechain-types/factories/contracts/index.ts +7 -0
- package/typechain-types/factories/{interfaces → contracts/interfaces}/IERC20__factory.ts +4 -1
- package/typechain-types/factories/contracts/interfaces/IMailer__factory.ts +177 -0
- package/typechain-types/factories/{interfaces → contracts/interfaces}/index.ts +1 -0
- package/typechain-types/factories/index.ts +2 -3
- package/typechain-types/hardhat.d.ts +216 -0
- package/typechain-types/index.ts +34 -8
- package/dist/evm/typechain-types/Mailer.d.ts.map +0 -1
- package/dist/evm/typechain-types/Mailer.js.map +0 -1
- package/dist/evm/typechain-types/MockUSDC.d.ts.map +0 -1
- package/dist/evm/typechain-types/MockUSDC.js.map +0 -1
- package/dist/evm/typechain-types/factories/Mailer__factory.d.ts +0 -885
- package/dist/evm/typechain-types/factories/Mailer__factory.d.ts.map +0 -1
- package/dist/evm/typechain-types/factories/Mailer__factory.js +0 -1138
- package/dist/evm/typechain-types/factories/Mailer__factory.js.map +0 -1
- package/dist/evm/typechain-types/factories/MockUSDC__factory.d.ts.map +0 -1
- package/dist/evm/typechain-types/factories/MockUSDC__factory.js.map +0 -1
- package/dist/evm/typechain-types/factories/interfaces/IERC20__factory.d.ts.map +0 -1
- package/dist/evm/typechain-types/factories/interfaces/IERC20__factory.js.map +0 -1
- package/dist/evm/typechain-types/factories/interfaces/index.d.ts +0 -2
- package/dist/evm/typechain-types/factories/interfaces/index.d.ts.map +0 -1
- package/dist/evm/typechain-types/factories/interfaces/index.js.map +0 -1
- package/dist/evm/typechain-types/interfaces/IERC20.d.ts.map +0 -1
- package/dist/evm/typechain-types/interfaces/IERC20.js.map +0 -1
- package/dist/evm/typechain-types/interfaces/index.d.ts +0 -2
- package/dist/evm/typechain-types/interfaces/index.d.ts.map +0 -1
- package/dist/evm/typechain-types/interfaces/index.js.map +0 -1
- package/dist/unified/typechain-types/Mailer.d.ts.map +0 -1
- package/dist/unified/typechain-types/Mailer.js.map +0 -1
- package/dist/unified/typechain-types/MockUSDC.d.ts.map +0 -1
- package/dist/unified/typechain-types/MockUSDC.js.map +0 -1
- package/dist/unified/typechain-types/factories/Mailer__factory.d.ts +0 -885
- package/dist/unified/typechain-types/factories/Mailer__factory.d.ts.map +0 -1
- package/dist/unified/typechain-types/factories/Mailer__factory.js +0 -1134
- package/dist/unified/typechain-types/factories/Mailer__factory.js.map +0 -1
- package/dist/unified/typechain-types/factories/MockUSDC__factory.d.ts.map +0 -1
- package/dist/unified/typechain-types/factories/MockUSDC__factory.js.map +0 -1
- package/dist/unified/typechain-types/factories/interfaces/IERC20__factory.d.ts.map +0 -1
- package/dist/unified/typechain-types/factories/interfaces/IERC20__factory.js.map +0 -1
- package/dist/unified/typechain-types/factories/interfaces/index.d.ts +0 -2
- package/dist/unified/typechain-types/factories/interfaces/index.d.ts.map +0 -1
- package/dist/unified/typechain-types/factories/interfaces/index.js.map +0 -1
- package/dist/unified/typechain-types/interfaces/IERC20.d.ts.map +0 -1
- package/dist/unified/typechain-types/interfaces/IERC20.js.map +0 -1
- package/dist/unified/typechain-types/interfaces/index.d.ts +0 -2
- package/dist/unified/typechain-types/interfaces/index.d.ts.map +0 -1
- package/dist/unified/typechain-types/interfaces/index.js.map +0 -1
- package/typechain-types/factories/Mailer__factory.ts +0 -1170
- /package/dist/evm/typechain-types/{interfaces → @openzeppelin/contracts-upgradeable/access}/index.js +0 -0
- /package/dist/evm/typechain-types/{Mailer.js → contracts/Mailer.js} +0 -0
- /package/dist/evm/typechain-types/{MockUSDC.js → contracts/MockUSDC.js} +0 -0
- /package/dist/evm/typechain-types/{interfaces → contracts/interfaces}/IERC20.js +0 -0
- /package/dist/evm/typechain-types/factories/{interfaces → contracts/interfaces}/IERC20__factory.js +0 -0
- /package/dist/unified/typechain-types/{interfaces → @openzeppelin/contracts-upgradeable/access}/index.js +0 -0
- /package/dist/unified/typechain-types/{Mailer.js → contracts/Mailer.js} +0 -0
- /package/dist/unified/typechain-types/{MockUSDC.js → contracts/MockUSDC.js} +0 -0
- /package/dist/unified/typechain-types/{interfaces → contracts/interfaces}/IERC20.js +0 -0
- /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
|
-
//
|
|
687
|
+
// Check if transfer succeeded
|
|
630
688
|
if transfer_result.is_err() {
|
|
631
|
-
|
|
632
|
-
}
|
|
633
|
-
|
|
634
|
-
|
|
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
|
-
|
|
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
|
-
//
|
|
666
|
-
|
|
667
|
-
|
|
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
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
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
|
-
|
|
804
|
-
}
|
|
805
|
-
|
|
806
|
-
|
|
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
|
-
|
|
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
|
|
837
|
-
|
|
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
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
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
|
|
926
|
-
|
|
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
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
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
|
|
1012
|
-
|
|
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
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
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
|
-
|
|
1147
|
-
}
|
|
1148
|
-
|
|
1149
|
-
|
|
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
|
-
|
|
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
|
|
1180
|
-
|
|
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
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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);
|