import express from 'express';
/**
 * Configuration options for RESTEndpointHandler
 */
export interface RESTEndpointHandlerOptions {
    /**
     * Array of entity names to include in the API (case-insensitive)
     * If provided, only these entities will be accessible through the REST API
     * Supports wildcards using '*' (e.g., 'User*' matches 'User', 'UserRole', etc.)
     */
    includeEntities?: string[];
    /**
     * Array of entity names to exclude from the API (case-insensitive)
     * These entities will not be accessible through the REST API
     * Supports wildcards using '*' (e.g., 'Secret*' matches 'Secret', 'SecretKey', etc.)
     * Note: Exclude patterns always override include patterns
     */
    excludeEntities?: string[];
    /**
     * Array of schema names to include in the API (case-insensitive)
     * If provided, only entities in these schemas will be accessible through the REST API
     */
    includeSchemas?: string[];
    /**
     * Array of schema names to exclude from the API (case-insensitive)
     * Entities in these schemas will not be accessible through the REST API
     * Note: Exclude patterns always override include patterns
     */
    excludeSchemas?: string[];
}
/**
 * RESTEndpointHandler provides REST API functionality for MemberJunction entities
 * This class handles request routing and processing for a /rest endpoint that exposes
 * entity operations via REST instead of GraphQL
 */
export declare class RESTEndpointHandler {
    private router;
    private options;
    constructor(options?: RESTEndpointHandlerOptions);
    /**
     * Helper to safely extract a string from Express route params
     * Express 5.x types params as string | string[] | undefined
     */
    private getStringParam;
    /**
     * Determines if an entity is allowed based on include/exclude lists
     * with support for wildcards and schema-level filtering
     * @param entityName The name of the entity to check
     * @returns True if the entity is allowed, false otherwise
     */
    private isEntityAllowed;
    /**
     * Set up all the API routes for the REST endpoints
     */
    private setupRoutes;
    /**
     * Middleware to check entity access based on include/exclude lists
     */
    private checkEntityAccess;
    /**
     * Middleware to extract MJ user from request
     */
    private extractMJUser;
    /**
     * Error handling middleware
     */
    private errorHandler;
    /**
     * Get the current user
     */
    private getCurrentUser;
    /**
     * Lists entities with optional filtering
     */
    private getEntityList;
    /**
     * Get a single entity by ID
     */
    private getEntity;
    /**
     * Create a new entity
     */
    private createEntity;
    /**
     * Update an existing entity
     */
    private updateEntity;
    /**
     * Delete an entity
     */
    private deleteEntity;
    /**
     * Get record changes for an entity
     */
    private getRecordChanges;
    /**
     * Get record dependencies for an entity
     */
    private getRecordDependencies;
    /**
     * Get entity record name
     */
    private getEntityRecordName;
    /**
     * Run a view
     */
    private runView;
    /**
     * Run multiple views in batch
     */
    private runViews;
    /**
     * Get entity for a view
     */
    private getViewEntity;
    /**
     * Get metadata for all entities
     */
    private getEntityMetadata;
    /**
     * Get field metadata for a specific entity
     */
    private getEntityFieldMetadata;
    /**
     * Get metadata about available views for an entity
     */
    private getViewsMetadata;
    /**
     * Get favorite status for a record
     */
    private getRecordFavoriteStatus;
    /**
     * Set favorite status for a record
     */
    private setRecordFavoriteStatus;
    /**
     * Remove favorite status for a record
     */
    private removeRecordFavoriteStatus;
    /**
     * Execute a transaction
     */
    private executeTransaction;
    /**
     * Run a report
     */
    private runReport;
    /**
     * Run a query
     */
    private runQuery;
    /**
     * Helper method to create a composite key from an ID
     */
    private createCompositeKey;
    /**
     * Get the Express router with all configured routes
     */
    getRouter(): express.Router;
}
//# sourceMappingURL=RESTEndpointHandler.d.ts.map