# Type Decoding 26-jan
```javascriot
const method = e?.values?.string_values?.message;
const accountInfoEncoded =
method === 'clear'
? 'no-account'
: (e?.values?.string_values?.res as string);
let accountInfo;
try {
if (method === 'clear') {
// Account was likely dusted. For now lets just assume we are ok
// with the account balance
// being zero. In the future this can have richer information
accountInfo = this.registry.createType('AccountInfo');
} else if (accountInfoEncoded.includes('None')) {
accountInfo = this.registry.createType('AccountInfo');
} else if (accountInfoEncoded?.slice(0, 5) === 'Some(') {
// With the most recent PR to substrate state tracing only `get`
// methods are wrapped in an options
const len = accountInfoEncoded.length;
const scale = accountInfoEncoded.slice(5, len - 1);
accountInfo = (this.registry.createType(
'AccountInfo',
`0x${scale}`
) as unknown) as AccountInfo;
} else {
// This is likeley a `set` method (formely `put`) and as far as I
// can tell it is never wrapped in an option
accountInfo = (this.registry.createType(
'AccountInfo',
`0x${accountInfoEncoded}`
) as unknown) as AccountInfo;
}
} catch {
throw new Error(
'Expect there to always be some AccountInfo'
);
}
```