Module: Solana::Ruby::Kit::RpcTypes
- Extended by:
- T::Sig
- Defined in:
- lib/solana/ruby/kit/rpc_types/lamports.rb,
lib/solana/ruby/kit/rpc_types/commitment.rb,
lib/solana/ruby/kit/rpc_types/cluster_url.rb,
lib/solana/ruby/kit/rpc_types/account_info.rb
Defined Under Namespace
Classes: AccountInfoBase, AccountInfoWithBase64Data, AccountInfoWithJsonData, ClusterUrl, RpcContextualValue
Constant Summary
collapse
- Lamports =
The smallest denomination of SOL (1 SOL = 1_000_000_000 lamports). Mirrors TypeScript’s Lamports branded bigint. In Ruby, arbitrary-precision Integer replaces JS bigint with no loss of range.
Valid range: 0 .. 18_446_744_073_709_551_615 (u64)
T.type_alias { Integer }
- LAMPORTS_U64_MAX =
T.let(T.unsafe(2**64 - 1), Integer)
- Commitment =
Network confirmation level for an RPC request. Mirrors TypeScript’s ‘Commitment = ’finalized’ | ‘confirmed’ | ‘processed’‘.
Each level is a measure of how many validators have confirmed a block:
- :finalized
T.type_alias { Symbol }
- FINALIZED =
T.let(:finalized, Symbol)
- CONFIRMED =
T.let(:confirmed, Symbol)
- PROCESSED =
T.let(:processed, Symbol)
- VALID_COMMITMENTS =
T.let(
[FINALIZED, CONFIRMED, PROCESSED].freeze,
T::Array[Symbol]
)
- MAINNET_URL =
Well-known cluster endpoint URLs.
T.let('https://api.mainnet-beta.solana.com', String)
- DEVNET_URL =
T.let('https://api.devnet.solana.com', String)
- TESTNET_URL =
T.let('https://api.testnet.solana.com', String)
Class Method Summary
collapse
Class Method Details
.assert_lamports!(value) ⇒ Object
30
31
32
33
|
# File 'lib/solana/ruby/kit/rpc_types/lamports.rb', line 30
def assert_lamports!(value)
Kernel.raise SolanaError.new(:SOLANA_ERROR__LAMPORTS__AMOUNT_MUST_BE_POSITIVE) if value.is_a?(Integer) && value < 0
Kernel.raise SolanaError.new(:SOLANA_ERROR__LAMPORTS__AMOUNT_OUT_OF_RANGE) unless lamports?(value)
end
|
.cluster_url(url) ⇒ Object
52
53
54
|
# File 'lib/solana/ruby/kit/rpc_types/cluster_url.rb', line 52
def cluster_url(url)
ClusterUrl.new(url: url, cluster: nil)
end
|
.commitment?(value) ⇒ Boolean
48
49
50
|
# File 'lib/solana/ruby/kit/rpc_types/commitment.rb', line 48
def commitment?(value)
VALID_COMMITMENTS.include?(value)
end
|
.commitment_comparator(a, b) ⇒ Object
42
43
44
|
# File 'lib/solana/ruby/kit/rpc_types/commitment.rb', line 42
def commitment_comparator(a, b)
commitment_score(a) <=> commitment_score(b)
end
|
.commitment_score(commitment) ⇒ Object
30
31
32
33
34
35
36
37
|
# File 'lib/solana/ruby/kit/rpc_types/commitment.rb', line 30
def commitment_score(commitment)
case commitment
when FINALIZED then 2
when CONFIRMED then 1
when PROCESSED then 0
else Kernel.raise ArgumentError, "Unknown commitment: #{commitment.inspect}"
end
end
|
.devnet(url = DEVNET_URL) ⇒ Object
39
40
41
|
# File 'lib/solana/ruby/kit/rpc_types/cluster_url.rb', line 39
def devnet(url = DEVNET_URL)
ClusterUrl.new(url: url, cluster: :devnet)
end
|
.lamports(value) ⇒ Object
38
39
40
41
|
# File 'lib/solana/ruby/kit/rpc_types/lamports.rb', line 38
def lamports(value)
assert_lamports!(value)
value
end
|
.lamports?(value) ⇒ Boolean
23
24
25
|
# File 'lib/solana/ruby/kit/rpc_types/lamports.rb', line 23
def lamports?(value)
!!(value.is_a?(Integer) && value >= 0 && value <= LAMPORTS_U64_MAX)
end
|
.mainnet(url = MAINNET_URL) ⇒ Object
32
33
34
|
# File 'lib/solana/ruby/kit/rpc_types/cluster_url.rb', line 32
def mainnet(url = MAINNET_URL)
ClusterUrl.new(url: url, cluster: :mainnet)
end
|
.testnet(url = TESTNET_URL) ⇒ Object
46
47
48
|
# File 'lib/solana/ruby/kit/rpc_types/cluster_url.rb', line 46
def testnet(url = TESTNET_URL)
ClusterUrl.new(url: url, cluster: :testnet)
end
|