export type QueryOrder = "asc" | "desc"; export interface ScalarFilter { readonly equals?: T; readonly in?: readonly T[]; readonly is?: null; readonly isNot?: null; } export interface OrderedFilter extends ScalarFilter { readonly lt?: T; readonly lte?: T; readonly gt?: T; readonly gte?: T; } export interface StringFilter extends OrderedFilter { readonly like?: string; readonly ilike?: string; } export interface ArrayMembershipFilter { readonly has: string; } export interface JsonPathFilter { readonly path: readonly [string, ...readonly string[]]; /** Compare ISO timestamps at microsecond precision; omitted means text. */ readonly as?: "text" | "timestamp"; readonly equals?: string; readonly in?: readonly string[]; readonly lt?: string; readonly lte?: string; readonly gt?: string; readonly gte?: string; readonly like?: string; readonly ilike?: string; readonly is?: null; readonly isNot?: null; } export interface RelationListFilter { readonly some?: TWhere; readonly none?: TWhere; readonly every?: TWhere; } export type WhereExpression = TFields & { readonly and?: readonly WhereExpression[]; readonly or?: readonly WhereExpression[]; readonly not?: WhereExpression; }; export type RowWhere = WhereExpression | ArrayMembershipFilter : TField extends TJson ? JsonPathFilter : TField extends TPattern ? StringFilter : TField extends TOrdered ? OrderedFilter : ScalarFilter; }>>; export type RowSelect = Partial> & { readonly json?: Readonly>; }; export type OneFieldOrderBy = { readonly [TField in keyof TRow]: Readonly<{ readonly [TKey in TField]: QueryOrder; }> & Partial, never>>; }[keyof TRow]; export type RowOrderBy = readonly [ OneFieldOrderBy, ...readonly OneFieldOrderBy[] ]; export type TimeBucket = "hour" | "day" | "week" | "month"; export interface JsonPath { readonly path: readonly [string, ...readonly string[]]; } export type JsonScalarType = "text" | "numeric" | "boolean" | "timestamp"; export interface JsonProjection extends JsonPath { readonly as: JsonScalarType; } export interface JsonFieldProjection extends JsonProjection { readonly field: string; } export type JsonProjectedValue = TProjection extends { readonly as: "numeric"; } ? string | null : TProjection extends { readonly as: "boolean"; } ? boolean | null : TProjection extends { readonly as: "timestamp"; } ? Date | null : string | null; export type JsonProjectionResult = TArgs extends { readonly select?: { readonly json?: infer TSelections; }; } ? TSelections extends Readonly> ? { readonly [TName in keyof TSelections]: JsonProjectedValue; } : {} : {}; export interface JsonGroupBy extends JsonProjection { readonly name: string; } export type ToOneRelationArgs = true | { readonly where?: TWhere; readonly select?: TSelect; readonly orderBy?: TOrderBy; readonly include?: TInclude; }; export interface ToManyRelationArgs extends QueryPageArgs { /** Required to bound to-many includes; unlike top-level `findMany`, `take: 0` here still means zero rows. */ readonly take: number; readonly where?: TWhere; readonly select?: TSelect; readonly orderBy?: TOrderBy; readonly include?: TInclude; } export interface GroupAggregateArgs { readonly count?: true; readonly min?: readonly TNumericField[]; readonly max?: readonly TNumericField[]; readonly sum?: readonly TNumericField[]; } export interface GroupByArgs { readonly where?: TWhere; readonly by: readonly [TKey, ...readonly TKey[]]; readonly aggregate: GroupAggregateArgs; } export interface QueryPageArgs { readonly skip?: number; readonly take?: number; } export interface ContractRow { readonly contractId: string; readonly templateId: TemplateId; readonly packageId: string | null; readonly payload: unknown; readonly witnesses: readonly string[]; readonly createdEventOffset: string; readonly createdAt: Date | null; readonly archivedEventOffset: string | null; readonly archivedAt: Date | null; readonly active: boolean; } export interface ContractRelationRow { readonly contractType?: ContractTypeRow; readonly createdTransaction?: TransactionRow; readonly archivedTransaction?: TransactionRow | null; readonly exercises?: readonly ExerciseRow[]; } export type ContractResult = ContractRow & ContractRelationRow; export interface TemplateId { readonly packageId: string; readonly moduleName: string; readonly entityName: string; } type PayloadValueFilter = { readonly as?: "text" | "timestamp"; } & ({ readonly equals: string; readonly lt?: never; readonly lte?: never; readonly gt?: never; readonly gte?: never; readonly like?: never; readonly ilike?: never; } | { readonly lt: string; readonly equals?: never; readonly lte?: never; readonly gt?: never; readonly gte?: never; readonly like?: never; readonly ilike?: never; } | { readonly lte: string; readonly equals?: never; readonly lt?: never; readonly gt?: never; readonly gte?: never; readonly like?: never; readonly ilike?: never; } | { readonly gt: string; readonly equals?: never; readonly lt?: never; readonly lte?: never; readonly gte?: never; readonly like?: never; readonly ilike?: never; } | { readonly gte: string; readonly equals?: never; readonly lt?: never; readonly lte?: never; readonly gt?: never; readonly like?: never; readonly ilike?: never; } | { readonly like: string; readonly equals?: never; readonly lt?: never; readonly lte?: never; readonly gt?: never; readonly gte?: never; readonly ilike?: never; } | { readonly ilike: string; readonly equals?: never; readonly lt?: never; readonly lte?: never; readonly gt?: never; readonly gte?: never; readonly like?: never; }); export type PayloadMatch = { readonly [field: string]: PayloadMatch | PayloadValueFilter; }; export type ContractPayloadFilter = { readonly match: PayloadMatch; }; type ContractWhereFields = { readonly contractId?: StringFilter; readonly templateId?: Partial<{ readonly packageId: StringFilter; readonly moduleName: StringFilter; readonly entityName: StringFilter; }>; readonly packageId?: StringFilter; readonly createdEventOffset?: OrderedFilter; readonly createdAt?: OrderedFilter; readonly archivedEventOffset?: OrderedFilter; readonly archivedAt?: OrderedFilter; readonly active?: boolean | ScalarFilter; readonly witnesses?: { readonly has: string; }; readonly payload?: ContractPayloadFilter; readonly contractType?: ContractTypeWhere; readonly createdTransaction?: TransactionWhere; readonly archivedTransaction?: TransactionWhere; readonly exercises?: RelationListFilter; }; export type ContractWhere = WhereExpression; export type ContractOrderField = "contractId" | "createdEventOffset" | "createdAt" | "archivedEventOffset" | "archivedAt"; export type ContractOrderBy = readonly [ OneFieldOrderBy>, ...readonly OneFieldOrderBy>[] ]; export type ContractSelect = RowSelect; /** `take: 0` returns all matching rows (no limit), matching `skip: 0`'s "no offset" meaning. */ export interface ContractFindManyArgs extends QueryPageArgs { readonly parties?: readonly string[]; readonly where?: ContractWhere; readonly orderBy?: ContractOrderBy; readonly select?: ContractSelect; readonly include?: ContractInclude; } export interface ContractFindUniqueArgs { readonly where: { readonly contractId: string; }; readonly select?: ContractSelect; readonly include?: ContractInclude; } export interface ContractCountArgs { readonly parties?: readonly string[]; readonly where?: ContractWhere; } export type ContractGroupByKey = ContractOrderField | "witnesses" | { readonly payload: JsonGroupBy; }; export type ContractGroupByArgs = GroupByArgs; export type ContractGroupRow = Readonly>; export interface ContractTypeRow { readonly pk: string; readonly payloadType: string; readonly aliases: readonly string[]; readonly packageName: string; readonly moduleName: string; readonly entityName: string; readonly templateFqn: string; } export interface EventRow { readonly pk: string; readonly txIx: string; readonly eventId: string; readonly type: string; } export interface ExerciseRow { readonly tpePk: string; readonly contractTpePk: string; readonly exerciseEventPk: string | null; readonly exercisedAtIx: string | null; readonly contractId: string; readonly argument: unknown; readonly result: unknown; readonly redactionId: string | null; readonly packagePk: string; readonly controllers: readonly string[]; readonly lastDescendantNodeId: string; readonly witnesses: readonly string[]; } export interface ExerciseTypeRow { readonly pk: string; readonly choice: string; readonly consuming: boolean; readonly aliases: readonly string[]; readonly packageName: string; readonly moduleName: string; readonly entityName: string; readonly templateFqn: string; readonly choiceFqn: string; } export interface PackageRow { readonly pk: string; readonly name: string; readonly version: string; readonly id: string; } export interface TransactionRow { readonly ix: string; readonly offset: string; readonly transactionId: string | null; readonly effectiveAt: Date | null; readonly workflowId: string | null; readonly domainId: string | null; readonly traceContext: unknown; readonly externalTransactionHash: Uint8Array | null; readonly paidTrafficCost: string | null; } export interface WatermarkRow { readonly singleton: boolean; readonly ix: string | null; readonly offset: string | null; readonly instanceId: string | null; } export type ContractTypeResult = ContractTypeRow & { readonly contracts?: readonly ContractResult[]; readonly exercises?: readonly ExerciseResult[]; }; export type EventResult = EventRow & { readonly transaction?: TransactionResult; readonly exercises?: readonly ExerciseResult[]; }; export type ExerciseResult = ExerciseRow & { readonly exerciseType?: ExerciseTypeResult; readonly contractType?: ContractTypeResult; readonly event?: EventResult | null; readonly transaction?: TransactionResult | null; readonly package?: PackageResult; readonly contract?: ContractResult; }; export type ExerciseTypeResult = ExerciseTypeRow & { readonly exercises?: readonly ExerciseResult[]; }; export type PackageResult = PackageRow & { readonly exercises?: readonly ExerciseResult[]; }; export type TransactionResult = TransactionRow & { readonly events?: readonly EventResult[]; readonly createdContracts?: readonly ContractResult[]; readonly archivedContracts?: readonly ContractResult[]; readonly exercises?: readonly ExerciseResult[]; }; export type ContractTypeWhere = RowWhere & { readonly contracts?: RelationListFilter; readonly exercises?: RelationListFilter; }; export type ContractTypeSelect = RowSelect; export type ContractTypeOrderBy = RowOrderBy; export type ContractTypeUnique = { readonly pk: string; }; export type EventWhere = RowWhere & { readonly transaction?: TransactionWhere; readonly exercises?: RelationListFilter; }; export type EventSelect = RowSelect; export type EventOrderBy = RowOrderBy; export type EventUnique = { readonly pk: string; }; export type ExerciseWhere = RowWhere & { readonly exerciseType?: ExerciseTypeWhere; readonly contractType?: ContractTypeWhere; readonly event?: EventWhere; readonly transaction?: TransactionWhere; readonly package?: PackageWhere; readonly contract?: ContractWhere; }; export type ExerciseSelect = RowSelect; export type ExerciseOrderBy = RowOrderBy; export type ExerciseTypeWhere = RowWhere & { readonly exercises?: RelationListFilter; }; export type ExerciseTypeSelect = RowSelect; export type ExerciseTypeOrderBy = RowOrderBy; export type ExerciseTypeUnique = { readonly pk: string; }; export type PackageWhere = RowWhere & { readonly exercises?: RelationListFilter; }; export type PackageSelect = RowSelect; export type PackageOrderBy = RowOrderBy; export type PackageUnique = { readonly pk: string; } | { readonly id: string; }; export type TransactionWhere = RowWhere & { readonly events?: RelationListFilter; readonly createdContracts?: RelationListFilter; readonly archivedContracts?: RelationListFilter; readonly exercises?: RelationListFilter; }; export type TransactionSelect = RowSelect; export type TransactionOrderBy = RowOrderBy; export type TransactionUnique = { readonly ix: string; } | { readonly offset: string; }; export type WatermarkWhere = RowWhere; export type WatermarkSelect = RowSelect; export type WatermarkOrderBy = RowOrderBy; export type WatermarkUnique = { readonly singleton: boolean; }; export interface ContractInclude { readonly contractType?: ToOneRelationArgs; readonly createdTransaction?: ToOneRelationArgs; readonly archivedTransaction?: ToOneRelationArgs; readonly exercises?: ToManyRelationArgs; } export interface ContractTypeInclude { readonly contracts?: ToManyRelationArgs; readonly exercises?: ToManyRelationArgs; } export interface EventInclude { readonly transaction?: ToOneRelationArgs; readonly exercises?: ToManyRelationArgs; } export interface ExerciseInclude { readonly exerciseType?: ToOneRelationArgs; readonly contractType?: ToOneRelationArgs; readonly event?: ToOneRelationArgs; readonly transaction?: ToOneRelationArgs; readonly package?: ToOneRelationArgs; readonly contract?: ToOneRelationArgs; } export interface ExerciseTypeInclude { readonly exercises?: ToManyRelationArgs; } export interface PackageInclude { readonly exercises?: ToManyRelationArgs; } export interface TransactionInclude { readonly events?: ToManyRelationArgs; readonly createdContracts?: ToManyRelationArgs; readonly archivedContracts?: ToManyRelationArgs; readonly exercises?: ToManyRelationArgs; } export type EventGroupByKey = keyof EventRow | { readonly transaction: { readonly effectiveAt: { readonly bucket: TimeBucket; }; }; }; export type EventGroupByArgs = GroupByArgs; export type EventGroupRow = Readonly>; export type ExerciseGroupByKey = keyof ExerciseRow | { readonly argument: JsonGroupBy; } | { readonly result: JsonGroupBy; }; export type ExerciseGroupByArgs = GroupByArgs; export type ExerciseGroupRow = Readonly>; export type TransactionGroupByKey = keyof TransactionRow | { readonly effectiveAt: { readonly bucket: TimeBucket; }; } | { readonly traceContext: JsonGroupBy; }; export type TransactionGroupByArgs = GroupByArgs; export type TransactionGroupRow = Readonly>; export type ContractTypeGroupByArgs = GroupByArgs; export type ContractTypeGroupRow = Readonly>; export type ExerciseTypeGroupByArgs = GroupByArgs; export type ExerciseTypeGroupRow = Readonly>; export type PackageGroupByArgs = GroupByArgs; export type PackageGroupRow = Readonly>; export type WatermarkGroupByArgs = GroupByArgs; export type WatermarkGroupRow = Readonly>; export declare function assertQueryPageArgs(args: QueryPageArgs): void; export declare function assertQueryOrderBy(orderBy: readonly Readonly>[]): void; export {};