import type { Codec } from '../../serializable/codec';
import type { TypeSymbols } from '../constants';
export interface Serializable {
    _type: TypeSymbols;
    toBytes(codec: Codec): Uint8Array;
}
export interface SerializableStatic {
    new (...args: any[]): Serializable;
    fromBytes(bytes: Uint8Array, codec: Codec): [Serializable, Uint8Array];
}
export declare function staticImplements<T>(): <U extends T>(constructor: U) => void;
export declare function serializable(): <U extends SerializableStatic>(constructor: U) => void;
export interface Amounter extends Serializable {
    amount(): bigint;
}
//# sourceMappingURL=types.d.ts.map