Before reading it would be useful to check Quick Start.
The interfaces in the contract file itself have the same structure as in a separate file:
Key word 'Interfaces.'
Key word 'MakeInterface' key word 'Class' IntefaceName ':='
'{'
Function1Name ':' Carryed List of Arguments Types '->' AccessRights ReturnType ['true', 'false'] ';'
Function2Name ':' Carryed List of Arguments Types '->' AccessRights ReturType ['true', 'false'] ';'
...
'}'
Key word 'EndInterfaces.'
For example:
Let the Solidity interface look like this (Ursus can model this language):
interface IVestingPool {
function claim(uint poolId, address addr) external;
function get() external view returns(uint poolId, address poolCreator);
}
Then on Ursus it is written like this:
Interfaces.
MakeInterface Class IVestingPool :=
{
claim : uint -> address -> external PhantomType true ;
get : external (uint ** address) false ;
}.
EndInterfaces.
The modificators 'true' and 'false' see in functions file. These marks (true and false in the return types) show possibility of calling require in this function or in calling here function. Using of interface you can see there and there.