import { Schema, FieldRegistration } from '@sprucelabs/schema';
import SpruceError from '../../../errors/SpruceError';
import AbstractStore from '../../../stores/AbstractStore';
import { InternalUpdateHandler } from '../../../types/cli.types';
export declare const coreSchemas: {
    personSchema: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.Spruce.v2020_07_22.PersonSchema;
    skillSchema: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.Spruce.v2020_07_22.SkillSchema;
    skillCreatorSchema: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.Spruce.v2020_07_22.SkillCreatorSchema;
    locationSchema: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.Spruce.v2020_07_22.LocationSchema;
    organizationSchema: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.Spruce.v2020_07_22.OrganizationSchema;
    personOrganizationSchema: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.Spruce.v2020_07_22.PersonOrganizationSchema;
    personLocationSchema: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.Spruce.v2020_07_22.PersonLocationSchema;
    roleSchema: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.Spruce.v2020_07_22.RoleSchema;
    messageSchema: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.Spruce.v2020_07_22.MessageSchema;
    messageSourceSchema: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.Spruce.v2020_07_22.MessageSourceSchema;
    messageTargetSchema: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.Spruce.v2020_07_22.MessageTargetSchema;
    sendMessageSchema: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.Spruce.v2020_07_22.SendMessageSchema;
    choiceSchema: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.Spruce.v2020_07_22.ChoiceSchema;
    linkSchema: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.Spruce.v2020_07_22.LinkSchema;
};
export type SchemasByNamespace = Record<string, Schema[]>;
interface FetchSchemasResults {
    schemasByNamespace: SchemasByNamespace;
    errors: SpruceError[];
}
export interface FetchedField {
    path?: string;
    registration: FieldRegistration;
    isLocal: boolean;
}
interface FetchFieldsResults {
    errors: SpruceError[];
    fields: FetchedField[];
}
export default class SchemaStore extends AbstractStore {
    readonly name = "schema";
    fetchSchemas(options: {
        localSchemaLookupDir?: string;
        shouldFetchRemoteSchemas?: boolean;
        shouldEnableVersioning?: boolean;
        localNamespace: string;
        shouldFetchCoreSchemas?: boolean;
        moduleToImportFromWhenRemote?: string;
        shouldFetchLocalSchemas?: boolean;
        didUpdateHandler?: InternalUpdateHandler;
    }): Promise<FetchSchemasResults>;
    private emitDidFetchSchemasAndMixinResults;
    private mixinSchemaOrThrowIfExists;
    hasLocalSchemas(): Promise<boolean>;
    private loadLocalSchemas;
    private globbyLocalBuilders;
    private resolveLocalVersion;
    private prepareLocalSchema;
    fetchFields(options?: {
        localAddonsDir?: string;
    }): Promise<FetchFieldsResults>;
}
export {};
