@abstract-foundation/agw-client
Version:
Abstract Global Wallet Client SDK
46 lines • 1.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getLinkedAgw = getLinkedAgw;
exports.isLinkedAccount = isLinkedAccount;
const viem_1 = require("viem");
const actions_1 = require("viem/actions");
const utils_1 = require("viem/utils");
const ExclusiveDelegateResolver_js_1 = require("../abis/ExclusiveDelegateResolver.js");
const constants_js_1 = require("../constants.js");
const account_js_1 = require("../errors/account.js");
async function getLinkedAgw(client, parameters) {
const { address = client.account?.address } = (parameters ?? {});
if (address === undefined) {
throw new viem_1.BaseError("No address provided");
}
if (!(0, viem_1.isAddress)(address, { strict: false })) {
throw new viem_1.InvalidAddressError({ address });
}
const checksummedAddress = (0, viem_1.getAddress)(address);
const result = await (0, utils_1.getAction)(client, actions_1.readContract, "readContract")({
abi: ExclusiveDelegateResolver_js_1.ExclusiveDelegateResolverAbi,
address: constants_js_1.CANONICAL_EXCLUSIVE_DELEGATE_RESOLVER_ADDRESS,
functionName: "exclusiveWalletByRights",
args: [checksummedAddress, constants_js_1.AGW_LINK_DELEGATION_RIGHTS],
});
if (result === checksummedAddress) {
return {
agw: undefined,
};
}
return {
agw: result,
};
}
async function isLinkedAccount(client, parameters) {
const { address } = parameters;
if (client.account === undefined) {
throw new account_js_1.AccountNotFoundError({
docsPath: "/docs/contract/readContract",
});
}
const clientAccount = (0, utils_1.parseAccount)(client.account);
const { agw } = await getLinkedAgw(client, { address });
return agw === clientAccount.address;
}
//# sourceMappingURL=getLinkedAgw.js.map