declare const FrameworkElementBase: {
    new (): HTMLElement;
    prototype: HTMLElement;
};
/**
 * Matrix Interface tag
 * Used to declare an interface implemented by a component
 *
 * Example:
 * ```html
 * <mx-interface name="DbService">
 *   {
 *     "name": "DbService",
 *     "version": "1.0.0",
 *     "methods": {
 *       "query": {
 *         "name": "query",
 *         "params": [
 *           { "name": "sql", "type": "string" }
 *         ],
 *         "returns": { "type": "array", "async": true }
 *       }
 *     }
 *   }
 * </mx-interface>
 * ```
 */
declare class MxInterface extends FrameworkElementBase {
    static define(): void;
}
/**
 * Matrix Contract tag
 * Used to declare channels for a component
 *
 * Example:
 * ```html
 * <mx-contract name="DataProvider">
 *   {
 *     "name": "DataProvider",
 *     "accepts": ["fetchData", "refreshCache"],
 *     "emits": ["dataChanged", "cacheUpdated"]
 *   }
 * </mx-contract>
 * ```
 */
declare class MxContract extends FrameworkElementBase {
    static define(): void;
}
/**
 * Matrix Proxy tag
 * Legacy / low-level alias for declaring a remote pseudo-child.
 *
 * Example:
 * ```html
 * <mx-proxy id="orders" mount="services.orders"></mx-proxy>
 * ```
 */
declare class MxProxy extends FrameworkElementBase {
    static define(): void;
}
/**
 * Matrix Service tag (canonical DSL for remote endpoints)
 * Used to declare a remote service dependency as a phantom child
 *
 * Example:
 * ```html
 * <mx-service id="dbService" mount="db" type="remote">
 *   {
 *     "name": "DbService",
 *     "methods": {
 *       "query": { "params": [{"name": "sql", "type": "string"}], "async": true }
 *     }
 *   }
 * </mx-service>
 * ```
 */
declare class MxService extends FrameworkElementBase {
    static define(): void;
}
/**
 * Matrix Middlewares tag
 * Namespacing container for middleware components. Children of this tag
 * participate in mount derivation so that, for example:
 *
 * ```html
 * <mx-middlewares id="middleware">
 *   <orders-logging-middleware id="logging"></orders-logging-middleware>
 * </mx-middlewares>
 * ```
 *
 * under a component mounted at app.orders will result in the
 * child being mounted at app.orders.middleware.logging.
 */
declare class MxMiddlewares extends FrameworkElementBase {
    static define(): void;
}
export declare function defineComponents(): void;
export { MxInterface, MxContract, MxProxy, MxService, MxMiddlewares };
export { MxTopicTag } from './components/MxTopicTag';
//# sourceMappingURL=components.d.ts.map