import { IMetaProprieta, ListaMetadataProprieta, MetadataProprieta } from "../metadata/proprieta.metadata";
import { tipo } from "../utility";
import { ListaPostgresClasse } from "./classe.postgres";
import { Constraint, IConstraints } from "./constraint";
import { IGrant } from "./grant";
import { ITrigger, Trigger } from "./trigger";
export interface IPostgresProprieta extends IMetaProprieta {
    Constraints?: IConstraints;
    valore?: any;
    descrizione: string;
    sommario: string;
    trigger?: ITrigger[];
    grants?: IGrant[];
    getCheck?: (valore: any) => boolean | Error;
    setCheck?: (valore: any) => boolean | any | Error;
}
export declare class PostgresProprieta extends MetadataProprieta implements IPostgresProprieta {
    Constraints?: Constraint;
    valore: any;
    nome: string;
    tipo: tipo;
    descrizione: string;
    sommario: string;
    trigger?: Trigger[];
    grants?: IGrant[];
    constructor(item: IPostgresProprieta);
    Verifica(): boolean;
    AppoggioCostruzioneStringa(item: tipo): string;
    CostruisciCreazioneDB(nomeClasse: string): string;
    CostruisciRelazioniDB(nomeTabella: string): string;
    CostruisciListaTrigger(vet: ITrigger[]): void;
    CostruisceTrigger(nomeTabella: string, elencoQuery: string[]): Promise<void>;
}
export declare class ListaPostgresProprieta extends ListaMetadataProprieta {
    constructor();
    Mergia(item: ListaPostgresClasse): void;
    CercaSeNoAggiungi(item: PostgresProprieta): PostgresProprieta;
    Cerca(item: PostgresProprieta): PostgresProprieta | undefined;
    AggiungiElemento(item: PostgresProprieta): PostgresProprieta;
}
