/**
 * Get and handle a particular post by it's tag and hash
 * @module Post
 * @group Posts
 */
export interface PostContent {
    title?: string;
    statement?: string;
    cover?: string;
    icon?: string;
    youtube?: string;
    content?: string;
    raw?: string;
    text?: string;
}
/**
 * @example
 * {
 *  "empty": false,
 *  "tag": "ds",
 *  "hash": "C8trDBYNyvxVedHK4Q0IuUarc/k2/iiv8opPfoAU0xA=",
 *  "data": {
 *    "cover": "data:image/png;base64,..........",
 *    "icon": "data:image/png;base64,..........",
 *    "title": "OSS",
 *    "statement": "New live album by tsoop",
 *    "youtube": "K2MwpOd8vEI",
 *    "content": "It's mostly op-z + op-1 with my own Unity visuals based on [Chromatone](https://chromatone.center) system.\n\n### 2021\nFirst played live at April 20th **2021**.\n\n### Into 2022\nIt's an ongoing live album to be recorded throughout the **2022**."
 * },
 *  "timestamp": 1642590655747,
 *  "lastUpdated": "1d"
 * }
 */
export interface Post {
    empty?: boolean;
    tag?: string;
    hash?: string;
    data?: PostContent;
    download?: Function;
    timestamp?: number;
    lastUpdated?: string;
}
/**
 * An interface to manage a post
 * @example
 * const post = usePost({ tag: 'tag', hash: postHash })
 */
export declare function usePost({ hash, loadMedia }: {
    tag?: string;
    hash: string;
    loadMedia?: boolean;
}): {
    post: PostContent;
    download: () => Promise<void>;
    downloading: import("vue").Ref<boolean>;
};
/**
 * Add a new post to a tag
 * @example
 * import { addPost } from '@gun-vue/composables'
 *
 * addPost('MyTag', {
 *  title: 'New post'
 * })
 */
export declare function addPost(to: any, post: any): Promise<void>;
/**
 * Download the post as a zip file with MD contents and icon and cover pictures if present
 * @param {Post} post
 * @example
 * import { downloadPost, usePost } from '@gun-vue/composables'
 *
 * const {post} = usePost( postTag, postHash )
 *
 * downloadPost(post)
 */
export declare function downloadPost(post: PostContent): Promise<boolean>;
export declare function loadFromHash(category: string, hash: string): Promise<string>;
/**
 * Parse a post string from db
 * @returns {Object} Post object
 */
export declare function parsePost(data: string): Promise<string>;
/**
 * Get and update the timestamp of an immutable post
 */
export declare function usePostTimestamp({ hash }: {
    hash: string;
}): {
    timestamp: import("vue").Ref<number>;
    msTime: import("vue").ComputedRef<string>;
    refresh: () => Promise<void>;
};
