import { Schema, Decoder, Iterator } from "@colyseus/schema";
import type { Serializer } from "./Serializer.ts";
import type { Room } from "../Room.ts";
export type SchemaConstructor<T = Schema> = new (...args: any[]) => T;
export declare function getStateCallbacks<T>(room: Room<any, T>): import("@colyseus/schema").SchemaCallbackProxy<T>;
export declare class SchemaSerializer<T extends Schema = any> implements Serializer<T> {
    state: T;
    decoder: Decoder<T>;
    setState(encodedState: Uint8Array, it?: Iterator): void;
    getState(): T;
    patch(patches: Uint8Array, it?: Iterator): import("@colyseus/schema").DataChange<any, string>[];
    teardown(): void;
    handshake(bytes: Uint8Array, it?: Iterator): void;
}
