import { LitElement } from 'lit';
import { AppSettings } from '../contexts/settings-context';
import { Constructor } from '../types/generic.types';
import { ServerConfigurationType } from '../types/server.types';
import { WeavyContextType } from '../contexts/weavy-context';
import { AppTypes } from '../types/app.types';
import { UserType } from '../types/users.types';
import { FeatureProps } from '../types/features.types';
import { AppType } from '../contexts/app-context';
import { FeaturesType } from '../contexts/features-context';

export interface AppProps {
    /**
     * The type of the app.
     */
    appType?: AppTypes;
    /**
     * Unique identifier for your app component.
     * The uid should correspond to the uid of the app created using the server-to-server Web API.
     */
    uid?: string;
}
export interface AppSettingProps {
    /**
     * Whether to use local modals attached in place rather than globally attached modals.
     * May require adjustments to layout and z-index on the page.
     */
    submodals: boolean;
}
export interface AppContextProps {
    /**
     * The settings provided as a context on the component.
     */
    settings: AppSettings | undefined;
    /**
     * The configuration from the server provided as a context on the component.
     */
    configuration: ServerConfigurationType | undefined;
    /**
     * The consumed weavy context.
     */
    weavyContext: WeavyContextType | undefined;
    /**
     * The app data.
     */
    app: AppType | undefined;
    /**
     * The current user.
     */
    user: UserType | undefined;
    /**
     * Config for disabling features in the component.
     * *Note: You can't enable any features that aren't available in your license.*
     */
    hasFeatures: FeaturesType | undefined;
}
export declare const AppProviderMixin: <T extends Constructor<LitElement>>(Base: T) => Constructor<AppProps & AppContextProps & AppSettingProps & FeatureProps> & T;
//# sourceMappingURL=app-mixin.d.ts.map