22
33# Variables
44SOLC := solc
5- SOL_FILE := native_staking_contract_interface.sol
6- ABI_FILE := native_staking_contract_abi.json
5+ NATIVE_SOL_FILE := native_staking_contract_interface.sol
6+ NATIVE_ABI_FILE := native_staking_contract_abi.json
7+ ACCOUNT_SOL_FILE := account_contract_interface.sol
8+ ACCOUNT_ABI_FILE := account_contract_abi.json
79TEMP_DIR := .temp
810
911# Default target
1012.PHONY : all
1113all : abi
1214
13- # Generate ABI from Solidity interface
15+ # Generate all ABI files
1416.PHONY : abi
15- abi : $( ABI_FILE )
17+ abi : native-abi account-abi
1618
17- $(ABI_FILE ) : $(SOL_FILE )
18- @echo " Generating ABI from $( SOL_FILE) ..."
19+ # Generate ABI from native staking contract interface
20+ .PHONY : native-abi
21+ native-abi : $(NATIVE_ABI_FILE )
22+
23+ $(NATIVE_ABI_FILE ) : $(NATIVE_SOL_FILE )
24+ @echo " Generating ABI from $( NATIVE_SOL_FILE) ..."
1925 @mkdir -p $(TEMP_DIR )
20- @$(SOLC ) --abi $(SOL_FILE ) -o $(TEMP_DIR ) --overwrite
26+ @$(SOLC ) --abi $(NATIVE_SOL_FILE ) -o $(TEMP_DIR ) --overwrite
2127 @# Extract the ABI from the generated file and format it
2228 @if [ -f " $( TEMP_DIR) /INativeStakingContract.abi" ]; then \
23- cat " $( TEMP_DIR) /INativeStakingContract.abi" | jq ' .' > $(ABI_FILE ) ; \
24- echo " ABI generated successfully: $( ABI_FILE) " ; \
29+ cat " $( TEMP_DIR) /INativeStakingContract.abi" | jq ' .' > $(NATIVE_ABI_FILE ) ; \
30+ echo " ABI generated successfully: $( NATIVE_ABI_FILE) " ; \
31+ else \
32+ echo " Error: Native staking ABI file not generated" ; \
33+ exit 1; \
34+ fi
35+ @rm -rf $(TEMP_DIR )
36+
37+ # Generate ABI from account contract interface
38+ .PHONY : account-abi
39+ account-abi : $(ACCOUNT_ABI_FILE )
40+
41+ $(ACCOUNT_ABI_FILE ) : $(ACCOUNT_SOL_FILE )
42+ @echo " Generating ABI from $( ACCOUNT_SOL_FILE) ..."
43+ @mkdir -p $(TEMP_DIR )
44+ @$(SOLC ) --abi $(ACCOUNT_SOL_FILE ) -o $(TEMP_DIR ) --overwrite
45+ @# Extract the ABI from the generated file and format it
46+ @if [ -f " $( TEMP_DIR) /IAccountProtocolContract.abi" ]; then \
47+ cat " $( TEMP_DIR) /IAccountProtocolContract.abi" | jq ' .' > $(ACCOUNT_ABI_FILE ) ; \
48+ echo " ABI generated successfully: $( ACCOUNT_ABI_FILE) " ; \
2549 else \
26- echo " Error: ABI file not generated" ; \
50+ echo " Error: Account contract ABI file not generated" ; \
2751 exit 1; \
2852 fi
2953 @rm -rf $(TEMP_DIR )
@@ -32,7 +56,7 @@ $(ABI_FILE): $(SOL_FILE)
3256.PHONY : clean
3357clean :
3458 @echo " Cleaning generated files..."
35- @rm -f $(ABI_FILE )
59+ @rm -f $(NATIVE_ABI_FILE ) $( ACCOUNT_ABI_FILE )
3660 @rm -rf $(TEMP_DIR )
3761
3862# Install dependencies (solc and jq)
@@ -82,39 +106,51 @@ check-deps:
82106# Watch for changes and regenerate ABI
83107.PHONY : watch
84108watch : check-deps
85- @echo " Watching $( SOL_FILE ) for changes..."
109+ @echo " Watching $( NATIVE_SOL_FILE ) and $( ACCOUNT_SOL_FILE ) for changes..."
86110 @while true ; do \
87- inotifywait -e modify $(SOL_FILE ) 2> /dev/null || \
111+ inotifywait -e modify $(NATIVE_SOL_FILE ) $( ACCOUNT_SOL_FILE ) 2> /dev/null || \
88112 (echo " inotifywait not available, using sleep instead" ; sleep 5); \
89113 make abi; \
90114 echo " Waiting for changes..." ; \
91115 done
92116
93- # Validate generated ABI
117+ # Validate generated ABI files
94118.PHONY : validate
95- validate : $(ABI_FILE )
96- @echo " Validating ABI file..."
97- @if jq empty $(ABI_FILE ) 2> /dev/null; then \
98- echo " ✅ ABI file is valid JSON" ; \
99- echo " Functions found: $$ (jq '[.[] | select(.type==" function" )] | length' $( ABI_FILE) )" ; \
100- echo " Events found: $$ (jq '[.[] | select(.type==" event" )] | length' $( ABI_FILE) )" ; \
119+ validate : $(NATIVE_ABI_FILE ) $(ACCOUNT_ABI_FILE )
120+ @echo " Validating ABI files..."
121+ @echo " Validating $( NATIVE_ABI_FILE) ..."
122+ @if jq empty $(NATIVE_ABI_FILE ) 2> /dev/null; then \
123+ echo " ✅ Native staking ABI file is valid JSON" ; \
124+ echo " Functions found: $$ (jq '[.[] | select(.type==" function" )] | length' $( NATIVE_ABI_FILE) )" ; \
125+ echo " Events found: $$ (jq '[.[] | select(.type==" event" )] | length' $( NATIVE_ABI_FILE) )" ; \
126+ else \
127+ echo " ❌ Native staking ABI file is not valid JSON" ; \
128+ exit 1; \
129+ fi
130+ @echo " Validating $( ACCOUNT_ABI_FILE) ..."
131+ @if jq empty $(ACCOUNT_ABI_FILE ) 2> /dev/null; then \
132+ echo " ✅ Account contract ABI file is valid JSON" ; \
133+ echo " Functions found: $$ (jq '[.[] | select(.type==" function" )] | length' $( ACCOUNT_ABI_FILE) )" ; \
134+ echo " Events found: $$ (jq '[.[] | select(.type==" event" )] | length' $( ACCOUNT_ABI_FILE) )" ; \
101135 else \
102- echo " ❌ ABI file is not valid JSON" ; \
136+ echo " ❌ Account contract ABI file is not valid JSON" ; \
103137 exit 1; \
104138 fi
105139
106140# Show help
107141.PHONY : help
108142help :
109143 @echo " Available targets:"
110- @echo " abi - Generate ABI from Solidity interface (default)"
144+ @echo " abi - Generate all ABI files from Solidity interfaces (default)"
145+ @echo " native-abi - Generate ABI from native staking contract interface"
146+ @echo " account-abi - Generate ABI from account contract interface"
111147 @echo " clean - Remove generated files"
112148 @echo " install-deps - Install solc and jq dependencies"
113149 @echo " check-deps - Check if dependencies are installed"
114150 @echo " watch - Watch for changes and regenerate ABI"
115- @echo " validate - Validate generated ABI file "
151+ @echo " validate - Validate generated ABI files "
116152 @echo " help - Show this help message"
117153 @echo " "
118154 @echo " Files:"
119- @echo " Input: $( SOL_FILE ) "
120- @echo " Output: $( ABI_FILE ) "
155+ @echo " Input: $( NATIVE_SOL_FILE ) -> Output: $( NATIVE_ABI_FILE ) "
156+ @echo " Input: $( ACCOUNT_SOL_FILE ) -> Output: $( ACCOUNT_ABI_FILE ) "
0 commit comments