@parifi/synthetix-sdk-ts
Version:
A Typescript SDK for interactions with the Synthetix protocol
1 lines • 7.35 kB
Source Map (JSON)
{"version":3,"sources":["../../src/utils/override.ts","../../src/constants/slots.ts"],"sourcesContent":["import { keccak256, encodeAbiParameters, toHex, Address, StateMapping } from 'viem';\nimport { tokensSlots } from '../constants/slots';\n\nexport type Erc20BalanceOverrideParameters = {\n token: string;\n owner: string;\n slot: bigint;\n balance?: bigint;\n};\n\nexport function erc20BalanceOverride({\n token,\n owner,\n slot,\n balance = BigInt('0x100000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'),\n}: Erc20BalanceOverrideParameters): { address: Address; stateDiff: StateMapping }[] {\n const smartAccountErc20BalanceSlot = keccak256(\n encodeAbiParameters(\n [\n {\n type: 'address',\n },\n {\n type: 'uint256',\n },\n ],\n [owner as Address, slot],\n ),\n );\n\n return [\n {\n address: token as Address,\n stateDiff: [\n {\n slot: smartAccountErc20BalanceSlot,\n value: toHex(balance),\n },\n ],\n },\n ];\n}\n\nexport type Erc20AllowanceOverrideParameters = {\n token: string;\n owner: string;\n spender: string;\n slot: bigint;\n amount?: bigint;\n};\n\nexport function erc20AllowanceOverride({\n token,\n owner,\n spender,\n slot,\n amount = BigInt('0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'),\n}: Erc20AllowanceOverrideParameters): { address: Address; stateDiff: StateMapping }[] {\n const smartAccountErc20AllowanceSlot = keccak256(\n encodeAbiParameters(\n [\n {\n type: 'address',\n },\n {\n type: 'bytes32',\n },\n ],\n [\n spender as Address,\n keccak256(\n encodeAbiParameters(\n [\n {\n type: 'address',\n },\n {\n type: 'uint256',\n },\n ],\n [owner as Address, BigInt(slot)],\n ),\n ),\n ],\n ),\n );\n\n return [\n {\n address: token as Address,\n stateDiff: [\n {\n slot: smartAccountErc20AllowanceSlot,\n value: toHex(amount),\n },\n ],\n },\n ];\n}\nexport const erc20StateOverrideBalanceAndAllowance = ({\n token,\n owner,\n balance = BigInt('0x100000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'),\n spender,\n}: {\n token: string;\n owner: string;\n balance?: bigint;\n spender: string;\n}) => {\n const balanceSlot = tokensSlots.find((slotData) => slotData.address.toLowerCase() === token.toLowerCase());\n\n if (!balanceSlot) throw new Error('No balance slot');\n\n const balanceOverride = erc20BalanceOverride({ balance, slot: BigInt(balanceSlot.balanceSlot), token, owner });\n const approveOverride = erc20AllowanceOverride({\n spender,\n amount: balance,\n token,\n slot: BigInt(balanceSlot.approveSlot),\n owner,\n });\n\n return [...balanceOverride, ...approveOverride];\n};\n","export const tokensSlots = [\n { address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', balanceSlot: 9, approveSlot: 10 },\n { address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', balanceSlot: 9, approveSlot: 10 },\n { address: '0x4EA71A20e655794051D1eE8b6e4A3269B13ccaCc', balanceSlot: 5, approveSlot: 6 },\n { address: '0x4EA71A20e655794051D1eE8b6e4A3269B13ccaCc', balanceSlot: 5, approveSlot: 6 },\n { address: '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf', balanceSlot: 9, approveSlot: 10 },\n { address: '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf', balanceSlot: 9, approveSlot: 10 },\n { address: '0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22', balanceSlot: 51, approveSlot: 52 },\n { address: '0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22', balanceSlot: 51, approveSlot: 52 },\n { address: '0x4200000000000000000000000000000000000006', balanceSlot: 3, approveSlot: 4 },\n { address: '0x4200000000000000000000000000000000000006', balanceSlot: 3, approveSlot: 4 },\n { address: '0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452', balanceSlot: 1, approveSlot: 2 },\n { address: '0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452', balanceSlot: 1, approveSlot: 2 },\n\n {\n address: '0xc43708f8987Df3f3681801e5e640667D86Ce3C30',\n balanceSlot: 0,\n approveSlot: 1,\n },\n {\n address: '0x8608d511E224180051A36d34121725D978064e6E',\n balanceSlot: 0,\n approveSlot: 1,\n },\n {\n address: '0x4200000000000000000000000000000000000006',\n balanceSlot: 3,\n approveSlot: 4,\n },\n {\n address: '0xB3f05d39504dA95876EA0174D25Ae51Ac2422a70',\n balanceSlot: 0,\n approveSlot: 1,\n },\n {\n address: '0x00ab6b818652bB3bFE334983171edFD38184DbeD',\n balanceSlot: 0,\n approveSlot: 1,\n },\n {\n address: '0x7Bf65af7EFBd0E933fb87dD2C9cE7A17d959b822',\n balanceSlot: 0,\n approveSlot: 1,\n },\n];\n"],"mappings":"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","names":[]}