import { DoubleMapTypeV4, MapTypeV4, PlainTypeV4, StorageFunctionModifierV4 } from '../../interfaces/metadata';
import { AnyNumber } from '../../types';
import Enum from '../../codec/Enum';
import Struct from '../../codec/Struct';
import Vec from '../../codec/Vec';
import Bytes from '../../primitive/Bytes';
import Text from '../../primitive/Text';
export declare class StorageFunctionType extends Enum {
    constructor(value?: any, index?: number);
    /**
     * @description The value as a mapped value
     */
    readonly asDoubleMap: DoubleMapTypeV4;
    /**
     * @description The value as a mapped value
     */
    readonly asMap: MapTypeV4;
    /**
     * @description The value as a [[Type]] value
     */
    readonly asType: PlainTypeV4;
    /**
     * @description `true` if the storage entry is a doublemap
     */
    readonly isDoubleMap: boolean;
    /**
     * @description `true` if the storage entry is a map
     */
    readonly isMap: boolean;
    /**
     * @description `true` if the storage entry is a plain type
     */
    readonly isPlainType: boolean;
    /**
     * @description Returns the string representation of the value
     */
    toString(): string;
}
export interface StorageFunctionMetadataValue {
    name: string | Text;
    modifier: StorageFunctionModifierV4 | AnyNumber;
    type: StorageFunctionType;
    fallback: Bytes;
    documentation: Vec<Text> | string[];
}
/**
 * @name StorageFunctionMetadata
 * @description
 * The definition of a storage function
 */
export declare class StorageFunctionMetadata extends Struct {
    constructor(value?: StorageFunctionMetadataValue | Uint8Array);
    /**
     * @description The default value of the storage function
     */
    readonly fallback: Bytes;
    /**
     * @description The [[Text]] documentation
     */
    readonly documentation: Vec<Text>;
    /**
     * @description The key name
     */
    readonly name: Text;
    /**
     * @description The modifier
     */
    readonly modifier: StorageFunctionModifierV4;
    /**
     * @description The [[StorageFunctionType]]
     */
    readonly type: StorageFunctionType;
}
