solana-ruby-kit 8.2.0 → 8.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +82 -12
- data/lib/solana/ruby/kit/accounts/maybe_account.rb +1 -1
- data/lib/solana/ruby/kit/addresses/address.rb +1 -1
- data/lib/solana/ruby/kit/addresses/curve.rb +1 -1
- data/lib/solana/ruby/kit/addresses/program_derived_address.rb +1 -1
- data/lib/solana/ruby/kit/addresses/public_key.rb +1 -1
- data/lib/solana/ruby/kit/codecs/codec.rb +95 -1
- data/lib/solana/ruby/kit/codecs/data_structures.rb +51 -8
- data/lib/solana/ruby/kit/codecs/numbers.rb +49 -50
- data/lib/solana/ruby/kit/codecs/strings.rb +132 -6
- data/lib/solana/ruby/kit/encoding/base58.rb +1 -1
- data/lib/solana/ruby/kit/errors.rb +6 -0
- data/lib/solana/ruby/kit/fast_stable_stringify.rb +1 -1
- data/lib/solana/ruby/kit/functional.rb +1 -1
- data/lib/solana/ruby/kit/instruction_plans/instruction_plan.rb +1 -1
- data/lib/solana/ruby/kit/instruction_plans/max_instructions.rb +1 -1
- data/lib/solana/ruby/kit/instruction_plans/transaction_plan.rb +1 -1
- data/lib/solana/ruby/kit/instruction_plans/transaction_plan_executor.rb +2 -2
- data/lib/solana/ruby/kit/instruction_plans/transaction_plan_result.rb +1 -1
- data/lib/solana/ruby/kit/instruction_plans/transaction_planner.rb +2 -2
- data/lib/solana/ruby/kit/instructions/accounts.rb +1 -1
- data/lib/solana/ruby/kit/instructions/instruction.rb +1 -1
- data/lib/solana/ruby/kit/instructions/roles.rb +1 -1
- data/lib/solana/ruby/kit/keys/key_pair.rb +1 -1
- data/lib/solana/ruby/kit/keys/private_key.rb +1 -1
- data/lib/solana/ruby/kit/keys/public_key.rb +1 -1
- data/lib/solana/ruby/kit/keys/signatures.rb +1 -1
- data/lib/solana/ruby/kit/offchain_messages/codec.rb +1 -1
- data/lib/solana/ruby/kit/offchain_messages/message_v1.rb +1 -1
- data/lib/solana/ruby/kit/options/option.rb +1 -1
- data/lib/solana/ruby/kit/plugin_core.rb +1 -1
- data/lib/solana/ruby/kit/programs/associated_token_account.rb +1 -1
- data/lib/solana/ruby/kit/programs/stake_program.rb +1 -1
- data/lib/solana/ruby/kit/programs/system_program.rb +1 -1
- data/lib/solana/ruby/kit/programs.rb +1 -1
- data/lib/solana/ruby/kit/promises.rb +1 -1
- data/lib/solana/ruby/kit/resource_limit_estimation.rb +1 -1
- data/lib/solana/ruby/kit/rpc_parsed_types/address_lookup_table.rb +1 -1
- data/lib/solana/ruby/kit/rpc_parsed_types/nonce_account.rb +1 -1
- data/lib/solana/ruby/kit/rpc_parsed_types/stake_account.rb +1 -1
- data/lib/solana/ruby/kit/rpc_parsed_types/token_account.rb +1 -1
- data/lib/solana/ruby/kit/rpc_parsed_types/vote_account.rb +1 -1
- data/lib/solana/ruby/kit/rpc_types/cluster_url.rb +1 -1
- data/lib/solana/ruby/kit/rpc_types/commitment.rb +1 -1
- data/lib/solana/ruby/kit/rpc_types/lamports.rb +1 -1
- data/lib/solana/ruby/kit/rpc_types/sol.rb +1 -1
- data/lib/solana/ruby/kit/signers/keypair_signer.rb +1 -1
- data/lib/solana/ruby/kit/subscribable/async_iterable.rb +1 -1
- data/lib/solana/ruby/kit/subscribable/bridge_store_to_async_iterable.rb +1 -1
- data/lib/solana/ruby/kit/subscribable/reactive_action_store.rb +1 -1
- data/lib/solana/ruby/kit/subscribable/reactive_stream_store.rb +1 -1
- data/lib/solana/ruby/kit/sysvars/clock.rb +1 -1
- data/lib/solana/ruby/kit/sysvars/epoch_schedule.rb +1 -1
- data/lib/solana/ruby/kit/sysvars/last_restart_slot.rb +1 -1
- data/lib/solana/ruby/kit/sysvars/rent.rb +1 -1
- data/lib/solana/ruby/kit/sysvars.rb +1 -1
- data/lib/solana/ruby/kit/transaction_confirmation.rb +1 -1
- data/lib/solana/ruby/kit/transaction_introspection/compiled_transaction_message.rb +1 -1
- data/lib/solana/ruby/kit/transaction_introspection/decode_rpc_transaction.rb +1 -1
- data/lib/solana/ruby/kit/transaction_introspection/get_inner_instructions.rb +1 -1
- data/lib/solana/ruby/kit/transaction_introspection/get_instructions.rb +1 -1
- data/lib/solana/ruby/kit/transaction_introspection/walk_instructions.rb +1 -1
- data/lib/solana/ruby/kit/transaction_messages/compute_budget.rb +1 -1
- data/lib/solana/ruby/kit/transaction_messages/resource_limit_validation.rb +1 -1
- data/lib/solana/ruby/kit/transaction_messages/transaction_message.rb +1 -1
- data/lib/solana/ruby/kit/transactions/compiler.rb +2 -2
- data/lib/solana/ruby/kit/transactions/transaction.rb +30 -10
- data/lib/solana/ruby/kit/version.rb +1 -1
- data/lib/solana/ruby/kit/wallet_standard.rb +3 -3
- metadata +1 -1
|
@@ -95,6 +95,10 @@ module Solana::Ruby::Kit
|
|
|
95
95
|
CODECS__INVALID_BYTE_LENGTH = :SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH
|
|
96
96
|
CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_DISCRIMINATOR = :SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_DISCRIMINATOR
|
|
97
97
|
CODECS__FIXED_NULLABLE_CANNOT_WRAP_VARIABLE_SIZE_CODEC = :SOLANA_ERROR__CODECS__FIXED_NULLABLE_CANNOT_WRAP_VARIABLE_SIZE_CODEC
|
|
98
|
+
# context: { bytes:, offset: }
|
|
99
|
+
CODECS__INVALID_UTF8_BYTES = :SOLANA_ERROR__CODECS__INVALID_UTF8_BYTES
|
|
100
|
+
# context: { index:, value: }
|
|
101
|
+
CODECS__INVALID_UTF8_STRING = :SOLANA_ERROR__CODECS__INVALID_UTF8_STRING
|
|
98
102
|
|
|
99
103
|
# ── RPC / JSON-RPC ────────────────────────────────────────────────────────
|
|
100
104
|
RPC__INTEGER_OVERFLOW_WHILE_SERIALIZING_LARGE_INTEGER = :SOLANA_ERROR__RPC__INTEGER_OVERFLOW_WHILE_SERIALIZING_LARGE_INTEGER
|
|
@@ -244,6 +248,8 @@ module Solana::Ruby::Kit
|
|
|
244
248
|
CODECS__INVALID_BYTE_LENGTH => 'Expected %{expected} bytes but got %{actual}',
|
|
245
249
|
CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_DISCRIMINATOR => 'Expected zero value to match fixed discriminator',
|
|
246
250
|
CODECS__FIXED_NULLABLE_CANNOT_WRAP_VARIABLE_SIZE_CODEC => 'A fixed-size nullable codec cannot wrap a variable-size codec',
|
|
251
|
+
CODECS__INVALID_UTF8_BYTES => 'Invalid UTF-8 byte sequence at offset %{offset}',
|
|
252
|
+
CODECS__INVALID_UTF8_STRING => 'Invalid UTF-8 string at index %{index}',
|
|
247
253
|
|
|
248
254
|
# RPC
|
|
249
255
|
RPC__INTEGER_OVERFLOW_WHILE_SERIALIZING_LARGE_INTEGER => 'Integer overflow while serializing large integer %{value}',
|
|
@@ -16,7 +16,7 @@ module Solana::Ruby::Kit
|
|
|
16
16
|
# The hard maximum number of top-level instructions the transaction format can encode.
|
|
17
17
|
TRANSACTION_INSTRUCTION_LIMIT = T.let(64, Integer)
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
extend self
|
|
20
20
|
|
|
21
21
|
# Resolves the effective maximum number of instructions allowed in a transaction message,
|
|
22
22
|
# falling back to the default when no value is provided.
|
|
@@ -9,7 +9,7 @@ module Solana::Ruby::Kit
|
|
|
9
9
|
module InstructionPlans
|
|
10
10
|
extend T::Sig
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
extend self
|
|
13
13
|
|
|
14
14
|
# Creates a TransactionPlanExecutor — a callable that traverses a TransactionPlan,
|
|
15
15
|
# executing each single transaction message and collecting results.
|
|
@@ -111,7 +111,7 @@ module Solana::Ruby::Kit
|
|
|
111
111
|
|
|
112
112
|
# ── Private helpers ────────────────────────────────────────────────────────
|
|
113
113
|
|
|
114
|
-
|
|
114
|
+
extend self
|
|
115
115
|
|
|
116
116
|
sig { params(plan: T.untyped, execute_fn: T.untyped, state: T.untyped).returns(T.untyped) }
|
|
117
117
|
|
|
@@ -11,7 +11,7 @@ module Solana::Ruby::Kit
|
|
|
11
11
|
module InstructionPlans
|
|
12
12
|
extend T::Sig
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
extend self
|
|
15
15
|
|
|
16
16
|
# Creates a TransactionPlanner — a callable that converts an InstructionPlan
|
|
17
17
|
# into a TransactionPlan by packing instructions into transaction messages.
|
|
@@ -71,7 +71,7 @@ module Solana::Ruby::Kit
|
|
|
71
71
|
|
|
72
72
|
# ── Private helpers ────────────────────────────────────────────────────────
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
extend self
|
|
75
75
|
|
|
76
76
|
sig { params(plan: T.untyped, ctx: T.untyped).returns(T.untyped) }
|
|
77
77
|
|
|
@@ -19,7 +19,7 @@ module Solana::Ruby::Kit
|
|
|
19
19
|
|
|
20
20
|
ALL = T.let([READONLY, WRITABLE, READONLY_SIGNER, WRITABLE_SIGNER].freeze, T::Array[Integer])
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
extend self
|
|
23
23
|
|
|
24
24
|
# Returns true if the role requires the account to sign the transaction.
|
|
25
25
|
sig { params(role: Integer).returns(T::Boolean) }
|
|
@@ -57,7 +57,7 @@ module Solana::Ruby::Kit
|
|
|
57
57
|
# accepts Option<T>, T, or nil — useful for codec input.
|
|
58
58
|
OptionOrNullable = T.type_alias { T.untyped }
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
extend self
|
|
61
61
|
|
|
62
62
|
# Wraps a value in Some. Mirrors `some<T>(value)`.
|
|
63
63
|
sig { params(value: T.untyped).returns(Solana::Ruby::Kit::Options::Some[T.untyped]) }
|
|
@@ -40,7 +40,7 @@ module Solana::Ruby::Kit
|
|
|
40
40
|
DISCRIMINATOR_INITIALIZE = T.let(0, Integer)
|
|
41
41
|
DISCRIMINATOR_DELEGATE = T.let(2, Integer)
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
extend self
|
|
44
44
|
|
|
45
45
|
# Builds the two instructions needed to create and initialise a new stake
|
|
46
46
|
# account funded from +from+.
|
|
@@ -27,7 +27,7 @@ module Solana::Ruby::Kit
|
|
|
27
27
|
# Instruction discriminators (u32 little-endian).
|
|
28
28
|
DISCRIMINATOR_TRANSFER = T.let(2, Integer)
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
extend self
|
|
31
31
|
|
|
32
32
|
# Builds a System Program Transfer instruction that moves +lamports+ from
|
|
33
33
|
# +sender+ to +recipient+.
|
|
@@ -19,7 +19,7 @@ module Solana::Ruby::Kit
|
|
|
19
19
|
|
|
20
20
|
PROVISORY_LIMIT = T.let(0, Integer)
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
extend self
|
|
23
23
|
|
|
24
24
|
# Returns a callable that estimates the resource limits required by a transaction message
|
|
25
25
|
# by simulating it with maximum limits set, then reading back the actual consumption.
|
|
@@ -55,7 +55,7 @@ module Solana::Ruby::Kit
|
|
|
55
55
|
SOL_SCALE = T.let(1_000_000_000, Integer)
|
|
56
56
|
SOL_RAW_MAX = T.let(Kernel.Integer(2**64 - 1), Integer)
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
extend self
|
|
59
59
|
|
|
60
60
|
# Parses a decimal string and returns a Sol value.
|
|
61
61
|
# Raises FIXED_POINTS__STRICT_MODE_PRECISION_LOSS if the string has more
|
|
@@ -20,7 +20,7 @@ module Solana::Ruby::Kit
|
|
|
20
20
|
# Sentinel value pushed into the queue when the stream is done.
|
|
21
21
|
DONE = T.let(Object.new.freeze, Object)
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
extend self
|
|
24
24
|
|
|
25
25
|
# @param publisher [DataPublisher]
|
|
26
26
|
# @param data_channel channel name for data messages
|
|
@@ -39,7 +39,7 @@ module Solana::Ruby::Kit
|
|
|
39
39
|
const :lifetime_token, String # base58-encoded blockhash or nonce value
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
extend self
|
|
43
43
|
|
|
44
44
|
# Decodes legacy or v0 compiled transaction message bytes (the
|
|
45
45
|
# `message_bytes` of a `Transactions::Transaction`) into a
|
|
@@ -31,7 +31,7 @@ module Solana::Ruby::Kit
|
|
|
31
31
|
const :transaction, T.nilable(Transactions::Transaction)
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
extend self
|
|
35
35
|
|
|
36
36
|
# Decodes a confirmed-transaction RPC response (any of `encoding: 'base64'`,
|
|
37
37
|
# `'base58'`, or `'json'`) into a CompiledTransactionMessage plus, for
|
|
@@ -23,7 +23,7 @@ module Solana::Ruby::Kit
|
|
|
23
23
|
SET_COMPUTE_UNIT_LIMIT_DISCRIMINATOR = T.let(2, Integer)
|
|
24
24
|
SET_LOADED_ACCOUNTS_DATA_SIZE_LIMIT_DISCRIMINATOR = T.let(4, Integer)
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
extend self
|
|
27
27
|
|
|
28
28
|
# ---------------------------------------------------------------------------
|
|
29
29
|
# SetComputeUnitLimit instruction helpers
|
|
@@ -16,7 +16,7 @@ module Solana::Ruby::Kit
|
|
|
16
16
|
# A requested heap frame size must be a whole number of KiB.
|
|
17
17
|
HEAP_SIZE_MULTIPLE_OF = T.let(1024, Integer)
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
extend self
|
|
20
20
|
|
|
21
21
|
# Raises if the given compute unit limit is one the runtime will not honor as written.
|
|
22
22
|
#
|
|
@@ -57,7 +57,7 @@ module Solana::Ruby::Kit
|
|
|
57
57
|
const :address_table_lookups, T.nilable(T::Hash[String, T::Array[Integer]])
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
extend self
|
|
61
61
|
|
|
62
62
|
# Creates an empty transaction message at the given version.
|
|
63
63
|
# Mirrors `createTransactionMessage({ version })`.
|
|
@@ -12,7 +12,7 @@ module Solana::Ruby::Kit
|
|
|
12
12
|
# Maximum wire-encoded transaction size in bytes (Solana protocol limit).
|
|
13
13
|
TRANSACTION_SIZE_LIMIT = T.let(1232, Integer)
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
extend self
|
|
16
16
|
|
|
17
17
|
# Returns the compiled byte-size of a transaction message.
|
|
18
18
|
# Mirrors `getTransactionMessageSize()` from @solana/transactions.
|
|
@@ -174,7 +174,7 @@ module Solana::Ruby::Kit
|
|
|
174
174
|
# [message bytes]
|
|
175
175
|
#
|
|
176
176
|
# The result is a binary String; base64-encode it before sending via HTTP.
|
|
177
|
-
sig { params(transaction:
|
|
177
|
+
sig { params(transaction: AnyTransaction).returns(String) }
|
|
178
178
|
def wire_encode_transaction(transaction)
|
|
179
179
|
sigs = transaction.signatures
|
|
180
180
|
header = encode_compact_u16(sigs.size)
|