[
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "_epochPeriod",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "_startTimestamp",
                "type": "uint256"
            },
            {
                "internalType": "contract IERC20",
                "name": "_knc",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "_defaultNetworkFeeBps",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "_defaultRewardBps",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "_defaultRebateBps",
                "type": "uint256"
            },
            {
                "internalType": "address",
                "name": "_daoOperator",
                "type": "address"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "constructor"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "uint256",
                "name": "campaignID",
                "type": "uint256"
            }
        ],
        "name": "CancelledCampaign",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": false,
                "internalType": "enum KyberDao.CampaignType",
                "name": "campaignType",
                "type": "uint8"
            },
            {
                "indexed": true,
                "internalType": "uint256",
                "name": "campaignID",
                "type": "uint256"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "startTimestamp",
                "type": "uint256"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "endTimestamp",
                "type": "uint256"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "minPercentageInPrecision",
                "type": "uint256"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "cInPrecision",
                "type": "uint256"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "tInPrecision",
                "type": "uint256"
            },
            {
                "indexed": false,
                "internalType": "uint256[]",
                "name": "options",
                "type": "uint256[]"
            },
            {
                "indexed": false,
                "internalType": "bytes",
                "name": "link",
                "type": "bytes"
            }
        ],
        "name": "NewCampaignCreated",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "internalType": "address",
                "name": "staker",
                "type": "address"
            },
            {
                "indexed": true,
                "internalType": "uint256",
                "name": "epoch",
                "type": "uint256"
            },
            {
                "indexed": true,
                "internalType": "uint256",
                "name": "campaignID",
                "type": "uint256"
            },
            {
                "indexed": false,
                "internalType": "uint256",
                "name": "option",
                "type": "uint256"
            }
        ],
        "name": "Voted",
        "type": "event"
    },
    {
        "inputs": [],
        "name": "MAX_CAMPAIGN_OPTIONS",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "MAX_EPOCH_CAMPAIGNS",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "name": "brrCampaigns",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "campaignID",
                "type": "uint256"
            }
        ],
        "name": "cancelCampaign",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "daoOperator",
        "outputs": [
            {
                "internalType": "address",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "epochPeriodInSeconds",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "firstEpochStartTimestamp",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "campaignID",
                "type": "uint256"
            }
        ],
        "name": "getCampaignDetails",
        "outputs": [
            {
                "internalType": "enum KyberDao.CampaignType",
                "name": "campaignType",
                "type": "uint8"
            },
            {
                "internalType": "uint256",
                "name": "startTimestamp",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "endTimestamp",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "totalKNCSupply",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "minPercentageInPrecision",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "cInPrecision",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "tInPrecision",
                "type": "uint256"
            },
            {
                "internalType": "bytes",
                "name": "link",
                "type": "bytes"
            },
            {
                "internalType": "uint256[]",
                "name": "options",
                "type": "uint256[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "campaignID",
                "type": "uint256"
            }
        ],
        "name": "getCampaignVoteCountData",
        "outputs": [
            {
                "internalType": "uint256[]",
                "name": "voteCounts",
                "type": "uint256[]"
            },
            {
                "internalType": "uint256",
                "name": "totalVoteCount",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "campaignID",
                "type": "uint256"
            }
        ],
        "name": "getCampaignWinningOptionAndValue",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "optionID",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "value",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "getCurrentEpochNumber",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "staker",
                "type": "address"
            }
        ],
        "name": "getCurrentEpochRewardPercentageInPrecision",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "rewardInBps",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "rebateInBps",
                "type": "uint256"
            }
        ],
        "name": "getDataFromRewardAndRebateWithValidation",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "data",
                "type": "uint256"
            }
        ],
        "stateMutability": "pure",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "timestamp",
                "type": "uint256"
            }
        ],
        "name": "getEpochNumber",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "getLatestBRRData",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "burnInBps",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "rewardInBps",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "rebateInBps",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "epoch",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "expiryTimestamp",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "getLatestBRRDataWithCache",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "burnInBps",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "rewardInBps",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "rebateInBps",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "epoch",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "expiryTimestamp",
                "type": "uint256"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "getLatestNetworkFeeData",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "feeInBps",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "expiryTimestamp",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "getLatestNetworkFeeDataWithCache",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "feeInBps",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "expiryTimestamp",
                "type": "uint256"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "epoch",
                "type": "uint256"
            }
        ],
        "name": "getListCampaignIDs",
        "outputs": [
            {
                "internalType": "uint256[]",
                "name": "campaignIDs",
                "type": "uint256[]"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "staker",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "epoch",
                "type": "uint256"
            }
        ],
        "name": "getPastEpochRewardPercentageInPrecision",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "data",
                "type": "uint256"
            }
        ],
        "name": "getRebateAndRewardFromData",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "rebateInBps",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "rewardInBps",
                "type": "uint256"
            }
        ],
        "stateMutability": "pure",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "epoch",
                "type": "uint256"
            }
        ],
        "name": "getTotalEpochPoints",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "staker",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "reduceAmount",
                "type": "uint256"
            }
        ],
        "name": "handleWithdrawal",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "kncToken",
        "outputs": [
            {
                "internalType": "contract IERC20",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "minCampaignDurationInSeconds",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "name": "networkFeeCampaigns",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "numberCampaigns",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "name": "numberVotes",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "epoch",
                "type": "uint256"
            }
        ],
        "name": "shouldBurnRewardForEpoch",
        "outputs": [
            {
                "internalType": "bool",
                "name": "",
                "type": "bool"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "address",
                "name": "",
                "type": "address"
            },
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "name": "stakerVotedOption",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "",
                "type": "uint256"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [],
        "name": "staking",
        "outputs": [
            {
                "internalType": "contract IKyberStaking",
                "name": "",
                "type": "address"
            }
        ],
        "stateMutability": "view",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "enum KyberDao.CampaignType",
                "name": "campaignType",
                "type": "uint8"
            },
            {
                "internalType": "uint256",
                "name": "startTimestamp",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "endTimestamp",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "minPercentageInPrecision",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "cInPrecision",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "tInPrecision",
                "type": "uint256"
            },
            {
                "internalType": "uint256[]",
                "name": "options",
                "type": "uint256[]"
            },
            {
                "internalType": "bytes",
                "name": "link",
                "type": "bytes"
            }
        ],
        "name": "submitNewCampaign",
        "outputs": [
            {
                "internalType": "uint256",
                "name": "campaignID",
                "type": "uint256"
            }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [
            {
                "internalType": "uint256",
                "name": "campaignID",
                "type": "uint256"
            },
            {
                "internalType": "uint256",
                "name": "option",
                "type": "uint256"
            }
        ],
        "name": "vote",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
    }
]
