import { CMS } from './cms.class';
import { UnnyColor } from '../entities/unny-color.model';
import { LocalizedString } from '../entities/localized-string.entity';
import { ScriptRef } from '../entities/script-ref.entity';
import { BaseModel } from './balancy-model.class';
type Constructor<T> = {
    new (...args: any[]): T;
    getFileName(): string;
};
export type Nullable<T> = T | null;
export declare class JsonBasedObject {
    protected tempCopy: boolean;
    protected _pointer: number;
    _cms: CMS;
    setData(pointer: number, cms: CMS): void;
    initData(): void;
    getRawPointer(): number;
    equals(ptr: number): boolean;
    refreshData(p: number): void;
    cleanUp(parentWasDestroyed: boolean): void;
    protected getEnumArrayParam<T>(name: string): T[];
    protected getIntParam(paramName: string): number;
    protected getLongParam(paramName: string): number;
    protected getFloatParam(paramName: string): number;
    protected getDoubleParam(paramName: string): number;
    protected getBoolParam(paramName: string): boolean;
    protected getStringParam(paramName: string): string;
    protected getIntArrayParam(paramName: string): number[];
    protected getLongArrayParam(paramName: string): number[];
    protected getFloatArrayParam(paramName: string): number[];
    protected getDoubleArrayParam(paramName: string): number[];
    protected getBoolArrayParam(paramName: string): boolean[];
    protected getStringArrayParam(paramName: string): string[];
    protected getColor(paramName: string): UnnyColor;
    protected getLocalizedString(paramName: string): LocalizedString;
    toJsonString(depth: number, pretty: boolean): string;
    protected getColors(paramName: string): UnnyColor[];
    protected getLocalizedStrings(paramName: string): LocalizedString[];
    protected getScriptRef(scriptId: string): ScriptRef | null;
    protected getScriptRefs(scriptIds: string[]): ScriptRef[];
    getModelByUnnyId<T extends BaseModel>(inUnnyId: string): T | null;
    getModelsByUnnyIds<T extends BaseModel>(inUnnyIds: string[]): (T | null)[];
    protected getObjectParam<T extends JsonBasedObject>(modelClass: Constructor<T>, paramName: string): Nullable<T>;
    protected getObjectArrayParam<T extends JsonBasedObject>(modelClass: Constructor<T>, paramName: string): (T | null)[];
    private markAsTempObject;
    static createObject<T extends JsonBasedObject>(modelClass: Constructor<T>, cms: CMS, ptr: number, tempCopy: boolean, preInitCallback?: ((obj: T) => void) | null): Nullable<T>;
}
export {};
//# sourceMappingURL=json-object.class.d.ts.map