--- /dev/null
+package SQL::Translator;
+
+1;
--- /dev/null
+package SQL::Translator::Object;
+use base 'SQL::Translator';
+
+1;
--- /dev/null
+package SQL::Translator::Object::Column;
+use Moose;
+
+has 'name' => (is => 'ro', isa => 'Str', required => 1);
+has 'type' => (is => 'ro', isa => 'Str', required => 1);
+has 'size' => (is => 'ro', isa => 'Int', required => 1);
+has 'nullable' => (is => 'ro', isa => 'Bool', required => 1, default => 1);
+has 'default' => (is => 'ro', isa => 'Str', required => 0);
+has 'trigger' => (is => 'ro', isa => 'SQL::Translator::Object::Trigger', required => 0);
+
+1;
--- /dev/null
+package SQL::Translator::Object::Constraint;
+use Moose;
+
+has 'name' => (is => 'ro', isa => 'Str', required => 1);
+has 'columns' => (is => 'ro', isa => 'ArrayRef[SQL::Translator::Object::Column]', required => 1);
+has 'type' => (is => 'ro', isa => 'Str', required => 1);
+
+1;
--- /dev/null
+package SQL::Translator::Object::Index;
+use Moose;
+
+has 'name' => (is => 'ro', isa => 'Str', required => 1);
+has 'columns' => (is => 'ro', isa => 'ArrayRef[SQL::Translator::Object::Column]', required => 1);
+has 'type' => (is => 'ro', isa => 'Str', required => 1);
+
+1;
--- /dev/null
+package SQL::Translator::Object::Procedure;
+use Moose;
+
+1;
--- /dev/null
+package SQL::Translator::Object::Schema;
+use Moose;
+
+has 'tables' => (is => 'ro', isa => 'ArrayRef[SQL::Translator::Object::Table]', required => 1);
+has 'views' => (is => 'ro', isa => 'ArrayRef[SQL::Translator::Object::View]', required => 0);
+has 'procedures' => (is => 'ro', isa => 'ArrayRef[SQL::Translator::Object::Procedure]', required => 0);
+
+1;
--- /dev/null
+package SQL::Translator::Object::Table;
+use Moose;
+
+has 'name' => (is => 'ro', isa => 'Str', required => 1);
+has 'columns' => (is => 'ro', isa => 'ArrayRef[SQL::Translator::Object::Column]', required => 1);
+has 'indexes' => (is => 'ro', isa => 'ArrayRef[SQL::Translator::Object::Index]', required => 0);
+has 'constraints' => (is => 'ro', isa => 'ArrayRef[SQL::Translator::Object::Constraint]', required => 0);
+
+1;
--- /dev/null
+package SQL::Translator::Object::Trigger;
+use Moose;
+
+has 'name' => (is => 'ro', isa => 'Str', required => 1);
+
+1;
--- /dev/null
+package SQL::Translator::Object::View;
+use Moose;
+
+extends 'SQL::Translator::Object::Table';
+has 'sql' => (is => 'ro', isa => 'Str', required => 1);
+
+1;