> For the complete documentation index, see [llms.txt](https://docs.fairway.global/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fairway.global/developers/build-on-evm/attestation-led-compliance-eas-erc-1271-erc-3643/adapter-for-erc-3643-transfermanager.md).

# Adapter for ERC-3643 (TransferManager)

```solidity
contract FairwayTo3643Adapter is ITransferManager3643 {
    IPolicyEngine public policy;
    bytes public ruleFrom;
    bytes public ruleTo;

    constructor(address _policy, bytes memory _ruleFrom, bytes memory _ruleTo) {
        policy = IPolicyEngine(_policy);
        ruleFrom = _ruleFrom;
        ruleTo = _ruleTo;
    }

    function canTransfer(address from, address to, uint256)
        external view
        returns (bool ok, uint256 reason)
    {
        (bool okFrom, uint32 rFrom) = policy.isEligible(from, ruleFrom);
        if (!okFrom) return (false, rFrom);
        (bool okTo, uint32 rTo) = policy.isEligible(to, ruleTo);
        if (!okTo) return (false, rTo);
        return (true, 0);
    }
}

```
