Non-async return types are deprecated warning

I’ve been playing with types and I’m getting a strange warning. I have a public type ERC20 in my types file(hacking out an erc20 clone in the pursuit of learning). It is pretty simple:

public type ERC20 = actor {
        name: query ()  -> async Text;
        symbol: query () -> async Text;
        decimals: query () -> async Nat;
        totalSupply: query () -> async Nat;
        balanceOf: (address: TokenAddress) -> async ?Nat;
        transfer: (recipient: TokenAddress, amount: Nat) -> async Bool;
        transferFrom: (sender: TokenAddress, recipient: TokenAddress, amount: Nat) -> async Bool;
        approve: (spender: TokenAddress, amount: Nat) -> async Bool;
        allowance: query (owner: TokenAddress, spender: TokenAddress) -> async ?Nat;
    }

I feel like I’ve declared everything as an async return. Did I miss something?

When I do my actor implementation I do:

shared(msg) actor class CoolCoin(_name : Text, _symbol : Text, _decimals : Nat) : T.ERC20 { 
//definitions go here
}

When I do this I get the warning: 12.1-91.2: warning [M0135], actor classes with non non-async return types are deprecated; please declare the return type as ‘async …’

Now I’ve gone through all my functions and they match signature and have async return types and I’ve only put in functions that are defined in the Type. I do have some hashmaps and I call get and put on those, but I don’t think those have to be async. Maybe they do? Should I be awaiting them?

My code still compiles, but the warning is annoying. I can take off the type declaration on the actor class and it goes away, but I want the type checking done. Any suggestions. DFX is 0.7.0. Maybe I should be using the beta6? I’m not sure what the definitive list of releases is and which is the latest.

i think you need : async T.ERC20

Nailed it! Thanks. Need to get some good examples out there.