Source Code

;; SPDX-License-Identifier: BUSL-1.1
(impl-trait 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.extension-trait.extension-trait)

(use-trait ft-trait 'SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.trait-sip-010.sip-010-trait)

(define-constant err-token-not-approved (err u1002))

(define-constant ONE_8 u100000000)

(define-public (request-create-and-finalize
    (request-details {
        token-x: principal, token-y: principal, factor: uint,
        bal-x: uint, bal-y: uint,
        fee-rate-x: uint, fee-rate-y: uint,
        max-in-ratio: uint, max-out-ratio: uint,
        threshold-x: uint, threshold-y: uint,
        oracle-enabled: bool, oracle-average: uint,
        start-block: uint,
        memo: (optional (buff 256)),
				lock: (buff 1) }) (token-x-trait <ft-trait>) (token-y-trait <ft-trait>))
	(let (
			(request-id (try! (contract-call? .self-listing-helper-v2-04 request-create-and-fund request-details token-x-trait token-y-trait))))
		(asserts! (contract-call? .self-listing-helper-v2-04 get-approved-token-y-or-default (contract-of token-y-trait)) err-token-not-approved)		
		(as-contract (try! (contract-call? .self-listing-helper-v2-04 approve-request request-id (contract-of token-y-trait) none)))
		(contract-call? .self-listing-helper-v2-04 finalize-request request-id token-x-trait token-y-trait)))

(define-public (callback (sender principal) (payload (buff 2048)))
	(ok true))

;; private calls

Functions (2)

FunctionAccessArgs
request-create-and-finalizepublicrequest-details: { token-x: principal, token-y: principal, factor: uint, bal-x: uint, bal-y: uint, fee-rate-x: uint, fee-rate-y: uint, max-in-ratio: uint, max-out-ratio: uint, threshold-x: uint, threshold-y: uint, oracle-enabled: bool, oracle-average: uint, start-block: uint, memo: (optional (buff 256
callbackpublicsender: principal, payload: (buff 2048