Source Code

;; service-agreement-trait.clar
;; Trait for service agreement management in ClearDeal
;; Defines standard interface for service terms and lifecycle

(define-trait service-agreement-trait
  (
    ;; Create a new service agreement
    (create-agreement (
      principal
      principal
      (string-utf8 256)
      uint
      uint
      uint
    ) (response uint uint))

    ;; Accept agreement (buyer accepts terms)
    (accept-agreement (uint) (response bool uint))

    ;; Start work on agreement
    (start-work (uint) (response bool uint))

    ;; Submit deliverable
    (submit-deliverable (uint (string-ascii 256)) (response bool uint))

    ;; Request revision
    (request-revision (uint (string-utf8 512)) (response bool uint))

    ;; Complete agreement
    (complete-agreement (uint) (response bool uint))

    ;; Cancel agreement
    (cancel-agreement (uint (string-utf8 256)) (response bool uint))

    ;; Get agreement details
    (get-agreement (uint) (response {
      seller: principal,
      buyer: (optional principal),
      title: (string-utf8 256),
      price: uint,
      deadline: uint,
      revisions-allowed: uint,
      revisions-used: uint,
      status: (string-ascii 20),
      created-at: uint
    } uint))

    ;; Check if agreement is active
    (is-active (uint) (response bool uint))
  )
)