import { printType, expectAssignable, expectType } from 'tsd';

import { Updux, ActionGenerator, action } from '.';

const dux = new Updux({});
expectType<unknown>( dux.initial );


() => {

    const dux = new Updux<{a: string}>({});

    expectAssignable<{initial: {a:string}}>(dux);
}

// ActionGenerator
() => {
    let a = action('a');
    expectAssignable<{type: string}>(a);
    expectAssignable<() => {payload?: unknown}>(a);

    let b = action('b', (() => ({})) as unknown as (name: string) => { name: string } );
    const c = b("foo");
    expectAssignable<{payload: { name: string } }>(c);


}
