Source Code


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

(define-constant OWNER tx-sender)
(define-constant VAULT-CA (as-contract tx-sender))
(define-data-var TRANSFER-AUTHORITY principal 'SP37N8PQ9F9ZQB4DY3516R1044YY1MDAEESFVX6A4.swap-core)

(define-constant err-not-contract-owner (err u1001))
(define-constant err-not-transfer-authority (err u5001))

(define-read-only (get-transfer-authority) (var-get TRANSFER-AUTHORITY))

(define-public (vault-stx-out (amount uint) (recipient principal))
    (begin
        (asserts! (is-eq tx-sender (var-get TRANSFER-AUTHORITY)) err-not-transfer-authority) 
        (try! (as-contract (stx-transfer? amount VAULT-CA recipient)))
        (ok true)
    )
)

(define-public (vault-token-out (token-contract <sip-010>) (amount uint) (recipient principal))
    (begin
        (asserts! (is-eq tx-sender (var-get TRANSFER-AUTHORITY)) err-not-transfer-authority) 
        (try! (as-contract (contract-call? token-contract transfer amount VAULT-CA recipient none)))
        (ok true)
    )
)

(define-public (set-transfer-authority (authority principal))
    (begin
        (asserts! (is-eq tx-sender OWNER) err-not-contract-owner) 
        (var-set TRANSFER-AUTHORITY authority)
        (ok true)
    )
)
    

Functions (4)

FunctionAccessArgs
get-transfer-authorityread-only
vault-stx-outpublicamount: uint, recipient: principal
vault-token-outpublictoken-contract: <sip-010>, amount: uint, recipient: principal
set-transfer-authoritypublicauthority: principal