import {
AnyAtomInstance,
AnyAtomTemplate,
AtomExportsType,
AtomParamsType,
AtomStateType,
ParamlessTemplate,
StateHookTuple,
} from '../types/index'
import { injectAtomInstance } from './injectAtomInstance'
export const injectAtomState: {
(
template: A,
params: AtomParamsType
): StateHookTuple, AtomExportsType>
>(template: A): StateHookTuple<
AtomStateType,
AtomExportsType
>
(template: ParamlessTemplate): StateHookTuple<
AtomStateType,
AtomExportsType
>
(instance: I): StateHookTuple<
AtomStateType,
AtomExportsType
>
} = (
atom: A,
params?: AtomParamsType
): StateHookTuple, AtomExportsType> => {
const instance = injectAtomInstance(atom, params as AtomParamsType, {
operation: 'injectAtomState',
subscribe: true,
})
return [instance.getState(), instance._infusedSetter]
}