1+ // SPDX-License-Identifier: MIT
2+ pragma solidity ^ 0.8.0 ;
3+
4+ /// @title IPackageManifest
5+ /// @notice Interface for EthPM v3 Package Manifest structure based on EIP-2678
6+ interface IPackageManifest {
7+ /// @notice Package Meta Object from EIP-2678
8+ struct PackageMeta {
9+ string [] authors; // Human readable names
10+ string license; // SPDX format
11+ string description; // Additional detail
12+ string [] keywords; // Relevant keywords
13+ mapping (string => string ) links; // URIs (website, docs, repo)
14+ }
15+
16+ /// @notice Compiler Information Object from EIP-2678
17+ struct CompilerInfo {
18+ string name; // Compiler name (e.g., "solc")
19+ string version; // Semver or commit hash format
20+ }
21+
22+ /// @notice Contract Instance Object from EIP-2678
23+ struct ContractInstance {
24+ string contractType; // Reference to Contract Type
25+ address instanceAddress; // Deployed address
26+ }
27+
28+ /// @notice Link Reference Object from EIP-2678
29+ struct LinkReference {
30+ uint256 [] offsets; // Start positions in bytecode (0-indexed)
31+ uint256 length; // Length in bytes
32+ string name; // Identifier for linking
33+ }
34+
35+ /// @notice Link Value Object from EIP-2678
36+ struct LinkValue {
37+ uint256 [] offsets; // Locations where value was written
38+ string valueType; // "literal" or "reference"
39+ string value; // Value to write when linking
40+ }
41+ }
0 commit comments