@opendatalabs/vana-sdk
Version:
A TypeScript library for interacting with Vana Network smart contracts.
65 lines • 2.37 kB
JavaScript
import {
isAddress
} from "viem";
const PERSONAL_SERVER_LITE_OWNER_BINDING_VERSION = "vana.account.v1";
const PERSONAL_SERVER_LITE_OWNER_BINDING_PURPOSE = "ps-lite-owner";
const PERSONAL_SERVER_LITE_OWNER_BINDING_PREFIX = `${PERSONAL_SERVER_LITE_OWNER_BINDING_VERSION}:${PERSONAL_SERVER_LITE_OWNER_BINDING_PURPOSE}:`;
function assertAddress(value, name) {
if (!isAddress(value)) {
throw new Error(`${name} must be a valid EVM address`);
}
}
function getAccountAddress(account) {
if (!account) {
return void 0;
}
return typeof account === "string" ? account : account.address;
}
function isPersonalServerLiteOwnerBindingSigner(source) {
return "address" in source && typeof source.signMessage === "function";
}
function buildPersonalServerLiteOwnerBindingMessage(ownerAddress) {
assertAddress(ownerAddress, "ownerAddress");
return `${PERSONAL_SERVER_LITE_OWNER_BINDING_PREFIX}${ownerAddress.toLowerCase()}`;
}
function createViemPersonalServerLiteOwnerBindingSigner(source, options = {}) {
if (isPersonalServerLiteOwnerBindingSigner(source)) {
return source;
}
const accountAddress = getAccountAddress(options.account) ?? getAccountAddress(source.account);
if (accountAddress) {
return {
address: accountAddress,
signMessage: ({ message }) => source.signMessage({
account: options.account ?? source.account ?? accountAddress,
message
})
};
}
throw new Error(
"Viem wallet client requires an account option or account property"
);
}
async function buildPersonalServerLiteOwnerBindingSignature(input) {
const message = buildPersonalServerLiteOwnerBindingMessage(
input.signer.address
);
const signature = await input.signer.signMessage({ message });
return {
signature,
signerAddress: input.signer.address,
message,
purpose: PERSONAL_SERVER_LITE_OWNER_BINDING_PURPOSE
};
}
const signPersonalServerLiteOwnerBinding = buildPersonalServerLiteOwnerBindingSignature;
export {
PERSONAL_SERVER_LITE_OWNER_BINDING_PREFIX,
PERSONAL_SERVER_LITE_OWNER_BINDING_PURPOSE,
PERSONAL_SERVER_LITE_OWNER_BINDING_VERSION,
buildPersonalServerLiteOwnerBindingMessage,
buildPersonalServerLiteOwnerBindingSignature,
createViemPersonalServerLiteOwnerBindingSigner,
signPersonalServerLiteOwnerBinding
};
//# sourceMappingURL=personal-server-lite-owner-binding.js.map