import type { EntityPrivacyPolicy, EntityQueryContext, IEntityClass, ReadonlyEntity, ViewerContext } from '@expo/entity'; import { Entity } from '@expo/entity'; import type { AuthorizationResultBasedKnexEntityLoader } from './AuthorizationResultBasedKnexEntityLoader.ts'; import type { EnforcingKnexEntityLoader } from './EnforcingKnexEntityLoader.ts'; /** * Abstract base class for mutable entities backed by Postgres. * Provides `knexLoader` and `knexLoaderWithAuthorizationResults` as inherited static methods, * in addition to the mutation methods inherited from `Entity`. */ export declare abstract class PostgresEntity, TIDField extends keyof NonNullable>, TViewerContext extends ViewerContext, TSelectedFields extends keyof TFields = keyof TFields> extends Entity { /** * Vend knex loader for loading entities via knex-specific methods in a given query context. * * @param viewerContext - viewer context of loading user * @param queryContext - query context in which to perform the load */ static knexLoader>, TMViewerContext extends ViewerContext, TMViewerContext2 extends TMViewerContext, TMEntity extends ReadonlyEntity, TMPrivacyPolicy extends EntityPrivacyPolicy, TMSelectedFields extends keyof TMFields = keyof TMFields>(this: IEntityClass, viewerContext: TMViewerContext2, queryContext?: EntityQueryContext): EnforcingKnexEntityLoader; /** * Vend knex loader for loading entities via knex-specific methods in a given query context. * Returns authorization results instead of throwing on authorization errors. * * @param viewerContext - viewer context of loading user * @param queryContext - query context in which to perform the load */ static knexLoaderWithAuthorizationResults>, TMViewerContext extends ViewerContext, TMViewerContext2 extends TMViewerContext, TMEntity extends ReadonlyEntity, TMPrivacyPolicy extends EntityPrivacyPolicy, TMSelectedFields extends keyof TMFields = keyof TMFields>(this: IEntityClass, viewerContext: TMViewerContext2, queryContext?: EntityQueryContext): AuthorizationResultBasedKnexEntityLoader; }