export type StoredKeys = {
  publicKey: string;
  privateKey: string;
};

export type InvitationPayload = {
  jti: string;
  inviterPublicKey: string;
  inviteePublicKey?: string;
  expiresAtUnix: number;
  maxUses: number;
};

export type StorageLike = {
  getItem(key: string): string | null;
  setItem(key: string, value: string): void;
  removeItem(key: string): void;
};

export type AssetKind = "image" | "3d";

export type AssetVisibility = {
  isPublic: boolean;
};

export type AssetRecord = {
  id: string;
  ownerKey: string;
  checksum: string;
  ext: string;
  kind: AssetKind;
  mimeType?: string;
  sizeBytes: number;
  objectKey: string;
  isPublic: boolean;
  createdAt: string;
  updatedAt: string;
};

export type FeatureAsset = {
  id: string;
  kind: AssetKind;
  name?: string;
  description?: string;
  checksum: string;
  ext: string;
  isPublic: boolean;
  link: string;
};
