import type { JoinToken, MutableAtomFamilyToken } from "atom.io" import type { UList } from "atom.io/transceivers/u-list" import type { Store } from "../store/index.ts" import { getJoin } from "./get-join.ts" export function getInternalRelationsFromStore< A extends string, B extends string, >( store: Store, token: JoinToken, ): MutableAtomFamilyToken | UList, A | B> export function getInternalRelationsFromStore< A extends string, B extends string, >( store: Store, token: JoinToken, split: `split`, ): [ atob: MutableAtomFamilyToken, A>, btoa: MutableAtomFamilyToken, B>, ] export function getInternalRelationsFromStore< A extends string, B extends string, >( store: Store, token: JoinToken, split?: `split`, ): | MutableAtomFamilyToken | UList, A | B> | [ atob: MutableAtomFamilyToken, A>, btoa: MutableAtomFamilyToken, B>, ] { const myJoin = getJoin(store, token) if (split === `split`) { return [ myJoin.relatedKeysAtoms as MutableAtomFamilyToken, A>, myJoin.relatedKeysAtoms as MutableAtomFamilyToken, B>, ] } return myJoin.relatedKeysAtoms }