import {
  global
// } from '@declaration'
} from '../@declaration/_'

const Inmemory: {
  [ key: string ]: {
    privateKey?: string
    value: any
  }
} = {}
export const useStore: global.useStoreParams = {
  set: ( params ) => {
    let {
      key,
      value,
      privateKey
    } = params
    let Prev = Inmemory[ key ] || {}
    if ( Prev && Prev.privateKey && Prev.privateKey != privateKey ) return false

    Inmemory[ key ] = {
      privateKey,
      value
    }
    return true
  },
  update: ( params ) => {
    let {
      key,
      value,
      privateKey
    } = params

    let Prev = Inmemory[ key ] || {}
    if ( Prev && Prev.privateKey && Prev.privateKey != privateKey ) return false

    Inmemory[ key ] = {
      ...Inmemory[ key ],
      value: {
        ...Inmemory[ key ]?.value,
        ...value
      }
    }
    return true
  },
  get: ( key,privateKey ) => {
    let Data = Inmemory[ key ]
    if ( Data && Data.privateKey && Data.privateKey != privateKey ) return void 0
    return Data?.value
  },
  delete: ( key,privateKey ) => {
    let Data = Inmemory[ key ]
    if ( Data && Data.privateKey && Data.privateKey != privateKey ) return false
    delete Inmemory[ key ]
    return true
  }
}