import { type OwnershipProof, SignatureProof, DeclarationProof, ScreenshotProof, ProofTypes, ProofStatus, } from "@notabene/javascript-sdk"; import { verifyBTCSignature } from "./bitcoin"; import { verifyPersonalSignEIP191 } from "./eth"; import { verifySolanaSignature, verifySolanaSIWS } from "./solana"; import { verifyPersonalSignTIP191 } from "./tron"; import { verifyCIP8Signature } from "./cardano"; import { verifyPersonalSignXRPL } from "./xrpl"; import { verifyStellarSignature } from "./xlm"; import { verifyConcordiumSignature } from "./concordium"; import { verifyCosmosSignature } from "./cosmos"; export async function verifyProof( proof: OwnershipProof, publicKey?: string, ): Promise { switch (proof.type) { case ProofTypes.SelfDeclaration: return { ...proof, status: (proof as DeclarationProof).confirmed ? ProofStatus.VERIFIED : ProofStatus.FAILED, }; case ProofTypes.Screenshot: return { ...proof, status: (proof as ScreenshotProof).url ? ProofStatus.FLAGGED : ProofStatus.FAILED, }; case ProofTypes.CIP8: return verifyCIP8Signature(proof as SignatureProof); case ProofTypes.EIP191: return verifyPersonalSignEIP191(proof as SignatureProof); case ProofTypes.ED25519: return verifySolanaSignature(proof as SignatureProof); case ProofTypes.SOL_SIWX: return verifySolanaSIWS(proof as SignatureProof); case ProofTypes.XRP_ED25519: return verifyPersonalSignXRPL(proof as SignatureProof, publicKey); case ProofTypes.XLM_ED25519: return verifyStellarSignature(proof as SignatureProof); case ProofTypes.CONCORDIUM: return verifyConcordiumSignature(proof as SignatureProof); case ProofTypes.COSMOS: return verifyCosmosSignature(proof as SignatureProof); case ProofTypes.EIP712: case ProofTypes.BIP137: case ProofTypes.BIP322: return verifyBTCSignature(proof as SignatureProof); case ProofTypes.TIP191: return verifyPersonalSignTIP191(proof as SignatureProof); case ProofTypes.BIP137_XPUB: case ProofTypes.MicroTransfer: } return proof; }