{"version":3,"file":"ccip-B-XgLZ0u.mjs","sources":["../node_modules/.pnpm/viem@2.9.16_typescript@5.4.5_zod@3.22.4/node_modules/viem/_esm/errors/ccip.js","../node_modules/.pnpm/viem@2.9.16_typescript@5.4.5_zod@3.22.4/node_modules/viem/_esm/utils/address/isAddressEqual.js","../node_modules/.pnpm/viem@2.9.16_typescript@5.4.5_zod@3.22.4/node_modules/viem/_esm/utils/ccip.js"],"sourcesContent":["import { stringify } from '../utils/stringify.js';\nimport { BaseError } from './base.js';\nimport { getUrl } from './utils.js';\nexport class OffchainLookupError extends BaseError {\n    constructor({ callbackSelector, cause, data, extraData, sender, urls, }) {\n        super(cause.shortMessage ||\n            'An error occurred while fetching for an offchain result.', {\n            cause,\n            metaMessages: [\n                ...(cause.metaMessages || []),\n                cause.metaMessages?.length ? '' : [],\n                'Offchain Gateway Call:',\n                urls && [\n                    '  Gateway URL(s):',\n                    ...urls.map((url) => `    ${getUrl(url)}`),\n                ],\n                `  Sender: ${sender}`,\n                `  Data: ${data}`,\n                `  Callback selector: ${callbackSelector}`,\n                `  Extra data: ${extraData}`,\n            ].flat(),\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'OffchainLookupError'\n        });\n    }\n}\nexport class OffchainLookupResponseMalformedError extends BaseError {\n    constructor({ result, url }) {\n        super('Offchain gateway response is malformed. Response data must be a hex value.', {\n            metaMessages: [\n                `Gateway URL: ${getUrl(url)}`,\n                `Response: ${stringify(result)}`,\n            ],\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'OffchainLookupResponseMalformedError'\n        });\n    }\n}\nexport class OffchainLookupSenderMismatchError extends BaseError {\n    constructor({ sender, to }) {\n        super('Reverted sender address does not match target contract address (`to`).', {\n            metaMessages: [\n                `Contract address: ${to}`,\n                `OffchainLookup sender address: ${sender}`,\n            ],\n        });\n        Object.defineProperty(this, \"name\", {\n            enumerable: true,\n            configurable: true,\n            writable: true,\n            value: 'OffchainLookupSenderMismatchError'\n        });\n    }\n}\n//# sourceMappingURL=ccip.js.map","import { InvalidAddressError, } from '../../errors/address.js';\nimport { isAddress } from './isAddress.js';\nexport function isAddressEqual(a, b) {\n    if (!isAddress(a, { strict: false }))\n        throw new InvalidAddressError({ address: a });\n    if (!isAddress(b, { strict: false }))\n        throw new InvalidAddressError({ address: b });\n    return a.toLowerCase() === b.toLowerCase();\n}\n//# sourceMappingURL=isAddressEqual.js.map","import { call } from '../actions/public/call.js';\nimport {} from '../errors/base.js';\nimport { OffchainLookupError, OffchainLookupResponseMalformedError, OffchainLookupSenderMismatchError, } from '../errors/ccip.js';\nimport { HttpRequestError } from '../errors/request.js';\nimport { decodeErrorResult } from './abi/decodeErrorResult.js';\nimport { encodeAbiParameters } from './abi/encodeAbiParameters.js';\nimport { isAddressEqual } from './address/isAddressEqual.js';\nimport { concat } from './data/concat.js';\nimport { isHex } from './data/isHex.js';\nimport { stringify } from './stringify.js';\nexport const offchainLookupSignature = '0x556f1830';\nexport const offchainLookupAbiItem = {\n    name: 'OffchainLookup',\n    type: 'error',\n    inputs: [\n        {\n            name: 'sender',\n            type: 'address',\n        },\n        {\n            name: 'urls',\n            type: 'string[]',\n        },\n        {\n            name: 'callData',\n            type: 'bytes',\n        },\n        {\n            name: 'callbackFunction',\n            type: 'bytes4',\n        },\n        {\n            name: 'extraData',\n            type: 'bytes',\n        },\n    ],\n};\nexport async function offchainLookup(client, { blockNumber, blockTag, data, to, }) {\n    const { args } = decodeErrorResult({\n        data,\n        abi: [offchainLookupAbiItem],\n    });\n    const [sender, urls, callData, callbackSelector, extraData] = args;\n    const { ccipRead } = client;\n    const ccipRequest_ = ccipRead && typeof ccipRead?.request === 'function'\n        ? ccipRead.request\n        : ccipRequest;\n    try {\n        if (!isAddressEqual(to, sender))\n            throw new OffchainLookupSenderMismatchError({ sender, to });\n        const result = await ccipRequest_({ data: callData, sender, urls });\n        const { data: data_ } = await call(client, {\n            blockNumber,\n            blockTag,\n            data: concat([\n                callbackSelector,\n                encodeAbiParameters([{ type: 'bytes' }, { type: 'bytes' }], [result, extraData]),\n            ]),\n            to,\n        });\n        return data_;\n    }\n    catch (err) {\n        throw new OffchainLookupError({\n            callbackSelector,\n            cause: err,\n            data,\n            extraData,\n            sender,\n            urls,\n        });\n    }\n}\nexport async function ccipRequest({ data, sender, urls, }) {\n    let error = new Error('An unknown error occurred.');\n    for (let i = 0; i < urls.length; i++) {\n        const url = urls[i];\n        const method = url.includes('{data}') ? 'GET' : 'POST';\n        const body = method === 'POST' ? { data, sender } : undefined;\n        try {\n            const response = await fetch(url.replace('{sender}', sender).replace('{data}', data), {\n                body: JSON.stringify(body),\n                method,\n            });\n            let result;\n            if (response.headers.get('Content-Type')?.startsWith('application/json')) {\n                result = (await response.json()).data;\n            }\n            else {\n                result = (await response.text());\n            }\n            if (!response.ok) {\n                error = new HttpRequestError({\n                    body,\n                    details: result?.error\n                        ? stringify(result.error)\n                        : response.statusText,\n                    headers: response.headers,\n                    status: response.status,\n                    url,\n                });\n                continue;\n            }\n            if (!isHex(result)) {\n                error = new OffchainLookupResponseMalformedError({\n                    result,\n                    url,\n                });\n                continue;\n            }\n            return result;\n        }\n        catch (err) {\n            error = new HttpRequestError({\n                body,\n                details: err.message,\n                url,\n            });\n        }\n    }\n    throw error;\n}\n//# sourceMappingURL=ccip.js.map"],"names":["OffchainLookupError","BaseError","callbackSelector","cause","data","extraData","sender","urls","url","getUrl","OffchainLookupResponseMalformedError","result","stringify","OffchainLookupSenderMismatchError","to","isAddressEqual","a","b","isAddress","InvalidAddressError","offchainLookupSignature","offchainLookupAbiItem","offchainLookup","client","blockNumber","blockTag","args","decodeErrorResult","callData","ccipRead","ccipRequest_","ccipRequest","data_","call","concat","encodeAbiParameters","err","error","i","method","body","response","HttpRequestError","isHex"],"mappings":";AAGO,MAAMA,UAA4BC,EAAU;AAAA,EAC/C,YAAY,EAAE,kBAAAC,GAAkB,OAAAC,GAAO,MAAAC,GAAM,WAAAC,GAAW,QAAAC,GAAQ,MAAAC,KAAS;AACrE,UAAMJ,EAAM,gBACR,4DAA4D;AAAA,MAC5D,OAAAA;AAAA,MACA,cAAc;AAAA,QACV,GAAIA,EAAM,gBAAgB;QAC1BA,EAAM,cAAc,SAAS,KAAK,CAAE;AAAA,QACpC;AAAA,QACAI,KAAQ;AAAA,UACJ;AAAA,UACA,GAAGA,EAAK,IAAI,CAACC,MAAQ,OAAOC,EAAOD,CAAG,CAAC,EAAE;AAAA,QAC5C;AAAA,QACD,aAAaF,CAAM;AAAA,QACnB,WAAWF,CAAI;AAAA,QACf,wBAAwBF,CAAgB;AAAA,QACxC,iBAAiBG,CAAS;AAAA,MAC7B,EAAC,KAAM;AAAA,IACpB,CAAS,GACD,OAAO,eAAe,MAAM,QAAQ;AAAA,MAChC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS;AAAA,EACT;AACA;AACO,MAAMK,UAA6CT,EAAU;AAAA,EAChE,YAAY,EAAE,QAAAU,GAAQ,KAAAH,KAAO;AACzB,UAAM,8EAA8E;AAAA,MAChF,cAAc;AAAA,QACV,gBAAgBC,EAAOD,CAAG,CAAC;AAAA,QAC3B,aAAaI,EAAUD,CAAM,CAAC;AAAA,MACjC;AAAA,IACb,CAAS,GACD,OAAO,eAAe,MAAM,QAAQ;AAAA,MAChC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS;AAAA,EACT;AACA;AACO,MAAME,UAA0CZ,EAAU;AAAA,EAC7D,YAAY,EAAE,QAAAK,GAAQ,IAAAQ,KAAM;AACxB,UAAM,0EAA0E;AAAA,MAC5E,cAAc;AAAA,QACV,qBAAqBA,CAAE;AAAA,QACvB,kCAAkCR,CAAM;AAAA,MAC3C;AAAA,IACb,CAAS,GACD,OAAO,eAAe,MAAM,QAAQ;AAAA,MAChC,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,UAAU;AAAA,MACV,OAAO;AAAA,IACnB,CAAS;AAAA,EACT;AACA;AC3DO,SAASS,EAAeC,GAAGC,GAAG;AACjC,MAAI,CAACC,EAAUF,GAAG,EAAE,QAAQ,GAAK,CAAE;AAC/B,UAAM,IAAIG,EAAoB,EAAE,SAASH,EAAC,CAAE;AAChD,MAAI,CAACE,EAAUD,GAAG,EAAE,QAAQ,GAAK,CAAE;AAC/B,UAAM,IAAIE,EAAoB,EAAE,SAASF,EAAC,CAAE;AAChD,SAAOD,EAAE,kBAAkBC,EAAE,YAAa;AAC9C;ACEY,MAACG,IAA0B,cAC1BC,IAAwB;AAAA,EACjC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,IACJ;AAAA,MACI,MAAM;AAAA,MACN,MAAM;AAAA,IACT;AAAA,IACD;AAAA,MACI,MAAM;AAAA,MACN,MAAM;AAAA,IACT;AAAA,IACD;AAAA,MACI,MAAM;AAAA,MACN,MAAM;AAAA,IACT;AAAA,IACD;AAAA,MACI,MAAM;AAAA,MACN,MAAM;AAAA,IACT;AAAA,IACD;AAAA,MACI,MAAM;AAAA,MACN,MAAM;AAAA,IACT;AAAA,EACJ;AACL;AACO,eAAeC,EAAeC,GAAQ,EAAE,aAAAC,GAAa,UAAAC,GAAU,MAAArB,GAAM,IAAAU,KAAO;AAC/E,QAAM,EAAE,MAAAY,EAAM,IAAGC,EAAkB;AAAA,IAC/B,MAAAvB;AAAA,IACA,KAAK,CAACiB,CAAqB;AAAA,EACnC,CAAK,GACK,CAACf,GAAQC,GAAMqB,GAAU1B,GAAkBG,CAAS,IAAIqB,GACxD,EAAE,UAAAG,EAAQ,IAAKN,GACfO,IAAeD,KAAY,OAAOA,GAAU,WAAY,aACxDA,EAAS,UACTE;AACN,MAAI;AACA,QAAI,CAAChB,EAAeD,GAAIR,CAAM;AAC1B,YAAM,IAAIO,EAAkC,EAAE,QAAAP,GAAQ,IAAAQ,EAAE,CAAE;AAC9D,UAAMH,IAAS,MAAMmB,EAAa,EAAE,MAAMF,GAAU,QAAAtB,GAAQ,MAAAC,GAAM,GAC5D,EAAE,MAAMyB,EAAO,IAAG,MAAMC,EAAKV,GAAQ;AAAA,MACvC,aAAAC;AAAA,MACA,UAAAC;AAAA,MACA,MAAMS,EAAO;AAAA,QACThC;AAAA,QACAiC,EAAoB,CAAC,EAAE,MAAM,WAAW,EAAE,MAAM,SAAS,GAAG,CAACxB,GAAQN,CAAS,CAAC;AAAA,MAC/F,CAAa;AAAA,MACD,IAAAS;AAAA,IACZ,CAAS;AACD,WAAOkB;AAAA,EACf,SACWI,GAAK;AACR,UAAM,IAAIpC,EAAoB;AAAA,MAC1B,kBAAAE;AAAA,MACA,OAAOkC;AAAA,MACP,MAAAhC;AAAA,MACA,WAAAC;AAAA,MACA,QAAAC;AAAA,MACA,MAAAC;AAAA,IACZ,CAAS;AAAA,EACT;AACA;AACO,eAAewB,EAAY,EAAE,MAAA3B,GAAM,QAAAE,GAAQ,MAAAC,EAAI,GAAK;AACvD,MAAI8B,IAAQ,IAAI,MAAM,4BAA4B;AAClD,WAASC,IAAI,GAAGA,IAAI/B,EAAK,QAAQ+B,KAAK;AAClC,UAAM9B,IAAMD,EAAK+B,CAAC,GACZC,IAAS/B,EAAI,SAAS,QAAQ,IAAI,QAAQ,QAC1CgC,IAAOD,MAAW,SAAS,EAAE,MAAAnC,GAAM,QAAAE,EAAM,IAAK;AACpD,QAAI;AACA,YAAMmC,IAAW,MAAM,MAAMjC,EAAI,QAAQ,YAAYF,CAAM,EAAE,QAAQ,UAAUF,CAAI,GAAG;AAAA,QAClF,MAAM,KAAK,UAAUoC,CAAI;AAAA,QACzB,QAAAD;AAAA,MAChB,CAAa;AACD,UAAI5B;AAOJ,UANI8B,EAAS,QAAQ,IAAI,cAAc,GAAG,WAAW,kBAAkB,IACnE9B,KAAU,MAAM8B,EAAS,KAAM,GAAE,OAGjC9B,IAAU,MAAM8B,EAAS,QAEzB,CAACA,EAAS,IAAI;AACd,QAAAJ,IAAQ,IAAIK,EAAiB;AAAA,UACzB,MAAAF;AAAA,UACA,SAAS7B,GAAQ,QACXC,EAAUD,EAAO,KAAK,IACtB8B,EAAS;AAAA,UACf,SAASA,EAAS;AAAA,UAClB,QAAQA,EAAS;AAAA,UACjB,KAAAjC;AAAA,QACpB,CAAiB;AACD;AAAA,MAChB;AACY,UAAI,CAACmC,EAAMhC,CAAM,GAAG;AAChB,QAAA0B,IAAQ,IAAI3B,EAAqC;AAAA,UAC7C,QAAAC;AAAA,UACA,KAAAH;AAAA,QACpB,CAAiB;AACD;AAAA,MAChB;AACY,aAAOG;AAAA,IACnB,SACeyB,GAAK;AACR,MAAAC,IAAQ,IAAIK,EAAiB;AAAA,QACzB,MAAAF;AAAA,QACA,SAASJ,EAAI;AAAA,QACb,KAAA5B;AAAA,MAChB,CAAa;AAAA,IACb;AAAA,EACA;AACI,QAAM6B;AACV;","x_google_ignoreList":[0,1,2]}