import { ItemContracts } from '../data-contracts';
import { ContentItem } from '../models/item/content-item.class';
import { TypeResolver } from '../models/item/type-resolver.class';
export declare class StronglyTypedResolver {
    /**
     * Indicates if given type has a type resolver
     * @param type Type
     * @param resolvers Type resolvers
     */
    hasTypeResolver(type: string, resolvers: TypeResolver[]): boolean;
    /**
     * Creates non generic ContentItem used when content type does not have a strongly typed model
     */
    createContentItem(item: ItemContracts.IContentItemContract): ContentItem;
    /**
     * Takes given type name and creates a strongly typed model based specified in client configuration
     * @param type Type of the content item
     * @param item Typed content item
     * @param resolvers Type resolvers
     */
    createTypedObj<TItem extends ContentItem>(type: string, item: ItemContracts.IContentItemContract, typeResolvers: TypeResolver[]): TItem;
    /**
     * Creates empty typed object of given type
     * @param type Type of the content item
     * @param resolvers Type resolvers
     */
    createEmptyTypedObj<TItem extends ContentItem>(type: string, resolvers: TypeResolver[]): TItem | undefined;
}
export declare const stronglyTypedResolver: StronglyTypedResolver;
