Source Code

(use-trait dlmm-pool-trait 'SP3ESW1QCNQPVXJDGQWT7E45RDCH38QBK9HEJSX4X.dlmm-pool-trait-v-0-1.dlmm-pool-trait)
(use-trait sip-010-trait 'SP3ESW1QCNQPVXJDGQWT7E45RDCH38QBK9HEJSX4X.sip-010-trait-ft-standard-v-0-0.sip-010-trait)

(define-constant SELF (as-contract contract-caller))

(define-public (liquidate
    (sbtc-in uint)
    (min-usdc-out uint)
    (swaps (optional (list 5 {pool-trait: <dlmm-pool-trait>, x-token-trait: <sip-010-trait>, y-token-trait: <sip-010-trait>, amount: uint, min-received: uint, x-for-y: bool, max-steps: uint}))))

 (let
    (
        (usdc-balance-before (unwrap-panic (contract-call? 'SP3ESW1QCNQPVXJDGQWT7E45RDCH38QBK9HEJSX4X.token-tusdc-v-0-2 get-balance SELF)))
    )
    (asserts! (is-some swaps) (err u213))
    
    (try! (contract-call? 'SP3ESW1QCNQPVXJDGQWT7E45RDCH38QBK9HEJSX4X.token-tbtc-v-0-2 transfer sbtc-in contract-caller SELF none))

    (try! (as-contract (dllm-swap-simple-multi (unwrap-panic swaps))))

    (let 
        (
            (usdc-balance-after (unwrap-panic (contract-call? 'SP3ESW1QCNQPVXJDGQWT7E45RDCH38QBK9HEJSX4X.token-tusdc-v-0-2 get-balance SELF)))
            (usdc-out (if (is-eq u0 usdc-balance-before) usdc-balance-after (- usdc-balance-before usdc-balance-after)))
        )
        (asserts! (>= usdc-out min-usdc-out) (err u214))
        (contract-call? 'SP3ESW1QCNQPVXJDGQWT7E45RDCH38QBK9HEJSX4X.token-tusdc-v-0-2 transfer usdc-out SELF contract-caller none)
    )
 )
)

(define-private (dllm-swap-simple-multi 
    (swaps (list 5 {pool-trait: <dlmm-pool-trait>, x-token-trait: <sip-010-trait>, y-token-trait: <sip-010-trait>, amount: uint, min-received: uint, x-for-y: bool, max-steps: uint})))
    (contract-call? 'SP3ESW1QCNQPVXJDGQWT7E45RDCH38QBK9HEJSX4X.dlmm-swap-router-v-0-3 swap-simple-multi swaps)
)

Functions (2)

FunctionAccessArgs
liquidatepublicsbtc-in: uint, min-usdc-out: uint, swaps: (optional (list 5 {pool-trait: <dlmm-pool-trait>, x-token-trait: <sip-010-trait>, y-token-trait: <sip-010-trait>, amount: uint, min-received: uint, x-for-y: bool, max-steps: uint}
dllm-swap-simple-multiprivateswaps: (list 5 {pool-trait: <dlmm-pool-trait>, x-token-trait: <sip-010-trait>, y-token-trait: <sip-010-trait>, amount: uint, min-received: uint, x-for-y: bool, max-steps: uint}