import type { StorageFlag } from '../../extension.ts';
import type { StorageTextureFormats } from './textureFormats.ts';
import type { TextureProps } from './textureProps.ts';
export interface SampledFlag {
    usableAsSampled: true;
}
export interface RenderFlag {
    usableAsRender: true;
}
export type LiteralToExtensionMap = {
    storage: StorageFlag;
    sampled: SampledFlag;
    render: RenderFlag;
    transient: RenderFlag;
};
export type AllowedUsages<TProps extends TextureProps> = 'sampled' | 'render' | 'transient' | (TProps['format'] extends StorageTextureFormats ? 'storage' : never);
export declare function isUsableAsSampled<T>(value: T): value is T & SampledFlag;
export declare function isUsableAsRender<T>(value: T): value is T & RenderFlag;
/**
 * @category Errors
 */
export declare class NotSampledError extends Error {
    constructor(value: object);
}
