feat(contract): Add contract model