@byzantine/vault-sdk
Version:
Byzantine Vault SDK for creating and managing vaults on Ethereum for restaking strategies
47 lines (46 loc) • 1.75 kB
TypeScript
import { ethers } from "ethers";
import { Metadata } from "../../types";
export declare const METADATA_VALIDATION: {
URL_PATTERN: RegExp;
IPFS_URI_PATTERN: RegExp;
DATA_URI_PATTERN: RegExp;
IMAGE_EXTENSIONS: string[];
MAX_METADATA_SIZE: number;
MAX_NAME_LENGTH: number;
MAX_DESCRIPTION_LENGTH: number;
ETH_ADDRESS_PATTERN: RegExp;
SOCIAL_TWITTER_PATTERN: RegExp;
SOCIAL_DISCORD_PATTERN: RegExp;
SOCIAL_TELEGRAM_PATTERN: RegExp;
SOCIAL_GITHUB_PATTERN: RegExp;
};
/**
* Get the metadata URI of the vault
* @param vaultContract - The vault contract instance
* @returns The metadata URI string
*/
export declare function getVaultMetadata(vaultContract: ethers.Contract): Promise<Metadata>;
/**
* Convert Metadata object to URI using Pinata IPFS service
* This function tries to upload metadata to IPFS via Pinata API
* If Pinata fails, it falls back to a data URI
*
* @param metadata - The metadata object to convert
* @returns An IPFS URI or data URI representing the metadata
*/
export declare const convertMetadataToURI: (metadata: Metadata) => Promise<string>;
/**
* Convert URI back to Metadata object
* Supports both IPFS URIs and data URIs
*
* @param uri - The URI to convert (ipfs:// or data:application/json;base64,)
* @returns The metadata object
*/
export declare const convertURItoMetadata: (uri: string) => Promise<Metadata>;
/**
* Update the metadata URI of the vault
* @param vaultContract - The vault contract connected to signer
* @param metadata - The metadata object to be stored or directly URI
* @returns Transaction response
*/
export declare function setMetadata(vaultContract: ethers.Contract, metadata: Metadata | string): Promise<ethers.TransactionResponse>;