These bullet points are confusing. You just need one "Fund" button in the quest detail view that opens a modal showing the token they're depositing and allows the user to specify an amount to deposit. Once funded the subgraph should update, as it should watch the token associated with the quest, and the bounty available should update automatically. (Edited)
Because afaik you can't just watch the quest contract for a balance update without polling it. So you'd have to watch for transfer events that occur in the token that involve the quest contracts address. (Edited)
MVP
[Quest fields stored in chain]
Title
ERC21 Token used for funding the quest or send bounty to player
Description as an IPFS hash
Expiration as a timestamp
Govern address given by Quest Factory contract
Funds recovery address
Creator address
Creator deposit token and ammount
Player Claims array
Create a quest as a CREATOR
Title
Description with requirements (will be stored as IPFS hash)
Details about what the quest entails.
What evidence must be submitted by users claiming a reward for completing the quest.
The payout amount. This could be a constant amount for quests that payout multiple times, a range with reference to what determines what amount, the contracts balance at time of claim. This shouldn’t be a percentage of the contracts balance though as claims are not guaranteed to happen in order as they can be cancelled, messing up the valid claim amounts.
Optionally a whitelist of addresses or set of addresses that can receive rewards for this quest.
Funds fallback address (default is Creator wallet address)
Expire time
Initial funding wich can be zero (used to funds the quest)
The creator will have to place a collateral deposit wich will be reclaimable when the quest is expired
List & Filter quests as a USER
Simple infinite scroll with last created on top
Filtering by :
Title
Description
Expiration
Bounty available
State (active or expired)
Quest summary
Card containing :
Title
Description
Address
Bounty Available
Quest detail
Modal containing :
Title
Description
Address
Bounty Available
Claim deposit
List of Player claiming the Quest containing :
Evidence of completion
Amount requested
Time until Claim challenge delay expiration
Claim button
Fund button
Expire time
Creation time
Fund quest as a PATRON
Fund button in Quest detail
Send fund directly to the token bound to the quest
UI fetch the total available bounty
Claim a quest as a PLAYER
Player click the Claim button
Player provides :
Evidence of completion (IPFS)
Requested amount
His wallet address where claim will be transferred
Player should place a collateral deposit wich is restored if claim is executed.
Call Aragon Govern Queue with Claim function of Quest contract with a delay of 7 days
If any account challenge the claim during this delay, the claim is frozen and the Dispute will be raised to Celeste
If the Dispute is ruled in favor of the Challenger, he earns the Player deposit and the Claim is denied.
If the Dispute is ruled in favor of the Player, he earns the Challenger deposit and the Claim is immediatly executed.
Each time a Dispute has been ruled in Celeste, someone needs to resolve it from the Quests UI.
Challenge a claim
Any stakeholder can go to a quest detail
If a Claim is pending, it is challengable
The Challenger should place a collateral deposit and pay a challenge fee
The Claim will then be raised to celeste
If Challenger wins the dispute, he collects Player deposit