import type { OpenEditionMinterInstance } from '../contract' export type QueryType = typeof QUERY_TYPES[number] export const QUERY_TYPES = [ 'config', 'start_time', 'end_time', 'mint_price', 'mint_count', 'total_mint_count', 'status', ] as const export interface QueryListItem { id: QueryType name: string description?: string } export const QUERY_LIST: QueryListItem[] = [ { id: 'config', name: 'Config', description: 'View current config' }, { id: 'start_time', name: 'Start Time', description: 'View the start time for minting' }, { id: 'end_time', name: 'End Time', description: 'View the end time for minting' }, { id: 'mint_price', name: 'Mint Price', description: 'View the mint price' }, { id: 'mint_count', name: 'Mint Count for Address', description: 'View the total amount of minted tokens for an address', }, { id: 'total_mint_count', name: 'Total Mint Count', description: 'View the total amount of minted tokens', }, { id: 'status', name: 'Status', description: 'View contract status' }, ] export interface DispatchQueryProps { address: string messages: OpenEditionMinterInstance | undefined type: QueryType } export const dispatchQuery = (props: DispatchQueryProps) => { const { address, messages, type } = props switch (type) { case 'config': { return messages?.getConfig() } case 'status': { return messages?.getStatus() } case 'start_time': { return messages?.getStartTime() } case 'end_time': { return messages?.getEndTime() } case 'mint_price': { return messages?.getMintPrice() } case 'mint_count': { return messages?.getMintCount(address) } case 'total_mint_count': { return messages?.getTotalMintCount() } default: { throw new Error('unknown query type') } } }