It fails because the compiler is looking for the `concat` function as a member of `bytes` type.

You can use concat as a regular function

    return string(concat(bytes(api0xUrl),
                         concat(bytes(sellStr), 
                                ...)));

Another alternative is move concat to a library and use the `using for` mechanism.


```
library L {
    function concat(bytes memory a, bytes memory b) internal pure returns (bytes memory) {
        return abi.encodePacked(a, b);
    }
}

contract Swaper0x {
    using L for bytes;  // X.concat(Y) => concat(X, Y)
```

Now it should work as expected

    return string(bytes(api0xUrl) // ---> no error here
            .concat(bytes(sellStr))