arkadiko-vaults-migration-v1-3

SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR

Source Code

;; Vaults Migration 
;; Migrate V1 to V2
;;
;; Vaults system V1 is stopped, after which the data is stored off chain.
;; Data is added to V2 via this contract.
;;

(use-trait oracle-trait .arkadiko-oracle-trait-v1.oracle-trait)
(use-trait ft-trait 'SP3FBR2AGK5H9QBDH3EEN6DF8EK8JY7RX8QJ5SVTE.sip-010-trait-ft-standard.sip-010-trait)

;; ---------------------------------------------------------
;; Constants
;; ---------------------------------------------------------

(define-constant ERR_NOT_AUTHORIZED u990401)
(define-constant ERR_MIGRATE_FAILED u990001)

;; ---------------------------------------------------------
;; Pool Liq
;; ---------------------------------------------------------

(define-public (migrate-pool-liq-funds)
  (let (
    (usda-amount (unwrap-panic (contract-call? .usda-token get-balance .arkadiko-vaults-pool-liq-v1-1)))
  )
    (asserts! (is-eq contract-caller (contract-call? .arkadiko-dao get-dao-owner)) (err ERR_NOT_AUTHORIZED))

    (try! (as-contract (contract-call? .arkadiko-dao burn-token .usda-token usda-amount .arkadiko-vaults-pool-liq-v1-1)))
    (try! (as-contract (contract-call? .arkadiko-dao mint-token .usda-token usda-amount .arkadiko-vaults-pool-liq-v1-2)))

    (ok usda-amount)
  )
)

(define-public (migrate-pool-liq 
  (stakers (list 200 { 
    staker: principal, 
    amount: uint,
  }))
)
  (let (
    (migrate-result (map migrate-pool-liq-iter stakers))
  )
    (asserts! (is-eq contract-caller (contract-call? .arkadiko-dao get-dao-owner)) (err ERR_NOT_AUTHORIZED))
    (asserts! (is-none (index-of? migrate-result (ok false))) (err ERR_MIGRATE_FAILED))

    (print { migrate-result: migrate-result })
    (ok true)
  )
)

(define-private (migrate-pool-liq-iter 
  (stakerInfo { 
    staker: principal, 
    amount: uint, 
  })
)
  (let (
    (staker (get staker stakerInfo))
    (amount (get amount stakerInfo))
  )
    ;; Save pool stake
    (unwrap! (contract-call? .arkadiko-vaults-pool-liq-v1-2 migrate-pool-liq staker amount) (ok false))

    (ok true)
  )
)

Functions (2)

FunctionAccessArgs
migrate-pool-liq-fundspublic
migrate-pool-liqpublicstakers: (list 200 { staker: principal, amount: uint, }