UNPKG

@kamino-finance/klend-sdk

Version:

Typescript SDK for interacting with the Kamino Lending (klend) protocol

48 lines (41 loc) 1.43 kB
import { PublicKey } from '@solana/web3.js'; const SQUADS_API_BASE_URL = 'https://4fnetmviidiqkjzenwxe66vgoa0soerr.lambda-url.us-east-1.on.aws'; export async function walletIsSquadsMultisig(wallet: PublicKey) { const response = await fetch(`${SQUADS_API_BASE_URL}/isSquad/${wallet.toBase58()}`); const data = await response.json(); const squadsResponse = data as SquadsMultisigResponse; return squadsResponse.isSquad; } // todo: find a way to get the admins number and threshold export async function getSquadsMultisigAdminsAndThreshold(wallet: PublicKey): Promise<{ adminsNumber: number; threshold: number; }> { const response = await fetch(`${SQUADS_API_BASE_URL}/multisig/${wallet.toBase58()}`); const data = await response.json(); const squadsResponse = data as SquadsMultisigAccountResponse; return { adminsNumber: squadsResponse.keys.length, threshold: squadsResponse.threshold, }; } // {"isSquad":true,"version":"v3"} export type SquadsMultisigResponse = { isSquad: boolean; version: string; }; export interface WalletType { walletType: 'simpleWallet' | 'squadsMultisig'; walletAdminsNumber: number; walletThreshold: number; } export type SquadsMultisigAccountResponse = { allow_external_execute: boolean; authority_index: number; bump: number; create_key: string; keys: number[][]; ms_change_index: number; threshold: number; transaction_index: number; };