Source Code

;; SPDX-License-Identifier: BUSL-1.1

(impl-trait 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.proposal-trait.proposal-trait)

(define-constant ERR-INVALID-TOTAL-SUPPLY (err u1000))

(define-constant ONE_8 u100000000) ;; 8 decimal places
(define-constant nasty-pool-id u98)
(define-constant holders (list 
  'SP1E0XBN9T4B10E9QMR7XMFJPMA19D77WY3KP2QKC.self-listing-helper-v2-03))
(define-constant factor (pow ONE_8 u2)) ;;1e16

(define-constant locked-id (list u98 u89 u101 u86))

(define-constant locked-liquidity (list 
	{ owner: 'SP1K8Y1JDM3MX9HNBS4MGYERRZSADVMZWASAPHPK3, pool-id: u89, amount: u1712000000000000000, end-burn-block: u896366 }
	{ owner: 'SP2360CKXRD856PFJH4KRGJ5WJARM1ES5KASN2Y89, pool-id: u101, amount: u28909778400000000000, end-burn-block: u896850 }
	{ owner: 'SPX7Z21BD3HR8VXQE6NS38KX6PY7V184KDVVYMZW, pool-id: u86, amount: u18000000000000000000, end-burn-block: u895563 }
	{ owner: 'SP2TT71CXBRDDYP2P8XMVKRFYKRGSMBWCZ6W6FDGT, pool-id: u98, amount: u937500000000, end-burn-block: u896707 }))

(define-constant burnt-liquidity (list 
	{ pool-id: u83, burnt-liquidity: u2040000000000000000000 }
	{ pool-id: u87, burnt-liquidity: u6591579831158855764 }
	{ pool-id: u93, burnt-liquidity: u26133867615531523318 }
	{ pool-id: u99, burnt-liquidity: u177479511232 }))

(define-private (sum-balance-fixed (holder principal) (acc uint))
		(+ acc (unwrap-panic (contract-call? 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-amm-pool-v2-01 get-balance-fixed nasty-pool-id holder))))

(define-private (burn-balance-fixed (holder principal) (acc uint))
	(let (
			(balance (unwrap-panic (contract-call? 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-amm-pool-v2-01 get-balance-fixed nasty-pool-id holder)))
			(new-balance (/ balance factor))
			(burn-balance (- balance new-balance)))
		(and (> burn-balance u0) (unwrap-panic (contract-call? 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-amm-pool-v2-01 burn-fixed nasty-pool-id burn-balance holder)))
		(+ acc new-balance)))

(define-private (transfer-liquidity (pool-id uint))
	(let (
			(balance (unwrap-panic (contract-call? 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-amm-pool-v2-01 get-balance-fixed pool-id 'SP1E0XBN9T4B10E9QMR7XMFJPMA19D77WY3KP2QKC.self-listing-helper-v2-03))))
		(try! (contract-call? 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-amm-pool-v2-01 burn-fixed pool-id balance 'SP1E0XBN9T4B10E9QMR7XMFJPMA19D77WY3KP2QKC.self-listing-helper-v2-03))
		(contract-call? 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-amm-pool-v2-01 mint-fixed pool-id balance .liquidity-locker)))

(define-private (check-err (result (response bool uint)) (prior (response bool uint)))
  (match prior ok-value result err-value (err err-value)))

(define-public (execute (sender principal))
	(let (
			(total-balance (fold sum-balance-fixed holders u0))
			(total-supply (unwrap-panic (contract-call? 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-amm-pool-v2-01 get-total-supply-fixed nasty-pool-id)))
			(pool-id-map (try! (contract-call? 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-registry-v2-01 get-pool-details-by-id nasty-pool-id)))
			(pool-details (try! (contract-call? 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-registry-v2-01 get-pool-details (get token-x pool-id-map) (get token-y pool-id-map) (get factor pool-id-map))))
			(new-total-balance (fold burn-balance-fixed holders u0))
			(new-total-supply (unwrap-panic (contract-call? 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-amm-pool-v2-01 get-total-supply-fixed nasty-pool-id))))
		(asserts! (is-eq total-balance total-supply) ERR-INVALID-TOTAL-SUPPLY)
		(asserts! (is-eq total-balance (get total-supply pool-details)) ERR-INVALID-TOTAL-SUPPLY)
		(asserts! (is-eq new-total-balance new-total-supply) ERR-INVALID-TOTAL-SUPPLY)
		(try! (contract-call? 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.amm-registry-v2-01 update-pool (get token-x pool-id-map) (get token-y pool-id-map) (get factor pool-id-map) (merge pool-details { total-supply: new-total-supply })))
		
		(try! (fold check-err (map transfer-liquidity locked-id) (ok true)))
		(try! (contract-call? .liquidity-locker set-locked-liquidity locked-liquidity))
		(try! (contract-call? .liquidity-locker set-burnt-liquidity burnt-liquidity))

		(try! (contract-call? .self-listing-helper-v2-03 reject-request u17 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex (some (unwrap-panic (to-consensus-buff? "please resubmit your request")))))

		(try! (contract-call? 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.executor-dao set-extensions (list 
			{ extension: 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.self-listing-helper-v2-01, enabled: false }
			{ extension: .self-listing-helper-v2-03, enabled: false }
			{ extension: .self-listing-helper-v2-04, enabled: true })))
		(try! (contract-call? .self-listing-helper-v2-04 approve-token-x 'SP2XD7417HGPRTREMKF748VNEQPDRR0RMANB7X1NK.token-abtc true u1000000))
		(try! (contract-call? .self-listing-helper-v2-04 approve-token-x 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex true u1000000000000))
		(try! (contract-call? .self-listing-helper-v2-04 approve-token-x 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-wstx-v2 true u180000000000))		

		(ok true)))

Functions (5)

FunctionAccessArgs
sum-balance-fixedprivateholder: principal, acc: uint
burn-balance-fixedprivateholder: principal, acc: uint
transfer-liquidityprivatepool-id: uint
check-errprivateresult: (response bool uint
executepublicsender: principal