@opendatalabs/vana-sdk
Version:
A TypeScript library for interacting with Vana Network smart contracts.
59 lines • 1.81 kB
JavaScript
import {
buildPersonalServerLiteOwnerBindingMessage,
PERSONAL_SERVER_LITE_OWNER_BINDING_PURPOSE
} from "../protocol/personal-server-lite-owner-binding.js";
class AccountPersonalServerLiteOwnerBindingError extends Error {
code;
details;
constructor(input) {
super(input.message);
this.name = "AccountPersonalServerLiteOwnerBindingError";
this.code = input.code;
this.details = input.details;
}
}
async function signPersonalServerLiteOwnerBindingWithAccountClient(config) {
let address;
try {
address = await config.client.getAddress();
} catch (error) {
throw accountOwnerBindingError(error);
}
if (!address) {
throw new AccountPersonalServerLiteOwnerBindingError({
message: "Account did not return a wallet address",
code: "account_address_required"
});
}
const message = buildPersonalServerLiteOwnerBindingMessage(address);
let signature;
try {
signature = await config.client.signMessage({ message });
} catch (error) {
throw accountOwnerBindingError(error);
}
return {
signature,
signerAddress: address,
message,
purpose: PERSONAL_SERVER_LITE_OWNER_BINDING_PURPOSE
};
}
function accountOwnerBindingError(error) {
if (error instanceof AccountPersonalServerLiteOwnerBindingError) {
return error;
}
const rpcError = error;
const code = rpcError?.code;
const message = typeof rpcError?.message === "string" && rpcError.message.length > 0 ? rpcError.message : "Account PS Lite owner-binding signature failed";
return new AccountPersonalServerLiteOwnerBindingError({
message,
code,
details: error
});
}
export {
AccountPersonalServerLiteOwnerBindingError,
signPersonalServerLiteOwnerBindingWithAccountClient
};
//# sourceMappingURL=personal-server-lite-owner-binding.js.map