import { Command } from "commander";
export type Item = {
    id: string;
};
export type File = Item & {
    title: string;
    description: string;
    type: string;
    filename_disk: string;
    filename_download: string;
};
export type Category = {
    id?: number;
    name: string;
    site: string;
};
export type RemotePost = Item & {
    site_id: string;
    title: string;
    description: string;
    description_twitter: string;
    description_facebook: string;
    headline: string;
    content: string;
    slug: string;
    published: string;
    sources?: Array<{
        text: string;
        url: string;
    }>;
    image: File;
    image_thumbnail?: File;
    author: string;
    tags: Array<{
        site_entry_tags_id: {
            id: number;
            name: string;
        };
    }>;
    categories: Array<{
        site_entry_categories_id: {
            name: string;
        };
    }>;
    json_ld: string;
    status: 'draft' | 'unapproved' | 'approved' | 'archived';
    front_matter: string;
};
export type Post = {
    content: string;
    metadata: BlogFrontMatter;
    sources?: Array<{
        text: string;
        url: string;
    }>;
    file_path: string;
};
export type BlogFrontMatter = FrontMatter & {
    headline: string;
    categories: Array<string>;
    tags: Array<string>;
    authors: Array<string>;
    image?: {
        src: string;
        alt?: string;
    };
    image_thumbnail?: {
        src: string;
        alt?: string;
    };
};
export type RemotePageKey = Item & {
    id: string;
    slug: string;
    parent_page?: {
        id: string;
        slug: string;
    };
};
export type RemotePage = RemotePageKey & {
    title: string;
    description: string;
    content: string;
    json_ld: string;
    status: 'draft' | 'published' | 'archived';
    front_matter: string;
    sort: number;
    date_created: string;
    sources?: Array<{
        text: string;
        url: string;
    }>;
    sections: Array<PageSection>;
};
export type PageSection = Item & {
    name: string;
    page_id: string;
    type?: 'section' | 'content';
    section?: string;
    style?: 'base' | 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';
    align?: 'left' | 'center' | 'right';
    content?: string | boolean;
    data?: string;
    images?: Array<File & {
        alt: string;
        src: string;
    }>;
    image?: File & {
        alt: string;
        src: string;
    };
    items?: Array<PageSectionItem>;
    source?: string;
    path?: string;
    sort: number;
};
export type PageSectionItem = Item & {
    section: string;
    item: string;
    style?: string;
    align?: string;
    content?: string;
    data?: string;
    image?: File & {
        alt: string;
        src: string;
    };
    sort: number;
} & Record<string, any>;
export type FrontMatter = {
    id: string;
    title: string;
    description: string;
    slug?: string;
    menu: string;
    draft?: boolean;
    json_id?: string;
    published?: string;
    url?: string;
    sections?: Array<PageSection>;
} & Record<string, any>;
export type Page = {
    content: string;
    metadata: FrontMatter;
    sources?: Array<{
        text: string;
        url: string;
    }>;
    file_path: string;
};
export type Site = {
    blog: {
        entries: Array<RemotePost>;
    };
    pages: Array<RemotePage>;
    data_files: Array<SiteData>;
};
export type SiteData = {
    id: string;
    site: string;
    filename: string;
    data: string;
};
export type IRegisterCommand = (program: Command) => void;
