import { ByteBuffer } from '@xmcl/bytebuffer';
import '@xmcl/bytebuffer/varint32';
import '@xmcl/bytebuffer/varint64';
import type { PacketRegistry } from './channel';
export interface SlotData {
    blockId: number;
    itemCount?: number;
    itemDamage?: number;
    nbt?: any;
}
/**
 * The packet encode/decode algorithm
 */
export interface Coder<T> {
    readonly encode: (buffer: ByteBuffer, data: T, context?: PacketRegistry) => void;
    readonly decode: (buffer: ByteBuffer, context?: PacketRegistry) => T;
}
export declare const VarInt: Coder<number>;
export declare const Int: Coder<number>;
export declare const Byte: Coder<number>;
export declare const UByte: Coder<number>;
export declare const Bool: Coder<boolean>;
export declare const Float: Coder<number>;
export declare const Double: Coder<number>;
export declare const UUID: Coder<string>;
export declare const Short: Coder<number>;
export declare const UShort: Coder<number>;
export declare const Long: Coder<bigint>;
export declare const VarLong: Coder<bigint>;
export declare const String: Coder<string>;
export declare const Json: Coder<any>;
export declare const Slot: Coder<SlotData>;
export declare const ByteArray: Coder<Int8Array>;
//# sourceMappingURL=coders.d.ts.map