# E0049

Warning name: `missing_definition`

Unused pub definition because it does not exist in mbti file.

A `.mbti` file contains the public interface of a package. When a package
implements a [virtual package](/toolchain/moon/package.md#virtual-package), it
is checked against the interface of that virtual package, and this warning is
emitted if extra public declarations are found.

## Erroneous example

```{literalinclude} /sources/error_codes/0049_error/moon.pkg.json
:caption: moon.pkg.json
:language: moonbit
```

```{literalinclude} /sources/error_codes/0049_error/E0049.mbti
:caption: pkg.mbti
:language: moonbit
```

```{literalinclude} /sources/error_codes/0049_error/top.mbt
:caption: top.mbt
:language: moonbit
```

## Suggestion

Remove the public declarations that does not appear in the interface.
