import type { Action, PermissionContext, PermissionProvider, PermissionRule, Resource, RoleDefinition } from "../types"; export interface OpenFGATuple { user: string; relation: string; object: string; } export interface OpenFGAProviderConfig { apiUrl?: string | undefined; storeId?: string | undefined; authToken?: string | undefined; } export interface OpenFGACheckRequest { tuple_key: { user: string; relation: string; object: string; }; } export interface OpenFGACheckResponse { allowed: boolean; } export interface OpenFGAWriteRequest { writes?: { tuple_keys: OpenFGATuple[]; }; deletes?: { tuple_keys: OpenFGATuple[]; }; } export interface OpenFGAListObjectsRequest { user: string; relation: string; type: string; } export declare class OpenFGAProvider implements PermissionProvider { private apiUrl; private storeId; private authToken; private roleDefinitions; constructor(config?: string | OpenFGAProviderConfig, roles?: RoleDefinition[]); defineRole(definition: RoleDefinition): void; getRulesForRole(role: string): PermissionRule[]; private endpoint; private headers; check(user: string, relation: string, object: string): Promise; write(tuples: OpenFGATuple[]): Promise; delete(tuples: OpenFGATuple[]): Promise; listObjects(user: string, relation: string, type: string): Promise; can(_context: PermissionContext, _action: Action, _resource: Resource, _subject?: unknown): boolean; cannot(context: PermissionContext, action: Action, resource: Resource, subject?: unknown): boolean; canAsync(context: PermissionContext, action: Action, resource: Resource, subject?: unknown): Promise; private formatUser; private formatObject; private extractSubjectId; buildAbilityFor(_context: PermissionContext): unknown; } export declare function createOpenFGAProvider(config?: string | OpenFGAProviderConfig, roles?: RoleDefinition[]): OpenFGAProvider; //# sourceMappingURL=openfga.d.ts.map