As far as I can see, you've replicated the function declaration, and then replaced every occurrence of memory with calldata.
The reason for that is unclear to me, because 'memory vs calldata' has no "special meaning" related to interfaces.
The calldata keyword is used for indicating that the pointed input data is read-only (cannot be modified inside the function), which allows for some minor gas optimization.
A calldata input argument can be passed to a function either from another function which has received it as calldata, or from the offchain.
In other words, you cannot create a calldata object inside a contract function.
You can read the basic facts about interfaces here (see TLDR below).
You can interact with other contracts by declaring an interface:
It cannot have any functions implemented
It can inherit from other interfaces
All declared functions must be external
It cannot declare a constructor
It cannot declare state variables
As you can see, nothing specifically related to 'memory vs calldata'.
P.S.:
Other than gas optimization, receiving an input as calldata allows you to apply "fancy tricks" on it, such as array slicing, which you cannot apply on memory.