import { AssetFolderContracts, SharedContracts } from '../../contracts';
import { SharedModels } from '../shared/shared-models';
export declare namespace AssetFolderModels {
    class AssetFolder implements SharedModels.IBaseModel<AssetFolderContracts.IAssetFolderContract> {
        id: string;
        name: string;
        externalId?: string;
        folders: AssetFolder[];
        codename: string;
        _raw: AssetFolderContracts.IAssetFolderContract;
        constructor(data: {
            id: string;
            name: string;
            externalId?: string;
            folders: AssetFolder[];
            codename: string;
            _raw: AssetFolderContracts.IAssetFolderContract;
        });
    }
    interface IAssetFolderValue {
        name: string;
        folders: IAssetFolderValue[];
        external_id?: string;
        codename?: string;
    }
    interface IAddAssetFoldersData {
        folders: IAssetFolderValue[];
    }
    type IModifyAssetFolderData = AddIntoOperation | RemoveOperation | RenameOperation;
    type AddIntoOperation = {
        op: 'addInto';
        reference?: SharedContracts.IReferenceObjectContract;
        value: IAssetFolderValue;
        before?: SharedContracts.IReferenceObjectContract;
        after?: SharedContracts.IReferenceObjectContract;
    };
    type RemoveOperation = {
        op: 'remove';
        reference: SharedContracts.IReferenceObjectContract;
    };
    type RenameOperation = {
        op: 'rename';
        reference: SharedContracts.IReferenceObjectContract;
        value: string;
    };
}
