import { Model } from 'sequelize-typescript';
import { MPlugin, MPluginFormattable } from '../../types/models';
import { AttributesOnly } from '../../../shared/typescript-utils';
import { PeerTubePlugin, PluginType, RegisterServerSettingOptions, SettingEntries, SettingValue } from '../../../shared/models';
export declare class PluginModel extends Model<Partial<AttributesOnly<PluginModel>>> {
    name: string;
    type: number;
    version: string;
    latestVersion: string;
    enabled: boolean;
    uninstalled: boolean;
    peertubeEngine: string;
    description: string;
    homepage: string;
    settings: any;
    storage: any;
    createdAt: Date;
    updatedAt: Date;
    static listEnabledPluginsAndThemes(): Promise<MPlugin[]>;
    static loadByNpmName(npmName: string): Promise<MPlugin>;
    static getSetting(pluginName: string, pluginType: PluginType, settingName: string, registeredSettings: RegisterServerSettingOptions[]): Promise<any>;
    static getSettings(pluginName: string, pluginType: PluginType, settingNames: string[], registeredSettings: RegisterServerSettingOptions[]): Promise<SettingEntries>;
    static setSetting(pluginName: string, pluginType: PluginType, settingName: string, settingValue: SettingValue): Promise<any>;
    static getData(pluginName: string, pluginType: PluginType, key: string): Promise<any>;
    static storeData(pluginName: string, pluginType: PluginType, key: string, data: any): Promise<any>;
    static listForApi(options: {
        pluginType?: PluginType;
        uninstalled?: boolean;
        start: number;
        count: number;
        sort: string;
    }): Promise<{
        total: number;
        data: PluginModel[];
    }>;
    static listInstalled(): Promise<MPlugin[]>;
    static normalizePluginName(npmName: string): string;
    static getTypeFromNpmName(npmName: string): PluginType;
    static buildNpmName(name: string, type: PluginType): string;
    getPublicSettings(registeredSettings: RegisterServerSettingOptions[]): SettingEntries;
    toFormattedJSON(this: MPluginFormattable): PeerTubePlugin;
}
//# sourceMappingURL=plugin.d.ts.map