<?php
    /**
     * Interface: Feather
     * Describes the functions required by Feather implementations.
     */
    interface Feather {
        /**
         * Function: submit
         * Handles post submitting.
         *
         * Returns:
         *     The <Post> object created.
         */
        public function submit(): Post;

        /**
         * Function: update
         * Handles updating a post.
         */
        public function update($post): Post|false;

        /**
         * Function: title
         * Returns the appropriate source to be treated as a "title" of a post.
         * If there is no immediate solution, you may use <Post.title_from_excerpt>.
         */
        public function title($post): string;

        /**
         * Function: excerpt
         * Returns the appropriate source, unmodified, to be used as an excerpt of a post.
         */
        public function excerpt($post): string;

        /**
         * Function: feed_content
         * Returns the appropriate content for a feed.
         */
        public function feed_content($post): string;
    }