package Finance::Alpaca::Types 0.9902 {
    use strictures 2;
    use Type::Library -base;
    use Types::Standard -types;
    use Type::Tiny::Class;
    use Time::Moment;
    our @EXPORT = qw[Timestamp];

    # Type::Tiny::Class is a subclass of Type::Tiny for creating
    # InstanceOf-like types. It's kind of better though because
    # it does cool stuff like pass through $type->new(%args) to
    # the class's constructor.
    #
    my $dt = __PACKAGE__->add_type(
        Type::Tiny::Class->new( name => 'Timestamp', class => 'Time::Moment', ) );

    # Can't just use "plus_coercions" method because that creates
    # a new anonymous child type to add the coercions to. We want
    # to add them to the type which exists in this library.
    #
    $dt->coercion->add_type_coercions(

        #Undef() => q[Time::Moment->now()],
        Int() => q[Time::Moment->from_epoch($_)],
        Str() => q[Time::Moment->from_string($_)]
    );
    __PACKAGE__->make_immutable;
};
1;

# No need for docs as this is internal