import type { WhiteListInstance } from '../contract' export type QueryType = typeof QUERY_TYPES[number] export const QUERY_TYPES = [ 'has_started', 'has_ended', 'is_active', 'members', 'admin_list', 'has_member', 'config', ] as const export interface QueryListItem { id: QueryType name: string description?: string } export const QUERY_LIST: QueryListItem[] = [ { id: 'has_started', name: 'Has Started', description: 'Check if the whitelist minting has started' }, { id: 'has_ended', name: 'Has Ended', description: 'Check if the whitelist minting has ended' }, { id: 'is_active', name: 'Is Active', description: 'Check if the whitelist minting is active' }, { id: 'members', name: 'Members', description: 'View the whitelist members' }, { id: 'admin_list', name: 'Admin List', description: 'View the whitelist admin list' }, { id: 'has_member', name: 'Has Member', description: 'Check if a member is in the whitelist' }, { id: 'config', name: 'Config', description: 'View the whitelist configuration' }, ] export interface DispatchQueryProps { messages: WhiteListInstance | undefined type: QueryType address: string } export const dispatchQuery = (props: DispatchQueryProps) => { const { messages, type, address } = props switch (type) { case 'has_started': return messages?.hasStarted() case 'has_ended': return messages?.hasEnded() case 'is_active': return messages?.isActive() case 'members': return messages?.members() case 'admin_list': return messages?.adminList() case 'has_member': return messages?.hasMember(address) case 'config': return messages?.config() default: { throw new Error('unknown query type') } } }