@xchainjs/xchain-radix
Version:
Custom Radix client and utilities used by XChainJS clients
166 lines (165 loc) • 4.93 kB
TypeScript
/**
* Lightweight Radix Gateway API client replacing the heavy
* @radixdlt/babylon-gateway-api-sdk (~2.7 MB).
*
* Only implements the endpoints actually used by xchain-radix.
*/
export type LedgerState = {
network: string;
state_version: number;
proposer_round_timestamp: string;
epoch: number;
round: number;
};
export type GatewayStatusResponse = {
ledger_state: LedgerState;
};
export type FungibleResourcesCollectionItem = {
aggregation_level: string;
resource_address: string;
amount: number | string;
last_updated_at_state_version: number;
};
export type NonFungibleResourcesCollectionItem = {
aggregation_level: string;
resource_address: string;
amount: number;
last_updated_at_state_version: number;
};
export type StateEntityDetailsVaultResponseItem = {
address: string;
details?: {
type: string;
divisibility?: number;
[key: string]: any;
};
[key: string]: any;
};
export type StateEntityFungiblesPageRequest = {
address: string;
limit_per_page: number;
cursor?: string;
at_ledger_state?: {
state_version: number;
};
};
export type StateEntityFungiblesPageResponse = {
ledger_state: LedgerState;
total_count?: number;
items: FungibleResourcesCollectionItem[];
next_cursor?: string;
address?: string;
};
export type StateEntityNonFungiblesPageRequest = {
address: string;
limit_per_page: number;
cursor?: string;
at_ledger_state?: {
state_version: number;
};
};
export type StateEntityNonFungiblesPageResponse = {
ledger_state: LedgerState;
total_count?: number;
items: NonFungibleResourcesCollectionItem[];
next_cursor?: string;
address?: string;
};
export type GatewayPublicKey = {
key_type: string;
key_hex: string;
};
export type TransactionPreviewRequest = {
manifest: string;
blobs_hex: string[];
start_epoch_inclusive: number;
end_epoch_exclusive: number;
notary_public_key: GatewayPublicKey;
notary_is_signatory: boolean;
tip_percentage: number;
nonce: number;
signer_public_keys: GatewayPublicKey[];
flags: {
assume_all_signature_proofs: boolean;
skip_epoch_check: boolean;
use_free_credit: boolean;
};
};
export type TransactionPreviewResponse = {
receipt: {
status: string;
fee_summary: {
execution_cost_units_consumed: number;
finalization_cost_units_consumed: number;
xrd_total_execution_cost: string;
xrd_total_finalization_cost: string;
xrd_total_royalty_cost: string;
xrd_total_storage_cost: string;
xrd_total_tipping_cost: string;
};
[key: string]: any;
};
[key: string]: any;
};
export type TransactionSubmitResponse = {
duplicate: boolean;
};
export type CommittedTransactionInfo = {
transaction_status: string;
state_version: number;
epoch: number;
round: number;
round_timestamp: string;
payload_hash: string;
intent_hash: string;
fee_paid: string;
confirmed_at?: Date;
raw_hex?: string;
receipt?: {
status: string;
};
manifest_classes?: string[];
};
export type TransactionCommittedDetailsResponse = {
ledger_state?: LedgerState;
transaction: CommittedTransactionInfo;
};
export type StreamTransactionsRequest = {
affected_global_entities_filter?: string[];
limit_per_page?: number;
from_ledger_state?: {
state_version: number;
};
manifest_resources_filter?: string[];
opt_ins?: {
raw_hex?: boolean;
};
cursor?: string;
};
export type StreamTransactionsResponse = {
items: CommittedTransactionInfo[];
next_cursor?: string;
};
export type TransactionStatusResponse = {
status: string;
intent_hash: string;
};
export declare class RadixGatewayApi {
private baseUrl;
constructor(networkId: number);
private post;
getStatus(): Promise<GatewayStatusResponse>;
getEntityDetailsVaultAggregated(addresses: string[]): Promise<StateEntityDetailsVaultResponseItem[]>;
getEntityFungiblesPage(request: StateEntityFungiblesPageRequest): Promise<StateEntityFungiblesPageResponse>;
getEntityNonFungiblesPage(request: StateEntityNonFungiblesPageRequest): Promise<StateEntityNonFungiblesPageResponse>;
previewTransaction(request: TransactionPreviewRequest): Promise<TransactionPreviewResponse>;
submitTransaction(notarizedTransactionHex: string): Promise<TransactionSubmitResponse>;
getTransactionDetails(request: {
intent_hash: string;
opt_ins?: {
raw_hex?: boolean;
};
}): Promise<TransactionCommittedDetailsResponse>;
getStreamTransactions(request: StreamTransactionsRequest): Promise<StreamTransactionsResponse>;
getTransactionStatus(intentHash: string): Promise<TransactionStatusResponse>;
}