# Function collectUserDefinedTypesAndTaggedOutputs

- collectUserDefinedTypesAndTaggedOutputs(compilations): {
  definitions: {
  [compilationId: string]: AstNodes;
  };
  types: TypesById;
  typesByCompilation: TypesByCompilationAndId;
  }

- collects user defined types & tagged outputs for a given set of compilations, returning both the definition nodes and (for the types) the type objects

  "Tagged outputs" means user-defined things that are output by a contract (not input to a contract), and which are distinguished by (potentially ambiguous) selectors. So, events and custom errors are tagged outputs. Function arguments are not tagged outputs (they're not outputs). Return values are not tagged outputs (they don't have a selector). Built-in errors (Error(string) and Panic(uint))... OK I guess those could be considered tagged outputs, but we're only looking at user-defined ones here.

  #### Parameters

  - ##### compilations: Compilation[]

  #### Returns {
  definitions: {
  [compilationId: string]: AstNodes;
  };
  types: TypesById;
  typesByCompilation: TypesByCompilationAndId;
  }

  - ##### definitions: {
    [compilationId: string]: AstNodes;
    }

    - ##### [compilationId: string]: AstNodes

  - ##### types: TypesById

  - ##### typesByCompilation: TypesByCompilationAndId

  - Defined in codec/lib/compilations/utils.ts:510

Generated using TypeDoc