import type { IArtifactAccount } from '../account';
import type { IArtifactKindConfig, IArtifactSource, IExpectedArtifact } from '../domain';
export interface IExpectedArtifactSelectorViewControllerDelegate {
    getExpectedArtifacts(): IExpectedArtifact[];
    getSelectedExpectedArtifact(): IExpectedArtifact;
    getExpectedArtifactAccounts(): IArtifactAccount[];
    getSelectedAccount(): IArtifactAccount;
    getExpectedArtifactSources(): Array<IArtifactSource<any>>;
    getOfferedArtifactTypes?(): RegExp[];
    getExcludedArtifactTypes?(): RegExp[];
    getSupportedArtifactKinds(): IArtifactKindConfig[];
    setSelectedExpectedArtifact(e: IExpectedArtifact): void;
    setSelectedArtifactAccount(a: IArtifactAccount): void;
    createArtifact(): void;
    refreshExpectedArtifacts(): void;
}
export declare class ExpectedArtifactSelectorViewController {
    private delegate;
    accountsForArtifact: IArtifactAccount[];
    static $inject: string[];
    constructor(delegate: IExpectedArtifactSelectorViewControllerDelegate);
    updateAccounts: (expectedArtifact: IExpectedArtifact) => void;
    onArtifactChange: (expectedArtifact: IExpectedArtifact) => void;
    onArtifactCreated: (event: {
        expectedArtifact: IExpectedArtifact;
        account: IArtifactAccount;
        source: IArtifactSource<any>;
    }) => void;
    onRequestCreate: () => void;
    onAccountChange: (account: IArtifactAccount) => void;
}
