Skip to content

Commit 2eb0eb0

Browse files
committed
feat: impl IPackageManifest #1
1 parent 39de744 commit 2eb0eb0

1 file changed

Lines changed: 41 additions & 0 deletions

File tree

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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

Comments
 (0)