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

export interface AppContextProviderProps {
    /**
     * All app contexts provided in a combined object. Used for convenience when forwarding contexts.
     */
    contexts?: {} & AppContextProps;
    whenWeavyContext: () => Promise<WeavyContextType>;
    whenSettings: () => Promise<AppSettingsType>;
    whenConfiguration: () => Promise<ServerConfigurationType>;
    whenApp: () => Promise<AppType>;
    whenUser: () => Promise<UserType>;
    whenHasFeatures: () => Promise<FeaturesType>;
}
export declare const AppContextProviderMixin: <T extends Constructor<LitElement>>(Base: T) => Constructor<AppContextProviderProps & AppContextProps> & T;
//# sourceMappingURL=app-provider-mixin.d.ts.map