CMXStorage

Git Source

Shared storage library for CMX diamond

Consolidates all state variables for the CMX token diamond

State Variables

CMX_STORAGE_POSITION

bytes32 constant CMX_STORAGE_POSITION = keccak256("capsign.storage.cmx");

MAX_SUPPLY

uint256 constant MAX_SUPPLY = 1_000_000_000 ether;

Functions

layout

function layout() internal pure returns (Layout storage l);

initialize

function initialize(string memory _name, string memory _symbol, uint8 _decimals, address _lzEndpoint, address _owner)
    internal;

mint

function mint(address to, uint256 amount) internal;

burn

function burn(address from, uint256 amount) internal;

transfer

function transfer(address from, address to, uint256 amount) internal;

approve

function approve(address owner, address spender, uint256 amount) internal;

setPaymasterApproval

function setPaymasterApproval(address paymaster, bool approved) internal;

isApprovedPaymaster

function isApprovedPaymaster(address paymaster) internal view returns (bool);

setPaymasterAllowance

function setPaymasterAllowance(address owner, address paymaster, uint256 amount) internal;

getPaymasterAllowance

function getPaymasterAllowance(address owner, address paymaster) internal view returns (uint256);

setMinter

function setMinter(address minter, bool authorized) internal;

isMinter

function isMinter(address account) internal view returns (bool);

setPaused

function setPaused(bool _mintingPaused, bool _transfersPaused) internal;

getMaxSupply

function getMaxSupply() internal pure returns (uint256);

isInitialized

function isInitialized() internal view returns (bool);

getOwner

function getOwner() internal view returns (address);

getLzEndpoint

function getLzEndpoint() internal view returns (address);

getSourceChain

function getSourceChain() internal view returns (bool);

setSourceChain

function setSourceChain(bool _isSourceChain) internal;

setOwner

function setOwner(address newOwner) internal;

Structs

Lot

struct Lot {
    bytes32 parentLotId;
    uint256 quantity;
    address paymentCurrency;
    uint256 costBasis;
    uint256 acquisitionDate;
    uint256 lastUpdate;
    bool isValid;
    address owner;
    TransferType tType;
    string uri;
    bytes data;
}

Layout

struct Layout {
    mapping(address => uint256) balances;
    mapping(address => mapping(address => uint256)) allowances;
    uint256 totalSupply;
    string name;
    string symbol;
    uint8 decimals;
    bool isSourceChain;
    bool initialized;
    address lzEndpoint;
    address owner;
    mapping(address => bool) approvedPaymasters;
    mapping(address => mapping(address => uint256)) paymasterAllowances;
    mapping(address => address) delegates;
    mapping(address => uint256) votingPower;
    uint256 governanceReserved1;
    uint256 governanceReserved2;
    mapping(address => bool) minters;
    bool mintingPaused;
    bool transfersPaused;
    TransferStrategy transferStrategy;
    mapping(bytes32 => Lot) lots;
    mapping(address => bytes32[]) ownerLots;
    uint256 nextCustomId;
    mapping(uint256 => bytes32) customIdToLotId;
    mapping(bytes32 => uint256) lotIdToCustomId;
    mapping(bytes32 => mapping(address => uint256)) lotApprovals;
    mapping(address => mapping(address => bool)) operatorApprovals;
}

Enums

TransferType

enum TransferType {
    INTERNAL,
    SALE,
    GIFT,
    INHERITANCE,
    REWARD
}

TransferStrategy

enum TransferStrategy {
    FIFO,
    LIFO,
    HIGHEST_COST_BASIS,
    LOWEST_COST_BASIS
}

Last updated

Was this helpful?