import { Entity } from '../entity/Entity';
import { Mutation } from '../mutation/Mutation';
import { Context } from '../context/Context';
import { RegistryEntity } from '../../graphqlProtocol/registry';
export declare type StorageDataTypeSerializer = {
    (value: unknown, options?: {
        data?: Record<string, unknown>;
        entity?: Entity;
        mutation?: Mutation;
        model?: RegistryEntity;
        context?: Context;
    }): unknown;
};
export declare type StorageDataTypeParser = {
    (value: unknown, options?: {
        data?: Record<string, unknown>;
        entity?: Entity;
        model?: RegistryEntity;
        context?: Context;
    }): unknown;
};
export declare type StorageDataTypeSetup = {
    name: string;
    description: string;
    nativeDataType: any;
    isSortable?: boolean;
    serialize?: StorageDataTypeSerializer;
    enforceSerialize?: boolean;
    parse?: StorageDataTypeParser;
    capabilities?: string[];
};
export declare class StorageDataType {
    name: string;
    description: string;
    nativeDataType: any;
    isSortable?: boolean;
    serialize?: StorageDataTypeSerializer;
    enforceSerialize?: boolean;
    parse?: StorageDataTypeParser;
    capabilities?: string[];
    constructor(setup?: StorageDataTypeSetup);
    toString(): string;
}
export declare const isStorageDataType: (obj: unknown) => obj is StorageDataType;
