import { EventContract, SpruceSchemas } from '@sprucelabs/mercury-types';
import SpruceError from '../../../errors/SpruceError';
import AbstractStore from '../../../stores/AbstractStore';
import { InternalUpdateHandler } from '../../../types/cli.types';
export default class EventStore extends AbstractStore {
    name: string;
    protected static contractCache: Record<string, any>;
    private static localEventCache?;
    static clearCache(): void;
    fetchEventContracts(options?: FetchContractsOptions): Promise<EventStoreFetchEventContractsResponse>;
    private fetchRemoteContracts;
    private filterOutLocalEventsFromRemoteContractsMutating;
    loadLocalContract(localNamespace: string, didUpdateHandler?: InternalUpdateHandler): Promise<EventContract | null>;
    private generateGlobbyForLocalEvents;
    registerEventContract(options: {
        eventContract: EventContract;
    }): Promise<import("@sprucelabs/mercury-types").MercuryAggregateResponse<Pick<import("@sprucelabs/schema").SchemaStaticValues<SpruceSchemas.Mercury.v2020_12_25.RegisterEventsResponsePayloadSchema, false, never, import("@sprucelabs/schema").StaticSchemaAllValues<SpruceSchemas.Mercury.v2020_12_25.RegisterEventsResponsePayloadSchema, false>>, "fqens">>>;
    unRegisterEvents(options: SpruceSchemas.Mercury.v2020_12_25.UnregisterEventsEmitPayload): Promise<void>;
}
export interface EventStoreFetchEventContractsResponse {
    errors: SpruceError[];
    contracts: EventContract[];
}
export interface FetchContractsOptions {
    localNamespace?: string;
    namespaces?: string[];
    didUpdateHandler?: InternalUpdateHandler;
    shouldOnlySyncRemoteEvents?: boolean;
}
