From 339afb06fbfe472c537fb76906a048f65cc04537 Mon Sep 17 00:00:00 2001
From: 0xDiscotech <0xdiscotech@defi.sucks>
Date: Tue, 24 Oct 2023 17:15:57 -0300
Subject: [PATCH 1/5] feat: added solidity exporter action yml file
* docs: added export and publish explanation to readme
---
.github/workflows/solidity-exporter.yml | 50 +++++++++++++++++++++++++
README.md | 29 ++++++++++++++
out/Greeter.sol/Greeter.json | 21 +++++------
3 files changed, 89 insertions(+), 11 deletions(-)
create mode 100644 .github/workflows/solidity-exporter.yml
diff --git a/.github/workflows/solidity-exporter.yml b/.github/workflows/solidity-exporter.yml
new file mode 100644
index 00000000..e3767c0b
--- /dev/null
+++ b/.github/workflows/solidity-exporter.yml
@@ -0,0 +1,50 @@
+name: Export Interfaces And Contracts
+
+on: [push]
+
+jobs:
+ export:
+ name: Generate Interfaces And Contracts
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ export_type: ["interfaces", "contracts"]
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Install Foundry
+ uses: foundry-rs/foundry-toolchain@v1
+ with:
+ version: nightly
+
+ - name: Use Node.js
+ uses: actions/setup-node@v3
+ with:
+ node-version: 16
+ registry-url: "https://registry.npmjs.org"
+
+ - name: Install dependencies
+ run: yarn --frozen-lockfile
+
+ - name: Build project and generate out directory
+ run: yarn build
+
+ - name: Update version
+ run: yarn version --new-version "0.0.0-${GITHUB_SHA::8}" --no-git-tag-version
+
+ - name: Export Solidity - ${{ matrix.export_type }}
+ uses: defi-wonderland/solidity-exporter-action@v1
+ with:
+ # Update package_name with your package name
+ package_name: "@defi_wonderland/solidity-exported"
+ out: "out"
+ interfaces: "solidity/interfaces"
+ contracts: "solidity/contracts"
+ export_type: "${{ matrix.export_type }}"
+ ## Uncomment it if you want to publish your exported packages to NPM
+ # - name: Publish
+ ## Update `@defi_wonderland/solidity-exported` with your package name
+ # run: cd export/@defi_wonderland/solidity-exported-${{ matrix.export_type }} && npm publish --access public
+ # env:
+ # NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
diff --git a/README.md b/README.md
index 85182835..5dbc6c1e 100644
--- a/README.md
+++ b/README.md
@@ -26,6 +26,7 @@
Github workflows CI
Run all tests and see the coverage as you push your changes.
+ Export your Solidity interfaces and contracts as packages, and publish them to NPM.
## Setup
@@ -105,3 +106,31 @@ yarn deploy:mainnet
The deployments are stored in ./broadcast
See the [Foundry Book for available options](https://book.getfoundry.sh/reference/forge/forge-create.html).
+
+## Export And Publish
+
+### Export
+
+Export TypeScript interfaces from Solidity contracts and interfaces providing compatibility with TypeChain.
+
+Update the `package_name` in the `solidity-exporter.yml` file to match your package name:
+
+```yaml
+# Update package_name with your package name
+package_name: "@defi_wonderland/solidity-exported"
+```
+
+### Publish
+
+If you want to publish the exported packages to NPM, you can do so by uncommenting the following lines in the `solidity-exporter.yml` file (make sure you've set the `NPM_TOKEN` on your org's secrets) and updating the package name with yours:
+
+```yaml
+## Uncomment it if you want to publish your exported packages to NPM
+# - name: Publish
+## Update `@defi_wonderland/solidity-exported` with your package name
+# run: cd export/@defi_wonderland/solidity-exported-${{ matrix.export_type }} && npm publish --access public
+# env:
+# NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
+```
+
+You can take a look at our [solidity-exporter-action](https://github.com/defi-wonderland/solidity-exporter-action) repository more information and usage examples.
diff --git a/out/Greeter.sol/Greeter.json b/out/Greeter.sol/Greeter.json
index 9feed316..abdc48ab 100644
--- a/out/Greeter.sol/Greeter.json
+++ b/out/Greeter.sol/Greeter.json
@@ -111,12 +111,12 @@
}
],
"bytecode": {
- "object": "0x60a06040523480156200001157600080fd5b5060405162000b9c38038062000b9c833981016040819052620000349162000186565b33608052600180546001600160a01b0319166001600160a01b0383161790556200005e8262000066565b5050620003e3565b6080516001600160a01b0316336001600160a01b0316146200009b57604051630bec364760e31b815260040160405180910390fd5b805160208201207f3a2db9fe7908dcc36d81824d2338fc3f1aff49ac357dd8c4840527fba27a5b9001620000e2576040516342883a0560e11b815260040160405180910390fd5b6000620000f08282620002e2565b507fad181ee258ff92d26bf7ed2e6b571ef1cba3afc45f028b863b0f02adaffc2f0681604051620001229190620003ae565b60405180910390a150565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200016057818101518382015260200162000146565b50506000910152565b80516001600160a01b03811681146200018157600080fd5b919050565b600080604083850312156200019a57600080fd5b82516001600160401b0380821115620001b257600080fd5b818501915085601f830112620001c757600080fd5b815181811115620001dc57620001dc6200012d565b604051601f8201601f19908116603f011681019083821181831017156200020757620002076200012d565b816040528281528860208487010111156200022157600080fd5b6200023483602083016020880162000143565b80965050505050506200024a6020840162000169565b90509250929050565b600181811c908216806200026857607f821691505b6020821081036200028957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002dd57600081815260208120601f850160051c81016020861015620002b85750805b601f850160051c820191505b81811015620002d957828155600101620002c4565b5050505b505050565b81516001600160401b03811115620002fe57620002fe6200012d565b62000316816200030f845462000253565b846200028f565b602080601f8311600181146200034e5760008415620003355750858301515b600019600386901b1c1916600185901b178555620002d9565b600085815260208120601f198616915b828110156200037f578886015182559484019460019091019084016200035e565b50858210156200039e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620003cf81604085016020870162000143565b601f01601f19169190910160400192915050565b60805161079762000405600039600081816071015261013501526107976000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063cfae321711610050578063cfae3217146100d2578063ef690cc0146100e8578063fc0c546a146100fd57600080fd5b8063117803e31461006c578063a4136862146100bd575b600080fd5b6100937f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d06100cb36600461041d565b61011d565b005b6100da610232565b6040516100b4929190610550565b6100f0610360565b6040516100b49190610572565b6001546100939073ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461018c576040517f5f61b23800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160208201207f3a2db9fe7908dcc36d81824d2338fc3f1aff49ac357dd8c4840527fba27a5b90016101eb576040517f8510740a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006101f7828261062e565b507fad181ee258ff92d26bf7ed2e6b571ef1cba3afc45f028b863b0f02adaffc2f06816040516102279190610572565b60405180910390a150565b606060008080546102429061058c565b80601f016020809104026020016040519081016040528092919081815260200182805461026e9061058c565b80156102bb5780601f10610290576101008083540402835291602001916102bb565b820191906000526020600020905b81548152906001019060200180831161029e57829003601f168201915b50506001546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015294965073ffffffffffffffffffffffffffffffffffffffff16936370a08231935060240191506103199050565b602060405180830381865afa158015610336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035a9190610748565b90509091565b6000805461036d9061058c565b80601f01602080910402602001604051908101604052809291908181526020018280546103999061058c565b80156103e65780601f106103bb576101008083540402835291602001916103e6565b820191906000526020600020905b8154815290600101906020018083116103c957829003601f168201915b505050505081565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561042f57600080fd5b813567ffffffffffffffff8082111561044757600080fd5b818401915084601f83011261045b57600080fd5b81358181111561046d5761046d6103ee565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156104b3576104b36103ee565b816040528281528760208487010111156104cc57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000815180845260005b81811015610512576020818501810151868301820152016104f6565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60408152600061056360408301856104ec565b90508260208301529392505050565b60208152600061058560208301846104ec565b9392505050565b600181811c908216806105a057607f821691505b6020821081036105d9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561062957600081815260208120601f850160051c810160208610156106065750805b601f850160051c820191505b8181101561062557828155600101610612565b5050505b505050565b815167ffffffffffffffff811115610648576106486103ee565b61065c81610656845461058c565b846105df565b602080601f8311600181146106af57600084156106795750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610625565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156106fc578886015182559484019460019091019084016106dd565b508582101561073857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561075a57600080fd5b505191905056fea264697066735822122029ee9e4c99c642a839703b8c6282fcad2bf2ad9ea7f1473c1214ad6e0a86486664736f6c63430008130033",
+ "object": "0x60a06040523480156200001157600080fd5b5060405162000b9c38038062000b9c833981016040819052620000349162000186565b33608052600180546001600160a01b0319166001600160a01b0383161790556200005e8262000066565b5050620003e3565b6080516001600160a01b0316336001600160a01b0316146200009b57604051630bec364760e31b815260040160405180910390fd5b805160208201207f3a2db9fe7908dcc36d81824d2338fc3f1aff49ac357dd8c4840527fba27a5b9001620000e2576040516342883a0560e11b815260040160405180910390fd5b6000620000f08282620002e2565b507fad181ee258ff92d26bf7ed2e6b571ef1cba3afc45f028b863b0f02adaffc2f0681604051620001229190620003ae565b60405180910390a150565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200016057818101518382015260200162000146565b50506000910152565b80516001600160a01b03811681146200018157600080fd5b919050565b600080604083850312156200019a57600080fd5b82516001600160401b0380821115620001b257600080fd5b818501915085601f830112620001c757600080fd5b815181811115620001dc57620001dc6200012d565b604051601f8201601f19908116603f011681019083821181831017156200020757620002076200012d565b816040528281528860208487010111156200022157600080fd5b6200023483602083016020880162000143565b80965050505050506200024a6020840162000169565b90509250929050565b600181811c908216806200026857607f821691505b6020821081036200028957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002dd57600081815260208120601f850160051c81016020861015620002b85750805b601f850160051c820191505b81811015620002d957828155600101620002c4565b5050505b505050565b81516001600160401b03811115620002fe57620002fe6200012d565b62000316816200030f845462000253565b846200028f565b602080601f8311600181146200034e5760008415620003355750858301515b600019600386901b1c1916600185901b178555620002d9565b600085815260208120601f198616915b828110156200037f578886015182559484019460019091019084016200035e565b50858210156200039e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620003cf81604085016020870162000143565b601f01601f19169190910160400192915050565b60805161079762000405600039600081816071015261013501526107976000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063cfae321711610050578063cfae3217146100d2578063ef690cc0146100e8578063fc0c546a146100fd57600080fd5b8063117803e31461006c578063a4136862146100bd575b600080fd5b6100937f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d06100cb36600461041d565b61011d565b005b6100da610232565b6040516100b4929190610550565b6100f0610360565b6040516100b49190610572565b6001546100939073ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461018c576040517f5f61b23800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160208201207f3a2db9fe7908dcc36d81824d2338fc3f1aff49ac357dd8c4840527fba27a5b90016101eb576040517f8510740a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006101f7828261062e565b507fad181ee258ff92d26bf7ed2e6b571ef1cba3afc45f028b863b0f02adaffc2f06816040516102279190610572565b60405180910390a150565b606060008080546102429061058c565b80601f016020809104026020016040519081016040528092919081815260200182805461026e9061058c565b80156102bb5780601f10610290576101008083540402835291602001916102bb565b820191906000526020600020905b81548152906001019060200180831161029e57829003601f168201915b50506001546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015294965073ffffffffffffffffffffffffffffffffffffffff16936370a08231935060240191506103199050565b602060405180830381865afa158015610336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035a9190610748565b90509091565b6000805461036d9061058c565b80601f01602080910402602001604051908101604052809291908181526020018280546103999061058c565b80156103e65780601f106103bb576101008083540402835291602001916103e6565b820191906000526020600020905b8154815290600101906020018083116103c957829003601f168201915b505050505081565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561042f57600080fd5b813567ffffffffffffffff8082111561044757600080fd5b818401915084601f83011261045b57600080fd5b81358181111561046d5761046d6103ee565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156104b3576104b36103ee565b816040528281528760208487010111156104cc57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000815180845260005b81811015610512576020818501810151868301820152016104f6565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60408152600061056360408301856104ec565b90508260208301529392505050565b60208152600061058560208301846104ec565b9392505050565b600181811c908216806105a057607f821691505b6020821081036105d9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561062957600081815260208120601f850160051c810160208610156106065750805b601f850160051c820191505b8181101561062557828155600101610612565b5050505b505050565b815167ffffffffffffffff811115610648576106486103ee565b61065c81610656845461058c565b846105df565b602080601f8311600181146106af57600084156106795750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610625565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156106fc578886015182559484019460019091019084016106dd565b508582101561073857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561075a57600080fd5b505191905056fea26469706673582212209640d61949a3120d03517f9655b0a2baddccbdfefaf0dd8e008fe343f7f033c964736f6c63430008130033",
"sourceMap": "178:1366:16:-:0;;;757:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;823:10;815:18;;839:5;:14;;-1:-1:-1;;;;;;839:14:16;-1:-1:-1;;;;;839:14:16;;;;;859:22;871:9;859:11;:22::i;:::-;757:129;;178:1366;;917:230;1483:5;;-1:-1:-1;;;;;1469:19:16;:10;-1:-1:-1;;;;;1469:19:16;;1465:66;;1505:19;;-1:-1:-1;;;1505:19:16;;;;;;;;;;;1465:66;990:27;;::::1;::::0;::::1;::::0;:44;;986:97:::1;;1051:25;;-1:-1:-1::0;;;1051:25:16::1;;;;;;;;;;;986:97;1089:8;:20;1100:9:::0;1089:8;:20:::1;:::i;:::-;;1120:22;1132:9;1120:22;;;;;;:::i;:::-;;;;;;;;917:230:::0;:::o;14:127:23:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:250;231:1;241:113;255:6;252:1;249:13;241:113;;;331:11;;;325:18;312:11;;;305:39;277:2;270:10;241:113;;;-1:-1:-1;;388:1:23;370:16;;363:27;146:250::o;401:185::-;488:13;;-1:-1:-1;;;;;530:31:23;;520:42;;510:70;;576:1;573;566:12;510:70;401:185;;;:::o;591:1014::-;696:6;704;757:2;745:9;736:7;732:23;728:32;725:52;;;773:1;770;763:12;725:52;800:16;;-1:-1:-1;;;;;865:14:23;;;862:34;;;892:1;889;882:12;862:34;930:6;919:9;915:22;905:32;;975:7;968:4;964:2;960:13;956:27;946:55;;997:1;994;987:12;946:55;1026:2;1020:9;1048:2;1044;1041:10;1038:36;;;1054:18;;:::i;:::-;1129:2;1123:9;1097:2;1183:13;;-1:-1:-1;;1179:22:23;;;1203:2;1175:31;1171:40;1159:53;;;1227:18;;;1247:22;;;1224:46;1221:72;;;1273:18;;:::i;:::-;1313:10;1309:2;1302:22;1348:2;1340:6;1333:18;1390:7;1383:4;1378:2;1374;1370:11;1366:22;1363:35;1360:55;;;1411:1;1408;1401:12;1360:55;1424:72;1493:2;1486:4;1478:6;1474:17;1467:4;1463:2;1459:13;1424:72;:::i;:::-;1515:6;1505:16;;;;;;;1540:59;1593:4;1582:9;1578:20;1540:59;:::i;:::-;1530:69;;591:1014;;;;;:::o;1610:380::-;1689:1;1685:12;;;;1732;;;1753:61;;1807:4;1799:6;1795:17;1785:27;;1753:61;1860:2;1852:6;1849:14;1829:18;1826:38;1823:161;;1906:10;1901:3;1897:20;1894:1;1887:31;1941:4;1938:1;1931:15;1969:4;1966:1;1959:15;1823:161;;1610:380;;;:::o;2121:545::-;2223:2;2218:3;2215:11;2212:448;;;2259:1;2284:5;2280:2;2273:17;2329:4;2325:2;2315:19;2399:2;2387:10;2383:19;2380:1;2376:27;2370:4;2366:38;2435:4;2423:10;2420:20;2417:47;;;-1:-1:-1;2458:4:23;2417:47;2513:2;2508:3;2504:12;2501:1;2497:20;2491:4;2487:31;2477:41;;2568:82;2586:2;2579:5;2576:13;2568:82;;;2631:17;;;2612:1;2601:13;2568:82;;;2572:3;;;2212:448;2121:545;;;:::o;2842:1352::-;2962:10;;-1:-1:-1;;;;;2984:30:23;;2981:56;;;3017:18;;:::i;:::-;3046:97;3136:6;3096:38;3128:4;3122:11;3096:38;:::i;:::-;3090:4;3046:97;:::i;:::-;3198:4;;3262:2;3251:14;;3279:1;3274:663;;;;3981:1;3998:6;3995:89;;;-1:-1:-1;4050:19:23;;;4044:26;3995:89;-1:-1:-1;;2799:1:23;2795:11;;;2791:24;2787:29;2777:40;2823:1;2819:11;;;2774:57;4097:81;;3244:944;;3274:663;2068:1;2061:14;;;2105:4;2092:18;;-1:-1:-1;;3310:20:23;;;3428:236;3442:7;3439:1;3436:14;3428:236;;;3531:19;;;3525:26;3510:42;;3623:27;;;;3591:1;3579:14;;;;3458:19;;3428:236;;;3432:3;3692:6;3683:7;3680:19;3677:201;;;3753:19;;;3747:26;-1:-1:-1;;3836:1:23;3832:14;;;3848:3;3828:24;3824:37;3820:42;3805:58;3790:74;;3677:201;-1:-1:-1;;;;;3924:1:23;3908:14;;;3904:22;3891:36;;-1:-1:-1;2842:1352:23:o;4199:396::-;4348:2;4337:9;4330:21;4311:4;4380:6;4374:13;4423:6;4418:2;4407:9;4403:18;4396:34;4439:79;4511:6;4506:2;4495:9;4491:18;4486:2;4478:6;4474:15;4439:79;:::i;:::-;4579:2;4558:15;-1:-1:-1;;4554:29:23;4539:45;;;;4586:2;4535:54;;4199:396;-1:-1:-1;;4199:396:23:o;:::-;178:1366:16;;;;;;;;;;;;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
- "object": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c8063cfae321711610050578063cfae3217146100d2578063ef690cc0146100e8578063fc0c546a146100fd57600080fd5b8063117803e31461006c578063a4136862146100bd575b600080fd5b6100937f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d06100cb36600461041d565b61011d565b005b6100da610232565b6040516100b4929190610550565b6100f0610360565b6040516100b49190610572565b6001546100939073ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461018c576040517f5f61b23800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160208201207f3a2db9fe7908dcc36d81824d2338fc3f1aff49ac357dd8c4840527fba27a5b90016101eb576040517f8510740a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006101f7828261062e565b507fad181ee258ff92d26bf7ed2e6b571ef1cba3afc45f028b863b0f02adaffc2f06816040516102279190610572565b60405180910390a150565b606060008080546102429061058c565b80601f016020809104026020016040519081016040528092919081815260200182805461026e9061058c565b80156102bb5780601f10610290576101008083540402835291602001916102bb565b820191906000526020600020905b81548152906001019060200180831161029e57829003601f168201915b50506001546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015294965073ffffffffffffffffffffffffffffffffffffffff16936370a08231935060240191506103199050565b602060405180830381865afa158015610336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035a9190610748565b90509091565b6000805461036d9061058c565b80601f01602080910402602001604051908101604052809291908181526020018280546103999061058c565b80156103e65780601f106103bb576101008083540402835291602001916103e6565b820191906000526020600020905b8154815290600101906020018083116103c957829003601f168201915b505050505081565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561042f57600080fd5b813567ffffffffffffffff8082111561044757600080fd5b818401915084601f83011261045b57600080fd5b81358181111561046d5761046d6103ee565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156104b3576104b36103ee565b816040528281528760208487010111156104cc57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000815180845260005b81811015610512576020818501810151868301820152016104f6565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60408152600061056360408301856104ec565b90508260208301529392505050565b60208152600061058560208301846104ec565b9392505050565b600181811c908216806105a057607f821691505b6020821081036105d9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561062957600081815260208120601f850160051c810160208610156106065750805b601f850160051c820191505b8181101561062557828155600101610612565b5050505b505050565b815167ffffffffffffffff811115610648576106486103ee565b61065c81610656845461058c565b846105df565b602080601f8311600181146106af57600084156106795750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610625565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156106fc578886015182559484019460019091019084016106dd565b508582101561073857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561075a57600080fd5b505191905056fea264697066735822122029ee9e4c99c642a839703b8c6282fcad2bf2ad9ea7f1473c1214ad6e0a86486664736f6c63430008130033",
+ "object": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c8063cfae321711610050578063cfae3217146100d2578063ef690cc0146100e8578063fc0c546a146100fd57600080fd5b8063117803e31461006c578063a4136862146100bd575b600080fd5b6100937f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d06100cb36600461041d565b61011d565b005b6100da610232565b6040516100b4929190610550565b6100f0610360565b6040516100b49190610572565b6001546100939073ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461018c576040517f5f61b23800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160208201207f3a2db9fe7908dcc36d81824d2338fc3f1aff49ac357dd8c4840527fba27a5b90016101eb576040517f8510740a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006101f7828261062e565b507fad181ee258ff92d26bf7ed2e6b571ef1cba3afc45f028b863b0f02adaffc2f06816040516102279190610572565b60405180910390a150565b606060008080546102429061058c565b80601f016020809104026020016040519081016040528092919081815260200182805461026e9061058c565b80156102bb5780601f10610290576101008083540402835291602001916102bb565b820191906000526020600020905b81548152906001019060200180831161029e57829003601f168201915b50506001546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015294965073ffffffffffffffffffffffffffffffffffffffff16936370a08231935060240191506103199050565b602060405180830381865afa158015610336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035a9190610748565b90509091565b6000805461036d9061058c565b80601f01602080910402602001604051908101604052809291908181526020018280546103999061058c565b80156103e65780601f106103bb576101008083540402835291602001916103e6565b820191906000526020600020905b8154815290600101906020018083116103c957829003601f168201915b505050505081565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561042f57600080fd5b813567ffffffffffffffff8082111561044757600080fd5b818401915084601f83011261045b57600080fd5b81358181111561046d5761046d6103ee565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156104b3576104b36103ee565b816040528281528760208487010111156104cc57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000815180845260005b81811015610512576020818501810151868301820152016104f6565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60408152600061056360408301856104ec565b90508260208301529392505050565b60208152600061058560208301846104ec565b9392505050565b600181811c908216806105a057607f821691505b6020821081036105d9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f82111561062957600081815260208120601f850160051c810160208610156106065750805b601f850160051c820191505b8181101561062557828155600101610612565b5050505b505050565b815167ffffffffffffffff811115610648576106486103ee565b61065c81610656845461058c565b846105df565b602080601f8311600181146106af57600084156106795750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610625565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156106fc578886015182559484019460019091019084016106dd565b508582101561073857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561075a57600080fd5b505191905056fea26469706673582212209640d61949a3120d03517f9655b0a2baddccbdfefaf0dd8e008fe343f7f033c964736f6c63430008130033",
"sourceMap": "178:1366:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;454:30;;;;;;;;190:42:23;178:55;;;160:74;;148:2;133:18;454:30:16;;;;;;;;917:230;;;;;;:::i;:::-;;:::i;:::-;;1178:158;;;:::i;:::-;;;;;;;;:::i;516:22::-;;;:::i;:::-;;;;;;;:::i;570:19::-;;;;;;;;;917:230;1469:10;:19;1483:5;1469:19;;1465:66;;1505:19;;;;;;;;;;;;;;1465:66;990:27;;::::1;::::0;::::1;::::0;:44;;986:97:::1;;1051:25;;;;;;;;;;;;;;986:97;1089:8;:20;1100:9:::0;1089:8;:20:::1;:::i;:::-;;1120:22;1132:9;1120:22;;;;;;:::i;:::-;;;;;;;;917:230:::0;:::o;1178:158::-;1218:23;1243:16;1279:8;1267:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1304:5:16;;:27;;;;;1320:10;1304:27;;;160:74:23;1267:20:16;;-1:-1:-1;1304:5:16;;;:15;;-1:-1:-1;133:18:23;;;-1:-1:-1;1304:27:16;;-1:-1:-1;14:226:23;1304:27:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1293:38;;1178:158;;:::o;516:22::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;245:184:23:-;297:77;294:1;287:88;394:4;391:1;384:15;418:4;415:1;408:15;434:981;503:6;556:2;544:9;535:7;531:23;527:32;524:52;;;572:1;569;562:12;524:52;612:9;599:23;641:18;682:2;674:6;671:14;668:34;;;698:1;695;688:12;668:34;736:6;725:9;721:22;711:32;;781:7;774:4;770:2;766:13;762:27;752:55;;803:1;800;793:12;752:55;839:2;826:16;861:2;857;854:10;851:36;;;867:18;;:::i;:::-;1001:2;995:9;1063:4;1055:13;;906:66;1051:22;;;1075:2;1047:31;1043:40;1031:53;;;1099:18;;;1119:22;;;1096:46;1093:72;;;1145:18;;:::i;:::-;1185:10;1181:2;1174:22;1220:2;1212:6;1205:18;1260:7;1255:2;1250;1246;1242:11;1238:20;1235:33;1232:53;;;1281:1;1278;1271:12;1232:53;1337:2;1332;1328;1324:11;1319:2;1311:6;1307:15;1294:46;1382:1;1360:15;;;1377:2;1356:24;1349:35;;;;-1:-1:-1;1364:6:23;434:981;-1:-1:-1;;;;;434:981:23:o;1420:482::-;1462:3;1500:5;1494:12;1527:6;1522:3;1515:19;1552:1;1562:162;1576:6;1573:1;1570:13;1562:162;;;1638:4;1694:13;;;1690:22;;1684:29;1666:11;;;1662:20;;1655:59;1591:12;1562:162;;;1566:3;1769:1;1762:4;1753:6;1748:3;1744:16;1740:27;1733:38;1891:4;1821:66;1816:2;1808:6;1804:15;1800:88;1795:3;1791:98;1787:109;1780:116;;;1420:482;;;;:::o;1907:291::-;2084:2;2073:9;2066:21;2047:4;2104:45;2145:2;2134:9;2130:18;2122:6;2104:45;:::i;:::-;2096:53;;2185:6;2180:2;2169:9;2165:18;2158:34;1907:291;;;;;:::o;2203:220::-;2352:2;2341:9;2334:21;2315:4;2372:45;2413:2;2402:9;2398:18;2390:6;2372:45;:::i;:::-;2364:53;2203:220;-1:-1:-1;;;2203:220:23:o;2675:437::-;2754:1;2750:12;;;;2797;;;2818:61;;2872:4;2864:6;2860:17;2850:27;;2818:61;2925:2;2917:6;2914:14;2894:18;2891:38;2888:218;;2962:77;2959:1;2952:88;3063:4;3060:1;3053:15;3091:4;3088:1;3081:15;2888:218;;2675:437;;;:::o;3243:545::-;3345:2;3340:3;3337:11;3334:448;;;3381:1;3406:5;3402:2;3395:17;3451:4;3447:2;3437:19;3521:2;3509:10;3505:19;3502:1;3498:27;3492:4;3488:38;3557:4;3545:10;3542:20;3539:47;;;-1:-1:-1;3580:4:23;3539:47;3635:2;3630:3;3626:12;3623:1;3619:20;3613:4;3609:31;3599:41;;3690:82;3708:2;3701:5;3698:13;3690:82;;;3753:17;;;3734:1;3723:13;3690:82;;;3694:3;;;3334:448;3243:545;;;:::o;4024:1471::-;4150:3;4144:10;4177:18;4169:6;4166:30;4163:56;;;4199:18;;:::i;:::-;4228:97;4318:6;4278:38;4310:4;4304:11;4278:38;:::i;:::-;4272:4;4228:97;:::i;:::-;4380:4;;4444:2;4433:14;;4461:1;4456:782;;;;5282:1;5299:6;5296:89;;;-1:-1:-1;5351:19:23;;;5345:26;5296:89;3930:66;3921:1;3917:11;;;3913:84;3909:89;3899:100;4005:1;4001:11;;;3896:117;5398:81;;4426:1063;;4456:782;3190:1;3183:14;;;3227:4;3214:18;;4504:66;4492:79;;;4669:236;4683:7;4680:1;4677:14;4669:236;;;4772:19;;;4766:26;4751:42;;4864:27;;;;4832:1;4820:14;;;;4699:19;;4669:236;;;4673:3;4933:6;4924:7;4921:19;4918:261;;;4994:19;;;4988:26;5095:66;5077:1;5073:14;;;5089:3;5069:24;5065:97;5061:102;5046:118;5031:134;;4918:261;-1:-1:-1;;;;;5225:1:23;5209:14;;;5205:22;5192:36;;-1:-1:-1;4024:1471:23:o;5500:184::-;5570:6;5623:2;5611:9;5602:7;5598:23;5594:32;5591:52;;;5639:1;5636;5629:12;5591:52;-1:-1:-1;5662:16:23;;5500:184;-1:-1:-1;5500:184:23:o",
"linkReferences": {},
"immutableReferences": {
@@ -139,7 +139,7 @@
"setGreeting(string)": "a4136862",
"token()": "fc0c546a"
},
- "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_greeting\",\"type\":\"string\"},{\"internalType\":\"contract IERC20\",\"name\":\"_token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"Greeter_InvalidGreeting\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Greeter_OnlyOwner\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_greeting\",\"type\":\"string\"}],\"name\":\"GreetingSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"OWNER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"greet\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_greeting\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"greeting\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_greeting\",\"type\":\"string\"}],\"name\":\"setGreeting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"Greeter_InvalidGreeting()\":[{\"details\":\"Empty string is an invalid greeting\"}]},\"events\":{\"GreetingSet(string)\":{\"params\":{\"_greeting\":\"The new greeting\"}}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_greeting\":\"Initial greeting\",\"_token\":\"Initial token\"}},\"greet()\":{\"returns\":{\"_balance\":\" Current token balance of the caller\",\"_greeting\":\"The greeting\"}},\"setGreeting(string)\":{\"details\":\"Only callable by the owner\",\"params\":{\"_newGreeting\":\"The new greeting to be set\"}}},\"stateVariables\":{\"OWNER\":{\"details\":\"The owner will always be the deployer of the contract\",\"return\":\"The owner of the contract\",\"returns\":{\"_0\":\"The owner of the contract\"}},\"_EMPTY_STRING\":{\"details\":\"result of doing keccak256(bytes(''))\"},\"greeting\":{\"return\":\"The greeting\",\"returns\":{\"_0\":\"The greeting\"}},\"token\":{\"return\":\"The address of the token\",\"returns\":{\"_0\":\"The address of the token\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"Greeter_InvalidGreeting()\":[{\"notice\":\"Throws if the greeting set is invalid\"}],\"Greeter_OnlyOwner()\":[{\"notice\":\"Throws if the function was called by someone else than the owner\"}]},\"events\":{\"GreetingSet(string)\":{\"notice\":\"Greeting has changed\"}},\"kind\":\"user\",\"methods\":{\"OWNER()\":{\"notice\":\"Returns the owner of the contract\"},\"constructor\":{\"notice\":\"Defines the owner to the msg.sender and sets the initial greeting\"},\"greet()\":{\"notice\":\"Greets the caller\"},\"greeting()\":{\"notice\":\"Returns the previously set greeting\"},\"setGreeting(string)\":{\"notice\":\"Sets a new greeting\"},\"token()\":{\"notice\":\"Returns the token used to greet callers\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solidity/contracts/Greeter.sol\":\"Greeter\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":contracts/=solidity/contracts/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":interfaces/=solidity/interfaces/\",\":isolmate/=node_modules/isolmate/src/\",\":prb-test/=lib/prb-test/src/\",\":prb/test/=node_modules/prb/test/src/\",\":test/=solidity/test/\"]},\"sources\":{\"node_modules/isolmate/src/interfaces/tokens/IERC20.sol\":{\"keccak256\":\"0xea23a986a9efba47639b24eae7dbfd6936be01e5fc3530202fe1f4b8bb4131b8\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://37e08545e18de038023d32de846032533af9513c0b7b84a6c5c371941b6bd5f7\",\"dweb:/ipfs/QmRYNSXwiJ9wE36ogE5J77g6pbGK7T7qqqAF99DZq3eW5B\"]},\"solidity/contracts/Greeter.sol\":{\"keccak256\":\"0x380ab9fd40c73e52202e49bc8ca254799aa135a5f7214c809f8a0cb65e8cc464\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://1269c4308eb17da88bf144f70c38f81948a63176573a9274002d6b09a2da4605\",\"dweb:/ipfs/QmRjVeDWNNvqhXWnePLbMcskw66KogmAP2iGYLmq3SxcAQ\"]},\"solidity/interfaces/IGreeter.sol\":{\"keccak256\":\"0x747827aecbe821fe3ed4b108eefa46393ee1277489d5273ef0496d51200af6c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8380c91f28de084d723f29f5e01bb0ccf835e536fc7dd9a84763fc6a4351cfa\",\"dweb:/ipfs/QmePrqnZzC6L8dYqGPgNwwdG4AnwgFGqWQU4aBmMRMv2ez\"]}},\"version\":1}",
+ "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_greeting\",\"type\":\"string\"},{\"internalType\":\"contract IERC20\",\"name\":\"_token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"Greeter_InvalidGreeting\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Greeter_OnlyOwner\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_greeting\",\"type\":\"string\"}],\"name\":\"GreetingSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"OWNER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"greet\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_greeting\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"greeting\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_greeting\",\"type\":\"string\"}],\"name\":\"setGreeting\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"Greeter_InvalidGreeting()\":[{\"details\":\"Empty string is an invalid greeting\"}]},\"events\":{\"GreetingSet(string)\":{\"params\":{\"_greeting\":\"The new greeting\"}}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_greeting\":\"Initial greeting\",\"_token\":\"Initial token\"}},\"greet()\":{\"returns\":{\"_balance\":\" Current token balance of the caller\",\"_greeting\":\"The greeting\"}},\"setGreeting(string)\":{\"details\":\"Only callable by the owner\",\"params\":{\"_newGreeting\":\"The new greeting to be set\"}}},\"stateVariables\":{\"OWNER\":{\"details\":\"The owner will always be the deployer of the contract\",\"return\":\"The owner of the contract\",\"returns\":{\"_0\":\"The owner of the contract\"}},\"_EMPTY_STRING\":{\"details\":\"result of doing keccak256(bytes(''))\"},\"greeting\":{\"return\":\"The greeting\",\"returns\":{\"_0\":\"The greeting\"}},\"token\":{\"return\":\"The address of the token\",\"returns\":{\"_0\":\"The address of the token\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"Greeter_InvalidGreeting()\":[{\"notice\":\"Throws if the greeting set is invalid\"}],\"Greeter_OnlyOwner()\":[{\"notice\":\"Throws if the function was called by someone else than the owner\"}]},\"events\":{\"GreetingSet(string)\":{\"notice\":\"Greeting has changed\"}},\"kind\":\"user\",\"methods\":{\"OWNER()\":{\"notice\":\"Returns the owner of the contract\"},\"constructor\":{\"notice\":\"Defines the owner to the msg.sender and sets the initial greeting\"},\"greet()\":{\"notice\":\"Greets the caller\"},\"greeting()\":{\"notice\":\"Returns the previously set greeting\"},\"setGreeting(string)\":{\"notice\":\"Sets a new greeting\"},\"token()\":{\"notice\":\"Returns the token used to greet callers\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solidity/contracts/Greeter.sol\":\"Greeter\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":contracts/=solidity/contracts/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":interfaces/=solidity/interfaces/\",\":isolmate/=node_modules/isolmate/src/\",\":prb/test/=node_modules/prb/test/src/\",\":test/=solidity/test/\"]},\"sources\":{\"node_modules/isolmate/src/interfaces/tokens/IERC20.sol\":{\"keccak256\":\"0xea23a986a9efba47639b24eae7dbfd6936be01e5fc3530202fe1f4b8bb4131b8\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://37e08545e18de038023d32de846032533af9513c0b7b84a6c5c371941b6bd5f7\",\"dweb:/ipfs/QmRYNSXwiJ9wE36ogE5J77g6pbGK7T7qqqAF99DZq3eW5B\"]},\"solidity/contracts/Greeter.sol\":{\"keccak256\":\"0x380ab9fd40c73e52202e49bc8ca254799aa135a5f7214c809f8a0cb65e8cc464\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://1269c4308eb17da88bf144f70c38f81948a63176573a9274002d6b09a2da4605\",\"dweb:/ipfs/QmRjVeDWNNvqhXWnePLbMcskw66KogmAP2iGYLmq3SxcAQ\"]},\"solidity/interfaces/IGreeter.sol\":{\"keccak256\":\"0x747827aecbe821fe3ed4b108eefa46393ee1277489d5273ef0496d51200af6c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8380c91f28de084d723f29f5e01bb0ccf835e536fc7dd9a84763fc6a4351cfa\",\"dweb:/ipfs/QmePrqnZzC6L8dYqGPgNwwdG4AnwgFGqWQU4aBmMRMv2ez\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.19+commit.7dd6d404"
@@ -307,14 +307,13 @@
},
"settings": {
"remappings": [
- "contracts/=solidity/contracts/",
- "ds-test/=node_modules/ds-test/src/",
- "forge-std/=node_modules/forge-std/src/",
- "interfaces/=solidity/interfaces/",
- "isolmate/=node_modules/isolmate/src/",
- "prb-test/=lib/prb-test/src/",
- "prb/test/=node_modules/prb/test/src/",
- "test/=solidity/test/"
+ ":contracts/=solidity/contracts/",
+ ":ds-test/=node_modules/ds-test/src/",
+ ":forge-std/=node_modules/forge-std/src/",
+ ":interfaces/=solidity/interfaces/",
+ ":isolmate/=node_modules/isolmate/src/",
+ ":prb/test/=node_modules/prb/test/src/",
+ ":test/=solidity/test/"
],
"optimizer": {
"enabled": true,
From 25893052f40c52ed1fc46f038899256ef25887ec Mon Sep 17 00:00:00 2001
From: 0xDiscotech <0xdiscotech@defi.sucks>
Date: Tue, 24 Oct 2023 17:19:14 -0300
Subject: [PATCH 2/5] fix: updated solidity exporter version to latest canary
---
.github/workflows/solidity-exporter.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/solidity-exporter.yml b/.github/workflows/solidity-exporter.yml
index e3767c0b..ae8e6a92 100644
--- a/.github/workflows/solidity-exporter.yml
+++ b/.github/workflows/solidity-exporter.yml
@@ -34,7 +34,7 @@ jobs:
run: yarn version --new-version "0.0.0-${GITHUB_SHA::8}" --no-git-tag-version
- name: Export Solidity - ${{ matrix.export_type }}
- uses: defi-wonderland/solidity-exporter-action@v1
+ uses: defi-wonderland/solidity-exporter-action@1dbf5371c260add4a354e7a8d3467e5d3b9580b8
with:
# Update package_name with your package name
package_name: "@defi_wonderland/solidity-exported"
From aca86f7d3463b113dd014873dc4d8fc99d7bd602 Mon Sep 17 00:00:00 2001
From: Disco <131301107+0xDiscotech@users.noreply.github.com>
Date: Wed, 25 Oct 2023 14:35:30 -0300
Subject: [PATCH 3/5] chore: update solidity exporter version
Co-authored-by: Gas <86567384+gas1cent@users.noreply.github.com>
---
.github/workflows/solidity-exporter.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/solidity-exporter.yml b/.github/workflows/solidity-exporter.yml
index ae8e6a92..64e0c0a9 100644
--- a/.github/workflows/solidity-exporter.yml
+++ b/.github/workflows/solidity-exporter.yml
@@ -34,7 +34,7 @@ jobs:
run: yarn version --new-version "0.0.0-${GITHUB_SHA::8}" --no-git-tag-version
- name: Export Solidity - ${{ matrix.export_type }}
- uses: defi-wonderland/solidity-exporter-action@1dbf5371c260add4a354e7a8d3467e5d3b9580b8
+ uses: defi-wonderland/solidity-exporter-action@v2.0.0
with:
# Update package_name with your package name
package_name: "@defi_wonderland/solidity-exported"
From 0f77c432bb8711e4a026ce00fe6e1843bc3e5560 Mon Sep 17 00:00:00 2001
From: 0xDiscotech <0xdiscotech@defi.sucks>
Date: Fri, 27 Oct 2023 12:32:53 -0300
Subject: [PATCH 4/5] feat: added conditional to solidity exporter action
* refactor: removed commented lines on pubish job
* refactor: updated readme with the current changes
---
.github/workflows/solidity-exporter.yml | 13 +++++----
README.md | 39 +++++++++++++++----------
2 files changed, 31 insertions(+), 21 deletions(-)
diff --git a/.github/workflows/solidity-exporter.yml b/.github/workflows/solidity-exporter.yml
index 64e0c0a9..8f1eddca 100644
--- a/.github/workflows/solidity-exporter.yml
+++ b/.github/workflows/solidity-exporter.yml
@@ -5,6 +5,7 @@ on: [push]
jobs:
export:
name: Generate Interfaces And Contracts
+ if: false
runs-on: ubuntu-latest
strategy:
matrix:
@@ -42,9 +43,9 @@ jobs:
interfaces: "solidity/interfaces"
contracts: "solidity/contracts"
export_type: "${{ matrix.export_type }}"
- ## Uncomment it if you want to publish your exported packages to NPM
- # - name: Publish
- ## Update `@defi_wonderland/solidity-exported` with your package name
- # run: cd export/@defi_wonderland/solidity-exported-${{ matrix.export_type }} && npm publish --access public
- # env:
- # NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
+
+ - name: Publish to NPM - ${{ matrix.export_type }}
+ # Update `@defi_wonderland/solidity-exported` with your package name
+ run: cd export/@defi_wonderland/solidity-exported-${{ matrix.export_type }} && npm publish --access public
+ env:
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
diff --git a/README.md b/README.md
index 5dbc6c1e..acb6098f 100644
--- a/README.md
+++ b/README.md
@@ -109,28 +109,37 @@ See the [Foundry Book for available options](https://book.getfoundry.sh/referenc
## Export And Publish
-### Export
+Export TypeScript interfaces from Solidity contracts and interfaces providing compatibility with TypeChain. Publish the exported packages to NPM.
-Export TypeScript interfaces from Solidity contracts and interfaces providing compatibility with TypeChain.
-
-Update the `package_name` in the `solidity-exporter.yml` file to match your package name:
+To enable this feature, make sure you've set the `NPM_TOKEN` on your org's secrets. Then set the job's conditional to `true`:
```yaml
-# Update package_name with your package name
-package_name: "@defi_wonderland/solidity-exported"
-```
+solidity-exporter.yml
-### Publish
+jobs:
+ export:
+ name: Generate Interfaces And Contracts
+ if: true
+ ...
+```
-If you want to publish the exported packages to NPM, you can do so by uncommenting the following lines in the `solidity-exporter.yml` file (make sure you've set the `NPM_TOKEN` on your org's secrets) and updating the package name with yours:
+Also, remember to update the `package_name` param to your package name:
```yaml
-## Uncomment it if you want to publish your exported packages to NPM
-# - name: Publish
-## Update `@defi_wonderland/solidity-exported` with your package name
-# run: cd export/@defi_wonderland/solidity-exported-${{ matrix.export_type }} && npm publish --access public
-# env:
-# NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
+solidity-exporter.yml
+
+- name: Export Solidity - ${{ matrix.export_type }}
+ uses: defi-wonderland/solidity-exporter-action@1dbf5371c260add4a354e7a8d3467e5d3b9580b8
+ with:
+ # Update package_name with your package name
+ package_name: "@defi_wonderland/solidity-exported"
+ ...
+
+
+- name: Publish to NPM - ${{ matrix.export_type }}
+ # Update `@defi_wonderland/solidity-exported` with your package name
+ run: cd export/@defi_wonderland/solidity-exported-${{ matrix.export_type }} && npm publish --access public
+ ...
```
You can take a look at our [solidity-exporter-action](https://github.com/defi-wonderland/solidity-exporter-action) repository more information and usage examples.
From f33e20cc8dc57daa7a04c810768235abf7d6a253 Mon Sep 17 00:00:00 2001
From: 0xDiscotech <0xdiscotech@defi.sucks>
Date: Fri, 27 Oct 2023 13:43:54 -0300
Subject: [PATCH 5/5] refactor: updated package name on action and readme
* feat: added comment on action conditional
---
.github/workflows/solidity-exporter.yml | 7 ++++---
README.md | 7 ++++---
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/.github/workflows/solidity-exporter.yml b/.github/workflows/solidity-exporter.yml
index 8f1eddca..54eeef67 100644
--- a/.github/workflows/solidity-exporter.yml
+++ b/.github/workflows/solidity-exporter.yml
@@ -5,6 +5,7 @@ on: [push]
jobs:
export:
name: Generate Interfaces And Contracts
+ # Remove the following line if you wish to export your Solidity contracts and interfaces and publish them to NPM
if: false
runs-on: ubuntu-latest
strategy:
@@ -38,14 +39,14 @@ jobs:
uses: defi-wonderland/solidity-exporter-action@v2.0.0
with:
# Update package_name with your package name
- package_name: "@defi_wonderland/solidity-exported"
+ package_name: "my-cool-project"
out: "out"
interfaces: "solidity/interfaces"
contracts: "solidity/contracts"
export_type: "${{ matrix.export_type }}"
- name: Publish to NPM - ${{ matrix.export_type }}
- # Update `@defi_wonderland/solidity-exported` with your package name
- run: cd export/@defi_wonderland/solidity-exported-${{ matrix.export_type }} && npm publish --access public
+ # Update `my-cool-project` with your package name
+ run: cd export/my-cool-project-${{ matrix.export_type }} && npm publish --access public
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
diff --git a/README.md b/README.md
index acb6098f..4aeda6ca 100644
--- a/README.md
+++ b/README.md
@@ -119,6 +119,7 @@ solidity-exporter.yml
jobs:
export:
name: Generate Interfaces And Contracts
+ # Remove the following line if you wish to export your Solidity contracts and interfaces and publish them to NPM
if: true
...
```
@@ -132,13 +133,13 @@ solidity-exporter.yml
uses: defi-wonderland/solidity-exporter-action@1dbf5371c260add4a354e7a8d3467e5d3b9580b8
with:
# Update package_name with your package name
- package_name: "@defi_wonderland/solidity-exported"
+ package_name: "my-cool-project"
...
- name: Publish to NPM - ${{ matrix.export_type }}
- # Update `@defi_wonderland/solidity-exported` with your package name
- run: cd export/@defi_wonderland/solidity-exported-${{ matrix.export_type }} && npm publish --access public
+ # Update `my-cool-project` with your package name
+ run: cd export/my-cool-project-${{ matrix.export_type }} && npm publish --access public
...
```