Source Code

(define-constant ERR-PERMISSION-DENIED (err u3000))  
(define-constant ERR-PRECONDITION-FAILED (err u3001))  
(define-constant ERR-CONTRACT-NOT-FOUND (err u3002))  
(define-constant ERR-CONTRACT-LOCKED (err u3999))   
(define-data-var external-treasury uint u242858890000)
(define-read-only (get-external-treasury)
    (var-get external-treasury))
(define-read-only (get-total-treasury)
    (+ (as-contract (stx-get-balance tx-sender)) 
       (var-get external-treasury)))
(define-public (set-external-treasury (new-value uint))
    (begin
        (asserts! (as-contract (contract-call? .btf-protocol-cpc-001 is-contract-unlocked tx-sender)) ERR-CONTRACT-LOCKED)
        (asserts! (contract-call? .btf-protocol-cpc-001 has-permission contract-caller u10) ERR-PERMISSION-DENIED)
        (ok (var-set external-treasury new-value))))
(define-public (deposit-stx (amount uint))
    (begin 
        (asserts! (> amount u0) ERR-PRECONDITION-FAILED)  
        (stx-transfer? amount tx-sender (as-contract tx-sender))  
    ))
(define-public (withdraw-stx (amount uint) (recipient principal))
    (begin
        (asserts! (as-contract (contract-call? .btf-protocol-cpc-001 is-contract-unlocked tx-sender)) ERR-CONTRACT-LOCKED)
        (asserts! (contract-call? .btf-protocol-cpc-001 has-permission contract-caller u1) ERR-PERMISSION-DENIED)  
        (asserts! (> amount u0) ERR-PRECONDITION-FAILED)  
        (as-contract (stx-transfer? amount tx-sender recipient))  
    ))
(define-public (move-to-external-treasury (amount uint) (recipient principal))
    (begin
        (asserts! (as-contract (contract-call? .btf-protocol-cpc-001 is-contract-unlocked tx-sender)) ERR-CONTRACT-LOCKED)
        (asserts! (contract-call? .btf-protocol-cpc-001 has-permission contract-caller u1) ERR-PERMISSION-DENIED)
        (asserts! (> amount u0) ERR-PRECONDITION-FAILED)
        (try! (as-contract (stx-transfer? amount tx-sender recipient)))  
        (var-set external-treasury (+ (var-get external-treasury) amount))  
        (ok true)
    ))
(define-public (move-from-external-treasury (amount uint))
    (begin
        (asserts! (as-contract (contract-call? .btf-protocol-cpc-001 is-contract-unlocked tx-sender)) ERR-CONTRACT-LOCKED)
        (asserts! (contract-call? .btf-protocol-cpc-001 has-permission contract-caller u1) ERR-PERMISSION-DENIED)
        (asserts! (> amount u0) ERR-PRECONDITION-FAILED)
        (asserts! (>= (var-get external-treasury) amount) ERR-PRECONDITION-FAILED)
        (var-set external-treasury (- (var-get external-treasury) amount))
        (stx-transfer? amount tx-sender (as-contract tx-sender))  
    ))

Functions (7)

FunctionAccessArgs
get-external-treasuryread-only
get-total-treasuryread-only
set-external-treasurypublicnew-value: uint
deposit-stxpublicamount: uint
withdraw-stxpublicamount: uint, recipient: principal
move-to-external-treasurypublicamount: uint, recipient: principal
move-from-external-treasurypublicamount: uint