ContractWithMetadata
type ContractWithMetadata = {  chainId: number;  contractType: () => Promise<ContractType>;  extensions: () => Promise<Array<string>>;  metadata: () => Promise<{ image?: string; name: string }>;};
type chainId = number;
function contractType(): Promise<ContractType>;
function extensions(): Promise<Array<string>>;
function metadata(): Promise<{ image?: string; name: string }>;