import { AccelbyteSDK } from '@accelbyte/sdk';
import { z } from 'zod';
import React from 'react';

declare class PermissionUtils {
    static checkNewsAdminPermission: (sdk: AccelbyteSDK, accessToken?: string | undefined) => Promise<boolean>;
}

declare enum NewsStatus {
    DRAFT = "DRAFT",
    PUBLISHED = "PUBLISHED"
}
declare enum CategoryStatus {
    VISIBLE = "VISIBLE",
    HIDDEN = "HIDDEN"
}
declare const Category: z.ZodObject<{
    id: z.ZodString;
    namespace: z.ZodString;
    name: z.ZodString;
    slug: z.ZodString;
    status: z.ZodEnum<[CategoryStatus.HIDDEN, CategoryStatus.VISIBLE]>;
    createdAt: z.ZodNullable<z.ZodOptional<z.ZodString>>;
    updatedAt: z.ZodNullable<z.ZodOptional<z.ZodString>>;
}, "strip", z.ZodTypeAny, {
    updatedAt?: string | null | undefined;
    createdAt?: string | null | undefined;
    status: CategoryStatus;
    name: string;
    namespace: string;
    id: string;
    slug: string;
}, {
    updatedAt?: string | null | undefined;
    createdAt?: string | null | undefined;
    status: CategoryStatus;
    name: string;
    namespace: string;
    id: string;
    slug: string;
}>;
interface Category extends z.TypeOf<typeof Category> {
}
declare const CategoryList: z.ZodObject<{
    data: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        namespace: z.ZodString;
        name: z.ZodString;
        slug: z.ZodString;
        status: z.ZodEnum<[CategoryStatus.HIDDEN, CategoryStatus.VISIBLE]>;
        createdAt: z.ZodNullable<z.ZodOptional<z.ZodString>>;
        updatedAt: z.ZodNullable<z.ZodOptional<z.ZodString>>;
    }, "strip", z.ZodTypeAny, {
        updatedAt?: string | null | undefined;
        createdAt?: string | null | undefined;
        status: CategoryStatus;
        name: string;
        namespace: string;
        id: string;
        slug: string;
    }, {
        updatedAt?: string | null | undefined;
        createdAt?: string | null | undefined;
        status: CategoryStatus;
        name: string;
        namespace: string;
        id: string;
        slug: string;
    }>, "many">;
    paging: z.ZodObject<{
        previous: z.ZodNullable<z.ZodOptional<z.ZodString>>;
        next: z.ZodNullable<z.ZodOptional<z.ZodString>>;
    }, "strip", z.ZodTypeAny, {
        next?: string | null | undefined;
        previous?: string | null | undefined;
    }, {
        next?: string | null | undefined;
        previous?: string | null | undefined;
    }>;
}, "strip", z.ZodTypeAny, {
    data: {
        updatedAt?: string | null | undefined;
        createdAt?: string | null | undefined;
        status: CategoryStatus;
        name: string;
        namespace: string;
        id: string;
        slug: string;
    }[];
    paging: {
        next?: string | null | undefined;
        previous?: string | null | undefined;
    };
}, {
    data: {
        updatedAt?: string | null | undefined;
        createdAt?: string | null | undefined;
        status: CategoryStatus;
        name: string;
        namespace: string;
        id: string;
        slug: string;
    }[];
    paging: {
        next?: string | null | undefined;
        previous?: string | null | undefined;
    };
}>;
interface CategoryList extends z.TypeOf<typeof CategoryList> {
}
declare const News: z.ZodObject<{
    id: z.ZodString;
    namespace: z.ZodString;
    title: z.ZodString;
    metaDescription: z.ZodNullable<z.ZodOptional<z.ZodString>>;
    slug: z.ZodString;
    smallThumbnail: z.ZodNullable<z.ZodOptional<z.ZodString>>;
    largeThumbnail: z.ZodNullable<z.ZodOptional<z.ZodString>>;
    featured: z.ZodNullable<z.ZodOptional<z.ZodBoolean>>;
    featuredDisplayOrder: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
    status: z.ZodEnum<[NewsStatus.DRAFT, NewsStatus.PUBLISHED]>;
    htmlContent: z.ZodNullable<z.ZodOptional<z.ZodString>>;
    categories: z.ZodNullable<z.ZodOptional<z.ZodArray<z.ZodObject<Pick<{
        id: z.ZodString;
        namespace: z.ZodString;
        name: z.ZodString;
        slug: z.ZodString;
        status: z.ZodEnum<[CategoryStatus.HIDDEN, CategoryStatus.VISIBLE]>;
        createdAt: z.ZodNullable<z.ZodOptional<z.ZodString>>;
        updatedAt: z.ZodNullable<z.ZodOptional<z.ZodString>>;
    }, "status" | "name" | "id" | "slug">, "strip", z.ZodTypeAny, {
        status: CategoryStatus;
        name: string;
        id: string;
        slug: string;
    }, {
        status: CategoryStatus;
        name: string;
        id: string;
        slug: string;
    }>, "many">>>;
    createdAt: z.ZodString;
    publishedAt: z.ZodNullable<z.ZodOptional<z.ZodString>>;
    updatedAt: z.ZodNullable<z.ZodOptional<z.ZodString>>;
}, "strip", z.ZodTypeAny, {
    updatedAt?: string | null | undefined;
    categories?: {
        status: CategoryStatus;
        name: string;
        id: string;
        slug: string;
    }[] | null | undefined;
    publishedAt?: string | null | undefined;
    featured?: boolean | null | undefined;
    metaDescription?: string | null | undefined;
    smallThumbnail?: string | null | undefined;
    largeThumbnail?: string | null | undefined;
    featuredDisplayOrder?: number | null | undefined;
    htmlContent?: string | null | undefined;
    status: NewsStatus;
    namespace: string;
    title: string;
    id: string;
    createdAt: string;
    slug: string;
}, {
    updatedAt?: string | null | undefined;
    categories?: {
        status: CategoryStatus;
        name: string;
        id: string;
        slug: string;
    }[] | null | undefined;
    publishedAt?: string | null | undefined;
    featured?: boolean | null | undefined;
    metaDescription?: string | null | undefined;
    smallThumbnail?: string | null | undefined;
    largeThumbnail?: string | null | undefined;
    featuredDisplayOrder?: number | null | undefined;
    htmlContent?: string | null | undefined;
    status: NewsStatus;
    namespace: string;
    title: string;
    id: string;
    createdAt: string;
    slug: string;
}>;
interface News extends z.TypeOf<typeof News> {
}
declare const NewsList: z.ZodObject<{
    data: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        namespace: z.ZodString;
        title: z.ZodString;
        metaDescription: z.ZodNullable<z.ZodOptional<z.ZodString>>;
        slug: z.ZodString;
        smallThumbnail: z.ZodNullable<z.ZodOptional<z.ZodString>>;
        largeThumbnail: z.ZodNullable<z.ZodOptional<z.ZodString>>;
        featured: z.ZodNullable<z.ZodOptional<z.ZodBoolean>>;
        featuredDisplayOrder: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
        status: z.ZodEnum<[NewsStatus.DRAFT, NewsStatus.PUBLISHED]>;
        htmlContent: z.ZodNullable<z.ZodOptional<z.ZodString>>;
        categories: z.ZodNullable<z.ZodOptional<z.ZodArray<z.ZodObject<Pick<{
            id: z.ZodString;
            namespace: z.ZodString;
            name: z.ZodString;
            slug: z.ZodString;
            status: z.ZodEnum<[CategoryStatus.HIDDEN, CategoryStatus.VISIBLE]>;
            createdAt: z.ZodNullable<z.ZodOptional<z.ZodString>>;
            updatedAt: z.ZodNullable<z.ZodOptional<z.ZodString>>;
        }, "status" | "name" | "id" | "slug">, "strip", z.ZodTypeAny, {
            status: CategoryStatus;
            name: string;
            id: string;
            slug: string;
        }, {
            status: CategoryStatus;
            name: string;
            id: string;
            slug: string;
        }>, "many">>>;
        createdAt: z.ZodString;
        publishedAt: z.ZodNullable<z.ZodOptional<z.ZodString>>;
        updatedAt: z.ZodNullable<z.ZodOptional<z.ZodString>>;
    }, "strip", z.ZodTypeAny, {
        updatedAt?: string | null | undefined;
        categories?: {
            status: CategoryStatus;
            name: string;
            id: string;
            slug: string;
        }[] | null | undefined;
        publishedAt?: string | null | undefined;
        featured?: boolean | null | undefined;
        metaDescription?: string | null | undefined;
        smallThumbnail?: string | null | undefined;
        largeThumbnail?: string | null | undefined;
        featuredDisplayOrder?: number | null | undefined;
        htmlContent?: string | null | undefined;
        status: NewsStatus;
        namespace: string;
        title: string;
        id: string;
        createdAt: string;
        slug: string;
    }, {
        updatedAt?: string | null | undefined;
        categories?: {
            status: CategoryStatus;
            name: string;
            id: string;
            slug: string;
        }[] | null | undefined;
        publishedAt?: string | null | undefined;
        featured?: boolean | null | undefined;
        metaDescription?: string | null | undefined;
        smallThumbnail?: string | null | undefined;
        largeThumbnail?: string | null | undefined;
        featuredDisplayOrder?: number | null | undefined;
        htmlContent?: string | null | undefined;
        status: NewsStatus;
        namespace: string;
        title: string;
        id: string;
        createdAt: string;
        slug: string;
    }>, "many">;
    paging: z.ZodObject<{
        previous: z.ZodNullable<z.ZodOptional<z.ZodString>>;
        next: z.ZodNullable<z.ZodOptional<z.ZodString>>;
    }, "strip", z.ZodTypeAny, {
        next?: string | null | undefined;
        previous?: string | null | undefined;
    }, {
        next?: string | null | undefined;
        previous?: string | null | undefined;
    }>;
}, "strip", z.ZodTypeAny, {
    data: {
        updatedAt?: string | null | undefined;
        categories?: {
            status: CategoryStatus;
            name: string;
            id: string;
            slug: string;
        }[] | null | undefined;
        publishedAt?: string | null | undefined;
        featured?: boolean | null | undefined;
        metaDescription?: string | null | undefined;
        smallThumbnail?: string | null | undefined;
        largeThumbnail?: string | null | undefined;
        featuredDisplayOrder?: number | null | undefined;
        htmlContent?: string | null | undefined;
        status: NewsStatus;
        namespace: string;
        title: string;
        id: string;
        createdAt: string;
        slug: string;
    }[];
    paging: {
        next?: string | null | undefined;
        previous?: string | null | undefined;
    };
}, {
    data: {
        updatedAt?: string | null | undefined;
        categories?: {
            status: CategoryStatus;
            name: string;
            id: string;
            slug: string;
        }[] | null | undefined;
        publishedAt?: string | null | undefined;
        featured?: boolean | null | undefined;
        metaDescription?: string | null | undefined;
        smallThumbnail?: string | null | undefined;
        largeThumbnail?: string | null | undefined;
        featuredDisplayOrder?: number | null | undefined;
        htmlContent?: string | null | undefined;
        status: NewsStatus;
        namespace: string;
        title: string;
        id: string;
        createdAt: string;
        slug: string;
    }[];
    paging: {
        next?: string | null | undefined;
        previous?: string | null | undefined;
    };
}>;
interface NewsList extends z.TypeOf<typeof NewsList> {
}
declare const NewsSearchList: z.ZodObject<{
    data: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        namespace: z.ZodString;
        title: z.ZodString;
        slug: z.ZodString;
        titleHeadline: z.ZodString;
        bodyHeadline: z.ZodNullable<z.ZodOptional<z.ZodString>>;
    }, "strip", z.ZodTypeAny, {
        bodyHeadline?: string | null | undefined;
        namespace: string;
        title: string;
        id: string;
        slug: string;
        titleHeadline: string;
    }, {
        bodyHeadline?: string | null | undefined;
        namespace: string;
        title: string;
        id: string;
        slug: string;
        titleHeadline: string;
    }>, "many">;
    paging: z.ZodObject<{
        previous: z.ZodNullable<z.ZodOptional<z.ZodString>>;
        next: z.ZodNullable<z.ZodOptional<z.ZodString>>;
    }, "strip", z.ZodTypeAny, {
        next?: string | null | undefined;
        previous?: string | null | undefined;
    }, {
        next?: string | null | undefined;
        previous?: string | null | undefined;
    }>;
}, "strip", z.ZodTypeAny, {
    data: {
        bodyHeadline?: string | null | undefined;
        namespace: string;
        title: string;
        id: string;
        slug: string;
        titleHeadline: string;
    }[];
    paging: {
        next?: string | null | undefined;
        previous?: string | null | undefined;
    };
}, {
    data: {
        bodyHeadline?: string | null | undefined;
        namespace: string;
        title: string;
        id: string;
        slug: string;
        titleHeadline: string;
    }[];
    paging: {
        next?: string | null | undefined;
        previous?: string | null | undefined;
    };
}>;
interface NewsSearchList extends z.TypeOf<typeof NewsSearchList> {
}

interface NewsCategoryWidgetProps {
    newsList: NewsList;
    categoryList: CategoryList;
    selectedCategory: Category | null;
    isAdmin: boolean;
    isLoadingMore: boolean;
    onLoadMore: (sdk: AccelbyteSDK) => void;
    onLoadMoreCategory: (sdk: AccelbyteSDK) => void;
    isLoadingMoreCategory: boolean;
}
declare const NewsCategoryWidget: ({ newsList, onLoadMore, isAdmin, categoryList, isLoadingMore, selectedCategory, onLoadMoreCategory, isLoadingMoreCategory }: NewsCategoryWidgetProps) => JSX.Element;

interface NewsDetailWidgetProps {
    newsDetail: News;
    newsList: NewsList;
    categorySlug?: string;
    fromLauncher?: boolean;
}
declare const NewsDetailWidget: ({ newsDetail, newsList, categorySlug, fromLauncher }: NewsDetailWidgetProps) => JSX.Element;

declare type NewsListFetcherParams = {
    sdk: AccelbyteSDK;
    offset?: string;
    limit?: string;
    featured?: boolean;
    query?: string;
};
declare type NewsListBySlugFetcherParams = {
    sdk: AccelbyteSDK;
    slug: string;
};
interface NewsListByCategoryFetcherProps extends NewsListFetcherParams {
    categorySlug: string;
}
declare const newsListFetcher: ({ sdk, offset, limit, featured }: NewsListFetcherParams) => Promise<NewsList>;
declare const newsDetailFetcher: ({ sdk, slug }: NewsListBySlugFetcherParams) => Promise<News>;
declare const newsListByCategoryFetcher: ({ sdk, offset, limit, categorySlug }: NewsListByCategoryFetcherProps) => Promise<NewsList>;
declare const categoriesFetcher: ({ sdk, offset, limit }: NewsListFetcherParams) => Promise<CategoryList>;
declare const categoryFetcher: ({ sdk, categorySlug }: {
    sdk: AccelbyteSDK;
    categorySlug: string;
}) => Promise<Category>;
declare const newsSearchFetcher: ({ sdk, offset, limit, query }: NewsListFetcherParams) => Promise<NewsSearchList>;

interface NewsPageWidgetProps {
    newsList: NewsList;
    featuredNewsList: NewsList;
    isAdmin: boolean;
    isLoadingMore: boolean;
    onLoadMore: (sdk: AccelbyteSDK) => void;
    manageNewsURL?: string;
}
declare const NewsPageWidget: ({ newsList, featuredNewsList, onLoadMore, isAdmin, isLoadingMore, manageNewsURL }: NewsPageWidgetProps) => JSX.Element;

interface NewsSearchWidgetProps {
    newsList: NewsList;
    isLoadingMore: boolean;
    onLoadMore: () => void;
    searchKeyword: string;
}
declare const NewsSearchWidget: ({ newsList, onLoadMore, isLoadingMore, searchKeyword }: NewsSearchWidgetProps) => JSX.Element;

declare function NewsListFeaturedPageWidget(): JSX.Element;

declare function NewsListPageWidget(): JSX.Element;

declare function CreateNewsPageWidget(): JSX.Element;

declare function EditNewsPageWidget({ newsId }: {
    newsId: string;
}): JSX.Element;

declare function CategoriesPageWidget(): JSX.Element;

declare function CreateCategoryPageWidget(): JSX.Element;

declare function EditCategoryPageWidget({ id }: {
    id: string;
}): JSX.Element;

declare function ManageContentPageWidget({ children }: {
    children: React.ReactNode;
}): JSX.Element;

export { CategoriesPageWidget, CreateCategoryPageWidget, CreateNewsPageWidget, EditCategoryPageWidget, EditNewsPageWidget, ManageContentPageWidget, NewsCategoryWidget, NewsCategoryWidgetProps, NewsDetailWidget, NewsDetailWidgetProps, NewsListFeaturedPageWidget, NewsListPageWidget, NewsPageWidget, NewsSearchWidget, PermissionUtils, categoriesFetcher, categoryFetcher, newsDetailFetcher, newsListByCategoryFetcher, newsListFetcher, newsSearchFetcher };
