import { SpruceSchemas } from '@sprucelabs/mercury-types';
import { Schema } from '@sprucelabs/schema';
import DependencyService from '../../../services/DependencyService';
import { GraphicsInterface } from '../../../types/cli.types';
import { FeatureActionResponse } from '../../features.types';
import SkillStore from '../../skill/stores/SkillStore';
import EventStore from '../stores/EventStore';
import EventWriter from '../writers/EventWriter';
export default class EventContractBuilder {
    private optionsSchema;
    private ui;
    private eventWriter;
    private cwd;
    private eventStore;
    private skillStore;
    private dependencyService;
    constructor(options: {
        optionsSchema: OptionsSchema;
        ui: GraphicsInterface;
        eventGenerator: EventWriter;
        cwd: string;
        eventStore: EventStore;
        skillStore: SkillStore;
        dependencyService: DependencyService;
    });
    fetchAndWriteContracts(options: Options & {
        shouldOnlySyncRemoteEvents?: boolean;
    }): Promise<FeatureActionResponse>;
    private deleteOrphanedEventContracts;
    fetchContractsAndGenerateUniqueSchemas(existingSchemas: Schema[], shouldSyncOnlyCoreEvents: boolean, shouldOnlySyncRemoteEvents?: boolean): Promise<FeatureActionResponse & {
        schemas?: Schema[];
    }>;
    private filterSchemasBasedOnCallbackPayload;
    private fetchAndBuildTemplateItems;
}
type OptionsSchema = SpruceSchemas.SpruceCli.v2020_07_22.SyncEventOptionsSchema;
type Options = SpruceSchemas.SpruceCli.v2020_07_22.SyncEventOptions;
export {};
