import { Accessor } from 'solid-js';

type Assign<T, U> = Omit<T, keyof U> & U;
type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
type CollectionItem = string | object;
type MaybeAccessor<T> = Accessor<T> | T;
type MaybePromise<T> = T | Promise<T>;

export type { Assign as A, CollectionItem as C, MaybeAccessor as M, Optional as O, MaybePromise as a };
