import { IMetaClasse, ListaMetadataClasse, MetadataClasse } from "../metadata/classe.metadata";
import { IGrant, typeGrantEvent } from "./grant";
import { ListaPolicy } from "./policy";
import { ListaPostgresProprieta } from "./proprieta.postgres";
export interface IPostgresClasse extends IMetaClasse {
    queryPerVista?: string;
    nomeTabella?: string;
    like?: string;
    estende?: string;
    abilitaCreatedAt?: boolean;
    abilitaUpdatedAt?: boolean;
    abilitaDeletedAt?: boolean;
    creaId?: boolean;
    listaPolicy?: ListaPolicy;
    grants?: IGrant[];
    multiUnique?: {
        colonneDiRiferimento: string[];
    }[];
}
export declare class PostgresClasse extends MetadataClasse implements IPostgresClasse {
    queryPerVista?: string;
    listaProprieta: ListaPostgresProprieta;
    nomeTabella: string;
    like?: string;
    estende?: string;
    abilitaCreatedAt: boolean;
    abilitaUpdatedAt: boolean;
    abilitaDeletedAt: boolean;
    creaId: boolean;
    listaPolicy?: ListaPolicy;
    grants?: IGrant[];
    multiUnique?: {
        colonneDiRiferimento: string[];
    }[];
    faxSimile_abilitaDeletedAt: string;
    faxSimile_abilitaCreatedAt: string;
    faxSimile_abilitaUpdatedAt: string;
    faxsSimileIntestazione: string;
    faxsSimileIntestazioneView: string;
    constructor(item: IPostgresClasse);
    CostruisciCreazioneDB(/* client: Client */ elencoQuery: string[], padreEreditario: boolean): string;
    CostruisciRelazioniDB(/* client: Client */ elencoQuery: string[]): string;
    CostruisceGrant(grants: IGrant[], /*  client: Client */ elencoQuery: string[]): string;
    Mergia(item: PostgresClasse): void;
}
export declare class ListaPostgresClasse extends ListaMetadataClasse {
    constructor(item?: ListaPostgresClasse);
    Mergia(item: ListaPostgresClasse): void;
    CercaSeNoAggiungi(item: PostgresClasse): PostgresClasse;
    Cerca(item: PostgresClasse): PostgresClasse;
    AggiungiElemento(item: PostgresClasse): PostgresClasse;
}
export declare function TriggerDeleted_at(nomeTabella: string): string;
export declare function TriggerUpdate(nomeTabella: string): string;
export declare function CostruisciFunzione(item: any, nomeFunzioneCheck: string, nomePolicy: string, typeFunctionCheck: string, carattere: string | 'CK' | 'US', /* client: Client */ elencoQuery: string[]): string;
export declare function CostruisciRuoli(ruoli: string[]): string;
export declare function CostruisciEvents(events: typeGrantEvent[], nome?: string): string;
export declare function CreaID(): string;
export declare function TriggerUpdate_updated_at_column(): string;
export declare function CreateDataBase(nomeDB: string): string;
export declare function DropDataBase(nomeDB: string): string;
export declare function DropAllTable(): string;
