import { Constructor, Codec, InterfaceTypes } from '../types';
import Option from './Option';
import Struct from './Struct';
import Tuple from './Tuple';
declare type TypeWithValues = [Constructor, any[]];
/**
 * @name Linkage
 * @description The wrapper for the result from a LinkedMap
 */
export default class Linkage<T extends Codec> extends Struct {
    constructor(Type: Constructor | InterfaceTypes, value?: any);
    static withKey<O extends Codec>(Type: Constructor | InterfaceTypes): Constructor<Linkage<O>>;
    readonly previous: Option<T>;
    readonly next: Option<T>;
    /**
     * @description Returns the base runtime type name for this instance
     */
    toRawType(): string;
    /**
     * @description Custom toU8a which with bare mode does not return the linkage if empty
     */
    toU8a(): Uint8Array;
}
/**
 * @name LinkageResult
 * @description A Linkage keys/Values tuple
 */
export declare class LinkageResult extends Tuple {
    constructor([TypeKey, keys]: TypeWithValues, [TypeValue, values]: TypeWithValues);
}
export {};
