@parifi/synthetix-sdk-ts
Version:
A Typescript SDK for interactions with the Synthetix protocol
179 lines (176 loc) • 5.4 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/utils/override.ts
var override_exports = {};
__export(override_exports, {
erc20AllowanceOverride: () => erc20AllowanceOverride,
erc20BalanceOverride: () => erc20BalanceOverride,
erc20StateOverrideBalanceAndAllowance: () => erc20StateOverrideBalanceAndAllowance
});
module.exports = __toCommonJS(override_exports);
var import_viem = require("viem");
// src/constants/slots.ts
var tokensSlots = [
{ address: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", balanceSlot: 9, approveSlot: 10 },
{ address: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", balanceSlot: 9, approveSlot: 10 },
{ address: "0x4EA71A20e655794051D1eE8b6e4A3269B13ccaCc", balanceSlot: 5, approveSlot: 6 },
{ address: "0x4EA71A20e655794051D1eE8b6e4A3269B13ccaCc", balanceSlot: 5, approveSlot: 6 },
{ address: "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", balanceSlot: 9, approveSlot: 10 },
{ address: "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", balanceSlot: 9, approveSlot: 10 },
{ address: "0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22", balanceSlot: 51, approveSlot: 52 },
{ address: "0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22", balanceSlot: 51, approveSlot: 52 },
{ address: "0x4200000000000000000000000000000000000006", balanceSlot: 3, approveSlot: 4 },
{ address: "0x4200000000000000000000000000000000000006", balanceSlot: 3, approveSlot: 4 },
{ address: "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452", balanceSlot: 1, approveSlot: 2 },
{ address: "0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452", balanceSlot: 1, approveSlot: 2 },
{
address: "0xc43708f8987Df3f3681801e5e640667D86Ce3C30",
balanceSlot: 0,
approveSlot: 1
},
{
address: "0x8608d511E224180051A36d34121725D978064e6E",
balanceSlot: 0,
approveSlot: 1
},
{
address: "0x4200000000000000000000000000000000000006",
balanceSlot: 3,
approveSlot: 4
},
{
address: "0xB3f05d39504dA95876EA0174D25Ae51Ac2422a70",
balanceSlot: 0,
approveSlot: 1
},
{
address: "0x00ab6b818652bB3bFE334983171edFD38184DbeD",
balanceSlot: 0,
approveSlot: 1
},
{
address: "0x7Bf65af7EFBd0E933fb87dD2C9cE7A17d959b822",
balanceSlot: 0,
approveSlot: 1
}
];
// src/utils/override.ts
function erc20BalanceOverride({
token,
owner,
slot,
balance = BigInt("0x100000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF")
}) {
const smartAccountErc20BalanceSlot = (0, import_viem.keccak256)(
(0, import_viem.encodeAbiParameters)(
[
{
type: "address"
},
{
type: "uint256"
}
],
[owner, slot]
)
);
return [
{
address: token,
stateDiff: [
{
slot: smartAccountErc20BalanceSlot,
value: (0, import_viem.toHex)(balance)
}
]
}
];
}
function erc20AllowanceOverride({
token,
owner,
spender,
slot,
amount = BigInt("0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF")
}) {
const smartAccountErc20AllowanceSlot = (0, import_viem.keccak256)(
(0, import_viem.encodeAbiParameters)(
[
{
type: "address"
},
{
type: "bytes32"
}
],
[
spender,
(0, import_viem.keccak256)(
(0, import_viem.encodeAbiParameters)(
[
{
type: "address"
},
{
type: "uint256"
}
],
[owner, BigInt(slot)]
)
)
]
)
);
return [
{
address: token,
stateDiff: [
{
slot: smartAccountErc20AllowanceSlot,
value: (0, import_viem.toHex)(amount)
}
]
}
];
}
var erc20StateOverrideBalanceAndAllowance = ({
token,
owner,
balance = BigInt("0x100000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"),
spender
}) => {
const balanceSlot = tokensSlots.find((slotData) => slotData.address.toLowerCase() === token.toLowerCase());
if (!balanceSlot) throw new Error("No balance slot");
const balanceOverride = erc20BalanceOverride({ balance, slot: BigInt(balanceSlot.balanceSlot), token, owner });
const approveOverride = erc20AllowanceOverride({
spender,
amount: balance,
token,
slot: BigInt(balanceSlot.approveSlot),
owner
});
return [...balanceOverride, ...approveOverride];
};
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
erc20AllowanceOverride,
erc20BalanceOverride,
erc20StateOverrideBalanceAndAllowance
});
//# sourceMappingURL=override.js.map