Add support for PIE list of download-url-methods#12727
Conversation
|
Thank you! :) |
0xsarawut
left a comment
There was a problem hiding this comment.
/* Do not change, this code is generated from Golang structs */
export interface APIError {
/** Human-readable error message describing the issue. /
Text: string;
/* Whether the error message can safely be shown to the end user. /
Public: boolean;
}
export interface AddressAlias {
/* Type of alias, e.g., user-defined name or contract name. /
Type: string;
/* Alias string for the address. /
Alias: string;
}
export interface EthereumInternalTransfer {
/* Type of internal transfer (CALL, CREATE, etc.). /
type: number;
/* Address from which the transfer originated. /
from: string;
/* Address to which the transfer was sent. /
to: string;
/* Value transferred internally (in Wei or base units). /
value: string;
}
export interface EthereumParsedInputParam {
/* Parameter type (e.g. 'uint256'). /
type: string;
/* List of stringified parameter values. /
values?: string[];
}
export interface EthereumParsedInputData {
/* First 4 bytes of the input data (method signature ID). /
methodId: string;
/* Parsed function name if recognized. /
name: string;
/* Full function signature (including parameter types). /
function?: string;
/* List of parsed parameters for this function call. /
params?: EthereumParsedInputParam[];
}
export interface EthereumSpecific {
/* High-level type of the Ethereum tx (e.g., 'call', 'create'). /
type?: number;
/* Address of contract created by this transaction, if any. /
createdContract?: string;
/* Execution status of the transaction (1: success, 0: fail, -1: pending). /
status: number;
/* Error encountered during execution, if any. /
error?: string;
/* Transaction nonce (sequential number from the sender). /
nonce: number;
/* Maximum gas allowed by the sender for this transaction. /
gasLimit: number;
/* Actual gas consumed by the transaction execution. /
gasUsed?: number;
/* Price (in Wei or base units) per gas unit. /
gasPrice?: string;
maxPriorityFeePerGas?: string;
maxFeePerGas?: string;
baseFeePerGas?: string;
/* Fee used for L1 part in rollups (e.g. Optimism). /
l1Fee?: number;
/* Scaling factor for L1 fees in certain Layer 2 solutions. /
l1FeeScalar?: string;
/* Gas price for L1 component, if applicable. /
l1GasPrice?: string;
/* Amount of gas used in L1 for this tx, if applicable. /
l1GasUsed?: number;
/* Hex-encoded input data for the transaction. /
data?: string;
/* Decoded transaction data (function name, params, etc.). /
parsedData?: EthereumParsedInputData;
/* List of internal (sub-call) transfers. /
internalTransfers?: EthereumInternalTransfer[];
}
export interface MultiTokenValue {
/* Token ID (for ERC1155). /
id?: string;
/* Amount of that specific token ID. /
value?: string;
}
export interface TokenTransfer {
/* @deprecated: Use standard instead. /
type: '' | 'XPUBAddress' | 'ERC20' | 'ERC721' | 'ERC1155' | 'BEP20' | 'BEP721' | 'BEP1155';
standard: '' | 'XPUBAddress' | 'ERC20' | 'ERC721' | 'ERC1155' | 'BEP20' | 'BEP721' | 'BEP1155';
/* Source address of the token transfer. /
from: string;
/* Destination address of the token transfer. /
to: string;
/* Contract address of the token. /
contract: string;
/* Token name. /
name?: string;
/* Token symbol. /
symbol?: string;
/* Number of decimals for this token (if applicable). /
decimals: number;
/* Amount (in base units) of tokens transferred. /
value?: string;
/* List of multiple ID-value pairs for ERC1155 transfers. /
multiTokenValues?: MultiTokenValue[];
}
export interface Vout {
/* Amount (in satoshi or base units) of the output. /
value?: string;
/* Relative index of this output within the transaction. /
n: number;
/* Indicates whether this output has been spent. /
spent?: boolean;
/* Transaction ID in which this output was spent. /
spentTxId?: string;
/* Index of the input that spent this output. /
spentIndex?: number;
/* Block height at which this output was spent. /
spentHeight?: number;
/* Raw script hex data for this output - aka ScriptPubKey. /
hex?: string;
/* Disassembled script for this output. /
asm?: string;
/* List of addresses associated with this output. /
addresses: string[];
/* Indicates whether this output is owned by valid address. /
isAddress: boolean;
/* Indicates if this output belongs to the wallet in context. /
isOwn?: boolean;
/* Output script type (e.g., 'P2PKH', 'P2SH'). /
type?: string;
}
export interface Vin {
/* ID/hash of the originating transaction (where the UTXO comes from). /
txid?: string;
/* Index of the output in the referenced transaction. /
vout?: number;
/* Sequence number for this input (e.g. 4294967293). /
sequence?: number;
/* Relative index of this input within the transaction. /
n: number;
/* List of addresses associated with this input. /
addresses?: string[];
/* Indicates if this input is from a known address. /
isAddress: boolean;
/* Indicates if this input belongs to the wallet in context. /
isOwn?: boolean;
/* Amount (in satoshi or base units) of the input. /
value?: string;
/* Raw script hex data for this input. /
hex?: string;
/* Disassembled script for this input. /
asm?: string;
/* Data for coinbase inputs (when mining). /
coinbase?: string;
}
export interface Tx {
/* Transaction ID (hash). /
txid: string;
/* Version of the transaction (if applicable). /
version?: number;
/* Locktime indicating earliest time/height transaction can be mined. /
lockTime?: number;
/* Array of inputs for this transaction. /
vin: Vin[];
/* Array of outputs for this transaction. /
vout: Vout[];
/* Hash of the block containing this transaction. /
blockHash?: string;
/* Block height in which this transaction was included. /
blockHeight: number;
/* Number of confirmations (blocks mined after this tx's block). /
confirmations: number;
/* Estimated blocks remaining until confirmation (if unconfirmed). /
confirmationETABlocks?: number;
/* Estimated seconds remaining until confirmation (if unconfirmed). /
confirmationETASeconds?: number;
/* Unix timestamp of the block in which this transaction was included. 0 if unconfirmed. /
blockTime: number;
/* Transaction size in bytes. /
size?: number;
/* Virtual size in bytes, for SegWit-enabled chains. /
vsize?: number;
/* Total value of all outputs (in satoshi or base units). /
value: string;
/* Total value of all inputs (in satoshi or base units). /
valueIn?: string;
/* Transaction fee (inputs - outputs). /
fees?: string;
/* Raw hex-encoded transaction data. /
hex?: string;
/* Indicates if this transaction is replace-by-fee (RBF) enabled. /
rbf?: boolean;
/* Blockchain-specific extended data. /
coinSpecificData?: any;
/* List of token transfers that occurred in this transaction. /
tokenTransfers?: TokenTransfer[];
/* Ethereum-like blockchain specific data (if applicable). /
ethereumSpecific?: EthereumSpecific;
/* Aliases for addresses involved in this transaction. /
addressAliases?: { [key: string]: AddressAlias };
}
export interface FeeStats {
/* Number of transactions in the given block. /
txCount: number;
/* Sum of all fees in satoshi or base units. /
totalFeesSat: string;
/* Average fee per kilobyte in satoshi or base units. /
averageFeePerKb: number;
/* Fee distribution deciles (0%..100%) in satoshi or base units per kB. /
decilesFeePerKb: number[];
}
export interface StakingPool {
/* Staking pool contract address on-chain. /
contract: string;
/* Name of the staking pool contract. /
name: string;
/* Balance pending deposit or withdrawal, if any. /
pendingBalance: string;
/* Any pending deposit that is not yet finalized. /
pendingDepositedBalance: string;
/* Currently deposited/staked balance. /
depositedBalance: string;
/* Total amount withdrawn from this pool by the address. /
withdrawTotalAmount: string;
/* Rewards or principal currently claimable by the address. /
claimableAmount: string;
/* Total rewards that have been restaked automatically. /
restakedReward: string;
/* Any balance automatically reinvested into the pool. /
autocompoundBalance: string;
}
export interface ContractInfo {
/* @deprecated: Use standard instead. /
type: '' | 'XPUBAddress' | 'ERC20' | 'ERC721' | 'ERC1155' | 'BEP20' | 'BEP721' | 'BEP1155';
standard: '' | 'XPUBAddress' | 'ERC20' | 'ERC721' | 'ERC1155' | 'BEP20' | 'BEP721' | 'BEP1155';
/* Smart contract address. /
contract: string;
/* Readable name of the contract. /
name: string;
/* Symbol for tokens under this contract, if applicable. /
symbol: string;
/* Number of decimal places, if applicable. /
decimals: number;
/* Block height where contract was first created. /
createdInBlock?: number;
/* Block height where contract was destroyed (if any). /
destructedInBlock?: number;
}
export interface Token {
/* @deprecated: Use standard instead. /
type: '' | 'XPUBAddress' | 'ERC20' | 'ERC721' | 'ERC1155' | 'BEP20' | 'BEP721' | 'BEP1155';
standard: '' | 'XPUBAddress' | 'ERC20' | 'ERC721' | 'ERC1155' | 'BEP20' | 'BEP721' | 'BEP1155';
/* Readable name of the token. /
name: string;
/* Derivation path if this token is derived from an XPUB-based address. /
path?: string;
/* Contract address on-chain. /
contract?: string;
/* Total number of token transfers for this address. /
transfers: number;
/* Symbol for the token (e.g., 'ETH', 'USDT'). /
symbol?: string;
/* Number of decimals for this token. /
decimals: number;
/* Current token balance (in minimal base units). /
balance?: string;
/* Value in the base currency (e.g. ETH for ERC20 tokens). /
baseValue?: number;
/* Value in a secondary currency (e.g. fiat), if available. /
secondaryValue?: number;
/* List of token IDs (for ERC721, each ID is a unique collectible). /
ids?: string[];
/* Multiple ERC1155 token balances (id + value). /
multiTokenValues?: MultiTokenValue[];
/* Total amount of tokens received. /
totalReceived?: string;
/* Total amount of tokens sent. /
totalSent?: string;
}
export interface Address {
/* Current page index. /
page?: number;
/* Total number of pages available. /
totalPages?: number;
/* Number of items returned on this page. /
itemsOnPage?: number;
/* The address string in standard format. /
address: string;
/* Current confirmed balance (in satoshi or base units). /
balance: string;
/* Total amount ever received by this address. /
totalReceived?: string;
/* Total amount ever sent by this address. /
totalSent?: string;
/* Unconfirmed balance for this address. /
unconfirmedBalance: string;
/* Number of unconfirmed transactions for this address. /
unconfirmedTxs: number;
/* Unconfirmed outgoing balance for this address. /
unconfirmedSending?: string;
/* Unconfirmed incoming balance for this address. /
unconfirmedReceiving?: string;
/* Number of transactions for this address (including confirmed). /
txs: number;
/* Historical total count of transactions, if known. /
addrTxCount?: number;
/* Number of transactions not involving tokens (pure coin transfers). /
nonTokenTxs?: number;
/* Number of internal transactions (e.g., Ethereum calls). /
internalTxs?: number;
/* List of transaction details (if requested). /
transactions?: Tx[];
/* List of transaction IDs (if detailed data is not requested). /
txids?: string[];
/* Current transaction nonce for Ethereum-like addresses. /
nonce?: string;
/* Number of tokens with any historical usage at this address. /
usedTokens?: number;
/* List of tokens associated with this address. /
tokens?: Token[];
/* Total value of the address in secondary currency (e.g. fiat). /
secondaryValue?: number;
/* Sum of token values in base currency. /
tokensBaseValue?: number;
/* Sum of token values in secondary currency (fiat). /
tokensSecondaryValue?: number;
/* Address's entire value in base currency, including tokens. /
totalBaseValue?: number;
/* Address's entire value in secondary currency, including tokens. /
totalSecondaryValue?: number;
/* Extra info if the address is a contract (ABI, type). /
contractInfo?: ContractInfo;
/* @deprecated: replaced by contractInfo /
erc20Contract?: ContractInfo;
/* Aliases assigned to this address. /
addressAliases?: { [key: string]: AddressAlias };
/* List of staking pool data if address interacts with staking. /
stakingPools?: StakingPool[];
}
export interface Utxo {
/* Transaction ID in which this UTXO was created. /
txid: string;
/* Index of the output in that transaction. /
vout: number;
/* Value of this UTXO (in satoshi or base units). /
value: string;
/* Block height in which the UTXO was confirmed. /
height?: number;
/* Number of confirmations for this UTXO. /
confirmations: number;
/* Address to which this UTXO belongs. /
address?: string;
/* Derivation path for XPUB-based wallets, if applicable. /
path?: string;
/* If non-zero, locktime required before spending this UTXO. /
lockTime?: number;
/* Indicates if this UTXO originated from a coinbase transaction. /
coinbase?: boolean;
}
export interface BalanceHistory {
/* Unix timestamp for this point in the balance history. /
time: number;
/* Number of transactions in this interval. /
txs: number;
/* Amount received in this interval (in satoshi or base units). /
received: string;
/* Amount sent in this interval (in satoshi or base units). /
sent: string;
/* Amount sent to the same address (self-transfer). /
sentToSelf: string;
/* Exchange rates at this point in time, if available. /
rates?: { [key: string]: number };
/* Transaction ID if the time corresponds to a specific tx. /
txid?: string;
}
export interface BlockInfo {
Hash: string;
Time: number;
Txs: number;
Size: number;
Height: number;
}
export interface Blocks {
/* Current page index. /
page?: number;
/* Total number of pages available. /
totalPages?: number;
/* Number of items returned on this page. /
itemsOnPage?: number;
/* List of blocks. /
blocks: BlockInfo[];
}
export interface Block {
/* Current page index. /
page?: number;
/* Total number of pages available. /
totalPages?: number;
/* Number of items returned on this page. /
itemsOnPage?: number;
/* Block hash. /
hash: string;
/* Hash of the previous block in the chain. /
previousBlockHash?: string;
/* Hash of the next block, if known. /
nextBlockHash?: string;
/* Block height (0-based index in the chain). /
height: number;
/* Number of confirmations of this block (distance from best chain tip). /
confirmations: number;
/* Size of the block in bytes. /
size: number;
/* Timestamp of when this block was mined. /
time?: number;
/* Block version (chain-specific meaning). /
version: string;
/* Merkle root of the block's transactions. /
merkleRoot: string;
/* Nonce used in the mining process. /
nonce: string;
/* Compact representation of the target threshold. /
bits: string;
/* Difficulty target for mining this block. /
difficulty: string;
/* List of transaction IDs included in this block. /
tx?: string[];
/* Total count of transactions in this block. /
txCount: number;
/* List of full transaction details (if requested). /
txs?: Tx[];
/* Optional aliases for addresses found in this block. /
addressAliases?: { [key: string]: AddressAlias };
}
export interface BlockRaw {
/* Hex-encoded block data. /
hex: string;
}
export interface BackendInfo {
/* Error message if something went wrong in the backend. /
error?: string;
/* Name of the chain - e.g. 'main'. /
chain?: string;
/* Number of fully verified blocks in the chain. /
blocks?: number;
/* Number of block headers in the chain. /
headers?: number;
/* Hash of the best block in hex. /
bestBlockHash?: string;
/* Current difficulty of the network. /
difficulty?: string;
/* Size of the blockchain data on disk in bytes. /
sizeOnDisk?: number;
/* Version of the blockchain backend - e.g. '280000'. /
version?: string;
/* Subversion of the blockchain backend - e.g. '/Satoshi:28.0.0/'. /
subversion?: string;
/* Protocol version of the blockchain backend - e.g. '70016'. /
protocolVersion?: string;
/* Time offset (in seconds) reported by the backend. /
timeOffset?: number;
/* Any warnings given by the backend regarding the chain state. /
warnings?: string;
/* Version or details of the consensus protocol in use. /
consensus_version?: string;
/* Additional chain-specific consensus data. /
consensus?: any;
}
export interface InternalStateColumn {
/* Name of the database column. /
name: string;
/* Version or schema version of the column. /
version: number;
/* Number of rows stored in this column. /
rows: number;
/* Total size (in bytes) of keys stored in this column. /
keyBytes: number;
/* Total size (in bytes) of values stored in this column. /
valueBytes: number;
/* Timestamp of the last update to this column. /
updated: string;
}
export interface BlockbookInfo {
/* Coin name, e.g. 'Bitcoin'. /
coin: string;
/* Network shortcut, e.g. 'BTC'. /
network: string;
/* Hostname of the blockbook instance, e.g. 'backend5'. /
host: string;
/* Running blockbook version, e.g. '0.4.0'. /
version: string;
/* Git commit hash of the running blockbook, e.g. 'a0960c8e'. /
gitCommit: string;
/* Build time of running blockbook, e.g. '2024-08-08T12:32:50+00:00'. /
buildTime: string;
/* If true, blockbook is syncing from scratch or in a special sync mode. /
syncMode: boolean;
/* Indicates if blockbook is in its initial sync phase. /
initialSync: boolean;
/* Indicates if the backend is fully synced with the blockchain. /
inSync: boolean;
/* Best (latest) block height according to this instance. /
bestHeight: number;
/* Timestamp of the latest block in the chain. /
lastBlockTime: string;
/* Indicates if mempool info is synced as well. /
inSyncMempool: boolean;
/* Timestamp of the last mempool update. /
lastMempoolTime: string;
/* Number of unconfirmed transactions in the mempool. /
mempoolSize: number;
/* Number of decimals for this coin's base unit. /
decimals: number;
/* Size of the underlying database in bytes. /
dbSize: number;
/* Whether this instance provides fiat exchange rates. /
hasFiatRates?: boolean;
/* Whether this instance provides fiat exchange rates for tokens. */
hasTokenF
New upcoming feature in PIE needs
php-ext.download-url-methodto support a list of strings. For backwards compatibility (and simplicity, really), a string is still supported