import { entityKind } from "../entity.js";
import type { SQL } from "../sql/sql.js";
import type { CockroachRole } from "./roles.js";
import type { CockroachTable } from "./table.js";
export type CockroachPolicyToOption = 'public' | 'current_user' | 'session_user' | (string & {}) | CockroachPolicyToOption[] | CockroachRole;
export interface CockroachPolicyConfig {
    as?: 'permissive' | 'restrictive';
    for?: 'all' | 'select' | 'insert' | 'update' | 'delete';
    to?: CockroachPolicyToOption;
    using?: SQL;
    withCheck?: SQL;
}
export declare class CockroachPolicy implements CockroachPolicyConfig {
    readonly name: string;
    static readonly [entityKind]: string;
    readonly as: CockroachPolicyConfig['as'];
    readonly for: CockroachPolicyConfig['for'];
    readonly to: CockroachPolicyConfig['to'];
    readonly using: CockroachPolicyConfig['using'];
    readonly withCheck: CockroachPolicyConfig['withCheck'];
    constructor(name: string, config?: CockroachPolicyConfig);
    link(table: CockroachTable): this;
}
export declare function cockroachPolicy(name: string, config?: CockroachPolicyConfig): CockroachPolicy;
