//#region src/application/contracts/userDirectoryContracts.types.d.ts
type UserAccountStatus = "invited" | "active" | "inactive";
type UserAccountDto = Readonly<{
  id: string;
  email: string;
  status: UserAccountStatus;
  inviteExpiresAt: string | null;
  /** Ways the user can sign in (password + linked OAuth / OIDC / email-link accounts). */
  loginMethods: ReadonlyArray<string>;
}>;
/** Wire/cache payloads may omit `loginMethods` (older servers or partial JSON). */
type UserAccountDtoInput = Readonly<Omit<UserAccountDto, "loginMethods"> & {
  loginMethods?: ReadonlyArray<string> | undefined;
}>;
type InviteUserResponseDto = Readonly<{
  user: UserAccountDto;
  inviteUrl: string;
}>;
declare function withUserAccountLoginMethodsDefaults(input: UserAccountDtoInput): UserAccountDto;
declare function withInviteUserResponseLoginMethodsDefaults(input: Readonly<{
  user: UserAccountDtoInput;
  inviteUrl: string;
}>): InviteUserResponseDto;
type VerifyUserInviteResponseDto = Readonly<{
  valid: boolean;
  email?: string;
}>;
type InviteUserRequestDto = Readonly<{
  email: string;
}>;
type AcceptUserInviteRequestDto = Readonly<{
  token: string;
  password: string;
}>;
type UpdateUserAccountStatusRequestDto = Readonly<{
  status: UserAccountStatus;
}>;
/** Result of CLI/bootstrap `upsert` for a local password user (distinct from invite-based onboarding). */
type UpsertLocalBootstrapUserResultDto = Readonly<{
  outcome: "created" | "updated";
}>;
//#endregion
//#region src/application/contracts/CollectionContracts.types.d.ts
/**
 * DTOs for the Collections HTTP API.
 * Pure types — no classes, no imports with side effects.
 */
interface CollectionFieldDto {
  readonly name: string;
  readonly type: string;
  readonly nullable: boolean;
  readonly hasDefault: boolean;
}
interface CollectionIndexDto {
  readonly fields: ReadonlyArray<string>;
  readonly unique: boolean;
}
interface CollectionSummaryDto {
  readonly name: string;
  readonly fieldCount: number;
  readonly rowCount: number;
}
interface CollectionDetailDto {
  readonly name: string;
  readonly fields: ReadonlyArray<CollectionFieldDto>;
  readonly indexes: ReadonlyArray<CollectionIndexDto>;
}
interface CollectionRowDto {
  readonly id: string;
  readonly created_at: string;
  readonly updated_at: string;
  readonly data: Readonly<Record<string, unknown>>;
}
interface ListCollectionRowsResponseDto {
  readonly rows: ReadonlyArray<CollectionRowDto>;
  readonly total: number;
  readonly limit: number;
  readonly offset: number;
}
interface SyncCollectionsResponseDto {
  readonly planned: number;
  readonly applied: number;
  readonly dryRun: boolean;
}
//#endregion
export { withInviteUserResponseLoginMethodsDefaults as _, CollectionSummaryDto as a, AcceptUserInviteRequestDto as c, UpdateUserAccountStatusRequestDto as d, UpsertLocalBootstrapUserResultDto as f, VerifyUserInviteResponseDto as g, UserAccountStatus as h, CollectionRowDto as i, InviteUserRequestDto as l, UserAccountDtoInput as m, CollectionFieldDto as n, ListCollectionRowsResponseDto as o, UserAccountDto as p, CollectionIndexDto as r, SyncCollectionsResponseDto as s, CollectionDetailDto as t, InviteUserResponseDto as u, withUserAccountLoginMethodsDefaults as v };
//# sourceMappingURL=CollectionContracts.types-DDyFYT_D.d.ts.map