@enclavemoney/enclave-wallet-sdk
Version:
A simple enclave wallet SDK for React applications
106 lines (97 loc) • 2.26 kB
text/typescript
/**
* Transaction types enum for multi-transactions
*/
export enum MultiTransactionType {
TRANSFER = "TRANSFER",
SWAP = "SWAP",
CUSTOM = "CUSTOM",
INCOMING = "INCOMING",
}
/**
* Transaction status enum for individual transactions
*/
export enum TransactionStatus {
PENDING = "PENDING",
COMPLETED = "COMPLETED",
FAILED = "FAILED",
}
/**
* Overall status enum for multi-transactions
*/
export enum OverallStatus {
PENDING = "PENDING",
COMPLETED = "COMPLETED",
FAILED = "FAILED",
}
/**
* Receiver interface for transaction recipients
*/
export interface User {
username?: string;
walletAddress?: string;
solana_program_wallet?: string;
ens?: string;
}
/**
* Token details interface
*/
export interface TokenDetail {
amount: string;
amountFormatted: string;
tokenAddress: string;
tokenName: string;
tokenSymbol: string;
receiver?: User;
}
/**
* Interface for individual transaction details
*/
export interface TransactionDetail {
txnURL: string;
status: TransactionStatus;
}
/**
* Token Details
*/
export interface TokenURI {
tokenName: string;
tokenSymbol: string;
tokenAddress: string;
decimals: number;
logoURI: string;
}
/**
* Interface for transaction metadata
*/
export interface TransactionMetadata {
senderDetails: User;
receiverDetails: User[];
inputAmounts: { [key: string]: TokenDetail[] };
destinationAmounts: { [key: string]: TokenDetail[] };
status: OverallStatus;
lastUpdatedTimestamp: number;
transactions: { [key: string]: { [key: string]: TransactionDetail } };
inputToken: TokenURI;
outputToken: TokenURI;
totalInputAmount: string;
totalOutputAmount: string;
}
/**
* Interface for MultiTransaction document
*/
export interface IMultiTransaction {
multiTransactionId: string;
transactionType: MultiTransactionType;
transactionDescription: string;
sender: User;
receivers: User[];
sourceChains: number[];
destinationChains: number[];
inputTokens: { [key: string]: TokenDetail[] };
outputTokens: { [key: string]: TokenDetail[] };
transactions: { [key: string]: { [key: string]: TransactionDetail } };
overallStatus: OverallStatus;
metadata: TransactionMetadata;
createdTimestamp: number;
lastUpdatedTimestamp: number;
}