import { LitElement, PropertyValues } from 'lit';
import { ContextConsumer } from '@lit/context';
import { WeavyType } from '../contexts/weavy-context';
import { UserType } from '../types/users.types';
import { ContextIdType } from '../contexts/context-id-context';
import { WeavyComponentContextProps } from '../types/component.types';
/**
 * Base class for exposed/public weavy components. This class provides common external properties and internal data provided as contexts for sub components.
 *
 * @fires ready - When the component has rendered.
 */
export declare class WeavyComponent extends LitElement implements WeavyComponentContextProps {
    #private;
    /** @internal */
    protected weavyContextConsumer?: ContextConsumer<{
        __context__: WeavyType;
    }, this>;
    /**
     * The consumed weavy context.
     */
    weavy: WeavyType | undefined;
    /**
     * Contextual guid that is unique for the client context.
     *
     * @type {ContextIdType}
     */
    contextId: ContextIdType;
    /**
     * The current user.
     *
     * @type {UserType | undefined}
     */
    user: UserType | undefined;
    /**
     * Resolves when a contextual id is available.
     *
     * @internal
     * @returns {Promise<ContextIdType>}
     */
    whenContextId(): Promise<string>;
    /**
     * Resolves when current user data is available.
     *
     * @returns {Promise<UserType>}
     */
    whenUser(): Promise<UserType>;
    /**
     * Resolves when a weavy context is available.
     *
     * @returns {Promise<WeavyType>}
     */
    whenWeavy(): Promise<WeavyType>;
    /**
     * Resolves when the component has rendered first time.
     *
     * @returns {Promise<WeavyComponent>}
     */
    whenReady(): Promise<WeavyComponent>;
    connectedCallback(): void;
    protected scheduleUpdate(): Promise<void>;
    protected willUpdate(changedProperties: PropertyValues): Promise<void>;
    protected firstUpdated(changedProperties: PropertyValues): void;
}
//# sourceMappingURL=weavy-component.d.ts.map