export declare type DependentProperty = {
    property: string;
    request: number;
    targetPath?: string[];
};
export interface KalturaObjectMetadata {
    properties: {
        [key: string]: KalturaObjectPropertyMetadata;
    };
}
export interface KalturaObjectPropertyMetadata {
    readOnly?: boolean;
    type: string;
    subType?: string;
    default?: string;
    subTypeConstructor?: {
        new (): KalturaObjectBase;
    };
}
export interface KalturaObjectBaseArgs {
    relatedObjects?: {
        [key: string]: KalturaObjectBase;
    };
}
export declare abstract class KalturaObjectBase {
    private _allowedEmptyArray;
    private _dependentProperties;
    relatedObjects: {
        [key: string]: KalturaObjectBase;
    };
    allowEmptyArray(...properties: string[]): this;
    setData(handler: (request: this) => void): this;
    constructor(data?: {});
    getTypeName(): string;
    protected _getMetadata(): KalturaObjectMetadata;
    hasMetadataProperty(propertyName: string): boolean;
    toRequestObject(): {};
    fromResponseObject(data: any): {};
    protected _parseResponseProperty(propertyName: string, property: KalturaObjectPropertyMetadata, source: any): any;
    private _isNumeric;
    private _createKalturaObject;
    private _createRequestPropertyValue;
    setDependency(...dependency: (DependentProperty | [string, number] | [string, number, string])[]): this;
}
