Quest
This module wraps an object labeled as rewards that can only be unwrapped if a set of witness objects are passed as arguments to the complete function. A witness is a struct with the drop key. The idea is to have a user complete a set of tasks for a reward in different protocols . The protocols certify that the user completed the task via their Witnesses.
Structs
Quest
struct Quest<Reward: store> has key, store {
    id: UID,
    required_tasks: VecSet<TypeName>,
    completed_tasks: VecSet<TypeName>,
    reward: Reward,
 }- required_tasks - Stores the Witnesses of all required tasks. 
- completed_tasks - Contains all the Witnesses the user must complete to unwrap the {Reward}. 
- reward - An object that will be returned once the Quest has been completed. 
Interface
new
Creates a {Quest} .
public fun new<Reward: store>(
  required_tasks: VecSet<TypeName>, 
  reward: Reward, 
  ctx: &mut TxContext
): Quest<Reward>- @param required_tasks: A vector set of the required tasks to unlock the - reward.
- @param reward: An object with the store ability that can be redeemed once all tasks are completed. 
- @return Quest<Reward>. 
required_tasks
Returns the required tasks of the self.
public fun required_tasks<Reward: store>(self: &Quest<Reward>): vector<TypeName>- @param self: A {Quest}. 
- @return vector<TypeName>. A vector of the required Witness names to complete the quest. 
completed_tasks
Returns the completed tasks of the self.
public fun required_tasks<Reward: store>(self: &Quest<Reward>): vector<TypeName>- @param self: A {Quest}. 
- @return vector<TypeName>. A vector of the completed Witness names to complete the quest. 
complete
Completes a quest by adding the witness Task name to the self.completed_tasks vector.
public fun complete<Reward: store, Task: drop>(self: &mut Quest<Reward>, _: Task)- @param self: A {Quest}. 
- @param: _ A witness - Task.
finish
Finishes a quest and returns the Reward to the caller.
public fun complete<Reward: store, Task: drop>(self: &mut Quest<Reward>, _: Task)- @param self: A {Quest}. 
- @return: Reward. 
Aborts
- If the required_tasks do not match the completed_tasks 
Last updated
Was this helpful?
