import React, { FC, ReactNode } from 'react';
import * as react_jsx_runtime from 'react/jsx-runtime';
import * as styled_components_dist_types from 'styled-components/dist/types';
import * as styled_components from 'styled-components';
import { AnalyticsSourceTypeEnum, FeedSourceEnum } from '@amityco/ts-sdk';

/**
 * UIKit v4 — String Resolution Chain (Levels 2–5)
 *
 * Implements the priority chain from the UIKit Cross-Platform Localization Spec §1:
 *
 *   Level 1: Config text (remote)  — handled by useAmityElement / CustomizationProvider
 *   Level 2: Programmatic override — setStringOverrides / clearStringOverrides
 *   Level 3: Locale bundle         — setLocaleBundle / clearLocaleBundle
 *   Level 4: Library default       — defaultLocaleBundle (auto-generated en.ts)
 *   Level 5: Key name fallback     — returns the raw key string
 *
 * Usage:
 *   import { resolveString } from '~/v4/core/localization/resolveString';
 *   const text = resolveString('amity_social_create_post');
 *   const text = resolveString('amity_social_items_count', 42);  // format arg
 */
type LocaleBundle = Record<string, string>;

type AmityReactionType = {
    name: string;
    image: string;
};

type IconConfiguration = {
    icon?: string;
    image?: string;
};
type TextConfiguration = {
    text?: string;
};
type CustomConfiguration = {
    [key: string]: string | undefined | boolean | Array<string> | number | Record<string, unknown>;
};
type ThemeConfiguration = {
    preferred_theme?: 'light' | 'dark' | 'default';
    theme?: {
        light?: Partial<Theme['light']>;
        dark?: Partial<Theme['dark']>;
    };
};
type ConfigurableThemeValue = {
    primary_color: string;
    secondary_color: string;
    secondary_shade1_color: string;
    secondary_shade2_color: string;
    secondary_shade3_color: string;
    secondary_shade4_color: string;
    base_color: string;
    base_shade1_color: string;
    base_shade2_color: string;
    base_shade3_color: string;
    base_shade4_color: string;
    base_shade5_color: string;
    alert_color: string;
    background_color: string;
    base_inverse_color: string;
};
type Theme = {
    light: ConfigurableThemeValue;
    dark: ConfigurableThemeValue;
};
type GetConfigReturnValue = IconConfiguration & TextConfiguration & ThemeConfiguration & CustomConfiguration;
type DefaultConfig = {
    preferred_theme: 'light' | 'dark' | 'default';
    theme: {
        light: Theme['light'];
        dark: Theme['dark'];
    };
    excludes: string[];
    customizations?: {
        [key: string]: GetConfigReturnValue;
    };
};

type NetworkConfig = {
    config: DefaultConfig;
};
declare const enum UserAccessTypes {
    ALL = "all",
    SIGNED_IN_USER_ONLY = "singed_in_user_only",
    NONE = "none"
}
type UserAccess = `${UserAccessTypes}`;
interface Config {
    preferred_theme?: 'light' | 'dark' | 'default';
    theme?: {
        light?: Theme['light'];
        dark?: Theme['dark'];
    };
    excludes?: string[];
    message_reactions?: AmityReactionType[];
    social_reactions?: AmityReactionType[];
    customizations?: {
        [key: string]: GetConfigReturnValue;
    };
    feature_flags?: {
        post?: {
            clip?: {
                can_create: UserAccess;
                can_view_tab: UserAccess;
            };
        };
    };
}

interface PostDetailPageProps {
    id: string;
    hideTarget?: boolean;
    category?: AmityPostCategory;
    commentId?: string;
    rootId?: string;
    parentId?: string;
    posts?: Amity.Post<'clip' | 'video'>[];
    selectedReplyComment?: Amity.Comment;
    showReplyCommentAt?: string;
    keyword?: string;
    isFromCommentClick?: boolean;
    eventCreatorId?: Amity.Event['userId'];
}
interface GoToPostDetailPageParams extends Omit<PostDetailPageProps, 'id'> {
    postId: string;
}
declare function PostDetailPage({ id, hideTarget, category, commentId, rootId, parentId, posts, selectedReplyComment, showReplyCommentAt, keyword, isFromCommentClick, eventCreatorId, }: PostDetailPageProps): react_jsx_runtime.JSX.Element | null;

declare enum AmityPostContentComponentStyle {
    FEED = "feed",
    DETAIL = "detail"
}
declare enum AmityPostCategory {
    GENERAL = "general",
    ANNOUNCEMENT = "announcement",
    PIN = "pin",
    PIN_AND_ANNOUNCEMENT = "pin_and_announcement"
}
interface PostContentProps {
    post: Amity.Post;
    onClick?: (context?: Pick<PostDetailPageProps, 'commentId' | 'selectedReplyComment' | 'parentId' | 'showReplyCommentAt' | 'isFromCommentClick'>) => void;
    onPostDeleted?: (post: Amity.Post) => void;
    onPollPostDeleted?: (post: Amity.Post) => void;
    style: AmityPostContentComponentStyle;
    category: AmityPostCategory;
    hideMenu?: boolean;
    hideTarget?: boolean;
    pageId?: string;
    disabledContent?: boolean;
    isGlobalFeaturePost?: boolean;
    className?: string;
    keyword?: string;
    isSearchPost?: boolean;
    expandAllContent?: boolean;
    eventCreatorId?: Amity.Event['userId'];
}
declare const PostContent: ({ pageId, post, onClick, onPostDeleted, onPollPostDeleted, category, hideMenu, hideTarget, style, disabledContent, isGlobalFeaturePost, className, keyword, isSearchPost, expandAllContent, eventCreatorId, }: PostContentProps) => react_jsx_runtime.JSX.Element;

declare enum EventSetupMode {
    CREATE = "create",
    EDIT = "edit"
}
type CreateEventOptions = {
    targetId: string;
    targetName: string;
    mode: EventSetupMode.CREATE;
};
type EditEventOptions = {
    event: Amity.Event;
    mode: EventSetupMode.EDIT;
};
type EventSetupProps = CreateEventOptions | EditEventOptions;

type UpcomingEventsProps = {
    fromExplore?: boolean;
};

type EventDetailProps = {
    eventId: string;
    pop?: number;
};

type EventInfoProps = {
    pageId: string;
    event: Amity.Event;
};
declare function EventInfo({ pageId, event }: EventInfoProps): react_jsx_runtime.JSX.Element | null;

type EventAttendeesProps = {
    event: Amity.Event;
};

type CommunityMediaFeedProps = {
    pageId?: string;
    communityId: string;
};
declare const CommunityMediaFeed: ({ pageId, communityId }: CommunityMediaFeedProps) => react_jsx_runtime.JSX.Element;

type CommunityEventFeedProps = {
    pageId?: string;
    communityId: string;
};
declare const CommunityEventFeed: ({ pageId, communityId }: CommunityEventFeedProps) => react_jsx_runtime.JSX.Element | null;

interface LivestreamChatMessageComposerProps {
    channelId?: Amity.Channel['channelId'];
    disabled?: boolean;
    pageId?: string;
    community?: Amity.Community | null;
    isPendingPost?: boolean;
    isPlayer?: boolean;
}
declare const LivestreamChatMessageComposer: ({ pageId, channelId, disabled, community, isPendingPost, isPlayer, }: LivestreamChatMessageComposerProps) => react_jsx_runtime.JSX.Element;

type CreateLivestreamPageProps = {
    targetType: 'community' | 'user';
    targetId: string | null;
    event?: Amity.Event;
};
declare function CreateLivestreamPage({ targetType: initialTargetType, targetId: initialTargetId, event, }: CreateLivestreamPageProps): react_jsx_runtime.JSX.Element;

type LiveStreamPlayerPageProps = {
    post?: Amity.Post;
    goToDetailPage?: (context?: GoToPostDetailPageParams) => void;
    roomId?: string;
};
declare function LiveStreamPlayerPage({ post, roomId, goToDetailPage }: LiveStreamPlayerPageProps): react_jsx_runtime.JSX.Element;

type SelectedTarget = {
    targetId: string | null;
    targetType: Amity.PostTargetType;
};

declare function LivestreamTargetSelectionPage({ onPressTarget, }: {
    onPressTarget?: (params: SelectedTarget) => void;
}): react_jsx_runtime.JSX.Element;

declare function LiveStreamBannedPage(): react_jsx_runtime.JSX.Element;

declare function LivestreamTerminatedPage(): react_jsx_runtime.JSX.Element;

declare function LivestreamUnsupportedPage(): react_jsx_runtime.JSX.Element;

declare const enum DisplayModeEnum {
    DESKTOP = "desktop",
    MOBILE = "mobile"
}
type DisplayMode = `${DisplayModeEnum}`;
declare const enum ProductTagListRenderModeEnum {
    POST = "post",
    LIVESTREAM = "livestream",
    IMAGE = "image",
    VIDEO = "video"
}
type ProductTagListRenderMode = `${ProductTagListRenderModeEnum}`;
declare const enum LayoutVariantEnum {
    LIST = "list",
    CARD = "card"
}
type LayoutVariant = `${LayoutVariantEnum}`;

type RenderModeEnum = 'livestream' | 'playback';

type ProductTagSelectionMode = 'create' | 'edit' | 'livestream';
interface ProductTagSelectionProps {
    selectedProductTags?: Amity.ProductTag[];
    onTagChanges: (tags: Amity.ProductTag[]) => void;
    onUpdateProductTags?: (tags: Amity.ProductTag[]) => Promise<Amity.ProductTag[] | undefined> | void;
    displayMode?: DisplayMode;
    mode?: ProductTagSelectionMode;
    onDone?: () => void;
    onClose?: (selectedProducts?: Amity.ProductTag[], hasChanges?: boolean) => void;
    pageId?: string;
    maxCount?: number;
    isFromManageTagList?: boolean;
    pinnedProductId?: string;
    onPinnedProductIdChange?: (pinnedProductId: string | undefined) => void;
    renderMode?: RenderModeEnum;
    isShowSearch?: boolean;
    isHost?: boolean;
    onRemoveProduct?: (productTag: Amity.ProductTag) => void;
    remainingLimit?: number;
    taggedProductIds?: string[];
}
declare function ProductTagSelection({ selectedProductTags, onTagChanges, onUpdateProductTags, displayMode, mode, onDone, onClose, pageId, maxCount, isFromManageTagList, pinnedProductId, onPinnedProductIdChange, renderMode, isShowSearch, isHost, onRemoveProduct, remainingLimit, taggedProductIds, }: ProductTagSelectionProps): react_jsx_runtime.JSX.Element | null;

interface ManageProductTagListProps {
    productTags?: Amity.MediaProductTag[];
    onProductTagsChange?: (tags: Amity.ProductTag[]) => void;
    onUpdateProductTags?: (tags: Amity.ProductTag[]) => Promise<Amity.ProductTag[] | undefined> | void;
    onRemove?: (productTag: Amity.ProductTag) => void;
    pageId?: string;
    onClose: (tags: Amity.ProductTag[], pinnedProductId: string) => void;
    maxCount?: number;
    pinnedProductId?: string;
    onPinnedProductIdChange?: (pinnedProductId: string | undefined) => void;
    isPinning?: boolean;
    isUnpinning?: boolean;
    renderMode?: RenderModeEnum;
    isHost?: boolean;
    sourceType?: AnalyticsSourceTypeEnum;
    sourceId: string;
}
declare function ManageProductTagList({ productTags: initialProductTags, onProductTagsChange, onUpdateProductTags, onRemove, pageId, onClose, maxCount, pinnedProductId, onPinnedProductIdChange, isPinning, isUnpinning, renderMode, isHost, sourceType, sourceId, }: ManageProductTagListProps): react_jsx_runtime.JSX.Element;

interface ProductTagListProps {
    pageId?: string;
    productTags: Amity.ProductTag[];
    displayMode?: DisplayMode;
    onClose?: () => void;
    renderMode?: ProductTagListRenderMode;
    layout?: LayoutVariant;
    pinnedProductId?: string;
    sourceId?: string;
}
declare function ProductTagList({ productTags, displayMode, pageId, onClose, renderMode, layout, pinnedProductId, sourceId, }: ProductTagListProps): react_jsx_runtime.JSX.Element | null;

type MemberCommunitySetup = {
    userId: string;
    displayName: string;
    isBrand: boolean;
};
declare enum AmityCommunitySetupPageMode {
    CREATE = "create",
    EDIT = "edit"
}
interface CommunitySetupEditOptions {
    mode: AmityCommunitySetupPageMode.EDIT;
    community: Amity.Community;
}
interface CommunitySetupCreateOptions {
    mode: AmityCommunitySetupPageMode.CREATE;
}
type CommunitySetupPageProps = CommunitySetupCreateOptions | CommunitySetupEditOptions;
declare const CommunitySetupPage: (props: CommunitySetupPageProps) => react_jsx_runtime.JSX.Element;

declare enum Mode {
    CREATE = "create",
    EDIT = "edit"
}
interface AmityPostComposerEditOptions {
    mode: Mode.EDIT;
    post: Amity.Post;
    isClipPost?: boolean;
}
interface AmityPostComposerCreateOptions {
    mode: Mode.CREATE;
    targetId: string | null;
    targetType: 'community' | 'user';
    community?: Amity.Community;
    isClipPost?: boolean;
    targetName?: string;
}
type PostComposerPageProps = AmityPostComposerCreateOptions | AmityPostComposerEditOptions;
declare function PostComposerPage(props: PostComposerPageProps): react_jsx_runtime.JSX.Element;

type UpcomingEventsPageProps = UpcomingEventsProps;
declare function UpcomingEventsPage({ fromExplore }: UpcomingEventsPageProps): react_jsx_runtime.JSX.Element;

declare const enum UserRelationshipPageTabs {
    FOLLOWING = "Following",
    FOLLOWER = "Follower"
}
type UserRelationshipPageProps = {
    userId: string;
    selectedTab: UserRelationshipPageTabs;
};
declare const UserRelationshipPage: FC<UserRelationshipPageProps>;

type NotificationAlignment = 'fullscreen' | 'withSidebar' | 'fixed' | 'live-chat' | 'livestreamWithChat';

interface PageBehavior {
    AmityStoryViewPageBehavior?: {
        onCloseAction?(): void;
        hyperLinkAction?(context: Record<string, unknown>): void;
    };
    AmityDraftStoryPageBehavior?: {
        closeAction?(): void;
    };
    onClickHyperLink?(): void;
    AmitySocialHomePageBehavior?: {
        goToNotificationTrayPage?: () => void;
        goToClipFeedPage?: (context: {
            currentPostId?: string;
            postIndex?: number;
        }) => void;
    };
    AmityGlobalFeedComponentBehavior?: {
        goToPostDetailPage?: (context: GoToPostDetailPageParams) => void;
        goToViewStoryPage?: (context: {
            targetId: string;
            targetType: Amity.StoryTargetType;
            storyType: 'communityFeed' | 'globalFeed';
            targetIds?: string[];
        }) => void;
        goToCreateCommunityPage?(context: {
            mode: AmityCommunitySetupPageMode;
        }): void;
    };
    AmityPostDetailPageBehavior?: {
        goToClipFeedPage?: (context: {
            currentPostId?: string;
            postIndex?: number;
            targetType?: 'community' | 'user';
            targetId?: string;
        }) => void;
        goToSocialGlobalSearchPage?: (context: {
            keyword: string;
        }) => void;
    };
    AmityPostContentComponentBehavior?: {
        goToCommunityProfilePage?: (context: {
            communityId: string;
        }) => void;
        goToUserProfilePage?: (context: {
            userId: string;
        }) => void;
        goToPostComposerPage?: (context: {
            mode: Mode.EDIT;
            post: Amity.Post;
            isClipPost?: boolean;
        }) => void;
    };
    AmitySocialGlobalSearchPageBehavior?: {
        goToPostDetailPage?: (context: {
            postId: string;
            hideTarget?: boolean;
            category?: AmityPostCategory;
            keyword?: string;
        }) => void;
    };
    AmityCommunitySearchResultComponentBehavior?: {
        goToCommunityProfilePage?: (context: {
            communityId: string;
        }) => void;
    };
    AmityUserSearchResultComponentBehavior?: {
        goToUserProfilePage?: (context: {
            userId: string;
        }) => void;
    };
    AmityCreatePostMenuComponentBehavior?: {
        goToSelectPostTargetPage?(): void;
        goToSelectClipPostTargetPage?(context: {
            isClipPost: boolean;
        }): void;
        goToStoryTargetSelectionPage?(): void;
        goToSelectPollPostTargetPage?(): void;
        goToLivestreamUnsupportedPage?(): void;
        goToSelectEventTargetPage?(): void;
    };
    AmityPostTargetSelectionPage?: {
        goToPostComposerPage?: (context: {
            mode: Mode.CREATE;
            targetId: string | null;
            targetType: 'community' | 'user';
            community?: Amity.Community;
        }) => void;
        goToDraftClipPage?: (context: {
            targetId: string | null;
            targetType: 'community' | 'user';
            community?: Amity.Community;
        }) => void;
    };
    AmityStoryTargetSelectionPage?: {
        goToStoryCreationPage?(context: {
            targetId: string | null;
            targetType: Amity.StoryTargetType;
            mediaType: {
                type: 'image';
                url: string;
            } | {
                type: 'video';
                url: string;
            };
            storyType: 'communityFeed' | 'globalFeed';
        }): void;
    };
    AmityPostComposerPageBehavior?: {
        goToSocialHomePage?(): void;
    };
    AmityCommunityProfilePageBehavior?: {
        goToPostComposerPage?(context: {
            mode: Mode.CREATE | Mode.EDIT;
            targetId: string | null;
            targetType: 'community' | 'user';
            community?: Amity.Community;
            post?: Amity.Post;
            isClipPost?: boolean;
        }): void;
        goToPostDetailPage?(context: GoToPostDetailPageParams): void;
        goToStoryCreationPage?(context: {
            targetId: string | null;
            targetType: Amity.StoryTargetType;
            mediaType: {
                type: 'image';
                url: string;
            } | {
                type: 'video';
                url: string;
            };
            storyType: 'communityFeed' | 'globalFeed';
        }): void;
        goToCommunitySettingPage?(context: {
            community: Amity.Community;
        }): void;
        goToEditCommunityPage?(context: {
            mode: AmityCommunitySetupPageMode;
            community: Amity.Community;
        }): void;
        goToPendingPostPage?(context: {
            communityId: string;
        }): void;
        goToMembershipPage?(context: {
            community: Amity.Community;
        }): void;
        goToPollPostComposerPage?(context: {
            targetId: string | null;
            targetType: 'community' | 'user';
            pollType?: 'text' | 'image';
        }): void;
        goToPendingRequestPage?(context: {
            community: Amity.Community;
        }): void;
        goToDraftClipPage?(context: {
            targetId: string | null;
            targetType: 'community' | 'user';
            community?: Amity.Community;
        }): void;
        goToClipFeedPage?: (context: {
            currentPostId?: string;
            postIndex?: number;
            targetType?: 'community' | 'user';
            targetId?: string;
        }) => void;
        goToEventSetupPage?(context: EventSetupProps): void;
    };
    AmitySocialHomeTopNavigationComponentBehavior?: {
        goToCreateCommunityPage?(context: {
            mode: AmityCommunitySetupPageMode;
        }): void;
    };
    AmityCommunitySetupPageBehavior?: {
        goToAddCategoryPage?(context: {
            categories?: Amity.Category[];
        }): void;
        goToAddMemberPage?(context: {
            members?: MemberCommunitySetup[];
            communityId?: string;
            onAddedAction?: (userId: string[]) => void;
        }): void;
        goToInviteMemberPage?(context: {
            communityId?: string;
            onSubmit?: (userId: string[]) => void;
        }): void;
    };
    AmityCommunitySettingPageBehavior?: {
        goToEditCommunityPage?(context: {
            mode: AmityCommunitySetupPageMode;
            community: Amity.Community;
        }): void;
        goToMembershipPage?(context: {
            community: Amity.Community;
        }): void;
        goToPendingInvitationPage?(context: {
            community: Amity.Community;
        }): void;
        goToPostPermissionPage?(context: {
            community: Amity.Community;
        }): void;
        goToStorySettingPage?(context: {
            community: Amity.Community;
        }): void;
        goToSocialHomePage?(): void;
    };
    AmityCommunityMembershipPageBehavior?: {
        goToAddMemberPage?(context: {
            members?: MemberCommunitySetup[];
            communityId?: string;
            onAddedAction?: (userId: string[]) => void;
        }): void;
        goToUserProfilePage?: (context: {
            userId: string;
        }) => void;
        goToInviteMemberPage?(context: {
            communityId?: string;
            onSubmit?: (userId: string[]) => void;
        }): void;
    };
    AmityCommunityPendingInvitationPageBehavior?: {
        goToUserProfilePage?: (context: {
            userId: string;
        }) => void;
    };
    AmityCommunityInviteMemberPageBehavior?: {
        goToUserProfilePage?: (context: {
            userId: string;
        }) => void;
    };
    AmityUserFeedComponentBehavior?: {
        goToPostDetailPage?(context: GoToPostDetailPageParams): void;
    };
    AmityUserProfilePageBehavior?: {
        goToEditUserPage?(context: {
            userId: string;
        }): void;
        goToBlockedUsersPage?(): void;
        goToPostComposerPage?(context: {
            userId: string;
            isClipPost?: boolean;
        }): void;
        goToDraftClipPage?(context: {
            targetId: string | null;
            targetType: 'community' | 'user';
            community?: Amity.Community;
        }): void;
        goToClipFeedPage?: (context: {
            currentPostId?: string;
            postIndex?: number;
            targetType?: 'community' | 'user';
            targetId?: string;
        }) => void;
    };
    AmityUserProfileHeaderComponentBehavior?: {
        goToUserRelationshipPage?(context: {
            userId: string;
            selectedTab: UserRelationshipPageTabs;
        }): void;
        goToPendingFollowRequestPage?(): void;
    };
    AmityUserRelationshipPageBehavior?: {
        goToUserProfilePage?(context: {
            userId: string;
        }): void;
    };
    AmityUserPendingFollowRequestsPageBehavior?: {
        goToUserProfilePage?(context: {
            userId: string;
        }): void;
    };
    AmityBlockedUsersPageBehavior?: {
        goToUserProfilePage?(context: {
            userId: string;
        }): void;
    };
    AmityPollTargetSelectionPageBehavior?: {
        goToPollPostComposerPage?(context: {
            targetId: string | null;
            targetType: 'community' | 'user';
            pollType?: 'text' | 'image';
        }): void;
    };
    AmityNotificationTrayPageBehavior?: {
        goToCommunityProfilePage?(context: {
            communityId: string;
        }): void;
        goToPostDetailPage?(context: GoToPostDetailPageParams): void;
        goToUserProfilePage?(context: {
            userId: string;
        }): void;
        goToEventDetailPage?(context: EventDetailProps): void;
        goToLivestreamPlayerPage?(context: LiveStreamPlayerPageProps): void;
        goToEditProfilePage?(): void;
    };
    AmityDraftClipPageBehavior?: {
        goToPostComposerPage?(context: {
            mode: Mode.CREATE;
            targetId: string | null;
            targetType: 'community' | 'user';
            community?: Amity.Community;
            isClipPost?: boolean;
        }): void;
    };
    AmityClipFeedPageBehavior?: {
        goToSelectClipPostTargetPage?(context: {
            isClipPost: boolean;
        }): void;
        goToPostDetailPage?(context: GoToPostDetailPageParams): void;
        goToUserProfilePage?(context: {
            userId: string;
        }): void;
        goToCommunityProfilePage?(context: {
            communityId: string;
        }): void;
    };
    AmityGlobalBehavior?: {
        handleVisitorUserAction?(context: {
            alignment: NotificationAlignment;
        }): void;
        handleNonMemberAction?(context: {
            alignment: NotificationAlignment;
        }): void;
        handleNonFollowerAction?(context: {
            alignment: NotificationAlignment;
        }): void;
        onPostProductTagClick?(context: {
            product: Amity.Product;
        }): void;
        onLivestreamProductTagClick?(context: {
            product: Amity.Product;
        }): void;
    };
    AmityEventTargetSelectionPageBehavior?: {
        goToEventSetupPage?(context: EventSetupProps): void;
    };
    AmityMyCommunitiesComponentBehavior?: {
        goToCommunitySetupPage?(context: {
            mode: AmityCommunitySetupPageMode;
        }): void;
    };
    AmityExploreEventFeedComponentBehavior?: {
        goToUpcomingEventsPage?(context: UpcomingEventsPageProps): void;
    };
    AmityMyEventFeedComponentBehavior?: {
        goToUpcomingEventsPage?(context: UpcomingEventsPageProps): void;
        goToPastEventsPage?(): void;
    };
    AmityEventDetailPageBehavior?: {
        goToCommunityProfilePage?(context: {
            communityId: string;
        }): void;
        goToPostDetailPage?(context: GoToPostDetailPageParams): void;
        goToEventSetupPage?(context: EventSetupProps): void;
        goToCreateLivestreamPage?(context: CreateLivestreamPageProps): void;
        goToPostComposerPage?(context: {
            mode: Mode.CREATE;
            targetName?: string;
            targetId: string | null;
            targetType: 'community' | 'user';
            community?: Amity.Community;
        }): void;
        goToPollPostComposerPage?(context: {
            targetId: string | null;
            targetType: 'community' | 'user';
            pollType?: 'text' | 'image';
        }): void;
        goToEventAttendeesPage?(context: {
            event: Amity.Event;
        }): void;
        goToUserProfilePage?(context: {
            userId: string;
        }): void;
    };
    AmityEventSetupPageBehavior?: {
        goToEventDetailPage?(context: EventDetailProps): void;
    };
    AmityEventAttendeesPageBehavior?: {
        goToUserProfilePage?(context: {
            userId: string;
        }): void;
    };
}

type AmityUIKitConfig = Config;
type AmityRoute = {
    route: string;
    id?: string;
};
interface AmityUIKitProviderProps {
    apiKey: string;
    apiRegion: string;
    apiEndpoint?: {
        http?: string;
        mqtt?: string;
        upload?: string;
    };
    userId?: string;
    displayName?: string;
    postRendererConfig?: any;
    theme?: Record<string, unknown>;
    children?: React.ReactNode;
    socialCommunityCreationButtonVisible?: boolean;
    actionHandlers?: {
        onChangePage?: (data: {
            type: string;
            [x: string]: string | boolean;
        }) => void;
        onClickCategory?: (categoryId: string) => void;
        onClickCommunity?: (communityId: string) => void;
        onClickUser?: (userId: string) => void;
        onCommunityCreated?: (communityId: string) => void;
        onEditCommunity?: (communityId: string, options?: {
            tab?: string;
        }) => void;
        onEditUser?: (userId: string) => void;
        onMessageUser?: (userId: string) => void;
    };
    pageBehavior?: PageBehavior;
    onConnectionStatusChange?: (state: Amity.SessionStates) => void;
    onConnected?: () => void;
    onDisconnected?: () => void;
    getAuthToken?: () => Promise<string>;
    authSignatureExpiresAt?: string;
    getAuthSignature?: ({ deviceId, authSignatureExpiresAt, }: {
        deviceId: string;
        authSignatureExpiresAt: string;
    }) => Promise<string>;
    isBotUser?: boolean;
    configs?: AmityUIKitConfig;
    activeRoute?: AmityRoute;
    onRouteChange?: (route: AmityRoute) => void;
    seoOptimizationEnabled?: boolean;
    syncNetworkConfig?: boolean;
    onEmptyNavigationStack?: () => void;
    /**
     * Localization configuration for the UIKit.
     * - `localeBundle`: initial Level 3 locale bundle (key → translated string)
     * - `overrides`: initial Level 2 programmatic overrides (merge with locale)
     * - `localeMap`: map of locale code → bundle for automatic device-language detection.
     *   When `localeBundle` is not set the provider checks `navigator.language` against
     *   this map (exact match, then language-prefix). Falls back to English if no match.
     *
     * @example
     *   localization={{ localeBundle: jaLocale }}
     * @example
     *   localization={{ localeMap: { ja: jaLocale, th: thLocale } }}
     */
    localization?: {
        localeBundle?: LocaleBundle;
        overrides?: LocaleBundle;
        localeMap?: Record<string, LocaleBundle>;
    };
}
declare const AmityUIKitProvider: React.FC<AmityUIKitProviderProps>;

interface FeedProps {
    className?: string;
    feedType?: 'reviewing' | 'published';
    targetType?: string;
    targetId?: string | null;
    showPostCreator?: boolean;
    onPostCreated?: () => void;
    goToExplore?: () => void;
    readonly?: boolean;
    isHiddenProfile?: boolean;
}
declare const _default$2: React.MemoExoticComponent<(props: FeedProps) => react_jsx_runtime.JSX.Element>;

declare const Application: () => react_jsx_runtime.JSX.Element;

type PartialChannel = Pick<Amity.Channel, 'channelId' | 'type'>;
declare const ChatApplication: ({ membershipFilter, defaultChannelId, onMemberSelect, onChannelSelect, onAddNewChannel, onEditChatMember, }: {
    membershipFilter?: "all" | "member" | "notMember" | undefined;
    defaultChannelId: string | null;
    onMemberSelect?: ((member: Amity.Membership<'channel'>) => void) | undefined;
    onChannelSelect?: ((channel: PartialChannel) => void) | undefined;
    onAddNewChannel?: (() => void) | undefined;
    onEditChatMember?: (({ channel, members, }: {
        channel: Amity.Channel;
        members: Amity.Membership<'channel'>[];
    }) => void) | undefined;
}) => react_jsx_runtime.JSX.Element;

type PageRendererProps = {
    children: React.JSX.Element;
};
declare const PageRenderer: ({ children }: PageRendererProps) => react_jsx_runtime.JSX.Element | null;

declare const addChatMembers: (channelId: string, userIds: string[]) => Promise<boolean>;

declare const removeChatMembers: (channelId: string, userIds: string[]) => Promise<boolean>;

declare const useUser: (userId?: string | null) => Amity.User | null;

declare const enum PageTypes {
    Explore = "explore",
    Category = "category",
    NewsFeed = "newsfeed",
    UserFeed = "userfeed",
    CommunityFeed = "communityfeed",
    CommunityEdit = "communityedit",
    UserEdit = "useredit",
    ViewStory = "viewstory",
    DraftPage = "draftpage"
}

type AmityStoryMediaType$1 = {
    type: 'image';
    url: string;
} | {
    type: 'video';
    url: string;
};
type AmityDraftStoryPageProps = {
    targetId: string;
    targetType: Amity.StoryTargetType;
    mediaType?: AmityStoryMediaType$1;
};
declare const AmityDraftStoryPage: (props: AmityDraftStoryPageProps) => react_jsx_runtime.JSX.Element;

type Page = {
    type: PageTypes.Explore | PageTypes.NewsFeed;
    communityId?: string;
} | {
    type: PageTypes.CommunityFeed;
    communityId: string;
    isNewCommunity: boolean;
} | {
    type: PageTypes.CommunityEdit;
    communityId: string;
    tab: string;
} | {
    type: PageTypes.Category;
    categoryId: string;
    communityId?: string;
} | {
    type: PageTypes.UserFeed | PageTypes.UserEdit;
    userId: string;
    communityId?: string;
} | {
    type: PageTypes.ViewStory;
    storyId: string;
    targetId: string;
    communityId?: string;
    targetIds: string[];
    storyType: 'communityFeed' | 'globalFeed';
} | {
    type: PageTypes.DraftPage;
    communityId?: string;
    mediaType: AmityStoryMediaType$1;
    targetId: string;
    targetType: Amity.StoryTargetType;
    storyType: 'communityFeed' | 'globalFeed';
};
type ContextValue = {
    page: Page;
    onChangePage: (type: string) => void;
    onClickCategory: (categoryId: string) => void;
    onClickCommunity: (communityId: string) => void;
    onClickUser: (userId: string, pageType?: string) => void;
    onClickStory: (storyId: string, storyType: 'communityFeed' | 'globalFeed', targetId?: string[]) => void;
    onCommunityCreated: (communityId: string) => void;
    onEditCommunity: (communityId: string, tab?: string) => void;
    onEditUser: (userId: string) => void;
    onMessageUser: (userId: string) => void;
    onBack: () => void;
    goToDraftStoryPage: (targetId: string, targetType: string, mediaType: AmityStoryMediaType$1, storyType: 'communityFeed' | 'globalFeed') => void;
    setNavigationBlocker?: (params: {
        title: ReactNode;
        content: ReactNode;
        okText: ReactNode;
        onOk?: () => void;
    } | null | undefined) => void;
};
declare const useNavigation: () => ContextValue;

declare const SIZE_ALIAS: {
    BIG: string;
    REGULAR: string;
    SMALL: string;
    TINY: string;
};

interface AvatarProps {
    className?: string;
    avatar?: string | null;
    showOverlay?: boolean;
    size?: ValueOf<typeof SIZE_ALIAS> | null;
    onClick?: () => void;
    loading?: boolean;
    backgroundImage?: string | null;
}
declare const _default$1: (props: AvatarProps) => react_jsx_runtime.JSX.Element;

declare const PostContainer: styled_components_dist_types.IStyledComponentBase<"web", styled_components.FastOmit<{
    className?: string | undefined;
    children?: ReactNode;
}, never>> & string & Omit<({ className, ...props }: {
    className?: string | undefined;
    children?: ReactNode;
}) => react_jsx_runtime.JSX.Element, keyof React.Component<any, {}, any>>;

type Mentioned = {
    userId: string;
    length: number;
    index: number;
    type: string;
    displayName: string;
};

interface EngagementBarProps {
    postId: string;
    readonly?: boolean;
}

declare const _default: React.MemoExoticComponent<(props: EngagementBarProps) => react_jsx_runtime.JSX.Element>;

interface CommentTextProps {
    text?: string;
    className?: string;
    mentionees?: Mentioned[];
    maxLines?: number;
}
declare const CommentText: ({ text, className, mentionees, maxLines, }: CommentTextProps) => react_jsx_runtime.JSX.Element | null;

declare const useSDK: () => {
    client?: Amity.Client | null | undefined;
    currentUserId?: string | null | undefined;
    userRoles: string[];
};

/**
 * Interface representing the session handler for the Amity SDK.
 */
interface SessionHandler {
    /**
     * Handles the access token renewal during the login process.
     * @param renewal - The access token renewal handler.
     */
    sessionWillRenewAccessToken(renewal: Amity.AccessTokenRenewal): void;
}
/**
 * Interface for the registerDevice parameters.
 */
interface RegisterDeviceParams {
    userId?: string;
    displayName?: string;
    sessionHandler: SessionHandler;
    authToken?: string;
    authSignatureParams?: Amity.ConnectClientAsVisitorParams;
    onConnectionStatusChange?: (state: Amity.SessionStates) => void;
    onConnected?: () => void;
    onDisconnected?: () => void;
    onGlobalBanned?: (payload: Amity.UserPayload) => void;
    onUserDeleted?: (payload: Amity.UserPayload) => void;
}
/**
 * Manages the Amity SDK client and authentication state.
 */
declare class AmityUIKitManager {
    private static instance;
    private client;
    private isConnected;
    private stateChangeHandler;
    private disconnectedHandler;
    private onConnectionStatusChange?;
    private onConnected?;
    private onDisconnected?;
    private globalBannedUnsubscribe?;
    private onGlobalBanned?;
    private onUserDeleted?;
    /**
     * Private constructor to prevent direct instantiation.
     */
    private constructor();
    /**
     * Sets up the AmityUIKitManager instance with the provided configuration.
     * @param config - The configuration object containing the API key and endpoint.
     */
    static setup(config: {
        apiKey: string;
        apiRegion: string;
        apiEndpoint?: {
            http?: string;
            mqtt?: string;
        };
        seoOptimizationEnabled?: boolean;
    }): void;
    /**
     * Registers a device with the Amity SDK and handles the login process.
     * @param params - The parameters object containing all registration options.
     */
    static registerDevice({ userId, displayName, sessionHandler, authToken, authSignatureParams, onConnectionStatusChange, onConnected, onDisconnected, onGlobalBanned, onUserDeleted, }: RegisterDeviceParams): Promise<void>;
    /**
     * Sets the AmityClient instance to be used by the AmityUIKitManager.
     * This method is useful when sharing the AmityClient instance between different parts of the application.
     * @param client - The AmityClient instance to be used.
     */
    static setClient(client: Amity.Client): void;
    /**
     * Connects and logs in to the Amity SDK with the provided user details and session handler.
     * @param userId - The user ID to be used for login.
     * @param displayName - The display name of the user.
     * @param sessionHandler - The session handler for access token renewal.
     */
    private connectAndLogin;
    /**
     * Disconnects from the Amity SDK and cleans up resources.
     */
    disconnect(): void;
    /**
     * Retrieves the Amity SDK client instance.
     * @returns The Amity SDK client instance or null if not connected.
     */
    static getClient(): Amity.Client | null;
    /**
     * Checks if the client is connected to the Amity SDK.
     * @returns True if the client is connected, false otherwise.
     */
    isClientConnected(): boolean;
    static syncNetworkConfig(): Promise<NetworkConfig>;
}

interface ChatHeaderProps {
    channel: Amity.Channel | null;
    pageId?: string;
    componentId?: string;
}
declare const ChatHeader: ({ channel, pageId }: ChatHeaderProps) => react_jsx_runtime.JSX.Element;

interface AmityLiveChatMessageListProps {
    pageId?: string;
    channel: Amity.Channel;
    replyMessage: (message: Amity.Message<'text'>) => void;
}
declare const MessageList: ({ pageId, channel, replyMessage, }: AmityLiveChatMessageListProps) => react_jsx_runtime.JSX.Element;

type ComposeActionTypes = {
    replyMessage?: Amity.Message;
    mentionMessage?: Amity.Message;
    clearReplyMessage?: () => void;
    clearMention?: () => void;
};

interface MessageComposerProps {
    channel: Amity.Channel;
    composeAction?: ComposeActionTypes;
    disabled?: boolean;
    pageId?: string;
}
declare const MessageComposer: ({ pageId, channel, composeAction }: MessageComposerProps) => react_jsx_runtime.JSX.Element;

declare const MessageReactionPreview: ({ message, onClick, }: {
    message: Amity.Message;
    onClick?: (() => void) | undefined;
}) => react_jsx_runtime.JSX.Element | null;

declare const MessageReactionPicker: ({ message, onSelectReaction, }: {
    message: Amity.Message;
    onSelectReaction: (reactionName: string) => void;
}) => react_jsx_runtime.JSX.Element | null;

interface MessageQuickReactionProps {
    pageId?: string;
    componentId?: string;
    message: Amity.Message;
    onSelectReaction?: () => void;
}
declare const MessageQuickReaction: ({ pageId, componentId, message, onSelectReaction, }: MessageQuickReactionProps) => react_jsx_runtime.JSX.Element;

type MessageActionType = {
    onCopy?: () => void;
    onFlag?: () => void;
    onUnflag?: () => void;
    onDelete?: () => void;
    onReply?: () => void;
    onMention?: () => void;
};

interface ReactionListProps$1 {
    pageId: string;
    referenceId: string;
    referenceType: Amity.ReactableType;
    customReferenceType?: string;
}
declare const ReactionList: ({ pageId, referenceId, referenceType, customReferenceType, }: ReactionListProps$1) => react_jsx_runtime.JSX.Element | null;

interface ReactionListProps {
    referenceId: string;
    referenceType: Amity.ReactableType;
}

interface LiveChatProps {
    channelId: Amity.Channel['channelId'];
}
declare const LiveChat: ({ channelId }: LiveChatProps) => react_jsx_runtime.JSX.Element | null;

type AmityStoryMediaType = {
    type: 'image';
    url: string;
} | {
    type: 'video';
    url: string;
};
type StoryPreviewProps = {
    mediaType?: AmityStoryMediaType;
    imageMode: 'fit' | 'fill';
    width?: number;
    height?: number;
    hyperLink: {
        data: {
            url: string;
            customText: string;
        };
        type: Amity.StoryItemType;
    }[];
    onPlay?: () => void;
    onPause?: () => void;
    avatar: string;
    title: string;
    description: string;
    duration?: number;
    isOfficial?: boolean;
};
declare const StoryPreview: React.FC<StoryPreviewProps>;

type StoryPreviewThumbnailProps = {
    thumbnailUrl?: string;
    hyperLink: {
        data: {
            url: string;
            customText: string;
        };
        type: Amity.StoryItemType;
    }[];
    avatar: string;
    title: string;
    isOfficial?: boolean;
    onClick?: () => void;
    imageMode?: 'fit' | 'fill';
};
declare const StoryPreviewThumbnail: React.FC<StoryPreviewThumbnailProps>;

type ViewStoryPageType = 'communityFeed' | 'globalFeed';
interface AmityViewStoryPageProps {
    type: ViewStoryPageType;
    targetId: string;
}
declare const ViewStoryPage: React.FC<AmityViewStoryPageProps>;

declare function StoryTargetSelectionPage(): react_jsx_runtime.JSX.Element;

declare enum HomePageTab {
    Newsfeed = "Newsfeed",
    Explore = "Explore",
    MyCommunities = "My communities",
    Clips = "Clips",
    Communities = "Communities",
    Events = "Events"
}

declare function SocialHomePage({ activeTab: initialActiveTab }: {
    activeTab?: HomePageTab;
}): react_jsx_runtime.JSX.Element;

declare function SelectPostTargetPage({ isClipPost }: {
    isClipPost?: boolean;
}): react_jsx_runtime.JSX.Element;

declare function MyCommunitiesSearchPage(): react_jsx_runtime.JSX.Element;

declare function SocialGlobalSearchPage({ keyword }: {
    keyword?: string;
}): react_jsx_runtime.JSX.Element;

type UserProfilePageProps = {
    userId: string;
};
declare const UserProfilePage: React.FC<UserProfilePageProps>;

interface EditUserProfilePageProps {
    userId: string;
}
declare const EditUserProfilePage: React.FC<EditUserProfilePageProps>;

declare const BlockedUserPage: () => react_jsx_runtime.JSX.Element;

declare const UserPendingFollowRequestPage: () => react_jsx_runtime.JSX.Element;

interface CommunityAddCategoryPageProps {
    category?: Amity.Category[];
}
declare const CommunityAddCategoryPage: ({ category }: CommunityAddCategoryPageProps) => react_jsx_runtime.JSX.Element;

interface CommunityAddMemberPageProps {
    member?: MemberCommunitySetup[];
    communityId?: string;
    closePopup?: () => void;
    onAddedAction?: (userId: string[]) => void;
}
declare const CommunityAddMemberPage: ({ member, closePopup, communityId, onAddedAction, }: CommunityAddMemberPageProps) => react_jsx_runtime.JSX.Element;

type CommunityInviteMemberPageProps = {
    communityId?: string;
    users?: Amity.User[];
    onSubmit?: (userId: string[]) => void;
};
declare const CommunityInviteMemberPage: (props: CommunityInviteMemberPageProps) => react_jsx_runtime.JSX.Element;

interface CommunityProfileProps {
    communityId: string;
    page?: number;
}
declare const CommunityProfilePage: React.FC<CommunityProfileProps>;

type CommunitySettingPageProps = {
    community: Amity.Community;
};
declare const CommunitySettingPage: ({ community }: CommunitySettingPageProps) => react_jsx_runtime.JSX.Element;

type CommunityPostPermissionPageProps = {
    community: Amity.Community;
};
declare const CommunityPostPermissionPage: ({ community }: CommunityPostPermissionPageProps) => react_jsx_runtime.JSX.Element;

type CommunityStorySettingPageProps = {
    community: Amity.Community;
};
declare const CommunityStorySettingPage: ({ community }: CommunityStorySettingPageProps) => react_jsx_runtime.JSX.Element;

type PendingPostsPageProps = {
    communityId: string;
};
declare const PendingPostsPage: ({ communityId }: PendingPostsPageProps) => react_jsx_runtime.JSX.Element;

type CommunityMembershipPageProps = {
    community: Amity.Community;
};
declare const CommunityMembershipPage: ({ community }: CommunityMembershipPageProps) => react_jsx_runtime.JSX.Element;

type CommunityPendingInvitationPageProps = {
    community: Amity.Community;
};
declare function CommunityPendingInvitationPage(props: CommunityPendingInvitationPageProps): react_jsx_runtime.JSX.Element;

type PollPostComposerPageProps = {
    targetId: string | null;
    targetType: 'community' | 'user';
    pollType?: 'text' | 'image';
};
declare const PollPostComposerPage: ({ targetId, targetType, pollType, }: PollPostComposerPageProps) => react_jsx_runtime.JSX.Element;

declare function PollTargetSelectionPage(): react_jsx_runtime.JSX.Element;

declare function AllCategoriesPage(): react_jsx_runtime.JSX.Element;

interface CommunitiesByCategoryPageProps {
    categoryId: string;
}
declare function CommunitiesByCategoryPage({ categoryId }: CommunitiesByCategoryPageProps): react_jsx_runtime.JSX.Element;

type PendingRequestPageProps = {
    community: Amity.Community;
};
declare const PendingRequestPage: ({ community }: PendingRequestPageProps) => react_jsx_runtime.JSX.Element | null;

type DraftClipPageProps = {
    targetId: string | null;
    targetType: 'community' | 'user';
    community?: Amity.Community;
};
declare const DraftClipPage: ({ targetId, targetType, community }: DraftClipPageProps) => react_jsx_runtime.JSX.Element;

type ClipFeedPageProps = {
    currentPostId?: string;
    postIndex?: number;
    targetType?: 'community' | 'user';
    targetId?: string;
};
declare const ClipFeedPage: ({ currentPostId, postIndex, targetType, targetId, }: ClipFeedPageProps) => react_jsx_runtime.JSX.Element;

declare function EventTargetSelectionPage(): react_jsx_runtime.JSX.Element;

declare const EventSetupPage: (props: EventSetupProps) => react_jsx_runtime.JSX.Element;

declare function PastEventsPage(): react_jsx_runtime.JSX.Element;

type EventDetailPageProps = EventDetailProps;
declare function EventDetailPage(props: EventDetailPageProps): react_jsx_runtime.JSX.Element;

type EventAttendeesPageProps = EventAttendeesProps;
declare function EventAttendeesPage({ event }: EventAttendeesPageProps): react_jsx_runtime.JSX.Element;

type CommentTrayProps = {
    pageId?: string;
    referenceId: string;
    community: Amity.Community;
    shouldAllowCreation?: boolean;
    shouldAllowInteraction?: boolean;
    referenceType: Amity.CommentReferenceType;
    commentCount?: number;
};
declare const CommentTray: ({ referenceId, pageId, referenceType, shouldAllowCreation, shouldAllowInteraction, community, commentCount, }: CommentTrayProps) => react_jsx_runtime.JSX.Element;

type StoryTabProps = ({
    type: 'communityFeed';
    communityId: string;
} | {
    type: 'globalFeed';
}) & {
    pageId?: string;
};
declare const StoryTab: React.FC<StoryTabProps>;

type CreatePostMenuProps = {
    pageId: string;
};
declare function CreatePostMenu({ pageId }: CreatePostMenuProps): react_jsx_runtime.JSX.Element;

interface MediaAttachmentProps {
    pageId: string;
    sourceId?: string;
    isVisibleCamera: boolean;
    isVisibleImage: boolean;
    isVisibleVideo: boolean;
    totalMedia?: number;
    productTags?: Amity.ProductTag[];
    onVideoFileChange?: (files: File[], fileType?: string) => void;
    onImageFileChange?: (files: File[], fileType?: string) => void;
}
declare function MediaAttachment({ pageId, sourceId, isVisibleCamera, isVisibleImage, isVisibleVideo, totalMedia, productTags, onVideoFileChange, onImageFileChange, }: MediaAttachmentProps): react_jsx_runtime.JSX.Element | null;

interface DetailedMediaAttachmentProps {
    pageId: string;
    isVisibleCamera: boolean;
    isVisibleImage: boolean;
    isVisibleVideo: boolean;
    totalMedia?: number;
    onVideoFileChange?: (files: File[]) => void;
    onImageFileChange?: (files: File[]) => void;
}
declare function DetailedMediaAttachment({ pageId, isVisibleCamera, isVisibleImage, isVisibleVideo, totalMedia, onVideoFileChange, onImageFileChange, }: DetailedMediaAttachmentProps): react_jsx_runtime.JSX.Element | null;

type UserSearchResultProps = {
    pageId?: string;
    keyword: string;
    isLoading: boolean;
    onLoadMore: () => void;
    userCollection: Amity.User[];
    onClosePopover?: () => void;
};
declare const UserSearchResult: ({ keyword, isLoading, onLoadMore, pageId, onClosePopover, userCollection, }: UserSearchResultProps) => react_jsx_runtime.JSX.Element;

type CommunitySearchResultProps = {
    pageId?: string;
    isLoading: boolean;
    onLoadMore: () => void;
    showJoinButton?: boolean;
    onClosePopover?: () => void;
    communityCollection: Amity.Community[];
};
declare const CommunitySearchResult: ({ isLoading, onLoadMore, pageId, onClosePopover, showJoinButton, communityCollection, }: CommunitySearchResultProps) => react_jsx_runtime.JSX.Element;

type TopSearchBarProps = {
    pageId?: string;
    onFocus?: () => void;
    hasCancelButton?: boolean;
    search: (keyword: string) => void;
    initialValue?: string;
    onCloseSearch?: () => void;
};
declare function TopSearchBar({ pageId, search, onFocus, hasCancelButton, initialValue, onCloseSearch, }: TopSearchBarProps): react_jsx_runtime.JSX.Element | null;

type MyCommunitiesProps = {
    pageId?: string;
};
declare const MyCommunities: ({ pageId }: MyCommunitiesProps) => react_jsx_runtime.JSX.Element;

interface GlobalFeedProps {
    pageId?: string;
    componentId?: string;
    items: Array<Amity.Post | Amity.Ad>;
    globalFeaturedPosts?: Array<Amity.PinnedPost>;
    isLoading: boolean;
    isGlobalFeaturedPostsLoading?: boolean;
    onFeedReachBottom: () => void;
    onPostDeleted?: (post: Amity.Post) => void;
}
declare const GlobalFeed: ({ pageId, componentId, items, isLoading, globalFeaturedPosts, isGlobalFeaturedPostsLoading, onFeedReachBottom, onPostDeleted, }: GlobalFeedProps) => react_jsx_runtime.JSX.Element;

interface EmptyNewsfeedProps {
    pageId?: string;
}
declare function EmptyNewsfeed({ pageId }: EmptyNewsfeedProps): react_jsx_runtime.JSX.Element | null;

type NewsfeedProps = {
    pageId?: string;
};
declare const Newsfeed: ({ pageId }: NewsfeedProps) => react_jsx_runtime.JSX.Element;

interface TopNavigationProps {
    pageId?: string;
    selectedTab?: HomePageTab;
    onClickPostCreationButton?: () => void;
}
declare function TopNavigation({ pageId, selectedTab, onClickPostCreationButton, }: TopNavigationProps): react_jsx_runtime.JSX.Element | null;

interface CommunityProfileHeaderProps {
    pageId?: string;
    community: Amity.Community;
    isSticky?: boolean;
    page?: number;
}
declare const CommunityHeader: React.FC<CommunityProfileHeaderProps>;

interface CommunityFeedProps {
    communityId: string;
    pageId?: string;
}
declare const CommunityFeed: ({ pageId, communityId }: CommunityFeedProps) => react_jsx_runtime.JSX.Element | null;

interface CommunityPinnedPostProps {
    communityId?: string;
}
declare const CommunityPinnedPost: ({ communityId }: CommunityPinnedPostProps) => react_jsx_runtime.JSX.Element;

type CommunityImageFeedProps = {
    pageId?: string;
    communityId: string;
};
declare const CommunityImageFeed: ({ pageId, communityId }: CommunityImageFeedProps) => react_jsx_runtime.JSX.Element | null;

type CommunityVideoFeedProps = {
    pageId?: string;
    communityId: string;
};
declare const CommunityVideoFeed: ({ pageId, communityId }: CommunityVideoFeedProps) => react_jsx_runtime.JSX.Element | null;

type PendingPostContentProps = {
    pageId?: string;
    post?: Amity.Post;
    canReviewCommunityPosts?: boolean;
    refresh?: () => void;
};
declare const PendingPostContent: ({ pageId, post: initialPost, canReviewCommunityPosts, refresh, }: PendingPostContentProps) => react_jsx_runtime.JSX.Element | null;

interface UserProfileHeaderProps {
    user?: Amity.User | null;
    pageId?: string;
}
declare const UserProfileHeader: React.FC<UserProfileHeaderProps>;

interface UserFeedProps {
    userId: string;
    pageId?: string;
    feedSources?: FeedSourceEnum[];
    followStatus?: Amity.FollowStatus['status'] | null;
}
declare const UserFeed: ({ pageId, userId, feedSources, followStatus }: UserFeedProps) => react_jsx_runtime.JSX.Element;

type UserImageFeedProps = {
    userId: string;
    pageId?: string;
    feedSources?: FeedSourceEnum[];
    followStatus?: Amity.FollowStatus['status'] | null;
};
declare const UserImageFeed: ({ pageId, userId, feedSources, followStatus, }: UserImageFeedProps) => react_jsx_runtime.JSX.Element;

type UserVideoFeedProps = {
    userId: string;
    pageId?: string;
    feedSources?: FeedSourceEnum[];
    followStatus?: Amity.FollowStatus['status'] | null;
};
declare const UserVideoFeed: ({ pageId, userId, feedSources, followStatus, }: UserVideoFeedProps) => react_jsx_runtime.JSX.Element;

type ExploreProps = {
    pageId?: string;
};
declare const Explore: ({ pageId }: ExploreProps) => react_jsx_runtime.JSX.Element;

type InvitationBannerProps = {
    pageId?: string;
    community: Amity.Community;
    removeInvitation?: () => void;
    invitation?: Amity.Invitation;
};
declare function InvitationBanner({ community, pageId, removeInvitation, invitation: $invitation, }: InvitationBannerProps): react_jsx_runtime.JSX.Element;

type InvitationSectionProps = {
    pageId?: string;
    onClose?: () => void;
    invitations: Amity.Invitation[];
};
declare const InvitationSection: ({ onClose, pageId, invitations, }: InvitationSectionProps) => react_jsx_runtime.JSX.Element | null;

type PendingPostListProps = {
    pageId?: string;
    reviewingPosts: Amity.Post[];
    canReviewCommunityPosts?: boolean;
    refresh?: () => void;
};
declare const PendingPostList: ({ pageId, reviewingPosts, canReviewCommunityPosts, refresh, }: PendingPostListProps) => react_jsx_runtime.JSX.Element;

type JoinRequestContentProps = {
    pageId?: string;
    joinRequests: Amity.JoinRequest[] | null;
    isLoading: boolean;
    refresh?: () => void;
};
declare const JoinRequestContent: ({ pageId, joinRequests, isLoading, refresh, }: JoinRequestContentProps) => react_jsx_runtime.JSX.Element;

type ExploreEventProps = {
    pageId?: string;
};
declare function ExploreEvent({ pageId }: ExploreEventProps): react_jsx_runtime.JSX.Element | null;

type MyEventsProps = {
    pageId?: string;
};
declare function MyEvents({ pageId }: MyEventsProps): react_jsx_runtime.JSX.Element | null;

export { AllCategoriesPage as AmityAllCategoriesPage, _default$1 as AmityAvatar, BlockedUserPage as AmityBlockedUserPage, ClipFeedPage as AmityClipFeedPage, CommentTray as AmityCommentTrayComponent, CommunitiesByCategoryPage as AmityCommunitiesByCategoryPage, CommunityAddCategoryPage as AmityCommunityAddCategoryPage, CommunityAddMemberPage as AmityCommunityAddMemberPage, CommunityEventFeed as AmityCommunityEventFeedComponent, CommunityFeed as AmityCommunityFeedComponent, CommunityHeader as AmityCommunityHeaderComponent, CommunityImageFeed as AmityCommunityImageFeedComponent, CommunityInviteMemberPage as AmityCommunityInviteMemberPage, CommunityMediaFeed as AmityCommunityMediaFeedComponent, CommunityMembershipPage as AmityCommunityMembershipPage, CommunityPendingInvitationPage as AmityCommunityPendingInvitationPage, CommunityPinnedPost as AmityCommunityPinnedPostComponent, CommunityPostPermissionPage as AmityCommunityPostPermissionPage, CommunityProfilePage as AmityCommunityProfilePage, CommunitySearchResult as AmityCommunitySearchResultComponent, CommunitySettingPage as AmityCommunitySettingPage, CommunitySetupPage as AmityCommunitySetupPage, AmityCommunitySetupPageMode, CommunityStorySettingPage as AmityCommunityStorySettingPage, CommunityVideoFeed as AmityCommunityVideoFeedComponent, CreateLivestreamPage as AmityCreateLivestreamPage, CreatePostMenu as AmityCreatePostMenuComponent, DetailedMediaAttachment as AmityDetailedMediaAttachmentComponent, DraftClipPage as AmityDraftClipPage, AmityDraftStoryPage, EditUserProfilePage as AmityEditUserProfilePage, EmptyNewsfeed as AmityEmptyNewsFeedComponent, EventAttendeesPage as AmityEventAttendeesPage, EventDetailPage as AmityEventDetailPage, EventInfo as AmityEventInfoComponent, EventSetupPage as AmityEventSetupPage, EventSetupMode as AmityEventSetupPageMode, EventTargetSelectionPage as AmityEventTargetSelectionPage, CommentText as AmityExpandableText, Explore as AmityExploreComponent, ExploreEvent as AmityExploreEventFeedComponent, GlobalFeed as AmityGlobalFeedComponent, InvitationBanner as AmityInvitationBannerComponent, InvitationSection as AmityInvitationSectionComponent, JoinRequestContent as AmityJoinRequestContentComponent, ChatHeader as AmityLiveChatHeader, MessageComposer as AmityLiveChatMessageComposeBar, MessageList as AmityLiveChatMessageList, MessageQuickReaction as AmityLiveChatMessageQuickReaction, MessageReactionPicker as AmityLiveChatMessageReactionPicker, MessageReactionPreview as AmityLiveChatMessageReactionPreview, LiveChat as AmityLiveChatPage, LiveStreamBannedPage as AmityLiveStreamBannedPage, LiveStreamPlayerPage as AmityLiveStreamPlayerPage, LivestreamChatMessageComposer as AmityLivestreamChatMessageComposerComponent, LivestreamTargetSelectionPage as AmityLivestreamTargetSelectionPage, LivestreamTerminatedPage as AmityLivestreamTerminatedPage, LivestreamUnsupportedPage as AmityLivestreamUnsupportedPage, ManageProductTagList as AmityManageProductTagListComponent, MediaAttachment as AmityMediaAttachmentComponent, type MessageActionType as AmityMessageActionType, MyCommunities as AmityMyCommunitiesComponent, MyCommunitiesSearchPage as AmityMyCommunitiesSearchPage, MyEvents as AmityMyEventFeedComponent, Newsfeed as AmityNewsFeedComponent, PageRenderer as AmityPageRenderer, PastEventsPage as AmityPastEventsPage, PendingPostContent as AmityPendingPostContentComponent, PendingPostList as AmityPendingPostListComponent, PendingPostsPage as AmityPendingPostsPage, PendingRequestPage as AmityPendingRequestPage, PollPostComposerPage as AmityPollPostComposerPage, PollTargetSelectionPage as AmityPollTargetSelectionPage, PostComposerPage as AmityPostComposerPage, PostContainer as AmityPostContainer, PostContent as AmityPostContentComponent, PostDetailPage as AmityPostDetailPage, _default as AmityPostEngagementBar, SelectPostTargetPage as AmityPostTargetSelectionPage, ProductTagList as AmityProductTagListComponent, ProductTagSelection as AmityProductTagSelectionComponent, ReactionList as AmityReactionListComponent, type ReactionListProps as AmityReactionListProps, SocialGlobalSearchPage as AmitySocialGlobalSearchPage, SocialHomePage as AmitySocialHomePage, HomePageTab as AmitySocialHomePageTab, TopNavigation as AmitySocialHomeTopNavigationComponent, StoryPreview as AmityStoryPreview, StoryPreviewThumbnail as AmityStoryPreviewThumbnail, StoryTab as AmityStoryTabComponent, StoryTargetSelectionPage as AmityStoryTargetSelectionPage, TopSearchBar as AmityTopSearchBarComponent, AmityUIKitManager, ChatApplication as AmityUiKitChat, _default$2 as AmityUiKitFeed, AmityUIKitProvider as AmityUiKitProvider, Application as AmityUiKitSocial, UpcomingEventsPage as AmityUpcomingEventsPage, UserFeed as AmityUserFeedComponent, UserImageFeed as AmityUserImageFeedComponent, UserPendingFollowRequestPage as AmityUserPendingFollowRequestPage, UserProfileHeader as AmityUserProfileHeaderComponent, UserProfilePage as AmityUserProfilePage, UserRelationshipPage as AmityUserRelationshipPage, UserRelationshipPageTabs as AmityUserRelationshipPageTabs, UserSearchResult as AmityUserSearchResultComponent, UserVideoFeed as AmityUserVideoFeedComponent, ViewStoryPage as AmityViewStoryPage, addChatMembers as amityAddChatMembers, removeChatMembers as amityRemoveChatMembers, useNavigation as useAmityNavigation, useSDK as useAmitySDK, useUser as useAmityUser };
