# VM Integration This page describes the interface required to implement protocol logic component. To create a VM implementation, it is required two provide a manifest file as well as a implementation of the corresponding adapter interface. ## Step by step ### Prerequisites 1. Install [Foundry](https://book.getfoundry.sh/getting-started/installation#using-foundryup). ```bash curl -L https://foundry.paradigm.xyz | bash ``` 2. Start by making a local copy of the Propeller Protocol Lib repository: ```bash git clone https://github.com/propeller-heads/propeller-protocol-lib ``` 3. Install forge dependencies: ```bash cd ./propeller-protocol-lib/evm/ forge install ``` ### Understanding the ISwapAdapter 1. Read the the documentation of the [Ethereum Solidity interface](ethereum-solidity.md). It describes the functions that need to be implemented as well as the manifest file. 2. Additionally read through the docstring of the [ISwapAdapter.sol](../../../evm/src/interfaces/ISwapAdapter.sol) interface and the [ISwapAdapterTypes.sol](../../../evm/src/interfaces/ISwapAdapterTypes.sol) interface which defines the data types and errors used by the adapter interface. 3. You can also generate the documentation locally and the look at the generated documentation in the `./docs` folder: ```bash forge doc ``` ### Implementing the ISwapAdapter interface 1. Your integration should be in a separate directory in the `evm/src` folder. Start by cloning the template directory: ```bash cp -r ./evm/src/template ./evm/src/ ``` 2. Implement the `ISwapAdapter` interface in the `./evm/src/.sol` file. 3. Create tests for your implementation in the `./evm/test/.t.sol` file, again based on the template `./evm/test/TemplateSwapAdapter.t.sol`.