Linear Vesting Wallet

Creates a Wallet that allows the holder to claim coins linearly.

Structs

Wallet

  struct Wallet<phantom T> has key, store {
    id: UID,
    balance: Balance<T>,
    start: u64,
    released: u64,
    duration: u64
  }
  • balance - Amount of tokens to give to the holder of the wallet.

  • start - The holder can start claiming tokens after this date.

  • released - Total amount of `Coin<T>` released so far.

  • duration - The duration of the vesting.

Interface

new

It creates a new Wallet.

public fun new<T>(token: Coin<T>, c: &Clock, start: u64, duration: u64, ctx: &mut TxContext): Wallet<T>
  • @param token: A sui::coin::Coin<T>.

  • @param c: The shared object sui::clock::Clock

  • @param start: Dictate when the vesting schedule starts.

  • @param duration: Dictate when the vesting schedule starts.

  • @return Wallet.

Aborts

  • start is in the past.

balance

Returns the current amount of tokens in the self.

public fun balance<T>(self: &Wallet<T>): u64
  • @param self: A Wallet.

  • @return u64.

start

Returns the vesting schedule start time.

public fun start<T>(self: &Wallet<T>): u64
  • @param self: A Wallet.

  • @return u64.

released

Returns the current amount of total released tokens from the self.

public fun released<T>(self: &Wallet<T>): u64
  • @param self: A Wallet.

  • @return u64.

duration

Returns the duration of the vesting schedule.

public fun duration<T>(self: &Wallet<T>): u64
  • @param self: A Wallet.

  • @return u64.

vesting_status

Returns the current amount of coins available to the caller based on the linear schedule.

public fun vesting_status<T>(self: &Wallet<T>, c: &Clock): u64
  • @param self: A Wallet.

  • @param c: The sui::clock::Clock shared object.

  • @return u64. A portion of the amount that can be claimed by the user.

claim

Releases the current amount of coins available to the caller based on the linear schedule.

public fun claim<T>(self: &mut Wallet<T>, c: &Clock, ctx: &mut TxContext): Coin<T>
  • @param self: A Wallet.

  • @param c: The sui::clock::Clock shared object.

  • @return Coin.

destroy_zero

Destroys a Wallet with no balance.

public fun destroy_zero<T>(self: Wallet<T>)
  • @param self: A Wallet.

Last updated