/// <reference types="node" resolution-mode="require"/>
/// <reference types="node" resolution-mode="require"/>
import { ConfigType } from './index.js';
export declare class IgnoringFileError extends Error {
    constructor(message: string);
}
export declare class FunctionProcessingError extends Error {
    cause: Error;
    constructor(message: string, error: Error);
}
interface AppConfigFile {
    content_type?: string;
    data?: string;
    date_uploaded?: string;
    ext?: string;
    id?: string;
    length?: number;
    md5?: string;
    url?: string;
}
/**
 * An app configuration as defined by the Swell API. This implies that the
 * app & the configuration are saved to the API.
 */
export declare abstract class AppConfig {
    appConfigId?: string;
    appPath: string;
    byteSize?: number;
    date_created?: string;
    date_updated?: string;
    file?: AppConfigFile;
    file_path?: string;
    fileData?: Buffer;
    fileHash?: string;
    filePath: string;
    hash?: string;
    id?: string;
    mbSize?: number;
    name?: string;
    parent_id?: string;
    slug?: string;
    values: {
        [key: string]: any;
    };
    version?: string;
    constructor(attrs?: Partial<AppConfig>);
    load(): Promise<void>;
    static create(attrs?: Partial<AppConfig>): Promise<AppConfig>;
    isRootConfig(configDir: string): boolean;
    postData(): Promise<any>;
    prepareFileData(): any;
    abstract hasValues: boolean;
    /** build the JSON used when making requests (usually push) to the API */
    protected abstract preparePostData(postData: any): Promise<any>;
    abstract type: ConfigType;
}
export declare class AppConfigDefault extends AppConfig {
    hasValues: boolean;
    type: ConfigType;
    preparePostData(postData: any): Promise<any>;
}
export declare class AppConfigModel extends AppConfig {
    hasValues: boolean;
    type: ConfigType;
    preparePostData(postData: any): Promise<any>;
}
export declare class AppConfigContent extends AppConfig {
    hasValues: boolean;
    type: ConfigType;
    preparePostData(postData: any): Promise<any>;
}
export declare class AppConfigNotification extends AppConfig {
    hasValues: boolean;
    type: ConfigType;
    preparePostData(postData: any): Promise<any>;
}
export declare class AppConfigSetting extends AppConfig {
    hasValues: boolean;
    type: ConfigType;
    preparePostData(postData: any): Promise<any>;
}
export declare class AppConfigWebhook extends AppConfig {
    hasValues: boolean;
    type: ConfigType;
    preparePostData(postData: any): Promise<any>;
}
export declare class AppConfigFunction extends AppConfig {
    hasValues: boolean;
    type: ConfigType;
    isRootFunction(): boolean;
    preparePostData(postData: any): Promise<any>;
}
export declare class AppConfigComponent extends AppConfig {
    hasValues: boolean;
    type: ConfigType;
    isRootComponent(): boolean;
    preparePostData(postData: any): Promise<any>;
}
export declare class AppConfigAsset extends AppConfigDefault {
    hasValues: boolean;
    type: ConfigType;
}
export declare class AppConfigFrontend extends AppConfigDefault {
    hasValues: boolean;
    type: ConfigType;
}
export declare class AppConfigTheme extends AppConfigDefault {
    hasValues: boolean;
    type: ConfigType;
    preparePostData(postData: any): Promise<any>;
}
export {};
