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 'SPTSC1VVBT6AWAB1HMQ94CTNSTPZY6R1FZ40XK5J.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