export interface ScanEVMRequest { transaction: TransactionObject url?: string blockNumber?: number validateNonce?: boolean showFullFindings?: boolean policy?: string } export interface ScanEVMResponse { data: { rawResponse: { success: boolean data: TransactionRiskData error: string | null version?: string service?: string } } } export interface ScanEip712Request { walletAddress: string chainId: string eip712Message: Eip712TypedData showFullFindings?: boolean policy?: string } export interface ScanEip712Response { data: { rawResponse: { success: boolean data: TypedMessageRiskData error: string | null version?: string service?: string } } } export interface ScanSolanaRequest { transaction: SolanaTransaction url?: string validateRecentBlockHash?: boolean showFullFindings?: boolean policy?: string } export interface ScanSolanaResponse { data: { rawResponse: { success: boolean data: SolanaTransactionRiskData error: string | null version?: string service?: string } } } export type ScanNftsRequest = ScanNftRequestItem[] export interface ScanNftsResponse { data: { rawResponse: { success: boolean data: { nfts: ScanNftResponseItem[] } error: string | null version?: string service?: string } } } export type ScanTokensRequest = ScanTokenRequestItem[] export interface ScanTokensResponse { data: { rawResponse: { success: boolean data: { tokens: ScanTokenResponseItem[] } error: string | null version?: string service?: string } } } export type ScanUrlRequest = string export interface ScanUrlResponse { data: { rawResponse: { success: boolean data: { isMalicious: boolean deepScanTriggered?: boolean } error: string | null version?: string service?: string } } } export interface ScreenAddressResponse { address: string recommendation: string severity: string totalIncomingUsd: number policyId: string timestamp: string flags: Flag[] } export interface Flag { title: string flagId: string chain: string severity: string lastUpdate?: string events: HypernativeEvent[] exposures: Exposure[] } export interface HypernativeEvent { eventId: string address: string chain: string flagId: string timestampEvent: string txHash: string direction: string hop: number counterpartyAddress: string counterpartyAlias?: string counterpartyFlagId: string tokenSymbol: string tokenAmount: number tokenUsdValue: number reason: string source: string originalFlaggedAddress: string originalFlaggedAlias?: string originalFlaggedChain: string } export interface Exposure { exposurePortion: number exposureType?: string totalExposureUsd: number flaggedInteractions: FlaggedInteraction[] } export interface FlaggedInteraction { address: string chain: string alias?: string minHop: number totalExposureUsd: number } export interface TransactionRiskData { assessmentId?: string assessmentTimestamp?: string recommendation: 'accept' | 'notes' | 'warn' | 'deny' | 'autoAccept' expectedStatus?: 'success' | 'fail' findings?: Finding[] involvedAssets?: Asset[] balanceChanges?: Record | null parsedActions?: Record blockNumber?: number riIds?: string[] signature?: string } export interface TypedMessageRiskData { assessmentId?: string assessmentTimestamp?: string blockNumber?: number recommendation: 'accept' | 'notes' | 'warn' | 'deny' | 'autoAccept' findings?: Finding[] involvedAssets?: Asset[] parsedActions?: Record riIds?: string[] } export interface SolanaTransactionRiskData { recommendation: 'accept' | 'notes' | 'warn' | 'deny' | 'autoAccept' expectedStatus?: 'success' | 'fail' findings?: Finding[] involvedAssets?: Asset[] balanceChanges?: Record | null parsedActions?: Record blockNumber?: number riIds?: string[] } export interface Finding { typeId: string title: string description: string details?: string severity: 'Accept' | 'Notes' | 'Warn' | 'Deny' | 'AutoAccept' relatedAssets?: Asset[] } export interface Asset { chain: string evmChainId?: string address: string type: 'Wallet' | 'Contract' involvementTypes: string[] tag: string alias?: string note?: string } export interface BalanceChange { changeType: 'send' | 'receive' tokenSymbol: string tokenAddress?: string usdValue?: string amount: string chain: string evmChainId?: string } export interface ScanNftRequestItem { address: string chain?: string evmChainId?: number | string } export interface ScanNftResponseItem { address: string chain: string evmChainId: string accept: boolean } export interface ScanTokenRequestItem { address: string chain?: string evmChainId?: number | string } export interface ScanTokenResponseItem { address: string chain: string reputation?: { recommendation: 'accept' | 'deny' } } export interface TransactionObject { chain: string fromAddress: string toAddress: string input?: string value?: string | number nonce?: string | number hash?: string gas?: string | number gasPrice?: string | number maxPriorityFeePerGas?: string | number maxFeePerGas?: string | number } export interface Eip712TypeProperty { name: string type: string } export type Eip712Value = | string | number | boolean | null | undefined | Eip712Value[] | { [key: string]: Eip712Value } export interface Eip712Domain { name?: string version?: string chainId?: number | string verifyingContract?: string salt?: string [key: string]: Eip712Value } export interface Eip712TypedData { primaryType: string types: Record domain: Eip712Domain message: Record } export interface SolanaHeader { numRequiredSignatures?: number numReadonlySignedAccounts?: number numReadonlyUnsignedAccounts?: number } export interface SolanaInstruction { accounts: number[] data: string programIdIndex: number } export interface AddressTableLookup { accountKey: string writableIndexes: number[] readonlyIndexes: number[] } export interface SolanaMessage { accountKeys: string[] header: SolanaHeader instructions: SolanaInstruction[] addressTableLookups?: AddressTableLookup[] recentBlockhash: string } export interface SolanaTransaction { message?: SolanaMessage signatures?: string[] rawTransaction?: string version?: 'legacy' | '0' }