import { Rule, RuleContext, RulesEvaluator } from '../permission'; import { BaseRelationalTransactionAdapter, RelationalAdapter, RelationalAuthorizableAdapter, RelationalAuthorizedAdapter, RelationalRawResult, RelationalTransactionAdapter } from '../adapter'; import { BaseRelationalAdapter } from '../adapter/base-relational-adapter'; import { DeleteSql, InsertSql, UpdateSql } from '../sql'; export interface AuthorizableClientOptions { rules: { id: string; rule: Rule; }[]; } export declare function authorizable & UpdateSql & DeleteSql>(adapter: RelationalAdapter, options: AuthorizableClientOptions): RelationalAuthorizableAdapter; export declare class AuthorizedTransactionAdapter & UpdateSql & DeleteSql> extends BaseRelationalTransactionAdapter implements RelationalTransactionAdapter { private adapter; private context; private rulesEvaluator; constructor(adapter: RelationalTransactionAdapter, context: RuleContext, rulesEvaluator: RulesEvaluator); exec(sql: T): void; execRaw(sql: string, values: any[]): void; supportsQuery(sql: S): this is RelationalAdapter; } export declare class AuthorizedAdapter & UpdateSql & DeleteSql> extends BaseRelationalAdapter implements RelationalAuthorizedAdapter { private adapter; private context; private ruleEvaluator; constructor(adapter: RelationalAdapter, context: RuleContext, ruleEvaluator: () => Promise); close(): Promise; exec(sql: any): Promise; execRaw(sql: string, values: any[]): Promise; isAuthorized(sql: any): Promise; supportsQuery(sql: S): this is RelationalAdapter; transaction(action: (adapter: RelationalTransactionAdapter) => void): Promise; }