import { ArtChainId } from "@phi/protocol/src/supported-chain"; import { Address, Chain } from "viem"; export type BaseCredRequest = { executor: Address; creator: Address; credType: CredType; requirement: string; imageData: string; verificationSource: string; title: string; networks?: Chain["id"][]; project?: string; tags?: string[]; relatedLinks?: string[]; quantity: bigint; buyShareRoyalty: number; sellShareRoyalty: number; }; export type BaseRequest = Omit; export type MerkleCredRequest = BaseCredRequest & { verificationType: "MERKLE"; addressList: string; }; export type MerkleRequest = Omit; export type SignatureCredRequest = BaseCredRequest & { verificationType: "SIGNATURE"; method?: "API" | "EAS"; verifier: { address: `0x${string}`; endpoint: string; }; }; export type SignatureRequest = Omit; export interface BaseArtCreateInput { executor: Address; name: string; network: ArtChainId; artist: Address; receiver: Address; description: string; externalURL?: string; start: number; end: number; maxSupply?: number; price: number; soulbound: boolean; tags?: string[]; artType: ArtType; attributes?: Record; } export type ArtCreateInput = (BaseArtCreateInput & { artType: "API_ENDPOINT"; endpoint: string; previewInput: { address: string; data?: string; }; }) | (BaseArtCreateInput & { artType: "IMAGE"; } & ({ imageData: string; } | { imagePath: string; })); export type AddVerifierInput = { address: Address; endpoint: string; verificationSource: string; }; export type CredRequest = MerkleRequest | SignatureRequest; export type CredType = "BASIC" | "ADVANCED"; export type ArtType = "IMAGE" | "API_ENDPOINT"; export type VerifierResponse = { signature: string; mint_eligibility: boolean; data?: string | number; }; export type UpdateCredRequest = { title: string; requirement: string; imageData?: string; networks?: Chain["id"][]; relatedLinks?: string[]; tags?: string[]; project?: string; }; export type UpdateArtRequest = { executor?: Address; receiver: Address; maxSupply: bigint; price: number; start: number; end: number; royaltyBPS: number; royaltyRecipient: Address; }; export type UpdateConfig = { executor: Address; receiver: Address; endTime: bigint; startTime: bigint; maxSupply: bigint; mintFee: bigint; royaltyBPS: number; royaltyRecipient: Address; };