/**
 * @fileoverview OrdoJS RPC Generator - Automatic RPC stub generation
 */
import { type ComponentAST, type ParameterNode, type TypeAnnotation } from '../types/index.js';
/**
 * RPC generation options
 */
export interface RPCGeneratorOptions {
    endpoint?: string;
    timeout?: number;
    retries?: number;
    errorHandling?: 'throw' | 'return-null' | 'return-error';
    authentication?: boolean;
    compression?: boolean;
}
/**
 * RPC call metadata
 */
export interface RPCCallMetadata {
    componentName: string;
    functionName: string;
    parameters: ParameterNode[];
    returnType: TypeAnnotation;
    isAsync: boolean;
    middleware: string[];
    permissions: string[];
}
/**
 * Generated RPC stub
 */
export interface RPCStub {
    functionName: string;
    clientCode: string;
    serverEndpoint: string;
    metadata: RPCCallMetadata;
}
/**
 * RPC Generator for automatic stub generation
 */
export declare class RPCGenerator {
    private options;
    private indentLevel;
    constructor(options?: Partial<RPCGeneratorOptions>);
    /**
     * Generate RPC stubs for all public server functions in a component
     */
    generateRPCStubs(ast: ComponentAST): RPCStub[];
    /**
     * Generate client-side RPC stub code
     */
    generateClientStub(metadata: RPCCallMetadata): string;
    /**
     * Generate server endpoint path
     */
    generateServerEndpoint(metadata: RPCCallMetadata): string;
    /**
     * Generate Express.js route handler for server function
     */
    generateServerRouteHandler(metadata: RPCCallMetadata): string;
    /**
     * Generate complete RPC client module
     */
    generateRPCClientModule(stubs: RPCStub[], componentName: string): string;
    /**
     * Generate complete server routes module
     */
    generateServerRoutesModule(stubs: RPCStub[], componentName: string): string;
    /**
     * Generate parameter string for function signature
     */
    private generateParameterString;
    /**
     * Generate default value for parameter
     */
    private generateDefaultValue;
    /**
     * Helper to generate indentation
     */
    private indent;
}
//# sourceMappingURL=rpc-generator.d.ts.map