{
    "G001": "Caller should only be IndexerRegistry",
    "G002": "Caller should only be Indexer",
    "G003": "Caller should only be RewardsDistributer",
    "G004": "Caller should only be Delegator",
    "G005": "Caller should only be DisputeManager",
    "G006": "Indexer is on dispute",
    "G007": "Caller should only be StakingManager",
    "G008": "Caller invaild",
    "G009": "invaild token address",
    "G010": "invaild parameters",
    "G011": "Only Channel Contract",
    "G012": "Can only be called by eraManager",
    "G013": "transfer fail",
    "G014": "Only RewardsStaking",
    "G015": "Only ServiceAgreementRegistry",
    "G016": "Caller should only be Staking",
    "G017": "Caller should only be IndexerRegistry",
    "G018": "Contract is not IConsumer",
    "G019": "Network in maintenance mode",
    "G020": "Invalid Batch Parameters",
    "S001": "Invaild unbondFeeRate",
    "S002": "Reach delegation limitation",
    "S003": "Invalid delegation amount",
    "S004": "First staking not from indexer",
    "S005": "Insufficient or invaild delegation amount to remove",
    "S006": "Reach unbond requests limitation",
    "S007": "Invaild unbondReqId to cancel",
    "S008": "Insufficient unstake amount",
    "S009": "No unbond request to widthdraw",
    "S010": "Invaild amount to slash indexer",
    "S011": "No rewards to claim",
    "S012": "Invalid node operator to delegate to",
    "A001": "invaild round time set",
    "A002": "invaild round to airdrop",
    "A003": "duplicate airdrop",
    "A004": "invaild airdrop amount",
    "A005": "invaild round to claim",
    "A006": "nothing claim",
    "A007": "Airdropper: insufficient assets",
    "A008": "invaild round to settle",
    "A009": "none token left",
    "A010": "sender only airdrop controller",
    "A011": "Invalid airdrop round",
    "C001": "Invalid feePercentage",
    "C002": "Insufficient balance",
    "C003": "None signers",
    "C004": "None signer",
    "C005": "Invalid Consumer",
    "C006": "Invalid signature",
    "D001": "reach dispute limit",
    "D002": "Not meet the minimum deposit",
    "D003": "invalid state",
    "D004": "dispute already finalized",
    "D005": "invalid newDeposit",
    "E001": "eraPeriod can not be 0",
    "E002": "Current era is still active",
    "E003": "only further timestamp available",
    "IR001": "Already registered",
    "IR002": "Not meet the minimum staking amount",
    "IR004": "Can not unregister from the network due to running indexing projects",
    "IR005": "Invalid indexer metadata",
    "IR006": "Invalid commission rate",
    "IR007": "caller is not a controller",
    "IC001": "InflationRate value is out of range",
    "IC002": "Already minted this Era",
    "PE001": "Not controller",
    "PE002": "invalid expireDate",
    "PE003": "invalid amount",
    "PE004": "pair orders should have balance",
    "PE005": "tradeQuota reached",
    "PE006": "order invalid",
    "PE007": "trade amount too small",
    "PE008": "trade amount exceed order balance",
    "PE009": "order not exist",
    "PE010": "order not expired",
    "PE011": "only order sender allowed",
    "PE012": "reach stable coin trading limitation in single transaction",
    "PM001": "Period need to be positive",
    "PM002": "DailyReqCap need to be positive",
    "PM003": "RateLimit need to be positive",
    "PM004": "Plan template not existing",
    "PM005": "Price need to be positive",
    "PM006": "Inactive plan template",
    "PM007": "Indexer plan limitation reached",
    "PM008": "Invaild plan can not be removed",
    "PM009": "Inactive plan",
    "PM010": "DeploymentId can not be empty",
    "PM011": "Plan not match with the deployment",
    "PM012": "invalid plan id",
    "PO001": "Invalid penalty rate",
    "PO002": "invalid expiration",
    "PO003": "should deposit positive amount",
    "PO004": "should limit positive amount",
    "PO005": "PlanTemplate inactive",
    "PO006": "only offerer can cancel the offer",
    "PO007": "invalid offerId",
    "PO008": "offer expired",
    "PO009": "offer accepted already",
    "PO010": "number of contracts already reached limit",
    "PO011": "poi can not be empty",
    "PO012": "offer minimum staking amount must greater than indexer minimum staking amount",
    "PO013": "indexer staking amount must greater than offer minimum staking amount",
    "QR001": "Address is not authorised to operate query project",
    "QR002": "can not update status for NOTINDEXING services",
    "QR003": "only timestamp that is after previous timestamp is valid",
    "QR004": "timestamp cannot be in the future",
    "QR005": "can not update status when blockheight submitted < current value",
    "QR006": "Deployment Id already registered",
    "QR007": "no permission to update query project metadata",
    "QR008": "no permission to update query project deployment",
    "QR009": "indexing status should be NOTINDEXING status",
    "QR010": "can not stop indexing for NOTINDEXING services",
    "QR011": "cannot stop indexing with an ongoing service agreement",
    "QR012": "invalid project owner",
    "PR001": "address is not authorised to operate projects",
    "PR002": "only status for NOTINDEXING services can be updated",
    "PR003": "deployment Id already registered",
    "PR004": "invaild owner of the project or not authorised",
    "PR005": "can not stop indexing for NOTINDEXING services",
    "PR006": "cannot stop indexing with an ongoing service agreement",
    "PR007": "Inconsistent project id and deployment id",
    "PR008": "deployment metadata not changed",
    "PR009": "deployment id or metadata is empty",
    "PR010": "project latest deployment id not changed",
    "PR011": "deployment not registered",
    "PR012": "Caller is not the controller",
    "RD001": "Waiting Era",
    "RD002": "Era expired",
    "RD003": "Waiting next era",
    "RD004": "Invalid indexer",
    "RD005": "Pending stake or ICR",
    "RD006": "Non-Indexer",
    "RD007": "No rewards",
    "RP001": "!alpha",
    "RP002": "Invalid amount",
    "RP003": "Not indexer",
    "RP004": "Waiting Era",
    "RP005": "No reward",
    "RS001": "Not settled",
    "RS002": "Unless collect at last era",
    "RS003": "Need apply pending",
    "RS004": "Too early",
    "RS005": "No pending",
    "ISA001": "Only ServiceAgreementRegistry can call this function",
    "RS006": "Rewards not collected",
    "RS007": "Last era staking not settled",
    "SA001": "Invalid agreement",
    "SA002": "Only consumer can add user",
    "SA003": "Only consumer can remove user",
    "SA004": "No access",
    "SA005": "Indexing service is not available",
    "SA006": "Indexer reward reached to the limit",
    "SA007": "Sender is not the consumer",
    "SA008": "Cannot renew upcoming agreement",
    "SA009": "Agreement ended",
    "SA010": "Agreement not complete",
    "SA011": "Only consumer can remove ended agreement",
    "SC001": "ChannelId already existed",
    "SC002": "Request is expired",
    "SC003": "Channel lost efficacy",
    "SC004": "Channel must be actived",
    "SC005": "Query state must bigger than channel state",
    "SC006": "Unspent need expiration",
    "SC007": "Not terminating",
    "SC008": "Channel not expired",
    "SC009": "Invalid signature",
    "V001": "initial unlock percent should be equal or less than 100",
    "V002": "empty address is not allowed",
    "V003": "vesting is already set on the account",
    "V004": "zero amount vesting is not allowed",
    "V005": "number of addresses should be at least one",
    "V006": "number of addresses should be same as number of allocations",
    "V007": "should deposit positive amount",
    "V008": "Vesting: transfer failure",
    "V009": "vesting start date must in the future",
    "V010": "balance not enough for allocation",
    "V011": "vesting is not set on the account",
    "V012": "no token available to claim",
    "V013": "invalid plan id",
    "OR001": "invalid asset price",
    "OR002": "not meet the block number limitation",
    "OR003": "invalid price size change",
    "OR004": "invalid owner",
    "SS001": "Can only be called by eraManager",
    "ST001": "length of sq and addresses should be same",
    "TE001": "Token give balance must be greater than 0",
    "TE002": "order not exist",
    "TE003": "trade amount exceed order balance",
    "SQG001": "Series not found",
    "SQG002": "Not on allowlist",
    "SQG003": "Invalid Batch Parameters",
    "SQG004": "Series not active",
    "SQG005": "Max gift supply reached",
    "SQG006": "Max supply must be greater than 0",
    "SQR001": "Failed to transfer SQT",
    "SQR002": "Redeem not enabled",
    "SQR003": "NFT does not support ISQTGift",
    "SQR004": "Gift not redeemable",
    "SQR005": "Not owner of token",
    "SQR006": "token not exist",
    "SAL01": "Can only be called by RewardsStaking",
    "SAL02": "Can only be called by runner or controller of runner",
    "SAL03": "Not enough staked token",
    "SAL04": "Not enough allocated token",
    "SAL05": "Deployment not exist",
    "SAL07": "Source Deployment must be different than Destination Deployment",
    "RB001": "Invalid project type",
    "RB002": "Invalid boosterQueryRewardRate",
    "RB003": "Balance of booster deployment is not enought",
    "RB004": "Invalid reporter",
    "RB005": "Caller must be runner, controller or StakingAllocation contract",
    "RB006": "Invalid caller",
    "RB007": "Query refund can not be larger than spent",
    "RB008": "Deployment not exist",
    "RB009": "MissedLaborTime exceed total reward period",
    "RB010": "Invalid report time when setMissedLabor",
    "RB011": "MissedLaborTime exceed current report period",
    "RB012": "Invalid param length to set MissedLabor",
    "RB013": "Deployment ids can not be same",
    "RB014": "Caller is not a controller of the account",
    "RB015": "Deployment booster is too small, need add more",
    "RB016": "Deployment booster already too small, need remove all",
    "OPD01": "l2token address is empty"
}
