UNPKG

@uniswap/universal-router

Version:

Smart contracts for Universal Router

1 lines 24.7 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":"0x60a034607357601f61083238819003918201601f19168301916001600160401b03831184841017607757808492602094604052833981010312607357516001600160a01b03811681036073576080526040516107a6908161008c823960805181818160c1015281816102b201526103840152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081622a3e3a146102d65750806312261ee71461026757632b67b5701461003e575f80fd5b6101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102545761007161059a565b60c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102635760e43567ffffffffffffffff811161025f576100bb9036906004016105de565b606093917f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1691823b1561025b5773ffffffffffffffffffffffffffffffffffffffff604051957f2b67b57000000000000000000000000000000000000000000000000000000000875216600486015260243573ffffffffffffffffffffffffffffffffffffffff811680910361025757602486015260443573ffffffffffffffffffffffffffffffffffffffff811680910361025757604486015260643565ffffffffffff811680910361025757606486015260843565ffffffffffff811680910361025757608486015260a43573ffffffffffffffffffffffffffffffffffffffff81168091036102575784866102098195839795839560a485015260c43560c485015261010060e48501526101048401916106d5565b03925af1918261023f575b50506102365750610232610226610713565b6040519182918261060c565b0390f35b61023290610226565b61024a828092610654565b6102545780610214565b80fd5b8480fd5b8380fd5b8280fd5b5080fd5b503461025457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025457602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105965761030861059a565b906024359167ffffffffffffffff83116105965782360360607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126105965760443567ffffffffffffffff8111610596576103699036906004016105de565b9060609573ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001694853b156105965773ffffffffffffffffffffffffffffffffffffffff907f2a2d80d100000000000000000000000000000000000000000000000000000000885216600487015286602487015260c48601937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd826004013591018112156105965781016024600482013591019467ffffffffffffffff8211610596578160071b360386136105965760648801899052819052869460e48601949392915f5b818110610503575050506104d75f96948694889460448573ffffffffffffffffffffffffffffffffffffffff61049b60248b99016105bd565b166084880152013560a48601527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8584030160448601526106d5565b03925af190816104f3575b506102365750610232610226610713565b5f6104fd91610654565b5f6104e2565b9196509192939473ffffffffffffffffffffffffffffffffffffffff610528886105bd565b16815260208701359073ffffffffffffffffffffffffffffffffffffffff82168092036105965760808165ffffffffffff6105808e8261057360408f60019a60208a9b0152016106c2565b1660408501528c016106c2565b168d820152019701910191889695949392610462565b5f80fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361059657565b359073ffffffffffffffffffffffffffffffffffffffff8216820361059657565b9181601f840112156105965782359167ffffffffffffffff8311610596576020838186019501011161059657565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761069557604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b359065ffffffffffff8216820361059657565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b3d1561076b573d9067ffffffffffffffff8211610695576040519161076060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610654565b82523d5f602084013e565b60609056fea2646970667358221220e950cc2b18fbc8c797bfd2b1ff651a4d65dc01e5397fe949ce3d151903a50a8b64736f6c634300081a0033","sourceMap":"341:1169:62:-:0;;;;;;;;;;;;;-1:-1:-1;;341:1169:62;;;;-1:-1:-1;;;;;341:1169:62;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;341:1169:62;;;;;;553:18;;341:1169;;;;;;;;553:18;341:1169;;;;;;;;;;;;;;;;;-1:-1:-1;341:1169:62;;;;;;-1:-1:-1;341:1169:62;;;;;-1:-1:-1;341:1169:62","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f905f3560e01c9081622a3e3a146102d65750806312261ee71461026757632b67b5701461003e575f80fd5b6101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102545761007161059a565b60c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102635760e43567ffffffffffffffff811161025f576100bb9036906004016105de565b606093917f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1691823b1561025b5773ffffffffffffffffffffffffffffffffffffffff604051957f2b67b57000000000000000000000000000000000000000000000000000000000875216600486015260243573ffffffffffffffffffffffffffffffffffffffff811680910361025757602486015260443573ffffffffffffffffffffffffffffffffffffffff811680910361025757604486015260643565ffffffffffff811680910361025757606486015260843565ffffffffffff811680910361025757608486015260a43573ffffffffffffffffffffffffffffffffffffffff81168091036102575784866102098195839795839560a485015260c43560c485015261010060e48501526101048401916106d5565b03925af1918261023f575b50506102365750610232610226610713565b6040519182918261060c565b0390f35b61023290610226565b61024a828092610654565b6102545780610214565b80fd5b8480fd5b8380fd5b8280fd5b5080fd5b503461025457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261025457602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105965761030861059a565b906024359167ffffffffffffffff83116105965782360360607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126105965760443567ffffffffffffffff8111610596576103699036906004016105de565b9060609573ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001694853b156105965773ffffffffffffffffffffffffffffffffffffffff907f2a2d80d100000000000000000000000000000000000000000000000000000000885216600487015286602487015260c48601937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd826004013591018112156105965781016024600482013591019467ffffffffffffffff8211610596578160071b360386136105965760648801899052819052869460e48601949392915f5b818110610503575050506104d75f96948694889460448573ffffffffffffffffffffffffffffffffffffffff61049b60248b99016105bd565b166084880152013560a48601527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8584030160448601526106d5565b03925af190816104f3575b506102365750610232610226610713565b5f6104fd91610654565b5f6104e2565b9196509192939473ffffffffffffffffffffffffffffffffffffffff610528886105bd565b16815260208701359073ffffffffffffffffffffffffffffffffffffffff82168092036105965760808165ffffffffffff6105808e8261057360408f60019a60208a9b0152016106c2565b1660408501528c016106c2565b168d820152019701910191889695949392610462565b5f80fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361059657565b359073ffffffffffffffffffffffffffffffffffffffff8216820361059657565b9181601f840112156105965782359167ffffffffffffffff8311610596576020838186019501011161059657565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602060409481855280519182918282880152018686015e5f8582860101520116010190565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761069557604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b359065ffffffffffff8216820361059657565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b3d1561076b573d9067ffffffffffffffff8211610695576040519161076060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184610654565b82523d5f602084013e565b60609056fea2646970667358221220e950cc2b18fbc8c797bfd2b1ff651a4d65dc01e5397fe949ce3d151903a50a8b64736f6c634300081a0033","sourceMap":"341:1169:62:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;912:7;341:1169;;;912:46;;;;;341:1169;;;912:46;341:1169;912:46;;341:1169;;912:46;;341:1169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;912:46;;;;;;;;341:1169;-1:-1:-1;;908:127:62;;970:65;341:1169;970:65;;:::i;:::-;341:1169;;;;;;;:::i;:::-;;;;908:127;341:1169;908:127;;;912:46;;;;;;:::i;:::-;341:1169;;912:46;;;341:1169;;;;;;;912:46;341:1169;;;;;;;;;;;;;;;;;;;;;;;;;;;452:43;341:1169;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;1379:7;341:1169;1379:7;341:1169;1379:46;;;;;;341:1169;1379:46;341:1169;1379:46;;341:1169;;1379:46;;341:1169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1379:46;;;;;;;;341:1169;-1:-1:-1;1375:127:62;;1437:65;341:1169;1437:65;;:::i;1379:46::-;341:1169;1379:46;;;:::i;:::-;341:1169;1379:46;;341:1169;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;341:1169:62;;;;;-1:-1:-1;341:1169:62;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;341:1169:62;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;341:1169:62;;;;:::o;:::-;;;:::o","linkReferences":{},"immutableReferences":{"14002":[{"start":193,"length":32},{"start":690,"length":32},{"start":900,"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\":{\"lib/v4-periphery/src/base/Permit2Forwarder.sol\":\"Permit2Forwarder\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":30000},\"remappings\":[\":@ensdomains/=lib/v4-periphery/lib/v4-core/node_modules/@ensdomains/\",\":@openzeppelin/=lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts/\",\":@openzeppelin/contracts/=lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts/contracts/\",\":@uniswap/v2-core/=node_modules/@uniswap/v2-core/\",\":@uniswap/v3-core/=node_modules/@uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":@uniswap/v4-core/=lib/v4-periphery/lib/v4-core/\",\":@uniswap/v4-periphery/=lib/v4-periphery/\",\":ds-test/=lib/solmate/lib/ds-test/src/\",\":erc4626-tests/=lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/permit2/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=lib/v4-periphery/lib/v4-core/node_modules/hardhat/\",\":openzeppelin-contracts/=lib/permit2/lib/openzeppelin-contracts/\",\":permit2/=lib/permit2/\",\":solmate/=lib/solmate/\",\":v3-periphery/=lib/v3-periphery/contracts/\",\":v4-core/=lib/v4-periphery/lib/v4-core/src/\",\":v4-periphery/=lib/v4-periphery/\"],\"viaIR\":true},\"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\"]},\"lib/v4-periphery/src/base/Permit2Forwarder.sol\":{\"keccak256\":\"0xcdf793e6732cdf0c386f89573384032314b0893bf208b3d75ac71d3002674a3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f18d0be711c1d586854e2a78113bf84765e7158c9568b2c73f8750511a22ce7\",\"dweb:/ipfs/QmSe3zz9jvDZo2MqPgCpfNs3yA4xAWPB1deZBoRFzeZiN1\"]},\"lib/v4-periphery/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-periphery/lib/v4-core/node_modules/@ensdomains/","@openzeppelin/=lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts/","@openzeppelin/contracts/=lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts/contracts/","@uniswap/v2-core/=node_modules/@uniswap/v2-core/","@uniswap/v3-core/=node_modules/@uniswap/v3-core/","@uniswap/v3-periphery/=lib/v3-periphery/","@uniswap/v4-core/=lib/v4-periphery/lib/v4-core/","@uniswap/v4-periphery/=lib/v4-periphery/","ds-test/=lib/solmate/lib/ds-test/src/","erc4626-tests/=lib/v4-periphery/lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/permit2/lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","hardhat/=lib/v4-periphery/lib/v4-core/node_modules/hardhat/","openzeppelin-contracts/=lib/permit2/lib/openzeppelin-contracts/","permit2/=lib/permit2/","solmate/=lib/solmate/","v3-periphery/=lib/v3-periphery/contracts/","v4-core/=lib/v4-periphery/lib/v4-core/src/","v4-periphery/=lib/v4-periphery/"],"optimizer":{"enabled":true,"runs":30000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/v4-periphery/src/base/Permit2Forwarder.sol":"Permit2Forwarder"},"evmVersion":"cancun","libraries":{},"viaIR":true},"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"},"lib/v4-periphery/src/base/Permit2Forwarder.sol":{"keccak256":"0xcdf793e6732cdf0c386f89573384032314b0893bf208b3d75ac71d3002674a3b","urls":["bzz-raw://4f18d0be711c1d586854e2a78113bf84765e7158c9568b2c73f8750511a22ce7","dweb:/ipfs/QmSe3zz9jvDZo2MqPgCpfNs3yA4xAWPB1deZBoRFzeZiN1"],"license":"MIT"},"lib/v4-periphery/src/interfaces/IPermit2Forwarder.sol":{"keccak256":"0xfad472937280e861125ff12aa6f9c2cf7440fbb20a2cc29485c24662ad4279c5","urls":["bzz-raw://31bfbc331f5972fc373d9469fd1ca1d14818db3275f21b7b590f20820cb4439d","dweb:/ipfs/QmX3Bv9wfYpAFZKBcxKsQSXUrSC8mqNBdzh6XVMS72aNx9"],"license":"MIT"}},"version":1},"id":62}