upsideos_evm_rwa_artifacts 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +95 -0
  3. data/data/recallable-payment/abi/AccessControl.json +1 -0
  4. data/data/recallable-payment/abi/RecallablePayment.json +1 -0
  5. data/data/recallable-payment/manifest.json +1 -0
  6. data/data/recallable-payment/verification-source-codes.json +1 -0
  7. data/data/v5/abi/AccessControl.json +1 -0
  8. data/data/v5/abi/ERC2771CustomForwarder.json +1 -0
  9. data/data/v5/abi/IdentityRegistry.json +1 -0
  10. data/data/v5/abi/InterestPayment.json +1 -0
  11. data/data/v5/abi/PurchaseContract.json +1 -0
  12. data/data/v5/abi/RestrictedLockupToken.json +1 -0
  13. data/data/v5/abi/RestrictedLockupTokenExtension.json +1 -0
  14. data/data/v5/abi/RestrictedLockupTokenManagementExtension.json +1 -0
  15. data/data/v5/abi/RestrictedSwap.json +1 -0
  16. data/data/v5/abi/SnapshotPeriods.json +1 -0
  17. data/data/v5/abi/TransferRules.json +1 -0
  18. data/data/v5/abi/merged/RestrictedLockupToken.json +1 -0
  19. data/data/v5/manifest.json +1 -0
  20. data/data/v5/verification-source-codes.json +1 -0
  21. data/data/v5.1/abi/AccessControl.json +1 -0
  22. data/data/v5.1/abi/ERC2771CustomForwarder.json +1 -0
  23. data/data/v5.1/abi/IdentityRegistry.json +1 -0
  24. data/data/v5.1/abi/InterestPayment.json +1 -0
  25. data/data/v5.1/abi/PurchaseContract.json +1 -0
  26. data/data/v5.1/abi/RestrictedLockupToken.json +1 -0
  27. data/data/v5.1/abi/RestrictedLockupTokenExtension.json +1 -0
  28. data/data/v5.1/abi/RestrictedLockupTokenManagementExtension.json +1 -0
  29. data/data/v5.1/abi/RestrictedLockupTokenStandardsExtension.json +1 -0
  30. data/data/v5.1/abi/RestrictedSwap.json +1 -0
  31. data/data/v5.1/abi/SnapshotPeriods.json +1 -0
  32. data/data/v5.1/abi/TransferRules.json +1 -0
  33. data/data/v5.1/abi/merged/RestrictedLockupToken.json +1 -0
  34. data/data/v5.1/manifest.json +1 -0
  35. data/data/v5.1/verification-source-codes.json +1 -0
  36. data/lib/upsideos_evm_rwa_artifacts/version.rb +5 -0
  37. data/lib/upsideos_evm_rwa_artifacts.rb +118 -0
  38. metadata +81 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: b9fcc814cd0cf323b9d3838ed80a2f1f419385d2a1c84f312c340e6ab5232de2
4
+ data.tar.gz: a5732c99e9e4960a63f6c866a27e53f926415abda950995e217f4d507dd098a5
5
+ SHA512:
6
+ metadata.gz: 7dca9cded14e1d81e1cf8f881b9c5447f5225f5ab89650d4397d3daccb1401d5bda3f5b7e89624f663ffd6849817e0843374e57897976131c4ad37c4d149b8b9
7
+ data.tar.gz: 890b1086e3444b87588fcdc5c1a3f9692d34603caeb59b61154f65271d073ce21e4e98df5f0879a71c0d1f5f5606f8b51920c6a8360e7c6d358fc6fad7b67b19
data/README.md ADDED
@@ -0,0 +1,95 @@
1
+ # upsideos_evm_rwa_artifacts
2
+
3
+ ABIs and verification sources for the audited EVM Security Token releases.
4
+
5
+ The gem carries data only. It has no dependencies, and it ships the same
6
+ files as the `@upsideos/evm-rwa-artifacts` npm package, built from the
7
+ same audited commit.
8
+
9
+ ## Install
10
+
11
+ ```ruby
12
+ gem 'upsideos_evm_rwa_artifacts'
13
+ ```
14
+
15
+ ## Releases
16
+
17
+ | Release | Contents |
18
+ | -------------------- | ------------------------------------------ |
19
+ | `v5` | Security Token v5 |
20
+ | `v5.1` | Security Token v5.1 |
21
+ | `recallable-payment` | Recallable Payment |
22
+
23
+ ## Read an ABI
24
+
25
+ ```ruby
26
+ require 'upsideos_evm_rwa_artifacts'
27
+
28
+ UpsideosEvmRwaArtifacts.abi('v5', 'TransferRules')
29
+ UpsideosEvmRwaArtifacts.abi('v5.1', 'IdentityRegistry')
30
+ ```
31
+
32
+ The token forwards unknown selectors into its extensions. Use the merged
33
+ call surface when you talk to the token address:
34
+
35
+ ```ruby
36
+ UpsideosEvmRwaArtifacts.merged_abi('v5', 'RestrictedLockupToken')
37
+ ```
38
+
39
+ ## Verify a deployment
40
+
41
+ `verification_source_codes` returns the solc standard-json bundle that an
42
+ explorer accepts. Most explorer clients want a file, so there is a path
43
+ reader too:
44
+
45
+ ```ruby
46
+ UpsideosEvmRwaArtifacts.verification_source_codes('v5')
47
+ UpsideosEvmRwaArtifacts.verification_source_codes_path('v5')
48
+ ```
49
+
50
+ ## Provenance
51
+
52
+ The manifest records the audited source commit, the compiler, and a
53
+ SHA-256 digest for every file in the release:
54
+
55
+ ```ruby
56
+ UpsideosEvmRwaArtifacts.commit('v5') # => "45b32ea..."
57
+ UpsideosEvmRwaArtifacts.compiler_version('v5') # => "0.8.28+commit.7893614a"
58
+ UpsideosEvmRwaArtifacts.manifest('v5')
59
+ ```
60
+
61
+ To confirm that a file is the one the manifest describes:
62
+
63
+ ```ruby
64
+ require 'digest'
65
+
66
+ path = UpsideosEvmRwaArtifacts.abi_path('v5', 'TransferRules')
67
+ Digest::SHA256.hexdigest(path.binread)
68
+ ```
69
+
70
+ ## What the gem leaves out
71
+
72
+ The gem ships no bytecode and no tooling, because a Ruby consumer reads
73
+ contracts and verifies them but does not compile or deploy them. Use the
74
+ npm package for deployment bytecode, and `@upsideos/evm-explorer-verify`
75
+ to submit a verification to an explorer.
76
+
77
+ ## Notes
78
+
79
+ Parsed files are cached and frozen, because a published release never
80
+ changes.
81
+
82
+ The gem is published from tag `ruby@<version>` with RubyGems trusted
83
+ publishing, so every version is traceable to the workflow run that built
84
+ it.
85
+
86
+ ## Development
87
+
88
+ `data/` is generated, not committed. Copy it out of the release
89
+ directories before you build or test:
90
+
91
+ ```bash
92
+ rake prepare
93
+ rake test
94
+ rake build
95
+ ```
@@ -0,0 +1 @@
1
+ [{"inputs":[{"internalType":"address","name":"contractAdmin_","type":"address"},{"internalType":"address","name":"reserveAdmin_","type":"address"},{"internalType":"address","name":"transferAdmin_","type":"address"},{"internalType":"address","name":"trustedForwarder_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"EasyAccessControl_AlreadyHasRole","type":"error"},{"inputs":[],"name":"EasyAccessControl_ArraysMustBeSameLength","type":"error"},{"inputs":[],"name":"EasyAccessControl_AtLeastOneContractAdminRequired","type":"error"},{"inputs":[],"name":"EasyAccessControl_CannotRevokeRole","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"EasyAccessControl_DoesNotHaveContractAdminRole","type":"error"},{"inputs":[],"name":"EasyAccessControl_InvalidRole","type":"error"},{"inputs":[],"name":"EasyAccessControl_InvalidZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"grantor","type":"address"},{"indexed":true,"internalType":"address","name":"grantee","type":"address"},{"indexed":false,"internalType":"uint8","name":"role","type":"uint8"},{"indexed":true,"internalType":"bool","name":"status","type":"bool"}],"name":"RoleChange","type":"event"},{"inputs":[],"name":"CONTRACT_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINT_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESERVE_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SOFT_BURN_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRANSFER_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WALLETS_ADMIN_ROLE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint8[]","name":"roles_","type":"uint8[]"}],"name":"batchGrantRoles","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint8[]","name":"roles_","type":"uint8[]"}],"name":"batchRevokeRoles","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractAdminCount","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"roles","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
@@ -0,0 +1 @@
1
+ [{"inputs":[{"internalType":"address","name":"accessControl_","type":"address"},{"internalType":"address","name":"trustedForwarder_","type":"address"},{"internalType":"address","name":"restrictedLockupToken_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"EasyAccessControl_DoesNotHaveContractAdminRole","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"EasyAccessControl_DoesNotHaveContractOrTransferAdminRole","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"EasyAccessControl_DoesNotHaveTransferAdminRole","type":"error"},{"inputs":[],"name":"EasyAccessControl_InvalidZeroAddress","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"RecallablePayment_AllocationUnchanged","type":"error"},{"inputs":[],"name":"RecallablePayment_DistributionClaimingOpen","type":"error"},{"inputs":[],"name":"RecallablePayment_DistributionNotStarted","type":"error"},{"inputs":[],"name":"RecallablePayment_DistributionNotUnlocked","type":"error"},{"inputs":[],"name":"RecallablePayment_DividendsAlreadyClaimed","type":"error"},{"inputs":[],"name":"RecallablePayment_EmptyRecipients","type":"error"},{"inputs":[{"internalType":"uint256","name":"requested","type":"uint256"},{"internalType":"uint256","name":"available","type":"uint256"}],"name":"RecallablePayment_InsufficientDistributionFunds","type":"error"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"RecallablePayment_InvalidAmount","type":"error"},{"inputs":[],"name":"RecallablePayment_InvalidArrayLengths","type":"error"},{"inputs":[],"name":"RecallablePayment_InvalidFeeApplied","type":"error"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"RecallablePayment_InvalidRecipientAddress","type":"error"},{"inputs":[],"name":"RecallablePayment_InvalidReclaimerAddress","type":"error"},{"inputs":[],"name":"RecallablePayment_InvalidTimestamp","type":"error"},{"inputs":[],"name":"RecallablePayment_InvalidTokenAddress","type":"error"},{"inputs":[],"name":"RecallablePayment_InvalidTrustedForwarder","type":"error"},{"inputs":[],"name":"RecallablePayment_InvalidWalletAddress","type":"error"},{"inputs":[],"name":"RecallablePayment_NoAllocationsToFund","type":"error"},{"inputs":[],"name":"RecallablePayment_NoFundsToClaim","type":"error"},{"inputs":[],"name":"RecallablePayment_NoPositionToTransfer","type":"error"},{"inputs":[],"name":"RecallablePayment_NoRemainingUnclaimedBalance","type":"error"},{"inputs":[],"name":"RecallablePayment_NotEnoughFundsToClaim","type":"error"},{"inputs":[{"internalType":"uint256","name":"totalAllocated","type":"uint256"},{"internalType":"uint256","name":"totalFunds","type":"uint256"}],"name":"RecallablePayment_NotFullyFunded","type":"error"},{"inputs":[],"name":"RecallablePayment_ReclaimerAddressUnchanged","type":"error"},{"inputs":[],"name":"RecallablePayment_SameWallet","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"scheduled","type":"uint256"}],"name":"RecallablePayment_UnlockTimeConflict","type":"error"},{"inputs":[{"internalType":"uint256","name":"requested","type":"uint256"},{"internalType":"uint256","name":"current","type":"uint256"}],"name":"RecallablePayment_UnlockTimeNotApplicableAfterStart","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"admin","type":"address"}],"name":"AllocationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalAllocated","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalFunds","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlockedAtTs","type":"uint256"}],"name":"DistributionStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlockedAtTs","type":"uint256"}],"name":"DistributionUnlockTimeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"DividendClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":true,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"DividendForceClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"},{"indexed":false,"internalType":"address","name":"newWallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"allocatedAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"claimedAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"reclaimedAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"admin","type":"address"}],"name":"DividendForceTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payer","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"DividendFunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"DividendReclaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":true,"internalType":"address","name":"previousReclaimer","type":"address"},{"indexed":true,"internalType":"address","name":"newReclaimer","type":"address"}],"name":"ReclaimerAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"accessControl","outputs":[{"internalType":"contract IAccessControl","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"recipient_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"allocatedBalanceAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256[]","name":"timestamps_","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts_","type":"uint256[]"}],"name":"batchClaimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"wallet_","type":"address"},{"internalType":"uint256[]","name":"timestamps_","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts_","type":"uint256[]"}],"name":"batchForceClaimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"recipient_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"claimedBalanceAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"},{"internalType":"address[]","name":"recipients_","type":"address[]"},{"internalType":"uint256[]","name":"amounts_","type":"uint256[]"}],"name":"createDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"wallet_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"forceClaimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"},{"internalType":"address","name":"oldWallet_","type":"address"},{"internalType":"address","name":"newWallet_","type":"address"}],"name":"forceTransferDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"uint256","name":"timestamp_","type":"uint256"},{"internalType":"uint256","name":"unlockedAtTs_","type":"uint256"}],"name":"fundDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"fundDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"fundsAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"isClaimable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"isStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"shouldPause_","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"targetAddress_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"reclaimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"reclaimSurplus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"reclaimTotalDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"recipient_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"reclaimedBalanceAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reclaimerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"restrictedLockupToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newReclaimerAddress","type":"address"}],"name":"setReclaimerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"},{"internalType":"uint256","name":"unlockedAtTs_","type":"uint256"}],"name":"setUnlockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"tokensAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"totalAllocatedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"recipient_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"totalAwardedBalanceAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"recipient_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"unclaimedBalanceAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"timestamp_","type":"uint256"}],"name":"unlockTimeAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
@@ -0,0 +1 @@
1
+ {"artifacts":[{"abi":{"entryCount":24,"path":"abi/AccessControl.json","sha256":"ed41f01d223e1ffdc835190845027b4f74f0e213aebd4f70be3a8598eaf5facb"},"creationCode":{"length":3449,"sha256":"3c8cca55c42df290f924c0ea9fff5c223d0ffc5374ee7b5eb4332ea03c29a2fc"},"fullyQualifiedName":"contracts/AccessControl.sol:AccessControl","name":"AccessControl","reproduced":false,"runtimeCode":{"immutableReferences":{},"length":3449,"sha256":"3c8cca55c42df290f924c0ea9fff5c223d0ffc5374ee7b5eb4332ea03c29a2fc"}},{"abi":{"entryCount":77,"path":"abi/RecallablePayment.json","sha256":"e997c584b83b7f9780844ca25a7dd87ed57bdec93eae0e3b38dc760c5e9157a0"},"creationCode":{"length":8753,"sha256":"c4f46354c5efd584436069867362879a5f05da0404964ad2aa81d6b953f8a681"},"fullyQualifiedName":"contracts/RecallablePayment.sol:RecallablePayment","metadataHash":"0x12200cef6d866d37186ac90861f374b0df031b0b4dee55b92dd4b44ab3289af4cb6d","name":"RecallablePayment","reproduced":false,"runtimeCode":{"immutableReferences":{},"length":8753,"sha256":"c4f46354c5efd584436069867362879a5f05da0404964ad2aa81d6b953f8a681"}}],"audit":{"auditor":"Quantstamp","commit":"7cec846cdfd680f8416e22c00a267313a7c4970a","completedAt":"2026-07-10","reportSha256":"d29fc18607cfb426219159d8db42dd547b2ad4cf72514f0d9025a2a098243b16","status":"audited"},"build":{"compilerLongVersion":"0.8.28+commit.7893614a","kind":"solc-standard-json","standardJson":{"path":"verification-source-codes.json","sha256":"d2606c45b10f1fd629144e3d3080832d5b446eb369a7cf9b396ae7b6a8e8c24e"}},"callSurfaces":[],"chainFamily":"evm","releaseId":"evm/recallable_payment/v1.0.0","releasedAt":"2026-07-29","schemaVersion":"1.0","source":{"commit":"fcecf79c6941c211a83dfa996e0746c4d4f8f870"}}