diff --git a/src/app/api/login/route.ts b/src/app/api/login/route.ts
index 0f66f55..2eab077 100644
--- a/src/app/api/login/route.ts
+++ b/src/app/api/login/route.ts
@@ -1,11 +1,11 @@
-import bcryptjs from 'bcryptjs';
-import { SignJWT } from 'jose';
-import { NextResponse } from 'next/server';
+import bcryptjs from "bcryptjs";
+import { SignJWT } from "jose";
+import { NextResponse } from "next/server";
-import { PrismaClient } from '@prisma/client';
-import { env } from '@utils/env';
+import { PrismaClient } from "@prisma/client";
+import { env } from "@utils/env";
-import { findUserByEmail, readUserCsv, User } from '../functions/csvReadWrite';
+import { findUserByEmail, readUserCsv, User } from "../functions/csvReadWrite";
const usingPrisma = false;
let prisma: PrismaClient;
@@ -45,12 +45,12 @@ export async function POST(req: Request) {
include: {
earthquakes: true,
observatories: true,
- artifacts: true,
+ artefacts: true,
superior: true,
subordinates: true,
},
},
- purchasedArtifacts: true,
+ purchasedArtefacts: true,
},
});
diff --git a/src/app/api/warehouse/route.ts b/src/app/api/warehouse/route.ts
index ffcc6d0..4a2fcd0 100644
--- a/src/app/api/warehouse/route.ts
+++ b/src/app/api/warehouse/route.ts
@@ -1,15 +1,15 @@
-import { NextResponse } from 'next/server';
+import { NextResponse } from "next/server";
-import { PrismaClient } from '@prisma/client';
-import { env } from '@utils/env';
-import { verifyJwt } from '@utils/verifyJwt';
+import { PrismaClient } from "@prisma/client";
+import { env } from "@utils/env";
+import { verifyJwt } from "@utils/verifyJwt";
const usingPrisma = false;
let prisma: PrismaClient;
if (usingPrisma) prisma = new PrismaClient();
-// Artifact type
-interface Artifact {
+// Artefact type
+interface Artefact {
id: number;
name: string;
description: string;
@@ -29,7 +29,7 @@ export async function POST(req: Request) {
if (!token) return NextResponse.json({ message: "Unauthorised" }, { status: 401 });
await verifyJwt({ token, secret: env.JWT_SECRET_KEY });
- const warehouseArtifacts: Artifact[] = [
+ const warehouseArtefacts: Artefact[] = [
{
id: 1,
name: "Solidified Lava Chunk",
@@ -87,17 +87,17 @@ export async function POST(req: Request) {
},
];
- let artifacts;
- if (usingPrisma) artifacts = await prisma.artifacts.findMany();
+ let artefacts;
+ if (usingPrisma) artefacts = await prisma.artefacts.findMany();
- if (artifacts) {
- return NextResponse.json({ message: "Got artifacts successfully", artifacts }, { status: 200 });
+ if (artefacts) {
+ return NextResponse.json({ message: "Got artefacts successfully", artefacts }, { status: 200 });
} else {
- return NextResponse.json({ message: "Got earthquakes successfully", earthquakes: warehouseArtifacts }, { status: 200 });
+ return NextResponse.json({ message: "Got earthquakes successfully", earthquakes: warehouseArtefacts }, { status: 200 });
// return NextResponse.json({ message: "Failed to get earthquakes" }, { status: 401 });
}
} catch (error) {
- console.error("Error in artifacts endpoint:", error);
+ console.error("Error in artefacts endpoint:", error);
return NextResponse.json({ message: "Internal Server Error" }, { status: 500 });
} finally {
if (usingPrisma) await prisma.$disconnect();
diff --git a/src/app/contact-us/page.tsx b/src/app/contact-us/page.tsx
index fc371e8..1ab18d9 100644
--- a/src/app/contact-us/page.tsx
+++ b/src/app/contact-us/page.tsx
@@ -1,6 +1,6 @@
"use client";
-import Image from 'next/image';
-import React, { useState } from 'react';
+import Image from "next/image";
+import React, { useState } from "react";
const ContactUs = () => {
const [formData, setFormData] = useState({
@@ -37,8 +37,8 @@ const ContactUs = () => {
{/* Header */}
Contact Us
- Have questions or concerns about earthquakes, observatories or artifacts? Contact us via phone, email, social media or using the form below with the relevant
- contact details.
+ Have questions or concerns about earthquakes, observatories or artefacts? Contact us via phone, email, social media or
+ using the form below with the relevant contact details.
{/* Content Section */}
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 4c384d7..2d539a3 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -32,7 +32,7 @@ const store = createStore({
name: "Emily Neighbour",
role: "ADMIN",
scientist: undefined,
- purchasedArtifacts: [],
+ purchasedArtefacts: [],
},
});
diff --git a/src/app/page.tsx b/src/app/page.tsx
index 817f41f..ece9666 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -39,10 +39,10 @@ export default function Home() {
href="/shop"
className="flex flex-col items-center p-6 hover:bg-white hover:bg-opacity-10 rounded-xl transition-colors duration-300"
>
-
- Artifacts
+
+ Artefacts
- View or purchase recently discovered artifacts from seismic events
+ View or purchase recently discovered artefacts from seismic events
diff --git a/src/app/shop/page.tsx b/src/app/shop/page.tsx
index 5c6cf50..c8b7088 100644
--- a/src/app/shop/page.tsx
+++ b/src/app/shop/page.tsx
@@ -2,21 +2,21 @@
import Image from "next/image";
import { Dispatch, SetStateAction, useCallback, useState } from "react";
-import Artifact from "@appTypes/Artifact";
+import Artefact from "@appTypes/Artefact";
import { Currency } from "@appTypes/StoreModel";
import { useStoreState } from "@hooks/store";
-// Artifacts Data
-const artifacts: Artifact[] = [
+// Artefacts Data
+const artefacts: Artefact[] = [
{
id: 1,
name: "Golden Scarab",
- description: "An ancient Egyptian artifact symbolizing rebirth.",
+ description: "An ancient Egyptian artefact symbolizing rebirth.",
location: "Cairo, Egypt",
earthquakeID: "h",
observatory: "jhd",
dateReleased: "12/02/2025",
- image: "/artifact1.jpg",
+ image: "/artefact1.jpg",
price: 150,
},
{
@@ -27,7 +27,7 @@ const artifacts: Artifact[] = [
earthquakeID: "h",
observatory: "jhd",
dateReleased: "12/02/2025",
- image: "/artifact2.jpg",
+ image: "/artefact2.jpg",
price: 200,
},
{
@@ -38,7 +38,7 @@ const artifacts: Artifact[] = [
earthquakeID: "h",
observatory: "jhd",
dateReleased: "12/02/2025",
- image: "/artifact3.jpg",
+ image: "/artefact3.jpg",
price: 120,
},
{
@@ -49,7 +49,7 @@ const artifacts: Artifact[] = [
earthquakeID: "h",
observatory: "jhd",
dateReleased: "12/02/2025",
- image: "/artifact4.jpg",
+ image: "/artefact4.jpg",
price: 80,
},
{
@@ -60,7 +60,7 @@ const artifacts: Artifact[] = [
earthquakeID: "h",
observatory: "jhd",
dateReleased: "12/02/2025",
- image: "/artifact5.jpg",
+ image: "/artefact5.jpg",
price: 300,
},
{
@@ -71,7 +71,7 @@ const artifacts: Artifact[] = [
earthquakeID: "h",
observatory: "jhd",
dateReleased: "12/02/2025",
- image: "/artifact6.jpg",
+ image: "/artefact6.jpg",
price: 250,
},
{
@@ -82,7 +82,7 @@ const artifacts: Artifact[] = [
earthquakeID: "h",
observatory: "jhd",
dateReleased: "12/02/2025",
- image: "/artifact7.jpg",
+ image: "/artefact7.jpg",
price: 175,
},
{
@@ -93,7 +93,7 @@ const artifacts: Artifact[] = [
earthquakeID: "h",
observatory: "jhd",
dateReleased: "12/02/2025",
- image: "/artifact8.jpg",
+ image: "/artefact8.jpg",
price: 400,
},
{
@@ -104,7 +104,7 @@ const artifacts: Artifact[] = [
earthquakeID: "h",
observatory: "jhd",
dateReleased: "12/02/2025",
- image: "/artifact9.jpg",
+ image: "/artefact9.jpg",
price: 220,
},
{
@@ -115,7 +115,7 @@ const artifacts: Artifact[] = [
earthquakeID: "h",
observatory: "jhd",
dateReleased: "12/02/2025",
- image: "/artifact10.jpg",
+ image: "/artefact10.jpg",
price: 150,
},
{
@@ -126,7 +126,7 @@ const artifacts: Artifact[] = [
earthquakeID: "h",
observatory: "jhd",
dateReleased: "12/02/2025",
- image: "/artifact11.jpg",
+ image: "/artefact11.jpg",
price: 500,
},
{
@@ -137,7 +137,7 @@ const artifacts: Artifact[] = [
earthquakeID: "h",
observatory: "jhd",
dateReleased: "12/02/2025",
- image: "/artifact12.jpg",
+ image: "/artefact12.jpg",
price: 300,
},
{
@@ -148,18 +148,18 @@ const artifacts: Artifact[] = [
earthquakeID: "h",
observatory: "jhd",
dateReleased: "12/02/2025",
- image: "/artifact13.jpg",
+ image: "/artefact13.jpg",
price: 250,
},
{
id: 14,
name: "Crystal Skull",
- description: "A mystical pre-Columbian artifact.",
+ description: "A mystical pre-Columbian artefact.",
location: "Colombia",
earthquakeID: "h",
observatory: "jhd",
dateReleased: "12/02/2025",
- image: "/artifact14.jpg",
+ image: "/artefact14.jpg",
price: 1000,
},
{
@@ -170,7 +170,7 @@ const artifacts: Artifact[] = [
earthquakeID: "h",
observatory: "jhd",
dateReleased: "12/02/2025",
- image: "/artifact15.jpg",
+ image: "/artefact15.jpg",
price: 400,
},
{
@@ -181,18 +181,18 @@ const artifacts: Artifact[] = [
earthquakeID: "h",
observatory: "jhd",
dateReleased: "12/02/2025",
- image: "/artifact16.jpg",
+ image: "/artefact16.jpg",
price: 500,
},
];
export default function Shop() {
const [currentPage, setCurrentPage] = useState(1);
- const [selectedArtifact, setSelectedArtifact] = useState(null);
- const artifactsPerPage = 12;
- const indexOfLastArtifact = currentPage * artifactsPerPage;
- const indexOfFirstArtifact = indexOfLastArtifact - artifactsPerPage;
- const currentArtifacts = artifacts.slice(indexOfFirstArtifact, indexOfLastArtifact);
+ const [selectedArtefact, setSelectedArtefact] = useState(null);
+ const artefactsPerPage = 12;
+ const indexOfLastArtefact = currentPage * artefactsPerPage;
+ const indexOfFirstArtefact = indexOfLastArtefact - artefactsPerPage;
+ const currentArtefacts = artefacts.slice(indexOfFirstArtefact, indexOfLastArtefact);
const selectedCurrency = useStoreState((state) => state.currency.selectedCurrency);
const conversionRates = useStoreState((state) => state.currency.conversionRates);
@@ -201,7 +201,7 @@ export default function Shop() {
const convertPrice = useCallback((price: number, currency: Currency) => (price * conversionRates[currency]).toFixed(2), []);
const handleNextPage = () => {
- if (indexOfLastArtifact < artifacts.length) {
+ if (indexOfLastArtefact < artefacts.length) {
setCurrentPage((prev) => prev + 1);
}
};
@@ -211,11 +211,11 @@ export default function Shop() {
}
};
- function Modal({ artifact }: { artifact: Artifact }) {
- if (!artifact) return null;
+ function Modal({ artefact }: { artefact: Artefact }) {
+ if (!artefact) return null;
const handleOverlayClick = (e: { target: any; currentTarget: any }) => {
if (e.target === e.currentTarget) {
- setSelectedArtifact(null);
+ setSelectedArtefact(null);
}
};
return (
@@ -224,23 +224,23 @@ export default function Shop() {
onClick={handleOverlayClick}
>
-
{artifact.name}
+
{artefact.name}
{currencyTickers[selectedCurrency]}
- {convertPrice(artifact.price, selectedCurrency)}
+ {convertPrice(artefact.price, selectedCurrency)}
-
{artifact.description}
-
Location: {artifact.location}
-
{artifact.earthquakeID}
-
{artifact.observatory}
-
{artifact.dateReleased}
+
{artefact.description}
+
Location: {artefact.location}
+
{artefact.earthquakeID}
+
{artefact.observatory}
+
{artefact.dateReleased}
alert("Purchased Successfully!")}
@@ -254,20 +254,20 @@ export default function Shop() {
);
}
- function ArtifactCard({ artifact }: { artifact: Artifact }) {
+ function ArtefactCard({ artefact }: { artefact: Artefact }) {
return (
setSelectedArtifact(artifact)}
+ onClick={() => setSelectedArtefact(artefact)}
>
-
+
-
{artifact.name}
-
{artifact.location}
-
{artifact.earthquakeID}
+
{artefact.name}
+
{artefact.location}
+
{artefact.earthquakeID}
{currencyTickers[selectedCurrency]}
- {convertPrice(artifact.price, selectedCurrency)}
+ {convertPrice(artefact.price, selectedCurrency)}
@@ -278,7 +278,7 @@ export default function Shop() {
{/* Title & Subheading */}
- Artifact Shop
+ Artefact Shop
- Discover extraordinary historical artifacts and collectibles from major seismic events from around the world - now
+ Discover extraordinary historical artefacts and collectibles from major seismic events from around the world - now
available for purchase.
- {/* Artifact Grid */}
+ {/* Artefact Grid */}
{" "}
{/* gap-10 for more spacing */}
- {currentArtifacts.map((artifact) => (
-
+ {currentArtefacts.map((artefact) => (
+
))}
@@ -318,9 +318,9 @@ export default function Shop() {
{currentPage}
= artifacts.length}
+ disabled={indexOfLastArtefact >= artefacts.length}
className={`mx-2 px-4 py-1 bg-blue-500 text-white rounded-md font-bold shadow-md ${
- indexOfLastArtifact >= artifacts.length ? "opacity-50 cursor-not-allowed" : "hover:bg-blue-600"
+ indexOfLastArtefact >= artefacts.length ? "opacity-50 cursor-not-allowed" : "hover:bg-blue-600"
}`}
>
Next →
@@ -329,7 +329,7 @@ export default function Shop() {
{/* Modal */}
- {selectedArtifact && }
+ {selectedArtefact && }
);
}
diff --git a/src/app/warehouse/page.tsx b/src/app/warehouse/page.tsx
index dcd9ede..cbc6dc7 100644
--- a/src/app/warehouse/page.tsx
+++ b/src/app/warehouse/page.tsx
@@ -1,12 +1,12 @@
"use client";
-import { Dispatch, SetStateAction, useMemo, useState } from 'react';
-import { FaTimes } from 'react-icons/fa';
-import { FaCalendarPlus, FaCartShopping, FaWarehouse } from 'react-icons/fa6';
-import { IoFilter, IoFilterCircleOutline, IoFilterOutline, IoToday } from 'react-icons/io5';
+import { Dispatch, SetStateAction, useMemo, useState } from "react";
+import { FaTimes } from "react-icons/fa";
+import { FaCalendarPlus, FaCartShopping, FaWarehouse } from "react-icons/fa6";
+import { IoFilter, IoFilterCircleOutline, IoFilterOutline, IoToday } from "react-icons/io5";
-// import type { Artifact } from "@prisma/client";
+// import type { Artefact } from "@prisma/client";
-interface Artifact {
+interface Artefact {
id: number;
name: string;
description: string;
@@ -18,8 +18,8 @@ interface Artifact {
dateAdded: string;
}
-// Warehouse Artifacts Data
-const warehouseArtifacts: Artifact[] = [
+// Warehouse Artefacts Data
+const warehouseArtefacts: Artefact[] = [
{
id: 1,
name: "Solidified Lava Chunk",
@@ -140,14 +140,14 @@ function FilterInput({
}
// Table Component
-function ArtifactTable({
- artifacts,
+function ArtefactTable({
+ artefacts,
filters,
setFilters,
- setEditArtifact,
+ setEditArtefact,
clearSort,
}: {
- artifacts: Artifact[];
+ artefacts: Artefact[];
filters: Record
;
setFilters: Dispatch<
SetStateAction<{
@@ -162,15 +162,15 @@ function ArtifactTable({
dateAdded: string;
}>
>;
- setEditArtifact: (artifact: Artifact) => void;
+ setEditArtefact: (artefact: Artefact) => void;
clearSort: () => void;
}) {
const [sortConfig, setSortConfig] = useState<{
- key: keyof Artifact;
+ key: keyof Artefact;
direction: "asc" | "desc";
} | null>(null);
- const handleSort = (key: keyof Artifact) => {
+ const handleSort = (key: keyof Artefact) => {
setSortConfig((prev) => {
if (!prev || prev.key !== key) {
return { key, direction: "asc" };
@@ -186,9 +186,9 @@ function ArtifactTable({
clearSort();
};
- const sortedArtifacts = useMemo(() => {
- if (!sortConfig) return artifacts;
- const sorted = [...artifacts].sort((a, b) => {
+ const sortedArtefacts = useMemo(() => {
+ if (!sortConfig) return artefacts;
+ const sorted = [...artefacts].sort((a, b) => {
const aValue = a[sortConfig.key];
const bValue = b[sortConfig.key];
if (aValue < bValue) return sortConfig.direction === "asc" ? -1 : 1;
@@ -196,9 +196,9 @@ function ArtifactTable({
return 0;
});
return sorted;
- }, [artifacts, sortConfig]);
+ }, [artefacts, sortConfig]);
- const columns: { label: string; key: keyof Artifact; width: string }[] = [
+ const columns: { label: string; key: keyof Artefact; width: string }[] = [
{ label: "ID", key: "id", width: "5%" },
{ label: "Name", key: "name", width: "12%" },
{ label: "Earthquake ID", key: "earthquakeId", width: "10%" },
@@ -217,7 +217,7 @@ function ArtifactTable({
{columns.map(({ label, key, width }) => (
-
handleSort(key as keyof Artifact)}>
+
handleSort(key as keyof Artefact)}>
{label}
@@ -250,11 +250,11 @@ function ArtifactTable({
- {sortedArtifacts.map((artifact) => (
+ {sortedArtefacts.map((artefact) => (
setEditArtifact(artifact)}
+ onClick={() => setEditArtefact(artefact)}
>
{columns.map(({ key, width }) => (
{key === "isRequired"
- ? artifact.isRequired
+ ? artefact.isRequired
? "Yes"
: "No"
: key === "isSold"
- ? artifact.isSold
+ ? artefact.isSold
? "Yes"
: "No"
: key === "isCollected"
- ? artifact.isCollected
+ ? artefact.isCollected
? "Yes"
: "No"
- : artifact[key]}
+ : artefact[key]}
))}
@@ -284,7 +284,7 @@ function ArtifactTable({
);
}
-// Modal Component for Logging Artifact
+// Modal Component for Logging Artefact
function LogModal({ onClose }: { onClose: () => void }) {
const [name, setName] = useState("");
const [description, setDescription] = useState("");
@@ -312,7 +312,7 @@ function LogModal({ onClose }: { onClose: () => void }) {
alert(`Logged ${name} to storage: ${storageLocation}`);
onClose();
} catch {
- setError("Failed to log artifact. Please try again.");
+ setError("Failed to log artefact. Please try again.");
} finally {
setIsSubmitting(false);
}
@@ -324,7 +324,7 @@ function LogModal({ onClose }: { onClose: () => void }) {
onClick={handleOverlayClick}
>
-
Log New Artifact
+
Log New Artefact
{error &&
{error}
}
void }) {
value={name}
onChange={(e) => setName(e.target.value)}
className="w-full p-2 border border-neutral-300 rounded-md placeholder-neutral-400 focus:ring-2 focus:ring-blue-500"
- aria-label="Artifact Name"
+ aria-label="Artefact Name"
disabled={isSubmitting}
/>
@@ -524,16 +524,16 @@ function BulkLogModal({ onClose }: { onClose: () => void }) {
);
}
-// Modal Component for Editing Artifact
-function EditModal({ artifact, onClose }: { artifact: Artifact; onClose: () => void }) {
- const [name, setName] = useState(artifact.name);
- const [description, setDescription] = useState(artifact.description);
- const [location, setLocation] = useState(artifact.location);
- const [earthquakeId, setEarthquakeId] = useState(artifact.earthquakeId);
- const [isRequired, setIsRequired] = useState(artifact.isRequired);
- const [isSold, setIsSold] = useState(artifact.isSold);
- const [isCollected, setIsCollected] = useState(artifact.isCollected);
- const [dateAdded, setDateAdded] = useState(artifact.dateAdded);
+// Modal Component for Editing Artefact
+function EditModal({ artefact, onClose }: { artefact: Artefact; onClose: () => void }) {
+ const [name, setName] = useState(artefact.name);
+ const [description, setDescription] = useState(artefact.description);
+ const [location, setLocation] = useState(artefact.location);
+ const [earthquakeId, setEarthquakeId] = useState(artefact.earthquakeId);
+ const [isRequired, setIsRequired] = useState(artefact.isRequired);
+ const [isSold, setIsSold] = useState(artefact.isSold);
+ const [isCollected, setIsCollected] = useState(artefact.isCollected);
+ const [dateAdded, setDateAdded] = useState(artefact.dateAdded);
const [error, setError] = useState("");
const [isSubmitting, setIsSubmitting] = useState(false);
@@ -551,10 +551,10 @@ function EditModal({ artifact, onClose }: { artifact: Artifact; onClose: () => v
setIsSubmitting(true);
try {
await new Promise((resolve) => setTimeout(resolve, 500)); // Simulated API call
- alert(`Updated artifact ${name}`);
+ alert(`Updated artefact ${name}`);
onClose();
} catch {
- setError("Failed to update artifact. Please try again.");
+ setError("Failed to update artefact. Please try again.");
} finally {
setIsSubmitting(false);
}
@@ -566,7 +566,7 @@ function EditModal({ artifact, onClose }: { artifact: Artifact; onClose: () => v
onClick={handleOverlayClick}
>
-
Edit Artifact
+
Edit Artefact
{error &&
{error}
}
)}
-
setSortConfig(null)}
/>
@@ -837,7 +837,7 @@ export default function Warehouse() {
{/* Modals */}
{showLogModal &&
setShowLogModal(false)} />}
{showBulkLogModal && setShowBulkLogModal(false)} />}
- {editArtifact && setEditArtifact(null)} />}
+ {editArtefact && setEditArtefact(null)} />}
);
}
diff --git a/src/databases/Artefacts.csv b/src/databases/Artefacts.csv
new file mode 100644
index 0000000..91b8e74
--- /dev/null
+++ b/src/databases/Artefacts.csv
@@ -0,0 +1 @@
+Artefacts
\ No newline at end of file
diff --git a/src/databases/Artifacts.csv b/src/databases/Artifacts.csv
deleted file mode 100644
index b6762a6..0000000
--- a/src/databases/Artifacts.csv
+++ /dev/null
@@ -1 +0,0 @@
-Artifacts
\ No newline at end of file
diff --git a/src/types/Artifact.ts b/src/types/Artefact.ts
similarity index 81%
rename from src/types/Artifact.ts
rename to src/types/Artefact.ts
index b9ef623..672ff4a 100644
--- a/src/types/Artifact.ts
+++ b/src/types/Artefact.ts
@@ -1,4 +1,4 @@
-interface Artifact {
+interface Artefact {
// todo change to string
id: number;
name: string;
@@ -11,4 +11,4 @@ interface Artifact {
price: number;
}
-export default Artifact;
+export default Artefact;
diff --git a/src/types/StoreModel.ts b/src/types/StoreModel.ts
index 89027d3..0fef253 100644
--- a/src/types/StoreModel.ts
+++ b/src/types/StoreModel.ts
@@ -1,4 +1,4 @@
-import { Action } from 'easy-peasy';
+import { Action } from "easy-peasy";
// import type { User } from "@prisma/client";
@@ -14,10 +14,10 @@ interface Scientist {
subordinates: Scientist[];
// earthquakes: Earthquake[];
// observatories: Observatory[];
- artifacts: Artifact[];
+ artefacts: Artefact[];
}
-interface Artifact {
+interface Artefact {
id: number;
name: string;
description: string;
@@ -37,7 +37,7 @@ interface User {
passwordHash: string;
role: string;
scientist: Scientist | undefined;
- purchasedArtifacts: Artifact[];
+ purchasedArtefacts: Artefact[];
}
type Currency = "GBP" | "USD" | "EUR";