import URI from '../common/uri'; import { ContributionProvider, MaybePromise, Emitter, Event, Disposable } from '../common'; export interface OpenerOptions { } export declare const OpenHandler: unique symbol; /** * `OpenHandler` should be implemented to provide a new opener. */ export interface OpenHandler { /** * A unique id of this handler. */ readonly id: string; /** * A human-readable name of this handler. */ readonly label?: string; /** * A css icon class of this handler. */ readonly iconClass?: string; /** * Test whether this handler can open the given URI for given options. * Return a nonzero number if this handler can open; otherwise it cannot. * Never reject. * * A returned value indicating a priority of this handler. */ canHandle(uri: URI, options?: OpenerOptions): MaybePromise; /** * Open a widget for the given URI and options. * Resolve to an opened widget or undefined, e.g. if a page is opened. * Never reject if `canHandle` return a positive number; otherwise should reject. */ open(uri: URI, options?: OpenerOptions): MaybePromise; } export declare const OpenerService: unique symbol; /** * `OpenerService` provide an access to existing openers. */ export interface OpenerService { /** * Return all registered openers. * Never reject. */ getOpeners(): Promise; /** * Return all openers able to open the given URI for given options * ordered according their priority. * Never reject. */ getOpeners(uri: URI, options?: OpenerOptions): Promise; /** * Return an opener with the higher priority for the given URI. * Reject if such does not exist. */ getOpener(uri: URI, options?: OpenerOptions): Promise; /** * Add open handler i.e. for custom editors */ addHandler?(openHandler: OpenHandler): Disposable; /** * Event that fires when a new opener is added or removed. */ onDidChangeOpeners?: Event; } export declare function open(openerService: OpenerService, uri: URI, options?: OpenerOptions): Promise; export declare class DefaultOpenerService implements OpenerService { protected readonly handlersProvider: ContributionProvider; protected readonly customEditorOpenHandlers: OpenHandler[]; protected readonly onDidChangeOpenersEmitter: Emitter; readonly onDidChangeOpeners: Event; constructor(handlersProvider: ContributionProvider); addHandler(openHandler: OpenHandler): Disposable; getOpener(uri: URI, options?: OpenerOptions): Promise; getOpeners(uri?: URI, options?: OpenerOptions): Promise; protected prioritize(uri: URI, options?: OpenerOptions): Promise; protected getHandlers(): OpenHandler[]; } //# sourceMappingURL=opener-service.d.ts.map