import { Prisma, PrismaClient } from '@prisma/client';
import { Context } from '../../context';
import { ArticleWithRevisions } from '../../db/article';
export declare const deleteArticleById: (id: string, authenticate: Context['authenticate'], prisma: PrismaClient) => Promise<ArticleWithRevisions>;
type CreateArticleInput = Pick<Prisma.ArticleCreateInput, 'shared' | 'hidden'> & Omit<Prisma.ArticleRevisionCreateInput, 'properties' | 'revision'> & {
    properties: Prisma.MetadataPropertyCreateManyArticleRevisionInput[];
    authorIDs: Prisma.ArticleRevisionAuthorCreateManyRevisionInput['authorId'][];
    socialMediaAuthorIDs: Prisma.ArticleRevisionSocialMediaAuthorCreateManyRevisionInput['authorId'][];
};
export declare const createArticle: (input: CreateArticleInput, authenticate: Context['authenticate'], article: PrismaClient['article']) => Promise<{
    draft: {
        properties: (import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            key: string;
            value: string;
            public: boolean;
            articleRevisionId: string;
            pageRevisionId: string;
            subscriptionId: string;
            userId: string;
        }, unknown> & {})[];
        authors: (import("@prisma/client/runtime/library").GetResult<{
            revisionId: string;
            authorId: string;
        }, unknown> & {})[];
        socialMediaAuthors: (import("@prisma/client/runtime/library").GetResult<{
            revisionId: string;
            authorId: string;
        }, unknown> & {})[];
    } & import("@prisma/client/runtime/library").GetResult<{
        id: string;
        preTitle: string;
        title: string;
        lead: string;
        seoTitle: string;
        slug: string;
        tags: string[];
        canonicalUrl: string;
        imageID: string;
        breaking: boolean;
        blocks: Prisma.JsonValue;
        hideAuthor: boolean;
        socialMediaTitle: string;
        socialMediaDescription: string;
        socialMediaImageID: string;
        revision: number;
        createdAt: Date;
        modifiedAt: Date;
        updatedAt: Date;
        publishAt: Date;
        publishedAt: Date;
    }, unknown> & {};
    pending: {
        properties: (import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            key: string;
            value: string;
            public: boolean;
            articleRevisionId: string;
            pageRevisionId: string;
            subscriptionId: string;
            userId: string;
        }, unknown> & {})[];
        authors: (import("@prisma/client/runtime/library").GetResult<{
            revisionId: string;
            authorId: string;
        }, unknown> & {})[];
        socialMediaAuthors: (import("@prisma/client/runtime/library").GetResult<{
            revisionId: string;
            authorId: string;
        }, unknown> & {})[];
    } & import("@prisma/client/runtime/library").GetResult<{
        id: string;
        preTitle: string;
        title: string;
        lead: string;
        seoTitle: string;
        slug: string;
        tags: string[];
        canonicalUrl: string;
        imageID: string;
        breaking: boolean;
        blocks: Prisma.JsonValue;
        hideAuthor: boolean;
        socialMediaTitle: string;
        socialMediaDescription: string;
        socialMediaImageID: string;
        revision: number;
        createdAt: Date;
        modifiedAt: Date;
        updatedAt: Date;
        publishAt: Date;
        publishedAt: Date;
    }, unknown> & {};
    published: {
        properties: (import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            key: string;
            value: string;
            public: boolean;
            articleRevisionId: string;
            pageRevisionId: string;
            subscriptionId: string;
            userId: string;
        }, unknown> & {})[];
        authors: (import("@prisma/client/runtime/library").GetResult<{
            revisionId: string;
            authorId: string;
        }, unknown> & {})[];
        socialMediaAuthors: (import("@prisma/client/runtime/library").GetResult<{
            revisionId: string;
            authorId: string;
        }, unknown> & {})[];
    } & import("@prisma/client/runtime/library").GetResult<{
        id: string;
        preTitle: string;
        title: string;
        lead: string;
        seoTitle: string;
        slug: string;
        tags: string[];
        canonicalUrl: string;
        imageID: string;
        breaking: boolean;
        blocks: Prisma.JsonValue;
        hideAuthor: boolean;
        socialMediaTitle: string;
        socialMediaDescription: string;
        socialMediaImageID: string;
        revision: number;
        createdAt: Date;
        modifiedAt: Date;
        updatedAt: Date;
        publishAt: Date;
        publishedAt: Date;
    }, unknown> & {};
} & import("@prisma/client/runtime/library").GetResult<{
    id: string;
    createdAt: Date;
    modifiedAt: Date;
    publishedId: string;
    pendingId: string;
    draftId: string;
    shared: boolean;
    hidden: boolean;
}, unknown> & {}>;
export declare const duplicateArticle: (id: string, authenticate: Context['authenticate'], articles: Context['loaders']['articles'], articleClient: PrismaClient['article']) => Promise<ArticleWithRevisions>;
export declare const unpublishArticle: (id: string, authenticate: Context['authenticate'], articleClient: PrismaClient['article']) => Promise<ArticleWithRevisions>;
export declare const publishArticle: (id: string, input: Pick<Prisma.ArticleRevisionCreateInput, 'publishAt' | 'publishedAt' | 'updatedAt'>, authenticate: Context['authenticate'], prisma: PrismaClient) => Promise<ArticleWithRevisions | null>;
type UpdateArticleInput = Pick<Prisma.ArticleCreateInput, 'shared' | 'hidden'> & Omit<Prisma.ArticleRevisionCreateInput, 'revision' | 'properties'> & {
    properties: Prisma.MetadataPropertyUncheckedCreateWithoutArticleRevisionInput[];
    authorIDs: Prisma.ArticleRevisionAuthorCreateManyRevisionInput['authorId'][];
    socialMediaAuthorIDs: Prisma.ArticleRevisionSocialMediaAuthorCreateManyRevisionInput['authorId'][];
};
export declare const updateArticle: (id: string, { properties, authorIDs, socialMediaAuthorIDs, shared, hidden, ...input }: UpdateArticleInput, authenticate: Context['authenticate'], articleClient: PrismaClient['article']) => Promise<{
    draft: {
        properties: (import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            key: string;
            value: string;
            public: boolean;
            articleRevisionId: string;
            pageRevisionId: string;
            subscriptionId: string;
            userId: string;
        }, unknown> & {})[];
        authors: (import("@prisma/client/runtime/library").GetResult<{
            revisionId: string;
            authorId: string;
        }, unknown> & {})[];
        socialMediaAuthors: (import("@prisma/client/runtime/library").GetResult<{
            revisionId: string;
            authorId: string;
        }, unknown> & {})[];
    } & import("@prisma/client/runtime/library").GetResult<{
        id: string;
        preTitle: string;
        title: string;
        lead: string;
        seoTitle: string;
        slug: string;
        tags: string[];
        canonicalUrl: string;
        imageID: string;
        breaking: boolean;
        blocks: Prisma.JsonValue;
        hideAuthor: boolean;
        socialMediaTitle: string;
        socialMediaDescription: string;
        socialMediaImageID: string;
        revision: number;
        createdAt: Date;
        modifiedAt: Date;
        updatedAt: Date;
        publishAt: Date;
        publishedAt: Date;
    }, unknown> & {};
    pending: {
        properties: (import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            key: string;
            value: string;
            public: boolean;
            articleRevisionId: string;
            pageRevisionId: string;
            subscriptionId: string;
            userId: string;
        }, unknown> & {})[];
        authors: (import("@prisma/client/runtime/library").GetResult<{
            revisionId: string;
            authorId: string;
        }, unknown> & {})[];
        socialMediaAuthors: (import("@prisma/client/runtime/library").GetResult<{
            revisionId: string;
            authorId: string;
        }, unknown> & {})[];
    } & import("@prisma/client/runtime/library").GetResult<{
        id: string;
        preTitle: string;
        title: string;
        lead: string;
        seoTitle: string;
        slug: string;
        tags: string[];
        canonicalUrl: string;
        imageID: string;
        breaking: boolean;
        blocks: Prisma.JsonValue;
        hideAuthor: boolean;
        socialMediaTitle: string;
        socialMediaDescription: string;
        socialMediaImageID: string;
        revision: number;
        createdAt: Date;
        modifiedAt: Date;
        updatedAt: Date;
        publishAt: Date;
        publishedAt: Date;
    }, unknown> & {};
    published: {
        properties: (import("@prisma/client/runtime/library").GetResult<{
            id: string;
            createdAt: Date;
            modifiedAt: Date;
            key: string;
            value: string;
            public: boolean;
            articleRevisionId: string;
            pageRevisionId: string;
            subscriptionId: string;
            userId: string;
        }, unknown> & {})[];
        authors: (import("@prisma/client/runtime/library").GetResult<{
            revisionId: string;
            authorId: string;
        }, unknown> & {})[];
        socialMediaAuthors: (import("@prisma/client/runtime/library").GetResult<{
            revisionId: string;
            authorId: string;
        }, unknown> & {})[];
    } & import("@prisma/client/runtime/library").GetResult<{
        id: string;
        preTitle: string;
        title: string;
        lead: string;
        seoTitle: string;
        slug: string;
        tags: string[];
        canonicalUrl: string;
        imageID: string;
        breaking: boolean;
        blocks: Prisma.JsonValue;
        hideAuthor: boolean;
        socialMediaTitle: string;
        socialMediaDescription: string;
        socialMediaImageID: string;
        revision: number;
        createdAt: Date;
        modifiedAt: Date;
        updatedAt: Date;
        publishAt: Date;
        publishedAt: Date;
    }, unknown> & {};
} & import("@prisma/client/runtime/library").GetResult<{
    id: string;
    createdAt: Date;
    modifiedAt: Date;
    publishedId: string;
    pendingId: string;
    draftId: string;
    shared: boolean;
    hidden: boolean;
}, unknown> & {}>;
export {};
