You can consider interface as a module which provides some functionality. This is a programmatic representation of certain feature (for example vault can get file, file can be checked-in or checked-out etc.)
You can consider enumerator as a value representing certain constant option. This is used by interfaces and their methods (for example there different types of columns in the BOM: configuration, file path, name etc.)
You can consider structure as any additional information the methods of interface may need or may return (i.e. error details, permissions details, history record, file information)
You can consider interface as a module which provides some functionality. This is a programmatic representation of certain feature (for example vault can get file, file can be checked-in or checked-out etc.)
You can consider enumerator as a value representing certain constant option. This is used by interfaces and their methods (for example there different types of columns in the BOM: configuration, file path, name etc.)
You can consider structure as any additional information the methods of interface may need or may return (i.e. error details, permissions details, history record, file information)