UNPKG

@uniswap/v4-periphery

Version:

🦄 Peripheral smart contracts for interacting with Uniswap v4

1 lines • 25.1 kB
{"abi":[{"type":"constructor","inputs":[{"name":"_permit2","type":"address","internalType":"contract IAllowanceTransfer"}],"stateMutability":"nonpayable"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"permitSingle","type":"tuple","internalType":"struct IAllowanceTransfer.PermitSingle","components":[{"name":"details","type":"tuple","internalType":"struct IAllowanceTransfer.PermitDetails","components":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint160","internalType":"uint160"},{"name":"expiration","type":"uint48","internalType":"uint48"},{"name":"nonce","type":"uint48","internalType":"uint48"}]},{"name":"spender","type":"address","internalType":"address"},{"name":"sigDeadline","type":"uint256","internalType":"uint256"}]},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"err","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"function","name":"permit2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IAllowanceTransfer"}],"stateMutability":"view"},{"type":"function","name":"permitBatch","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"_permitBatch","type":"tuple","internalType":"struct IAllowanceTransfer.PermitBatch","components":[{"name":"details","type":"tuple[]","internalType":"struct IAllowanceTransfer.PermitDetails[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint160","internalType":"uint160"},{"name":"expiration","type":"uint48","internalType":"uint48"},{"name":"nonce","type":"uint48","internalType":"uint48"}]},{"name":"spender","type":"address","internalType":"address"},{"name":"sigDeadline","type":"uint256","internalType":"uint256"}]},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"err","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"}],"bytecode":{"object":"0x60a0604052348015600e575f80fd5b506040516106e63803806106e6833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b60805161065b61008b5f395f818160700152818161010a01526101eb015261065b5ff3fe608060405260043610610032575f3560e01c80622a3e3a1461003657806312261ee71461005f5780632b67b570146100b7575b5f80fd5b61004961004436600461029f565b6100ca565b604051610056919061031c565b60405180910390f35b34801561006a575f80fd5b506100927f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610056565b6100496100c536600461036f565b6101ab565b6040517f2a2d80d100000000000000000000000000000000000000000000000000000000815260609073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632a2d80d1906101459088908890889088906004016104be565b5f604051808303815f87803b15801561015c575f80fd5b505af192505050801561016d575060015b6101a3573d80801561019a576040519150601f19603f3d011682016040523d82523d5f602084013e61019f565b606091505b5090505b949350505050565b6040517f2b67b57000000000000000000000000000000000000000000000000000000000815260609073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632b67b570906101459088908890889088906004016105d1565b73ffffffffffffffffffffffffffffffffffffffff81168114610247575f80fd5b50565b803561025581610226565b919050565b5f8083601f84011261026a575f80fd5b50813567ffffffffffffffff811115610281575f80fd5b602083019150836020828501011115610298575f80fd5b9250929050565b5f805f80606085870312156102b2575f80fd5b84356102bd81610226565b9350602085013567ffffffffffffffff8111156102d8575f80fd5b8501606081880312156102e9575f80fd5b9250604085013567ffffffffffffffff811115610304575f80fd5b6103108782880161025a565b95989497509550505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f805f80848603610100811215610384575f80fd5b853561038f81610226565b945060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820112156103c0575f80fd5b5060208501925060e085013567ffffffffffffffff811115610304575f80fd5b803565ffffffffffff81168114610255575f80fd5b803561040081610226565b73ffffffffffffffffffffffffffffffffffffffff168252602081013561042681610226565b73ffffffffffffffffffffffffffffffffffffffff16602083015265ffffffffffff610454604083016103e0565b16604083015265ffffffffffff61046d606083016103e0565b1660608301525050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152606060208201525f60c0820185357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1873603018112610514575f80fd5b860160208101903567ffffffffffffffff811115610530575f80fd5b8060071b3603821315610541575f80fd5b60608581015291829052905f9060e085015b818310156105785761056581856103f5565b6080938401936001939093019201610553565b61058460208a0161024a565b73ffffffffffffffffffffffffffffffffffffffff16608087015260408981013560a088018190528783039188019190915293506105c381888a610477565b9a9950505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff851681526105f760208201856103f5565b5f608085013561060681610226565b73ffffffffffffffffffffffffffffffffffffffff1660a08381019190915285013560c083015261010060e083018190526106449083018486610477565b969550505050505056fea164736f6c634300081a000a","sourceMap":"341:1169:146:-:0;;;502:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;553:18:146;;;341:1169;;14:316:262;110:6;163:2;151:9;142:7;138:23;134:32;131:52;;;179:1;176;169:12;131:52;205:16;;-1:-1:-1;;;;;250:31:262;;240:42;;230:70;;296:1;293;286:12;230:70;319:5;14:316;-1:-1:-1;;;14:316:262:o;:::-;341:1169:146;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610610032575f3560e01c80622a3e3a1461003657806312261ee71461005f5780632b67b570146100b7575b5f80fd5b61004961004436600461029f565b6100ca565b604051610056919061031c565b60405180910390f35b34801561006a575f80fd5b506100927f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610056565b6100496100c536600461036f565b6101ab565b6040517f2a2d80d100000000000000000000000000000000000000000000000000000000815260609073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632a2d80d1906101459088908890889088906004016104be565b5f604051808303815f87803b15801561015c575f80fd5b505af192505050801561016d575060015b6101a3573d80801561019a576040519150601f19603f3d011682016040523d82523d5f602084013e61019f565b606091505b5090505b949350505050565b6040517f2b67b57000000000000000000000000000000000000000000000000000000000815260609073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632b67b570906101459088908890889088906004016105d1565b73ffffffffffffffffffffffffffffffffffffffff81168114610247575f80fd5b50565b803561025581610226565b919050565b5f8083601f84011261026a575f80fd5b50813567ffffffffffffffff811115610281575f80fd5b602083019150836020828501011115610298575f80fd5b9250929050565b5f805f80606085870312156102b2575f80fd5b84356102bd81610226565b9350602085013567ffffffffffffffff8111156102d8575f80fd5b8501606081880312156102e9575f80fd5b9250604085013567ffffffffffffffff811115610304575f80fd5b6103108782880161025a565b95989497509550505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f805f80848603610100811215610384575f80fd5b853561038f81610226565b945060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820112156103c0575f80fd5b5060208501925060e085013567ffffffffffffffff811115610304575f80fd5b803565ffffffffffff81168114610255575f80fd5b803561040081610226565b73ffffffffffffffffffffffffffffffffffffffff168252602081013561042681610226565b73ffffffffffffffffffffffffffffffffffffffff16602083015265ffffffffffff610454604083016103e0565b16604083015265ffffffffffff61046d606083016103e0565b1660608301525050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152606060208201525f60c0820185357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1873603018112610514575f80fd5b860160208101903567ffffffffffffffff811115610530575f80fd5b8060071b3603821315610541575f80fd5b60608581015291829052905f9060e085015b818310156105785761056581856103f5565b6080938401936001939093019201610553565b61058460208a0161024a565b73ffffffffffffffffffffffffffffffffffffffff16608087015260408981013560a088018190528783039188019190915293506105c381888a610477565b9a9950505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff851681526105f760208201856103f5565b5f608085013561060681610226565b73ffffffffffffffffffffffffffffffffffffffff1660a08381019190915285013560c083015261010060e083018190526106449083018486610477565b969550505050505056fea164736f6c634300081a000a","sourceMap":"341:1169:146:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1085:423;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;452:43;;;;;;;;;;;;;;;;;;2177:42:262;2165:55;;;2147:74;;2135:2;2120:18;452:43:146;1975:252:262;622:419:146;;;;;;:::i;:::-;;:::i;1085:423::-;1379:46;;;;;1251:16;;1379:14;:7;:14;;;;:46;;1394:5;;1401:12;;1415:9;;;;1379:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1375:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1485:6:146;-1:-1:-1;1375:127:146;1085:423;;;;;;:::o;622:419::-;912:46;;;;;784:16;;912:14;:7;:14;;;;:46;;927:5;;934:12;;948:9;;;;912:46;;;:::i;14:154:262:-;100:42;93:5;89:54;82:5;79:65;69:93;;158:1;155;148:12;69:93;14:154;:::o;173:134::-;241:20;;270:31;241:20;270:31;:::i;:::-;173:134;;;:::o;312:347::-;363:8;373:6;427:3;420:4;412:6;408:17;404:27;394:55;;445:1;442;435:12;394:55;-1:-1:-1;468:20:262;;511:18;500:30;;497:50;;;543:1;540;533:12;497:50;580:4;572:6;568:17;556:29;;632:3;625:4;616:6;608;604:19;600:30;597:39;594:59;;;649:1;646;639:12;594:59;312:347;;;;;:::o;664:826::-;781:6;789;797;805;858:2;846:9;837:7;833:23;829:32;826:52;;;874:1;871;864:12;826:52;913:9;900:23;932:31;957:5;932:31;:::i;:::-;982:5;-1:-1:-1;1038:2:262;1023:18;;1010:32;1065:18;1054:30;;1051:50;;;1097:1;1094;1087:12;1051:50;1120:22;;1176:2;1158:16;;;1154:25;1151:45;;;1192:1;1189;1182:12;1151:45;1215:2;-1:-1:-1;1270:2:262;1255:18;;1242:32;1299:18;1286:32;;1283:52;;;1331:1;1328;1321:12;1283:52;1370:60;1422:7;1411:8;1400:9;1396:24;1370:60;:::i;:::-;664:826;;;;-1:-1:-1;1449:8:262;-1:-1:-1;;;;664:826:262:o;1495:475::-;1642:2;1631:9;1624:21;1605:4;1674:6;1668:13;1717:6;1712:2;1701:9;1697:18;1690:34;1776:6;1771:2;1763:6;1759:15;1754:2;1743:9;1739:18;1733:50;1832:1;1827:2;1818:6;1807:9;1803:22;1799:31;1792:42;1961:2;1891:66;1886:2;1878:6;1874:15;1870:88;1859:9;1855:104;1851:113;1843:121;;;1495:475;;;;:::o;2232:765::-;2350:6;2358;2366;2374;2418:9;2409:7;2405:23;2448:3;2444:2;2440:12;2437:32;;;2465:1;2462;2455:12;2437:32;2504:9;2491:23;2523:31;2548:5;2523:31;:::i;:::-;2573:5;-1:-1:-1;2671:3:262;2602:66;2594:75;;2590:85;2587:105;;;2688:1;2685;2678:12;2587:105;;2726:2;2715:9;2711:18;2701:28;;2780:3;2769:9;2765:19;2752:33;2808:18;2800:6;2797:30;2794:50;;;2840:1;2837;2830:12;3134:167;3201:20;;3261:14;3250:26;;3240:37;;3230:65;;3291:1;3288;3281:12;3306:599;3410:5;3397:19;3425:33;3450:7;3425:33;:::i;:::-;3492:42;3479:56;3467:69;;3584:4;3573:16;;3560:30;3599:33;3560:30;3599:33;:::i;:::-;3677:42;3664:56;3657:4;3648:14;;3641:80;3794:14;3757:35;3786:4;3775:16;;3757:35;:::i;:::-;3753:56;3746:4;3741:3;3737:14;3730:80;3883:14;3846:35;3875:4;3868:5;3864:16;3846:35;:::i;:::-;3842:56;3835:4;3830:3;3826:14;3819:80;3306:599;;:::o;3910:325::-;3998:6;3993:3;3986:19;4050:6;4043:5;4036:4;4031:3;4027:14;4014:43;;4102:1;4095:4;4086:6;4081:3;4077:16;4073:27;4066:38;3968:3;4224:4;4154:66;4149:2;4141:6;4137:15;4133:88;4128:3;4124:98;4120:109;4113:116;;3910:325;;;;:::o;4240:1657::-;4521:42;4513:6;4509:55;4498:9;4491:74;4601:2;4596;4585:9;4581:18;4574:30;4472:4;4642:3;4631:9;4627:19;4694:6;4681:20;4777:66;4768:6;4752:14;4748:27;4744:100;4724:18;4720:125;4710:153;;4859:1;4856;4849:12;4710:153;4885:31;;4993:2;4982:14;;;4939:19;5019:18;5008:30;;5005:50;;;5051:1;5048;5041:12;5005:50;5107:6;5104:1;5100:14;5084;5080:35;5071:7;5067:49;5064:69;;;5129:1;5126;5119:12;5064:69;5169:2;5149:18;;;5142:30;5207:22;;;;5287:7;5312:1;;5260:3;5245:19;;5322:200;5336:6;5333:1;5330:13;5322:200;;;5385:53;5434:3;5426:6;5385:53;:::i;:::-;5467:4;5495:17;;;;5358:1;5351:9;;;;;5458:14;5322:200;;;5551:35;5582:2;5574:6;5570:15;5551:35;:::i;:::-;3079:42;3068:54;5643:4;5628:20;;3056:67;5719:4;5707:17;;;5694:31;5756:3;5741:19;;5734:36;;;5808:19;;;5786:20;;;5779:49;;;;5694:31;-1:-1:-1;5845:46:262;5812:3;5879:6;5871;5845:46;:::i;:::-;5837:54;4240:1657;-1:-1:-1;;;;;;;;;;4240:1657:262:o;5902:835::-;6185:42;6177:6;6173:55;6162:9;6155:74;6238:68;6302:2;6291:9;6287:18;6279:6;6238:68;:::i;:::-;6136:4;6353;6345:6;6341:17;6328:31;6368;6393:5;6368:31;:::i;:::-;6447:42;6436:54;6430:3;6415:19;;;6408:83;;;;6549:16;;6536:30;6597:3;6582:19;;6575:36;6648:3;6642;6627:19;;6620:32;;;6669:62;;6711:19;;6703:6;6695;6669:62;:::i;:::-;6661:70;5902:835;-1:-1:-1;;;;;;5902:835:262:o","linkReferences":{},"immutableReferences":{"66262":[{"start":112,"length":32},{"start":266,"length":32},{"start":491,"length":32}]}},"methodIdentifiers":{"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)":"2b67b570","permit2()":"12261ee7","permitBatch(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)":"002a3e3a"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IAllowanceTransfer\",\"name\":\"_permit2\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitSingle\",\"name\":\"permitSingle\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"err\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"permit2\",\"outputs\":[{\"internalType\":\"contract IAllowanceTransfer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails[]\",\"name\":\"details\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitBatch\",\"name\":\"_permitBatch\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitBatch\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"err\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract does not enforce the spender to be this contract, but that is the intended use case\",\"kind\":\"dev\",\"methods\":{\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"details\":\"this function is payable to allow multicall with NATIVE based actions\",\"params\":{\"owner\":\"the owner of the tokens\",\"permitSingle\":\"the permit data\",\"signature\":\"the signature of the permit; abi.encodePacked(r, s, v)\"},\"returns\":{\"err\":\"the error returned by a reverting permit call, empty if successful\"}},\"permitBatch(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"details\":\"this function is payable to allow multicall with NATIVE based actions\",\"params\":{\"_permitBatch\":\"a batch of approvals\",\"owner\":\"the owner of the tokens\",\"signature\":\"the signature of the permit; abi.encodePacked(r, s, v)\"},\"returns\":{\"err\":\"the error returned by a reverting permit call, empty if successful\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"notice\":\"allows forwarding a single permit to permit2\"},\"permit2()\":{\"notice\":\"the Permit2 contract to forward approvals\"},\"permitBatch(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"notice\":\"allows forwarding batch permits to permit2\"}},\"notice\":\"Permit2Forwarder allows permitting this contract as a spender on permit2\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/base/Permit2Forwarder.sol\":\"Permit2Forwarder\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":44444444},\"remappings\":[\":@ensdomains/=lib/v4-core/node_modules/@ensdomains/\",\":@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/\",\":@uniswap/v4-core/=lib/v4-core/\",\":ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/permit2/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/v4-core/lib/forge-std/src/\",\":hardhat/=lib/v4-core/node_modules/hardhat/\",\":openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/\",\":permit2/=lib/permit2/\",\":solmate/=lib/v4-core/lib/solmate/\",\":v4-core/=lib/v4-core/src/\"]},\"sources\":{\"lib/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"lib/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]},\"src/base/Permit2Forwarder.sol\":{\"keccak256\":\"0xcdf793e6732cdf0c386f89573384032314b0893bf208b3d75ac71d3002674a3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f18d0be711c1d586854e2a78113bf84765e7158c9568b2c73f8750511a22ce7\",\"dweb:/ipfs/QmSe3zz9jvDZo2MqPgCpfNs3yA4xAWPB1deZBoRFzeZiN1\"]},\"src/interfaces/IPermit2Forwarder.sol\":{\"keccak256\":\"0xfad472937280e861125ff12aa6f9c2cf7440fbb20a2cc29485c24662ad4279c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31bfbc331f5972fc373d9469fd1ca1d14818db3275f21b7b590f20820cb4439d\",\"dweb:/ipfs/QmX3Bv9wfYpAFZKBcxKsQSXUrSC8mqNBdzh6XVMS72aNx9\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IAllowanceTransfer","name":"_permit2","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct IAllowanceTransfer.PermitSingle","name":"permitSingle","type":"tuple","components":[{"internalType":"struct IAllowanceTransfer.PermitDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}]},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}]},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"payable","type":"function","name":"permit","outputs":[{"internalType":"bytes","name":"err","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"permit2","outputs":[{"internalType":"contract IAllowanceTransfer","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct IAllowanceTransfer.PermitBatch","name":"_permitBatch","type":"tuple","components":[{"internalType":"struct IAllowanceTransfer.PermitDetails[]","name":"details","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}]},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}]},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"payable","type":"function","name":"permitBatch","outputs":[{"internalType":"bytes","name":"err","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)":{"details":"this function is payable to allow multicall with NATIVE based actions","params":{"owner":"the owner of the tokens","permitSingle":"the permit data","signature":"the signature of the permit; abi.encodePacked(r, s, v)"},"returns":{"err":"the error returned by a reverting permit call, empty if successful"}},"permitBatch(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)":{"details":"this function is payable to allow multicall with NATIVE based actions","params":{"_permitBatch":"a batch of approvals","owner":"the owner of the tokens","signature":"the signature of the permit; abi.encodePacked(r, s, v)"},"returns":{"err":"the error returned by a reverting permit call, empty if successful"}}},"version":1},"userdoc":{"kind":"user","methods":{"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)":{"notice":"allows forwarding a single permit to permit2"},"permit2()":{"notice":"the Permit2 contract to forward approvals"},"permitBatch(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)":{"notice":"allows forwarding batch permits to permit2"}},"version":1}},"settings":{"remappings":["@ensdomains/=lib/v4-core/node_modules/@ensdomains/","@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/","@uniswap/v4-core/=lib/v4-core/","ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/permit2/lib/forge-gas-snapshot/src/","forge-std/=lib/v4-core/lib/forge-std/src/","hardhat/=lib/v4-core/node_modules/hardhat/","openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/","permit2/=lib/permit2/","solmate/=lib/v4-core/lib/solmate/","v4-core/=lib/v4-core/src/"],"optimizer":{"enabled":true,"runs":44444444},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/base/Permit2Forwarder.sol":"Permit2Forwarder"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/permit2/src/interfaces/IAllowanceTransfer.sol":{"keccak256":"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29","urls":["bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0","dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN"],"license":"MIT"},"lib/permit2/src/interfaces/IEIP712.sol":{"keccak256":"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138","urls":["bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72","dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk"],"license":"MIT"},"src/base/Permit2Forwarder.sol":{"keccak256":"0xcdf793e6732cdf0c386f89573384032314b0893bf208b3d75ac71d3002674a3b","urls":["bzz-raw://4f18d0be711c1d586854e2a78113bf84765e7158c9568b2c73f8750511a22ce7","dweb:/ipfs/QmSe3zz9jvDZo2MqPgCpfNs3yA4xAWPB1deZBoRFzeZiN1"],"license":"MIT"},"src/interfaces/IPermit2Forwarder.sol":{"keccak256":"0xfad472937280e861125ff12aa6f9c2cf7440fbb20a2cc29485c24662ad4279c5","urls":["bzz-raw://31bfbc331f5972fc373d9469fd1ca1d14818db3275f21b7b590f20820cb4439d","dweb:/ipfs/QmX3Bv9wfYpAFZKBcxKsQSXUrSC8mqNBdzh6XVMS72aNx9"],"license":"MIT"}},"version":1},"id":43}