yamaswap-sdk
Version:
ETF SDK for Solana and Evm
62 lines (59 loc) • 1.61 kB
TypeScript
import { PublicKey, Transaction, VersionedTransaction } from '@solana/web3.js';
interface AnchorWallet {
publicKey: PublicKey;
signTransaction<T extends Transaction | VersionedTransaction>(transaction: T): Promise<T>;
signAllTransactions<T extends Transaction | VersionedTransaction>(transactions: T[]): Promise<T[]>;
}
type ETFTokenConstituent = {
token: string;
weight: number;
};
type ETFCreateParams = {
name: string;
symbol: string;
description: string;
url: string;
assets: ETFTokenConstituent[];
};
type ETFBurnParams = {
etfAddress: string;
lamports: number | bigint;
};
/**
* purchase share parameters
* lamports use Solana standard precision (9 digits)
* for example: purchase 1 full share = 1000000000 (1e9)
* purchase 0.5 share = 500000000 (5e8)
*/
type MintETFTokenParams = {
etfAddress: string;
lamports: number;
};
interface ETFCreateResult {
success: boolean;
txid?: string;
error?: string;
data?: {
etfAddress?: PublicKey;
etfCoreAddress?: PublicKey;
symbol?: string;
name?: string;
description?: string;
creator?: string;
assets?: Array<{
token: PublicKey;
weight: number;
}>;
};
}
type MintETFResult = {
success: boolean;
txid: string;
error?: string;
data?: {
mintTokenataAccount?: PublicKey;
balance: number;
etfAddress: string;
};
};
export type { AnchorWallet as A, ETFCreateParams as E, MintETFTokenParams as M, ETFBurnParams as a, ETFCreateResult as b, MintETFResult as c };