The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Box::Calc::BoxType;
BEGIN {
  $Box::Calc::BoxType::VERSION = '0.0501';
}

use strict;
use warnings;
use Moose;
use Ouch;

=head1 NAME

Box::Calc::BoxType - The container class for the types (sizes) of boxes that can be used for packing.

=head1 VERSION

version 0.0501

=head1 SYNOPSIS

 my $item = Box::Calc::BoxType->new(name => 'Apple', x => 3, y => 3.3, z => 4, weight => 5 );

=head1 METHODS

=head2 new(params)

Constructor.

=over

=item params

=over

=item x

The width of your box.

=item y

The length of your box.

=item z

The thickness of your box.

=item weight

The weight of the empty box.

=item name

The name of your box.

=item compatible_services

An array reference of shipping services this box is compatible with. See the complete list of services at L<http://api.boxcalc.net>. This is only necessary if you'r e using the C<shipping_options> method. 

=back

=back


=cut


has x => (
    is          => 'ro',
    required    => 1,
    isa         => 'Num',
);

has y => (
    is          => 'ro',
    required    => 1,
    isa         => 'Num',
);

has z => (
    is          => 'ro',
    required    => 1,
    isa         => 'Num',
);

has weight => (
    is          => 'ro',
    isa         => 'Num',
    required    => 1,
);

has name => (
    is          => 'ro',
    isa         => 'Str',
    required    => 1,
);

has compatible_services => (
    is          => 'ro',
    isa         => 'ArrayRef',
    default     => sub {[]},
);


no Moose;
__PACKAGE__->meta->make_immutable;