import { ItemCollection, Registry, RegistryInputItem, RegistryItem } from './Registry';
import { ImageSourcePropType } from 'react-native';
export interface AssetRegistryItemExtras {
    type: 'audio' | 'photo' | 'video' | 'unknown';
    preload: boolean;
}
export declare type RequireSource = ImageSourcePropType;
export declare type AssetValue = RequireSource;
export declare type Asset = RegistryItem<AssetValue> & AssetRegistryItemExtras;
export declare type AssetInput = RegistryInputItem<AssetValue | string>;
export declare type AssetCollection = ItemCollection<AssetInput>;
/**
 * 🖼 AssetRegistry
 */
export declare class AssetRegistry extends Registry<Asset, AssetInput> {
    /**
     * Resolves an Asset.
     * @param keys
     */
    resolve(...keys: string[]): Asset | undefined;
    /**
     * Convert any input value to an item. This is where you transform inputs and add defualts
     * @param key
     * @param partial
     */
    protected createItem(key: string, partial: any): Asset;
    /**
     * Typeguard to check a given object is a registry value
     * @param value
     */
    protected isValue(value: any): value is Asset['value'];
    /**
     * Typeguard to check a given object is an input value
     * @param value
     */
    protected isInputValue(value: any): value is AssetInput['value'];
}
