@citizenwallet/sdk
Version:
An sdk to easily work with citizen wallet.
56 lines (41 loc) • 1.43 kB
text/typescript
import cardManagerModuleAbi from "../abi/CardManagerModule.abi.json";
import { type CommunityConfig } from "../config";
import { JsonRpcProvider, Contract, toUtf8Bytes, keccak256 } from "ethers";
export const getCardAddress = async (
config: CommunityConfig,
hashedSerial: string
): Promise<string | null> => {
const rpc = new JsonRpcProvider(config.primaryRPCUrl);
const cardConfig = config.primarySafeCardConfig;
const contract = new Contract(cardConfig.address, cardManagerModuleAbi, rpc);
const instanceId = keccak256(toUtf8Bytes(cardConfig.instance_id));
try {
const accountAddress = await contract.getFunction("getCardAddress")(
instanceId,
hashedSerial
);
return accountAddress;
} catch (error) {
console.error("Error fetching account address:", error);
return null;
}
};
export const instanceOwner = async (
config: CommunityConfig
): Promise<string | null> => {
try {
const cardConfig = config.primarySafeCardConfig;
const instanceId = keccak256(toUtf8Bytes(cardConfig.instance_id));
const rpc = new JsonRpcProvider(config.primaryRPCUrl);
const contract = new Contract(
cardConfig.address,
cardManagerModuleAbi,
rpc
);
const owner = await contract.getFunction("instanceOwner")(instanceId);
return owner;
} catch (error) {
console.error("Error fetching instance owner:", error);
return null;
}
};