90 lines
4.5 KiB
Solidity
90 lines
4.5 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity ^0.8.20;
|
|
|
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
|
import {IERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol";
|
|
import {IERC5267} from "@openzeppelin/contracts/interfaces/IERC5267.sol";
|
|
import {IeMoneyToken} from "../../emoney/interfaces/IeMoneyToken.sol";
|
|
import {IRegulatedAssetMetadata} from "../../interfaces/IRegulatedAssetMetadata.sol";
|
|
|
|
/**
|
|
* @title ICompliantFiatTokenV2
|
|
* @notice Canonical interface for GRU c* V2 compliant money tokens.
|
|
*/
|
|
interface ICompliantFiatTokenV2 is IERC20Metadata, IERC20Permit, IERC5267, IeMoneyToken, IRegulatedAssetMetadata {
|
|
event TokenURIUpdated(string tokenURI);
|
|
event SymbolDisplayUpdated(string symbolDisplay);
|
|
event LegacyAliasAdded(string aliasValue);
|
|
event ForwardCanonicalUpdated(bool forwardCanonical);
|
|
event SupplyControlsUpdated(uint256 supplyCap, uint256 mintingPeriodCap, uint256 mintingPeriodDuration);
|
|
event GovernanceProfileUpdated(bytes32 governanceProfileId);
|
|
event SupervisionProfileUpdated(bytes32 supervisionProfileId);
|
|
event StorageNamespaceUpdated(bytes32 storageNamespace);
|
|
event PrimaryJurisdictionUpdated(string jurisdiction);
|
|
event RegulatoryDisclosureURIUpdated(string disclosureURI);
|
|
event ReportingURIUpdated(string reportingURI);
|
|
event CanonicalUnderlyingAssetUpdated(address canonicalUnderlyingAsset);
|
|
event SupervisionConfigurationUpdated(
|
|
bool supervisionRequired,
|
|
bool governmentApprovalRequired,
|
|
uint256 minimumUpgradeNoticePeriod
|
|
);
|
|
event RegulatoryApprovalRecorded(bytes32 indexed approvalId, string actionType, bytes32 referenceHash);
|
|
event SupervisoryNoticeRecorded(bytes32 indexed noticeId, string category, string uri);
|
|
event AuthorizationUsed(address indexed authorizer, address indexed to, bytes32 indexed nonce, uint256 value);
|
|
event AuthorizationCanceled(address indexed authorizer, bytes32 indexed nonce);
|
|
|
|
function assetId() external view returns (bytes32);
|
|
function assetVersionId() external view returns (bytes32);
|
|
function owner() external view returns (address);
|
|
function currencyCode() external view returns (string memory);
|
|
function versionTag() external view returns (string memory);
|
|
function symbolDisplay() external view returns (string memory);
|
|
function tokenURI() external view returns (string memory);
|
|
function forwardCanonical() external view returns (bool);
|
|
function governanceController() external view returns (address);
|
|
function legacyAliases() external view returns (string[] memory);
|
|
function authorizationState(address authorizer, bytes32 nonce) external view returns (bool);
|
|
function transferOwnership(address newOwner) external;
|
|
function setGovernanceController(address governanceController_) external;
|
|
function mint(address to, uint256 amount) external;
|
|
function burn(uint256 amount) external;
|
|
function transferWithAuthorization(
|
|
address from,
|
|
address to,
|
|
uint256 value,
|
|
uint256 validAfter,
|
|
uint256 validBefore,
|
|
bytes32 nonce,
|
|
uint8 v,
|
|
bytes32 r,
|
|
bytes32 s
|
|
) external;
|
|
function receiveWithAuthorization(
|
|
address from,
|
|
address to,
|
|
uint256 value,
|
|
uint256 validAfter,
|
|
uint256 validBefore,
|
|
bytes32 nonce,
|
|
uint8 v,
|
|
bytes32 r,
|
|
bytes32 s
|
|
) external;
|
|
function cancelAuthorization(address authorizer, bytes32 nonce, uint8 v, bytes32 r, bytes32 s) external;
|
|
function setGovernanceProfileId(bytes32 governanceProfileId_) external;
|
|
function setSupervisionProfileId(bytes32 supervisionProfileId_) external;
|
|
function setStorageNamespace(bytes32 storageNamespace_) external;
|
|
function setPrimaryJurisdiction(string calldata jurisdiction_) external;
|
|
function setRegulatoryDisclosureURI(string calldata disclosureURI_) external;
|
|
function setReportingURI(string calldata reportingURI_) external;
|
|
function setCanonicalUnderlyingAsset(address canonicalUnderlyingAsset_) external;
|
|
function setSupervisionConfiguration(
|
|
bool supervisionRequired_,
|
|
bool governmentApprovalRequired_,
|
|
uint256 minimumUpgradeNoticePeriod_
|
|
) external;
|
|
function recordRegulatoryApproval(bytes32 approvalId, string calldata actionType, bytes32 referenceHash) external;
|
|
function recordSupervisoryNotice(bytes32 noticeId, string calldata category, string calldata uri) external;
|
|
}
|