import { AuthoringAsset, AuthoringContentItem, Logger, LoggerService } from '@acoustic-content-sdk/api'; import { Observable, SchedulerLike, UnaryFunction } from 'rxjs'; import { AuthoringItem } from './auth.clone'; export declare type ResolveAuthoringContentItem = UnaryFunction>; export declare type ResolveAuthoringAsset = UnaryFunction>; export interface ResolvedNode { id: string; item: T; parentId?: string; } export declare type ResolutionResult = Record>; export declare type IdOrItem = string | AuthoringContentItem; /** * Resolves the item and all referenced items and assets * * @param id - ID of the item to resolve * @param resolveItem - callback to resolve a content item * @param resolveAsset - callback to resolve an asset * @param logSvc - logger service * @param scheduler - scheduler for recursive calls * * @returns the observable containing the resolution result */ export declare function rxResolveAuthoringItems(idOrItem: IdOrItem, resolveItem: ResolveAuthoringContentItem, resolveAsset: ResolveAuthoringAsset, aLogSvc?: LoggerService, scheduler?: SchedulerLike): Observable; /** * Performs a topological sort on a set of resolved items * * @param aResult - the resolution result, basically a graph of nodes * * @returns the items in toplogical order, i.e. parents before children */ export declare function sortAuthoringItems(aResult: ResolutionResult): AuthoringItem[]; /** * Returns a listing of all referenced items * * @param aItems - the item * * @returns all references */ export declare function referencedItems(aItems: AuthoringItem[], aLogger: Logger): string[]; /** * Basically a re-export of the clone functionality to have it all clean inside this one function * * @param aItems - the original items * @returns the cloned items */ export declare const cloneAuthoringItems: UnaryFunction;