import { D365ApiResponse, D365Config, D365DetailedAttributeMetadata, D365EntityMetadata, D365QueryOptions, D365QueryResult, HttpMethod } from "./types.js";
export declare class D365ApiClient {
    private authService;
    private baseUrl;
    constructor(config: D365Config);
    /**
     * Get metadata for a specific entity
     */
    getEntityMetadata(entityName: string, includeAttributes?: boolean): Promise<D365ApiResponse<D365EntityMetadata>>;
    /**
     * Get detailed metadata for a specific attribute of an entity
     */
    getAttributeMetadata(entityName: string, attributeName: string): Promise<D365ApiResponse<D365DetailedAttributeMetadata>>;
    /**
     * Get all entity sets (list of available entities)
     */
    getEntitySets(): Promise<D365ApiResponse<string[]>>;
    /**
     * Query entities with flexible options
     */
    queryEntities(entitySet: string, options?: D365QueryOptions): Promise<D365ApiResponse<D365QueryResult>>;
    /**
     * Get a specific entity by ID
     */
    getEntity(entitySet: string, id: string, select?: string[]): Promise<D365ApiResponse<any>>;
    /**
     * Create a new entity
     */
    createEntity(entitySet: string, data: Record<string, any>): Promise<D365ApiResponse<any>>;
    /**
     * Update an existing entity
     */
    updateEntity(entitySet: string, id: string, data: Record<string, any>): Promise<D365ApiResponse<any>>;
    /**
     * Delete an entity
     */
    deleteEntity(entitySet: string, id: string): Promise<D365ApiResponse<any>>;
    /**
     * Execute a custom OData query
     */
    executeCustomQuery(odataQuery: string): Promise<D365ApiResponse<any>>;
    /**
     * Execute a function or action
     */
    executeFunction(functionName: string, parameters?: Record<string, any>, method?: HttpMethod): Promise<D365ApiResponse<any>>;
    private buildQueryParams;
    private handleError;
}
