Transactions to sign
The transactions required to create a Merkl campaign onchain
With your encoded payload ready (see Creating the payloads), the last step is to send it onchain — which takes up to three transactions, in this order:
1. Sign Merkl T&Cs
Required only the first time a given address creates a campaign. Call acceptConditions() on the Merkl distributor — the onchain acceptance is stored against your address and reused for all subsequent campaigns from the same creator, so you don't need to repeat this step on future campaigns.
2. Token approval
The Merkl distributor contract pulls the reward tokens from your wallet when the campaign is created. You therefore need to grant it an ERC-20 approve allowance covering at least the amount of reward token specified in your configuration.
If you batch several campaigns funded from the same wallet, make sure the approval covers the sum of their amounts (or simply use type(uint256).max to approve once).
3. Create the campaign
This is the actual onchain call that registers the campaign with the Merkl distributor. Use the calldata returned by POST /v4/config/encode/batch as the transaction data, and target the Merkl distributor on the distributionChainId from your configuration.
The distributor exposes two entrypoints:
createCampaign(CampaignParameters newCampaign) → bytes32for a single campaign.createCampaigns(CampaignParameters[] campaigns) → bytes32[]to batch several campaigns in one transaction.
Both take the same CampaignParameters struct as input:
| Field | Type | Description |
|---|---|---|
campaignId | bytes32 | Deterministic identifier for the campaign. Leave as 0x0000000000000000000000000000000000000000000000000000000000000000 — the contract assigns it and emits it in the NewCampaign event. |
creator | address | Address credited as the campaign's creator. If set to 0x0000000000000000000000000000000000000000, the distributor defaults it to the address sending the transaction. |
rewardToken | address | ERC-20 token used to pay rewards. Must be whitelisted by Merkl. |
amount | uint256 | Total reward amount, in rewardToken base units. Must be ≥ the per-epoch minimum for that token. |
campaignType | uint32 | Identifier of the campaign type (e.g. 60 for ERC20LogProcessor). See Understanding campaign configs. |
startTimestamp | uint32 | Unix timestamp at which the campaign starts. |
duration | uint32 | Duration in seconds. endTimestamp = startTimestamp + duration. |
campaignData | bytes | The encoding of the campaign-type-specific parameters, produced for you by POST /v4/config/encode/batch. |
The encoder API fills these fields for you from the JSON config you submit, so in practice you just forward the returned calldata to the distributor.
Once this transaction is mined, the campaign is live: Merkl's engine will start indexing the target asset and accruing rewards according to the distributionMethod you configured.
Contract ABI
The Merkl distributor exposes the createCampaign / createCampaigns entrypoints, along with the acceptConditions call you'll need on your first campaign. Use the full ABI below to interact with it.
[
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "CampaignAlreadyExists",
"type": "error"
},
{
"inputs": [],
"name": "CampaignDoesNotExist",
"type": "error"
},
{
"inputs": [],
"name": "CampaignDurationNull",
"type": "error"
},
{
"inputs": [],
"name": "CampaignRewardTokenNotWhitelisted",
"type": "error"
},
{
"inputs": [],
"name": "CampaignRewardTooLow",
"type": "error"
},
{
"inputs": [],
"name": "InvalidLengths",
"type": "error"
},
{
"inputs": [],
"name": "InvalidOverride",
"type": "error"
},
{
"inputs": [],
"name": "InvalidParam",
"type": "error"
},
{
"inputs": [],
"name": "InvalidReallocation",
"type": "error"
},
{
"inputs": [],
"name": "NotAllowed",
"type": "error"
},
{
"inputs": [],
"name": "NotGovernor",
"type": "error"
},
{
"inputs": [],
"name": "NotGovernorOrGuardian",
"type": "error"
},
{
"inputs": [],
"name": "NotSigned",
"type": "error"
},
{
"inputs": [],
"name": "OperatorNotAllowed",
"type": "error"
},
{
"inputs": [],
"name": "ZeroAddress",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "previousAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "AdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "beacon",
"type": "address"
}
],
"name": "BeaconUpgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "isWhitelisted",
"type": "bool"
}
],
"name": "CampaignOperatorToggled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "_campaignId",
"type": "bytes32"
},
{
"components": [
{
"internalType": "bytes32",
"name": "campaignId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "creator",
"type": "address"
},
{
"internalType": "address",
"name": "rewardToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint32",
"name": "campaignType",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "startTimestamp",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "duration",
"type": "uint32"
},
{
"internalType": "bytes",
"name": "campaignData",
"type": "bytes"
}
],
"indexed": false,
"internalType": "struct CampaignParameters",
"name": "campaign",
"type": "tuple"
}
],
"name": "CampaignOverride",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "_campaignId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address[]",
"name": "from",
"type": "address[]"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "CampaignReallocation",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint32",
"name": "campaignType",
"type": "uint32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_fees",
"type": "uint256"
}
],
"name": "CampaignSpecificFeesSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "conditionsHash",
"type": "bytes32"
}
],
"name": "ConditionsAccepted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "CreatorAllowanceUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "CreatorBalanceUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_distributor",
"type": "address"
}
],
"name": "DistributorUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "userFeeRebate",
"type": "uint256"
}
],
"name": "FeeRebateUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_feeRecipient",
"type": "address"
}
],
"name": "FeeRecipientUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_fees",
"type": "uint256"
}
],
"name": "FeesSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "_messageHash",
"type": "bytes32"
}
],
"name": "MessageUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "campaignId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "creator",
"type": "address"
},
{
"internalType": "address",
"name": "rewardToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint32",
"name": "campaignType",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "startTimestamp",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "duration",
"type": "uint32"
},
{
"internalType": "bytes",
"name": "campaignData",
"type": "bytes"
}
],
"indexed": false,
"internalType": "struct CampaignParameters",
"name": "campaign",
"type": "tuple"
}
],
"name": "NewCampaign",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "RewardTokenMinimumAmountUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "toggleStatus",
"type": "uint256"
}
],
"name": "UserSigningWhitelistToggled",
"type": "event"
},
{
"inputs": [],
"name": "BASE_9",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "CHAIN_ID",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "HOUR",
"outputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "_nonces",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "acceptConditions",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "accessControlManager",
"outputs": [
{
"internalType": "contract IAccessControlManager",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_campaignId",
"type": "bytes32"
}
],
"name": "campaign",
"outputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "campaignId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "creator",
"type": "address"
},
{
"internalType": "address",
"name": "rewardToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint32",
"name": "campaignType",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "startTimestamp",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "duration",
"type": "uint32"
},
{
"internalType": "bytes",
"name": "campaignData",
"type": "bytes"
}
],
"internalType": "struct CampaignParameters",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "campaignId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "creator",
"type": "address"
},
{
"internalType": "address",
"name": "rewardToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint32",
"name": "campaignType",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "startTimestamp",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "duration",
"type": "uint32"
},
{
"internalType": "bytes",
"name": "campaignData",
"type": "bytes"
}
],
"internalType": "struct CampaignParameters",
"name": "campaignData",
"type": "tuple"
}
],
"name": "campaignId",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "campaignList",
"outputs": [
{
"internalType": "bytes32",
"name": "campaignId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "creator",
"type": "address"
},
{
"internalType": "address",
"name": "rewardToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint32",
"name": "campaignType",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "startTimestamp",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "duration",
"type": "uint32"
},
{
"internalType": "bytes",
"name": "campaignData",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "campaignListReallocation",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_campaignId",
"type": "bytes32"
}
],
"name": "campaignLookup",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "campaignOperators",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "campaignOverrides",
"outputs": [
{
"internalType": "bytes32",
"name": "campaignId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "creator",
"type": "address"
},
{
"internalType": "address",
"name": "rewardToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint32",
"name": "campaignType",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "startTimestamp",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "duration",
"type": "uint32"
},
{
"internalType": "bytes",
"name": "campaignData",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "campaignOverridesTimestamp",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "campaignReallocation",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"name": "campaignSpecificFees",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "campaignId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "creator",
"type": "address"
},
{
"internalType": "address",
"name": "rewardToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint32",
"name": "campaignType",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "startTimestamp",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "duration",
"type": "uint32"
},
{
"internalType": "bytes",
"name": "campaignData",
"type": "bytes"
}
],
"internalType": "struct CampaignParameters",
"name": "newCampaign",
"type": "tuple"
}
],
"name": "createCampaign",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "campaignId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "creator",
"type": "address"
},
{
"internalType": "address",
"name": "rewardToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint32",
"name": "campaignType",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "startTimestamp",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "duration",
"type": "uint32"
},
{
"internalType": "bytes",
"name": "campaignData",
"type": "bytes"
}
],
"internalType": "struct CampaignParameters[]",
"name": "campaigns",
"type": "tuple[]"
}
],
"name": "createCampaigns",
"outputs": [
{
"internalType": "bytes32[]",
"name": "",
"type": "bytes32[]"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "creatorAllowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "creatorBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "address",
"name": "rewardToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "decreaseTokenAllowance",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "address",
"name": "rewardToken",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "decreaseTokenBalance",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "defaultFees",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "distributionList",
"outputs": [
{
"internalType": "bytes32",
"name": "rewardId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "uniV3Pool",
"type": "address"
},
{
"internalType": "address",
"name": "rewardToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint32",
"name": "propToken0",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "propToken1",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "propFees",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "epochStart",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "numEpoch",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "isOutOfRangeIncentivized",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "boostedReward",
"type": "uint32"
},
{
"internalType": "address",
"name": "boostingAddress",
"type": "address"
},
{
"internalType": "bytes",
"name": "additionalData",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "distributor",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "feeRebate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "feeRecipient",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_campaignId",
"type": "bytes32"
}
],
"name": "getCampaignListReallocation",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_campaignId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "getCampaignListReallocationAt",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_campaignId",
"type": "bytes32"
}
],
"name": "getCampaignOverridesTimestamp",
"outputs": [
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_campaignId",
"type": "bytes32"
}
],
"name": "getLatestCampaignParams",
"outputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "campaignId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "creator",
"type": "address"
},
{
"internalType": "address",
"name": "rewardToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint32",
"name": "campaignType",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "startTimestamp",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "duration",
"type": "uint32"
},
{
"internalType": "bytes",
"name": "campaignData",
"type": "bytes"
}
],
"internalType": "struct CampaignParameters",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getValidRewardTokens",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "minimumAmountPerEpoch",
"type": "uint256"
}
],
"internalType": "struct RewardTokenAmounts[]",
"name": "",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "skip",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "first",
"type": "uint32"
}
],
"name": "getValidRewardTokens",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "minimumAmountPerEpoch",
"type": "uint256"
}
],
"internalType": "struct RewardTokenAmounts[]",
"name": "",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "address",
"name": "rewardToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "increaseTokenAllowance",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "address",
"name": "rewardToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "increaseTokenBalance",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IAccessControlManager",
"name": "_accessControlManager",
"type": "address"
},
{
"internalType": "address",
"name": "_distributor",
"type": "address"
},
{
"internalType": "uint256",
"name": "_fees",
"type": "uint256"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isWhitelistedToken",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "message",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "messageHash",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_campaignId",
"type": "bytes32"
},
{
"components": [
{
"internalType": "bytes32",
"name": "campaignId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "creator",
"type": "address"
},
{
"internalType": "address",
"name": "rewardToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint32",
"name": "campaignType",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "startTimestamp",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "duration",
"type": "uint32"
},
{
"internalType": "bytes",
"name": "campaignData",
"type": "bytes"
}
],
"internalType": "struct CampaignParameters",
"name": "newCampaign",
"type": "tuple"
}
],
"name": "overrideCampaign",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_campaignId",
"type": "bytes32"
},
{
"internalType": "address[]",
"name": "froms",
"type": "address[]"
},
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "reallocateCampaignRewards",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "recover",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "rewardTokenMinAmounts",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "rewardTokens",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "campaignType",
"type": "uint32"
},
{
"internalType": "uint256",
"name": "_fees",
"type": "uint256"
}
],
"name": "setCampaignFees",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_feeRecipient",
"type": "address"
}
],
"name": "setFeeRecipient",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_defaultFees",
"type": "uint256"
}
],
"name": "setFees",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_message",
"type": "string"
}
],
"name": "setMessage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_distributor",
"type": "address"
}
],
"name": "setNewDistributor",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "tokens",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "amounts",
"type": "uint256[]"
}
],
"name": "setRewardTokenMinAmounts",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "uint256",
"name": "userFeeRebate",
"type": "uint256"
}
],
"name": "setUserFeeRebate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "toggleCampaignOperator",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "toggleSigningWhitelist",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
}
],
"name": "upgradeTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "upgradeToAndCall",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "userSignatureWhitelist",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "userSignatures",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
}
]