import { SessionTypes, SignClientTypes } from '@walletconnect/types' import { proxy } from 'valtio' /** * Types */ interface ModalData { proposal?: SignClientTypes.EventArguments['session_proposal'] requestEvent?: SignClientTypes.EventArguments['session_request'] requestSession?: SessionTypes.Struct } interface State { open: boolean view?: | 'SessionProposalModal' | 'SessionSignModal' | 'SessionSignTypedDataModal' | 'SessionSendTransactionModal' | 'SessionUnsuportedMethodModal' | 'SessionSignCosmosModal' | 'SessionSignSolanaModal' | 'SessionSignPolkadotModal' data?: ModalData } /** * State */ const state = proxy({ open: false }) /** * Store / Actions */ const ModalStore = { state, open(view: State['view'], data: State['data']) { state.view = view state.data = data state.open = true }, close() { state.open = false } } export default ModalStore