import type { ISerializable } from './ISerializable';
import type { SerializationFormat } from './SerializationFormat';
import type { IComponentSchema } from './IComponentSchema';
/**
 * Abstract base class for serializable components
 *
 * Extend this class and implement toSchema() to get automatic
 * serialization to all 5 representation formats.
 *
 * @example
 * class MyComponent extends Serializable {
 *   toSchema(): IComponentSchema {
 *     return {
 *       name: 'MyComponent',
 *       accepts: { doThing: { params: {} } },
 *       emits: { thingDone: { payload: {} } }
 *     };
 *   }
 * }
 *
 * const comp = new MyComponent();
 * comp.serialize('html');   // → <matrix-my-component>...</matrix-my-component>
 * comp.serialize('sexpr');  // → (component "MyComponent" ...)
 */
export declare abstract class Serializable implements ISerializable {
    /**
     * Get the canonical schema for this component.
     * Subclasses must implement this.
     */
    abstract toSchema(): IComponentSchema;
    /**
     * Serialize to the specified format.
     *
     * @param format - One of: 'html', 'fluent', 'sexpr', 'topics', 'json'
     * @returns Serialized string representation
     */
    serialize(format: SerializationFormat): string;
}
//# sourceMappingURL=Serializable.d.ts.map