import { ThemeController } from './controllers/theme-controller';
import { AppTypeGuid, LinkType } from './types/app.types';
import { ComponentFeatures } from './contexts/features-context';
import { PostQueryFilterProps } from './types/posts.types';
import { WeavyAppComponent } from './classes/weavy-app-component';
declare global {
    interface HTMLElementTagNameMap {
        "wy-feed": WyFeed;
    }
}
/**
 * @import { WyAppEventType } from "./types/app.events"
 * @import { WyLinkEventType } from "./types/notifications.events"
 * @import { WyUnreadEventType } from "./types/ui.events"
 * @import { WyActionEventType } from "./types/action.events"
 */
/**
 * Weavy posts component to render a feed of posts with an editor and comments as seen on many social networks. The component includes a fully featured post editor with built in support for markdown, code formatting, images, file attachments, cloud attachments, mentions, links, embeds, and polls.
 *
 * The content of each post is built up from the posted text, images, polls, embeds, links, audio, video, file attachments, and cloud files. Each post can be commented on and reacted to with a set of emoji reactions. Images, audio, video, attached files, and cloud files can be previewed with the built-in previewer supporting 100+ file formats including PDF, Office and Google Drive.
 *
 * The feed is populated from a single post app or from multiple specified post apps by specifying one or multiple post app identifiers using the `uid` attribute. Specifying only one uid allows automatic creation of a [corresponding post app](https://www.weavy.com/docs/concepts#app) on the server the first time it's accessed. When using multiple uid:s, all the specified post apps must exist prior to loading the feed.
 *
 * > To show a combined feed of _all_ post apps available to the user, it's recommended to use the [`<wy-posts>`](./wy-posts.ts) component, which has additional configuration options, together with a _separate_ [`<wy-post-editor>`](./wy-posts-editor.ts) component.
 *
 * When using a single `uid`, it's also recommended to specify a readable `name` of the posts app, to get better readable listing and notifications from the app.
 *
 * > It's often useful to base the `uid` on something that identifies the location where the component is rendered.
 * > Typically you would use something like a product id, page id, or path.
 *
 * The list of posts can be refined to only show posts by other users that the current user follows using the `following` attribute.
 *
 * A search field can be enabled for users by adding the `search` attribute. Searching can also be handled programmatically using the `query` property, which also reflects the search field in the UI.
 *
 * **Component Layout**
 *
 * The component has the editor in the top. Below the editor is the post feed with the optional search field in the top of the list. The editor and the feed can alternatively be used and configured separately by using the [`<wy-post-editor>`](./wy-post-editor.ts) component and the [`<wy-posts>`](./wy-posts) component.
 *
 * Each post had a header in the top with information about the user together with an avatar. Next comes any attached images or embedded content and then the right formatted text. This is followed by polls and file attachments. In the bottom of the post is reactions and an expandable rich comment section.
 *
 * The component is [block-level](https://developer.mozilla.org/en-US/docs/Glossary/Block-level_content) with pre-defined CSS styling to adapt to flex- and grid-layouts as well as traditional flow-layouts.
 * It's usually recommended to use a proper flex-layout for the container you are placing the component in for a smooth layout integration.
 *
 * The height grows with the content per default. Content is automatically loaded during scrolling when the last content becomes visible (aka infinite scrolling).
 * If placed in a flex- or grid-layout or if an explicit height is set, the component becomes scrollable.
 *
 * The content within the components is per default aligned to the edges of it's own _box_ and designed to not be placed next to a edge or border.
 * It's recommended to adjust the layout with your default padding. Setting the `--wy-padding-outer` to your default padding will allow the component to still fill the are where it's placed,
 * but with proper padding within the scrollable area of the component.
 * If you want to make the component go all the way to the edges without padding or any outermost roundness instead,
 * set `--wy-padding-outer: 0;` and `--wy-border-radius-outer: 0;` to make the component fit nicely with the edge.
 *
 * You can add additional styling using _CSS Custom Properties_ and _CSS Shadow Parts_ and further customization using _slots_.
 *
 * **Used sub components:**
 *
 * - [`<wy-buttons>`](./components/ui/wy-button.ts)
 * - [`<wy-container>`](./components/ui/wy-container.ts)
 * - [`<wy-search>`](./components/ui/wy-search.ts)
 * - [`<wy-post-form>`](./components/wy-post-form.ts)
 * - [`<wy-post-list>`](./components/wy-post-list.ts)
 * - [`<wy-user-card>`](./components/wy-user-card.ts)
 *
 * @tagname wy-feed
 * @slot actions - Floating buttons placed in the top right.
 * @csspart wy-feed - Root layout container.
 * @fires {WyActionEventType} wy-action - Emitted when an action is performed on an embed.
 * @fires {WyAppEventType} wy-app - Fired whenever the app property changes.
 * @fires {WyPreviewOpenEventType} wy-preview-open - Fired when a preview overlay is about to open.
 * @fires {WyPreviewCloseEventType} wy-preview-close - Fired when a preview overlay is closed.
 *
 * @example <caption>Creating and showing a single app for posts</caption>
 *
 * Specifying a single app identifier (`uid`), automatically creates a [corresponding app](https://www.weavy.com/docs/concepts#app) on your Weavy environment when the component is first initialized. It's recommended to specify a readable `name` of the posts app, to get better readable notifications from the app.
 *
 * ```html
 * <wy-feed uid="test-posts" name="Test feed"></wy-feed>
 * ```
 *
 * @example <caption>Multiple post apps feed with a search field</caption>
 *
 * Specifying multiple app identifiers (`uid`) separated by space, shows posts from several already created post apps. Here the search field is also enabled for the user.
 *
 * ```html
 * <wy-feed uid="test-posts test-news" search></wy-feed>
 * ```
 *
 * @example <caption>Multiple post apps feed from followed people</caption>
 *
 * A post feed from multiple post apps, displaying only posts made by people the user follows.
 *
 * ```html
 * <wy-feed uid="test-posts test-news" following></wy-feed>
 * ```
 */
export declare class WyFeed extends WeavyAppComponent implements PostQueryFilterProps {
    #private;
    static styles: import('lit').CSSResult[];
    /** @internal */
    appType: AppTypeGuid;
    /** @internal */
    componentFeatures: ComponentFeatures;
    /**
     * Matches apps and checks if the cache has the post.
     * @internal
     */
    matchesLink(link?: LinkType): boolean;
    /** @internal */
    protected theme: ThemeController;
    /**
     * Reference to the post feed
     *
     * @internal
     */
    private postListRef;
    /** Current unread posts count. */
    get unread(): number;
    /** Show search field. */
    search: boolean;
    /** Only show posts by users followed by the current user. */
    following: boolean;
    /** Show post by search query filter */
    query?: string | null;
    tag?: string | null;
    /**
     * Placeholder text for the post editor. Overrides default text.
     */
    placeholder?: string;
    render(): import('../node_modules/lit-html/node/lit-html.js').TemplateResult<1>;
}
//# sourceMappingURL=wy-feed.d.ts.map