import { IPermitClient } from "../types/IPermitClient";
import { IPermitConfig } from "../types/IPermitConfig";
import { User, Action, Resource, Context } from "../models/PermissionModels";
import { Permit } from "permitio";
export declare class PermitClient implements IPermitClient {
    private permitInstance;
    private config;
    private initialized;
    private initializationPromise;
    constructor(config: IPermitConfig);
    /**
     * Initialize the Permit SDK connection
     * This is called automatically when the client is constructed
     */
    private initialize;
    /**
     * Ensure the SDK is initialized before performing operations
     */
    private ensureInitialized;
    /**
     * Check if a user has permission to perform an action on a resource
     */
    check(user: User, action: Action, resource: Resource, context?: Context): Promise<boolean>;
    /**
     * Enforce permission check - throws if permission is denied
     */
    enforceCheck(user: User, action: Action, resource: Resource, context?: Context): Promise<void>;
    getUserPermissions(userId: string): Promise<import("permitio/build/main/enforcement/interfaces").IUserPermissions>;
    getAllowedResourceIds(userId: User, resourceType: string, action: Action): Promise<string[]>;
    filterObjects(user: User, action: Action, resources: Array<any>): Promise<Array<any>>;
    syncResourceInstanceCreate(resourceType: string, resourceKey: string, tenant?: string, attributes?: Record<string, any>): Promise<import("permitio/build/main/openapi").ResourceInstanceRead>;
    syncResourceInstanceUpdate(resourceType: string, resourceKey: string, tenant?: string, attributes?: Record<string, any>): Promise<import("permitio/build/main/openapi").ResourceInstanceRead>;
    syncResourceInstanceDelete(resourceType: string, resourceKey: string): Promise<void>;
    /**
     * Get the underlying Permit SDK instance for advanced usage
     */
    getPermitInstance(): Permit;
}
