import { NOTIFICATION_POSITION_OPTIONS } from './utils';
import { CommentsVisibility, Post, PostStatus, ResponseType, Button, ShownAuthor, StatusOption, Topic } from '@parlor/common';
import { RenderAdminSelectorProps } from '../select';
import { ON_OFF_OPTIONS } from './components/post-content/components/interaction-options';
import { IContentModule } from '@parlor/ui';
export declare enum ActiveTab {
    Preview = "preview",
    Responses = "responses"
}
export type PostConfigureFormValues = {
    buttons: Partial<Omit<Button, 'organization' | 'post'>>[];
    commentsVisibility: CommentsVisibility;
    description: string;
    featuredImage?: string;
    id?: string;
    lastPublishedDate?: string;
    linkButtonTheme?: string;
    media?: string;
    notificationDescription?: string;
    notificationPosition?: (typeof NOTIFICATION_POSITION_OPTIONS)[number];
    notificationResponseMech?: boolean;
    originalPostID?: string;
    owner?: RenderAdminSelectorProps;
    publishedDate?: string;
    responseMech?: ResponseType | null;
    showComments?: (typeof ON_OFF_OPTIONS)[number];
    showFeaturedImage?: boolean;
    showResponseMechCounts?: boolean;
    shownAuthor?: ShownAuthor | null;
    status?: PostStatus;
    statusOption?: StatusOption;
    title?: string;
    topic?: Topic;
    version: number;
    firstLabel?: string;
    secondLabel?: string;
};
export type QueryParams = {
    configurePostId?: string;
    modal: 'create-post';
    postId?: string;
};
export type PostCounts = {
    commentsTotalCount: Post['commentsAggregate'];
    responsesCounts?: {
        total: number;
        totalUnique: number;
        uniqueAdmins: number;
        uniqueUsers: number;
    };
    responsesDontLikeCount: Post['responsesAggregate'];
    responsesLikeCount: Post['responsesAggregate'];
    responsesNegativeCount: Post['responsesAggregate'];
    responsesNeutralCount: Post['responsesAggregate'];
    responsesPositiveCount: Post['responsesAggregate'];
    responsesTotalCount: Post['responsesAggregate'];
    responsesVoteCount: Post['responsesAggregate'];
};
export type PostWithResponses = Post & PostCounts & {
    adminResponses: Post['responses'];
    items?: IContentModule.FormValues.ExtendedSaveValueForPosts[];
};
export type PostCount = {
    down: number;
    negative: number;
    neutral: number;
    positive: number;
    total: number;
    up: number;
    vote: number;
    votes?: number;
};
export type PostAction = (post?: Post) => Promise<unknown>;
export interface PostActions {
    onArchive: PostAction;
    onDelete: PostAction;
    onEdit(post: Post): void;
    onPin: PostAction;
}
export declare enum ModalType {
    Archive = "archive",
    Delete = "delete",
    Pin = "pin"
}
export interface PostItemProps extends Pick<PostActions, 'onPin' | 'onEdit'> {
    isLoading?: boolean;
    isPinned?: boolean;
    isWide?: boolean;
    onClose?: () => void;
    post: PostWithResponses;
    toggleModal: (modalType?: ModalType) => void;
    toggleWide?: () => void;
    type?: 'default' | 'sidebar' | 'overview' | 'voting-post';
}
