import { ResourceProvider, SignalKResourceType } from '@signalk/server-api';
import { IRouter } from 'express';
import { WithSecurityStrategy } from '../../security';
import { SignalKMessageHub, WithConfig } from '../../app';
export declare const RESOURCES_API_PATH = "/signalk/v2/api/resources";
export declare const CHART_TILE_REGEX: RegExp;
export declare const skUuid: () => string;
interface ResourceApplication extends IRouter, WithConfig, WithSecurityStrategy, SignalKMessageHub {
}
export declare class ResourcesApi {
    private resProvider;
    private app;
    private settings;
    constructor(app: ResourceApplication);
    start(): Promise<void>;
    parseSettings(): Promise<void>;
    saveSettings(): void;
    register(pluginId: string, provider: ResourceProvider): void;
    unRegister(pluginId: string): void;
    isResourceProvider(provider: ResourceProvider): boolean;
    getResource(resType: SignalKResourceType, resId: string, providerId?: string): Promise<{}>;
    listResources(resType: SignalKResourceType, params: {
        [key: string]: any;
    }, providerId?: string): Promise<{}>;
    setResource(resType: SignalKResourceType, resId: string, data: {
        [key: string]: any;
    }, providerId?: string): Promise<undefined>;
    deleteResource(resType: SignalKResourceType, resId: string, providerId?: string): Promise<undefined>;
    /** Returns true if there is a registered provider for the resource type */
    private hasRegisteredProvider;
    /** Returns the provider id to use to write a resource entry */
    getProviderForWrite(resType: SignalKResourceType, resId: string, providerId?: string): Promise<string | undefined>;
    /** Validates providerId for a given resourceType */
    private checkForProvider;
    /** Retrieve matching resources from ALL providers */
    private listFromAll;
    /** Query ALL providers for supplied resource id */
    private getFromAll;
    /** Return providerId for supplied resource id */
    private getProviderForResourceId;
    /** Return array of provider ids for supplied resource type */
    private getProvidersForResourceType;
    private initResourceRoutes;
    private getResourcePaths;
    private buildDeltaMsg;
}
export {};
//# sourceMappingURL=index.d.ts.map