import { Observable, Subscribable } from 'rxjs';
import { ApolloClient } from 'apollo-client';
import { ISettings, IConfiguredSettingsCascade, IConfiguredSubject } from '@workbench-stack/core';
import { ISettingsService, SettingsCascadeOrError } from '@workbench-stack/extension-api';
export declare function getSettings<S extends ISettings = ISettings>(apolloClient: ApolloClient<any>): Subscribable<SettingsCascadeOrError<S>>;
export declare function updateSettings(apolloClient: ApolloClient<any>, state$: Observable<any>): (edit: any) => Promise<{}>;
export declare const updateSettingsEpic: (action$: Observable<any>, state$: Observable<any>, { apolloClient }: {
    apolloClient: ApolloClient<any>;
}) => any;
export declare function settingsService(apolloClient: ApolloClient<any>, reduxStore: any): ISettingsService;
export declare function gqlToCascade({ subjects, }: {
    subjects: IConfiguredSubject[];
}): IConfiguredSettingsCascade;
export declare function mergeSettings<S extends ISettings>(values: S[]): S | null;
export declare function merge(base: any, add: any, custom?: any): void;
