import { z } from 'zod';
import { type InferProvider } from './capability-definition.js';
/**
 * Cross-process route invocation envelope. The hub captures the
 * request as plain data, ships it to the worker via Moleculer, and
 * the worker runs the local handler against a capturing reply. The
 * envelope returned describes what the handler intended (status,
 * headers, body, or a redirect) so the hub can translate it back to
 * the Fastify reply that's actually wired to the socket.
 */
declare const InvokeRequestSchema: z.ZodObject<{
    method: z.ZodString;
    path: z.ZodString;
    params: z.ZodRecord<z.ZodString, z.ZodString>;
    query: z.ZodRecord<z.ZodString, z.ZodString>;
    body: z.ZodUnknown;
    headers: z.ZodRecord<z.ZodString, z.ZodString>;
    user: z.ZodOptional<z.ZodObject<{
        id: z.ZodString;
        username: z.ZodString;
        isAdmin: z.ZodBoolean;
    }, z.core.$strip>>;
    scopedToken: z.ZodOptional<z.ZodUnknown>;
}, z.core.$strip>;
declare const InvokeReplyEnvelopeSchema: z.ZodObject<{
    status: z.ZodNumber;
    headers: z.ZodRecord<z.ZodString, z.ZodString>;
    redirectUrl: z.ZodNullable<z.ZodString>;
    body: z.ZodOptional<z.ZodUnknown>;
    contentType: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export declare const addonRoutesCapability: {
    readonly name: "addon-routes";
    readonly scope: "system";
    readonly mode: "collection";
    readonly internal: true;
    readonly methods: {
        readonly getRoutes: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodArray<z.ZodObject<{
            method: z.ZodEnum<{
                GET: "GET";
                POST: "POST";
                PUT: "PUT";
                DELETE: "DELETE";
                PATCH: "PATCH";
            }>;
            path: z.ZodString;
            access: z.ZodOptional<z.ZodEnum<{
                public: "public";
                admin: "admin";
                authenticated: "authenticated";
            }>>;
            description: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
        /**
         * Cross-process dispatch entry point. Forked addons implement this
         * (via `buildAddonRouteProvider`) so the hub's Fastify catch-all
         * can route through Moleculer when the handler lives in a worker.
         *
         * Local addons can implement it for free with the same helper;
         * the hub bypasses the wire on co-located addons.
         */
        readonly invoke: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            method: z.ZodString;
            path: z.ZodString;
            params: z.ZodRecord<z.ZodString, z.ZodString>;
            query: z.ZodRecord<z.ZodString, z.ZodString>;
            body: z.ZodUnknown;
            headers: z.ZodRecord<z.ZodString, z.ZodString>;
            user: z.ZodOptional<z.ZodObject<{
                id: z.ZodString;
                username: z.ZodString;
                isAdmin: z.ZodBoolean;
            }, z.core.$strip>>;
            scopedToken: z.ZodOptional<z.ZodUnknown>;
        }, z.core.$strip>, z.ZodObject<{
            status: z.ZodNumber;
            headers: z.ZodRecord<z.ZodString, z.ZodString>;
            redirectUrl: z.ZodNullable<z.ZodString>;
            body: z.ZodOptional<z.ZodUnknown>;
            contentType: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>, "mutation">;
    };
};
export type IAddonRoutesProvider = InferProvider<typeof addonRoutesCapability>;
export { InvokeRequestSchema, InvokeReplyEnvelopeSchema };
//# sourceMappingURL=addon-routes.cap.d.ts.map