Source Code

(define-constant err-unauthorised (err u1000))
(define-constant err-request-id-not-found (err u10019))
(define-constant PENDING 0x00)
(define-constant FINALIZED 0x01)
(define-constant REVOKED 0x02)
(define-data-var start-cycle uint u340282366920938463463374607431768211455)
(define-data-var redeem-request-nonce uint u0)
(define-map staked-cycle uint bool)
(define-map redeem-requests uint { requested-by: principal, amount: uint, redeem-cycle: uint, status: (buff 1) })
(define-map redeem-shares-per-cycle uint uint)
(define-map shares-to-token-per-cycle uint uint)
(define-read-only (is-dao-or-extension)
	(ok (asserts! (or (is-eq tx-sender 'SM26NBC8SFHNW4P1Y4DFH27974P56WN86C92HPEHH.lisa-dao) (contract-call? 'SM26NBC8SFHNW4P1Y4DFH27974P56WN86C92HPEHH.lisa-dao is-extension contract-caller)) err-unauthorised)))
(define-read-only (get-start-cycle)
  (var-get start-cycle))
(define-read-only (is-cycle-staked (reward-cycle uint))
  (is-some (map-get? staked-cycle reward-cycle)))
(define-read-only (get-shares-to-tokens-per-cycle-or-default (reward-cycle uint))
  (default-to u0 (map-get? shares-to-token-per-cycle reward-cycle)))
(define-read-only (get-redeem-shares-per-cycle-or-default (reward-cycle uint))
  (default-to u0 (map-get? redeem-shares-per-cycle reward-cycle)))
(define-read-only (get-redeem-request-or-fail (request-id uint))
  (ok (unwrap! (map-get? redeem-requests request-id) err-request-id-not-found)))
(define-public (set-start-cycle (new-start-cycle uint))
  (begin 
    (try! (is-dao-or-extension))
    (map-set staked-cycle new-start-cycle true)
    (ok (var-set start-cycle new-start-cycle))))
(define-public (set-staked-cycle (cycle uint) (staked bool))
  (begin 
    (try! (is-dao-or-extension))
    (ok (map-set staked-cycle cycle staked))))
(define-public (set-shares-to-tokens-per-cycle (cycle uint) (shares-to-tokens uint))
  (begin 
    (try! (is-dao-or-extension))
    (ok (map-set shares-to-token-per-cycle cycle shares-to-tokens))))
(define-public (set-redeem-request (request-id uint) (request-details { requested-by: principal, amount: uint, redeem-cycle: uint, status: (buff 1) }))
  (let (
      (next-nonce (+ (var-get redeem-request-nonce) u1))
      (id (if (> request-id u0) request-id (begin (var-set redeem-request-nonce next-nonce) next-nonce))))
    (try! (is-dao-or-extension))
    (map-set redeem-requests id request-details)
    (ok id)))
(define-public (set-redeem-shares-per-cycle (reward-cycle uint) (shares uint))
  (begin 
    (try! (is-dao-or-extension))
    (ok (map-set redeem-shares-per-cycle reward-cycle shares))))

Functions (10)

FunctionAccessArgs
is-dao-or-extensionread-only
get-start-cycleread-only
is-cycle-stakedread-onlyreward-cycle: uint
get-shares-to-tokens-per-cycle-or-defaultread-onlyreward-cycle: uint
get-redeem-shares-per-cycle-or-defaultread-onlyreward-cycle: uint
get-redeem-request-or-failread-onlyrequest-id: uint
set-start-cyclepublicnew-start-cycle: uint
set-staked-cyclepubliccycle: uint, staked: bool
set-shares-to-tokens-per-cyclepubliccycle: uint, shares-to-tokens: uint
set-redeem-shares-per-cyclepublicreward-cycle: uint, shares: uint