Skip to main content

xrpl_wasm_stdlib/
sfield.rs

1#![allow(non_upper_case_globals)]
2
3use crate::core::ledger_objects::array_object::{Array, Object};
4use crate::core::types::account_id::AccountID;
5use crate::core::types::amount::Amount;
6use crate::core::types::blob::{
7    ConditionBlob, FulfillmentBlob, PublicKeyBlob, SignatureBlob, StandardBlob, UriBlob, WasmBlob,
8};
9use crate::core::types::currency::Currency;
10use crate::core::types::issue::Issue;
11use crate::core::types::transaction_type::TransactionType;
12use crate::core::types::uint::{Hash128, Hash160, Hash192, Hash256};
13use core::borrow::Borrow;
14use core::marker::PhantomData;
15
16/// A type-safe wrapper for XRPL serialized field codes.
17///
18/// This struct encodes both the field code and the expected type as const generics,
19/// allowing the compiler to automatically infer the correct type when calling `get_field`.
20///
21/// The type parameter `T` represents the expected Rust type for this field, which can be
22/// used with various field getter traits like `LedgerObjectFieldGetter` or `CurrentTxFieldGetter`.
23///
24/// # Example
25///
26/// ```rust,no_run
27/// use xrpl_wasm_stdlib::core::ledger_objects::ledger_object;
28/// use xrpl_wasm_stdlib::core::current_tx;
29/// use xrpl_wasm_stdlib::core::types::amount::Amount;
30/// use xrpl_wasm_stdlib::sfield;
31/// use xrpl_wasm_stdlib::core::types::account_id::AccountID;
32///
33/// // Type is automatically inferred from the SField constant, for both ledger_objects and current_transaction:
34/// let flags:u32 = ledger_object::get_field(0, sfield::Flags).unwrap();  // u32
35/// let balance:Amount = ledger_object::get_field(0, sfield::Balance).unwrap();  // u64
36/// // current transaction:
37/// let account:AccountID = current_tx::get_field(sfield::Account).unwrap();  // AccountID
38/// let sequence:u32 = current_tx::get_field(sfield::Sequence).unwrap();  // u32
39/// ```
40#[derive(Copy, Clone, Debug, PartialEq, Eq)]
41pub struct SField<T, const CODE: i32> {
42    _phantom: PhantomData<T>,
43}
44
45impl<T, const CODE: i32> SField<T, CODE> {
46    /// Creates a new SField constant.
47    ///
48    /// This is a const function that can be used to initialize SField constants.
49    pub const fn new() -> Self {
50        SField {
51            _phantom: PhantomData,
52        }
53    }
54}
55
56impl<T, const CODE: i32> From<SField<T, CODE>> for i32 {
57    fn from(_: SField<T, CODE>) -> Self {
58        CODE
59    }
60}
61
62impl<T, const CODE: i32> Default for SField<T, CODE> {
63    fn default() -> Self {
64        Self::new()
65    }
66}
67
68impl<T, const CODE: i32> Borrow<i32> for SField<T, CODE> {
69    fn borrow(&self) -> &i32 {
70        // This is a bit of a hack, but it works because CODE is a compile-time constant
71        // We create a static reference to the code value
72        const fn make_static<const C: i32>() -> &'static i32 {
73            &C
74        }
75        make_static::<CODE>()
76    }
77}
78
79pub const Invalid: SField<u8, -1> = SField::new();
80pub const Generic: SField<u8, 0> = SField::new();
81pub const hash: SField<u8, -1> = SField::new();
82pub const index: SField<u8, 0> = SField::new();
83
84// Placeholder SField constants for array and object types
85// These types don't have FieldGetter implementations but are represented as SField<u8, CODE>
86pub const LedgerEntryType: SField<u16, 65537> = SField::new();
87pub const TransactionType: SField<TransactionType, 65538> = SField::new();
88pub const SignerWeight: SField<u16, 65539> = SField::new();
89pub const TransferFee: SField<u16, 65540> = SField::new();
90pub const TradingFee: SField<u16, 65541> = SField::new();
91pub const DiscountedFee: SField<u16, 65542> = SField::new();
92pub const Version: SField<u16, 65552> = SField::new();
93pub const HookStateChangeCount: SField<u16, 65553> = SField::new();
94pub const HookEmitCount: SField<u16, 65554> = SField::new();
95pub const HookExecutionIndex: SField<u16, 65555> = SField::new();
96pub const HookApiVersion: SField<u16, 65556> = SField::new();
97pub const LedgerFixType: SField<u16, 65557> = SField::new();
98pub const ManagementFeeRate: SField<u16, 65558> = SField::new();
99pub const NetworkID: SField<u32, 131073> = SField::new();
100pub const Flags: SField<u32, 131074> = SField::new();
101pub const SourceTag: SField<u32, 131075> = SField::new();
102pub const Sequence: SField<u32, 131076> = SField::new();
103pub const PreviousTxnLgrSeq: SField<u32, 131077> = SField::new();
104pub const LedgerSequence: SField<u32, 131078> = SField::new();
105pub const CloseTime: SField<u32, 131079> = SField::new();
106pub const ParentCloseTime: SField<u32, 131080> = SField::new();
107pub const SigningTime: SField<u32, 131081> = SField::new();
108pub const Expiration: SField<u32, 131082> = SField::new();
109pub const TransferRate: SField<u32, 131083> = SField::new();
110pub const WalletSize: SField<u32, 131084> = SField::new();
111pub const OwnerCount: SField<u32, 131085> = SField::new();
112pub const DestinationTag: SField<u32, 131086> = SField::new();
113pub const LastUpdateTime: SField<u32, 131087> = SField::new();
114pub const HighQualityIn: SField<u32, 131088> = SField::new();
115pub const HighQualityOut: SField<u32, 131089> = SField::new();
116pub const LowQualityIn: SField<u32, 131090> = SField::new();
117pub const LowQualityOut: SField<u32, 131091> = SField::new();
118pub const QualityIn: SField<u32, 131092> = SField::new();
119pub const QualityOut: SField<u32, 131093> = SField::new();
120pub const StampEscrow: SField<u32, 131094> = SField::new();
121pub const BondAmount: SField<u32, 131095> = SField::new();
122pub const LoadFee: SField<u32, 131096> = SField::new();
123pub const OfferSequence: SField<u32, 131097> = SField::new();
124pub const FirstLedgerSequence: SField<u32, 131098> = SField::new();
125pub const LastLedgerSequence: SField<u32, 131099> = SField::new();
126pub const TransactionIndex: SField<u32, 131100> = SField::new();
127pub const OperationLimit: SField<u32, 131101> = SField::new();
128pub const ReferenceFeeUnits: SField<u32, 131102> = SField::new();
129pub const ReserveBase: SField<u32, 131103> = SField::new();
130pub const ReserveIncrement: SField<u32, 131104> = SField::new();
131pub const SetFlag: SField<u32, 131105> = SField::new();
132pub const ClearFlag: SField<u32, 131106> = SField::new();
133pub const SignerQuorum: SField<u32, 131107> = SField::new();
134pub const CancelAfter: SField<u32, 131108> = SField::new();
135pub const FinishAfter: SField<u32, 131109> = SField::new();
136pub const SignerListID: SField<u32, 131110> = SField::new();
137pub const SettleDelay: SField<u32, 131111> = SField::new();
138pub const TicketCount: SField<u32, 131112> = SField::new();
139pub const TicketSequence: SField<u32, 131113> = SField::new();
140pub const NFTokenTaxon: SField<u32, 131114> = SField::new();
141pub const MintedNFTokens: SField<u32, 131115> = SField::new();
142pub const BurnedNFTokens: SField<u32, 131116> = SField::new();
143pub const HookStateCount: SField<u32, 131117> = SField::new();
144pub const EmitGeneration: SField<u32, 131118> = SField::new();
145pub const VoteWeight: SField<u32, 131120> = SField::new();
146pub const FirstNFTokenSequence: SField<u32, 131122> = SField::new();
147pub const OracleDocumentID: SField<u32, 131123> = SField::new();
148pub const PermissionValue: SField<u32, 131124> = SField::new();
149pub const MutableFlags: SField<u32, 131125> = SField::new();
150pub const StartDate: SField<u32, 131126> = SField::new();
151pub const PaymentInterval: SField<u32, 131127> = SField::new();
152pub const GracePeriod: SField<u32, 131128> = SField::new();
153pub const PreviousPaymentDueDate: SField<u32, 131129> = SField::new();
154pub const NextPaymentDueDate: SField<u32, 131130> = SField::new();
155pub const PaymentRemaining: SField<u32, 131131> = SField::new();
156pub const PaymentTotal: SField<u32, 131132> = SField::new();
157pub const LoanSequence: SField<u32, 131133> = SField::new();
158pub const CoverRateMinimum: SField<u32, 131134> = SField::new();
159pub const CoverRateLiquidation: SField<u32, 131135> = SField::new();
160pub const OverpaymentFee: SField<u32, 131136> = SField::new();
161pub const InterestRate: SField<u32, 131137> = SField::new();
162pub const LateInterestRate: SField<u32, 131138> = SField::new();
163pub const CloseInterestRate: SField<u32, 131139> = SField::new();
164pub const OverpaymentInterestRate: SField<u32, 131140> = SField::new();
165pub const ExtensionComputeLimit: SField<u32, 131141> = SField::new();
166pub const ExtensionSizeLimit: SField<u32, 131142> = SField::new();
167pub const GasPrice: SField<u32, 131143> = SField::new();
168pub const ComputationAllowance: SField<u32, 131144> = SField::new();
169pub const GasUsed: SField<u32, 131145> = SField::new();
170pub const IndexNext: SField<u64, 196609> = SField::new();
171pub const IndexPrevious: SField<u64, 196610> = SField::new();
172pub const BookNode: SField<u64, 196611> = SField::new();
173pub const OwnerNode: SField<u64, 196612> = SField::new();
174pub const BaseFee: SField<u64, 196613> = SField::new();
175pub const ExchangeRate: SField<u64, 196614> = SField::new();
176pub const LowNode: SField<u64, 196615> = SField::new();
177pub const HighNode: SField<u64, 196616> = SField::new();
178pub const DestinationNode: SField<u64, 196617> = SField::new();
179pub const Cookie: SField<u64, 196618> = SField::new();
180pub const ServerVersion: SField<u64, 196619> = SField::new();
181pub const NFTokenOfferNode: SField<u64, 196620> = SField::new();
182pub const EmitBurden: SField<u64, 196621> = SField::new();
183pub const HookOn: SField<u64, 196624> = SField::new();
184pub const HookInstructionCount: SField<u64, 196625> = SField::new();
185pub const HookReturnCode: SField<u64, 196626> = SField::new();
186pub const ReferenceCount: SField<u64, 196627> = SField::new();
187pub const XChainClaimID: SField<u64, 196628> = SField::new();
188pub const XChainAccountCreateCount: SField<u64, 196629> = SField::new();
189pub const XChainAccountClaimCount: SField<u64, 196630> = SField::new();
190pub const AssetPrice: SField<u64, 196631> = SField::new();
191pub const MaximumAmount: SField<u64, 196632> = SField::new();
192pub const OutstandingAmount: SField<u64, 196633> = SField::new();
193pub const MPTAmount: SField<u64, 196634> = SField::new();
194pub const IssuerNode: SField<u64, 196635> = SField::new();
195pub const SubjectNode: SField<u64, 196636> = SField::new();
196pub const LockedAmount: SField<u64, 196637> = SField::new();
197pub const VaultNode: SField<u64, 196638> = SField::new();
198pub const LoanBrokerNode: SField<u64, 196639> = SField::new();
199pub const EmailHash: SField<Hash128, 262145> = SField::new();
200pub const LedgerHash: SField<Hash256, 327681> = SField::new();
201pub const ParentHash: SField<Hash256, 327682> = SField::new();
202pub const TransactionHash: SField<Hash256, 327683> = SField::new();
203pub const AccountHash: SField<Hash256, 327684> = SField::new();
204pub const PreviousTxnID: SField<Hash256, 327685> = SField::new();
205pub const LedgerIndex: SField<Hash256, 327686> = SField::new();
206pub const WalletLocator: SField<Hash256, 327687> = SField::new();
207pub const RootIndex: SField<Hash256, 327688> = SField::new();
208pub const AccountTxnID: SField<Hash256, 327689> = SField::new();
209pub const NFTokenID: SField<Hash256, 327690> = SField::new();
210pub const EmitParentTxnID: SField<Hash256, 327691> = SField::new();
211pub const EmitNonce: SField<Hash256, 327692> = SField::new();
212pub const EmitHookHash: SField<Hash256, 327693> = SField::new();
213pub const AMMID: SField<Hash256, 327694> = SField::new();
214pub const BookDirectory: SField<Hash256, 327696> = SField::new();
215pub const InvoiceID: SField<Hash256, 327697> = SField::new();
216pub const Nickname: SField<Hash256, 327698> = SField::new();
217pub const Amendment: SField<Hash256, 327699> = SField::new();
218pub const Digest: SField<Hash256, 327701> = SField::new();
219pub const Channel: SField<Hash256, 327702> = SField::new();
220pub const ConsensusHash: SField<Hash256, 327703> = SField::new();
221pub const CheckID: SField<Hash256, 327704> = SField::new();
222pub const ValidatedHash: SField<Hash256, 327705> = SField::new();
223pub const PreviousPageMin: SField<Hash256, 327706> = SField::new();
224pub const NextPageMin: SField<Hash256, 327707> = SField::new();
225pub const NFTokenBuyOffer: SField<Hash256, 327708> = SField::new();
226pub const NFTokenSellOffer: SField<Hash256, 327709> = SField::new();
227pub const HookStateKey: SField<Hash256, 327710> = SField::new();
228pub const HookHash: SField<Hash256, 327711> = SField::new();
229pub const HookNamespace: SField<Hash256, 327712> = SField::new();
230pub const HookSetTxnID: SField<Hash256, 327713> = SField::new();
231pub const DomainID: SField<Hash256, 327714> = SField::new();
232pub const VaultID: SField<Hash256, 327715> = SField::new();
233pub const ParentBatchID: SField<Hash256, 327716> = SField::new();
234pub const LoanBrokerID: SField<Hash256, 327717> = SField::new();
235pub const LoanID: SField<Hash256, 327718> = SField::new();
236pub const Amount: SField<Amount, 393217> = SField::new();
237pub const Balance: SField<Amount, 393218> = SField::new();
238pub const LimitAmount: SField<Amount, 393219> = SField::new();
239pub const TakerPays: SField<Amount, 393220> = SField::new();
240pub const TakerGets: SField<Amount, 393221> = SField::new();
241pub const LowLimit: SField<Amount, 393222> = SField::new();
242pub const HighLimit: SField<Amount, 393223> = SField::new();
243pub const Fee: SField<Amount, 393224> = SField::new();
244pub const SendMax: SField<Amount, 393225> = SField::new();
245pub const DeliverMin: SField<Amount, 393226> = SField::new();
246pub const Amount2: SField<Amount, 393227> = SField::new();
247pub const BidMin: SField<Amount, 393228> = SField::new();
248pub const BidMax: SField<Amount, 393229> = SField::new();
249pub const MinimumOffer: SField<Amount, 393232> = SField::new();
250pub const RippleEscrow: SField<Amount, 393233> = SField::new();
251pub const DeliveredAmount: SField<Amount, 393234> = SField::new();
252pub const NFTokenBrokerFee: SField<Amount, 393235> = SField::new();
253pub const BaseFeeDrops: SField<Amount, 393238> = SField::new();
254pub const ReserveBaseDrops: SField<Amount, 393239> = SField::new();
255pub const ReserveIncrementDrops: SField<Amount, 393240> = SField::new();
256pub const LPTokenOut: SField<Amount, 393241> = SField::new();
257pub const LPTokenIn: SField<Amount, 393242> = SField::new();
258pub const EPrice: SField<Amount, 393243> = SField::new();
259pub const Price: SField<Amount, 393244> = SField::new();
260pub const SignatureReward: SField<Amount, 393245> = SField::new();
261pub const MinAccountCreateAmount: SField<Amount, 393246> = SField::new();
262pub const LPTokenBalance: SField<Amount, 393247> = SField::new();
263pub const PublicKey: SField<PublicKeyBlob, 458753> = SField::new();
264pub const MessageKey: SField<PublicKeyBlob, 458754> = SField::new();
265pub const SigningPubKey: SField<PublicKeyBlob, 458755> = SField::new();
266pub const TxnSignature: SField<SignatureBlob, 458756> = SField::new();
267pub const URI: SField<UriBlob, 458757> = SField::new();
268pub const Signature: SField<SignatureBlob, 458758> = SField::new();
269pub const Domain: SField<UriBlob, 458759> = SField::new();
270pub const FundCode: SField<StandardBlob, 458760> = SField::new();
271pub const RemoveCode: SField<StandardBlob, 458761> = SField::new();
272pub const ExpireCode: SField<StandardBlob, 458762> = SField::new();
273pub const CreateCode: SField<StandardBlob, 458763> = SField::new();
274pub const MemoType: SField<StandardBlob, 458764> = SField::new();
275pub const MemoData: SField<StandardBlob, 458765> = SField::new();
276pub const MemoFormat: SField<StandardBlob, 458766> = SField::new();
277pub const Fulfillment: SField<FulfillmentBlob, 458768> = SField::new();
278pub const Condition: SField<ConditionBlob, 458769> = SField::new();
279pub const MasterSignature: SField<StandardBlob, 458770> = SField::new();
280pub const UNLModifyValidator: SField<StandardBlob, 458771> = SField::new();
281pub const ValidatorToDisable: SField<StandardBlob, 458772> = SField::new();
282pub const ValidatorToReEnable: SField<StandardBlob, 458773> = SField::new();
283pub const HookStateData: SField<StandardBlob, 458774> = SField::new();
284pub const HookReturnString: SField<StandardBlob, 458775> = SField::new();
285pub const HookParameterName: SField<StandardBlob, 458776> = SField::new();
286pub const HookParameterValue: SField<StandardBlob, 458777> = SField::new();
287pub const DIDDocument: SField<StandardBlob, 458778> = SField::new();
288pub const Data: SField<StandardBlob, 458779> = SField::new();
289pub const AssetClass: SField<StandardBlob, 458780> = SField::new();
290pub const Provider: SField<StandardBlob, 458781> = SField::new();
291pub const MPTokenMetadata: SField<StandardBlob, 458782> = SField::new();
292pub const CredentialType: SField<StandardBlob, 458783> = SField::new();
293pub const FinishFunction: SField<WasmBlob, 458784> = SField::new();
294pub const Account: SField<AccountID, 524289> = SField::new();
295pub const Owner: SField<AccountID, 524290> = SField::new();
296pub const Destination: SField<AccountID, 524291> = SField::new();
297pub const Issuer: SField<AccountID, 524292> = SField::new();
298pub const Authorize: SField<AccountID, 524293> = SField::new();
299pub const Unauthorize: SField<AccountID, 524294> = SField::new();
300pub const RegularKey: SField<AccountID, 524296> = SField::new();
301pub const NFTokenMinter: SField<AccountID, 524297> = SField::new();
302pub const EmitCallback: SField<AccountID, 524298> = SField::new();
303pub const Holder: SField<AccountID, 524299> = SField::new();
304pub const Delegate: SField<AccountID, 524300> = SField::new();
305pub const HookAccount: SField<AccountID, 524304> = SField::new();
306pub const OtherChainSource: SField<AccountID, 524306> = SField::new();
307pub const OtherChainDestination: SField<AccountID, 524307> = SField::new();
308pub const AttestationSignerAccount: SField<AccountID, 524308> = SField::new();
309pub const AttestationRewardAccount: SField<AccountID, 524309> = SField::new();
310pub const LockingChainDoor: SField<AccountID, 524310> = SField::new();
311pub const IssuingChainDoor: SField<AccountID, 524311> = SField::new();
312pub const Subject: SField<AccountID, 524312> = SField::new();
313pub const Borrower: SField<AccountID, 524313> = SField::new();
314pub const Counterparty: SField<AccountID, 524314> = SField::new();
315pub const Number: SField<u8, 589825> = SField::new();
316pub const AssetsAvailable: SField<u8, 589826> = SField::new();
317pub const AssetsMaximum: SField<u8, 589827> = SField::new();
318pub const AssetsTotal: SField<u8, 589828> = SField::new();
319pub const LossUnrealized: SField<u8, 589829> = SField::new();
320pub const DebtTotal: SField<u8, 589830> = SField::new();
321pub const DebtMaximum: SField<u8, 589831> = SField::new();
322pub const CoverAvailable: SField<u8, 589832> = SField::new();
323pub const LoanOriginationFee: SField<u8, 589833> = SField::new();
324pub const LoanServiceFee: SField<u8, 589834> = SField::new();
325pub const LatePaymentFee: SField<u8, 589835> = SField::new();
326pub const ClosePaymentFee: SField<u8, 589836> = SField::new();
327pub const PrincipalOutstanding: SField<u8, 589837> = SField::new();
328pub const PrincipalRequested: SField<u8, 589838> = SField::new();
329pub const TotalValueOutstanding: SField<u8, 589839> = SField::new();
330pub const PeriodicPayment: SField<u8, 589840> = SField::new();
331pub const ManagementFeeOutstanding: SField<u8, 589841> = SField::new();
332pub const LoanScale: SField<u8, 655361> = SField::new();
333pub const WasmReturnCode: SField<u8, 655362> = SField::new();
334pub const TransactionMetaData: SField<Object, 917506> = SField::new();
335pub const CreatedNode: SField<Object, 917507> = SField::new();
336pub const DeletedNode: SField<Object, 917508> = SField::new();
337pub const ModifiedNode: SField<Object, 917509> = SField::new();
338pub const PreviousFields: SField<Object, 917510> = SField::new();
339pub const FinalFields: SField<Object, 917511> = SField::new();
340pub const NewFields: SField<Object, 917512> = SField::new();
341pub const TemplateEntry: SField<Object, 917513> = SField::new();
342pub const Memo: SField<Object, 917514> = SField::new();
343pub const SignerEntry: SField<Object, 917515> = SField::new();
344pub const NFToken: SField<Object, 917516> = SField::new();
345pub const EmitDetails: SField<Object, 917517> = SField::new();
346pub const Hook: SField<Object, 917518> = SField::new();
347pub const Permission: SField<Object, 917519> = SField::new();
348pub const Signer: SField<Object, 917520> = SField::new();
349pub const Majority: SField<Object, 917522> = SField::new();
350pub const DisabledValidator: SField<Object, 917523> = SField::new();
351pub const EmittedTxn: SField<Object, 917524> = SField::new();
352pub const HookExecution: SField<Object, 917525> = SField::new();
353pub const HookDefinition: SField<Object, 917526> = SField::new();
354pub const HookParameter: SField<Object, 917527> = SField::new();
355pub const HookGrant: SField<Object, 917528> = SField::new();
356pub const VoteEntry: SField<Object, 917529> = SField::new();
357pub const AuctionSlot: SField<Object, 917530> = SField::new();
358pub const AuthAccount: SField<Object, 917531> = SField::new();
359pub const XChainClaimProofSig: SField<Object, 917532> = SField::new();
360pub const XChainCreateAccountProofSig: SField<Object, 917533> = SField::new();
361pub const XChainClaimAttestationCollectionElement: SField<Object, 917534> = SField::new();
362pub const XChainCreateAccountAttestationCollectionElement: SField<Object, 917535> = SField::new();
363pub const PriceData: SField<Object, 917536> = SField::new();
364pub const Credential: SField<Object, 917537> = SField::new();
365pub const RawTransaction: SField<Object, 917538> = SField::new();
366pub const BatchSigner: SField<Object, 917539> = SField::new();
367pub const Book: SField<Object, 917540> = SField::new();
368pub const CounterpartySignature: SField<Object, 917541> = SField::new();
369pub const Signers: SField<Array, 983043> = SField::new();
370pub const SignerEntries: SField<Array, 983044> = SField::new();
371pub const Template: SField<Array, 983045> = SField::new();
372pub const Necessary: SField<Array, 983046> = SField::new();
373pub const Sufficient: SField<Array, 983047> = SField::new();
374pub const AffectedNodes: SField<Array, 983048> = SField::new();
375pub const Memos: SField<Array, 983049> = SField::new();
376pub const NFTokens: SField<Array, 983050> = SField::new();
377pub const Hooks: SField<Array, 983051> = SField::new();
378pub const VoteSlots: SField<Array, 983052> = SField::new();
379pub const AdditionalBooks: SField<Array, 983053> = SField::new();
380pub const Majorities: SField<Array, 983056> = SField::new();
381pub const DisabledValidators: SField<Array, 983057> = SField::new();
382pub const HookExecutions: SField<Array, 983058> = SField::new();
383pub const HookParameters: SField<Array, 983059> = SField::new();
384pub const HookGrants: SField<Array, 983060> = SField::new();
385pub const XChainClaimAttestations: SField<Array, 983061> = SField::new();
386pub const XChainCreateAccountAttestations: SField<Array, 983062> = SField::new();
387pub const PriceDataSeries: SField<Array, 983064> = SField::new();
388pub const AuthAccounts: SField<Array, 983065> = SField::new();
389pub const AuthorizeCredentials: SField<Array, 983066> = SField::new();
390pub const UnauthorizeCredentials: SField<Array, 983067> = SField::new();
391pub const AcceptedCredentials: SField<Array, 983068> = SField::new();
392pub const Permissions: SField<Array, 983069> = SField::new();
393pub const RawTransactions: SField<Array, 983070> = SField::new();
394pub const BatchSigners: SField<Array, 983071> = SField::new();
395pub const CloseResolution: SField<u8, 1048577> = SField::new();
396pub const Method: SField<u8, 1048578> = SField::new();
397pub const TransactionResult: SField<u8, 1048579> = SField::new();
398pub const Scale: SField<u8, 1048580> = SField::new();
399pub const AssetScale: SField<u8, 1048581> = SField::new();
400pub const TickSize: SField<u8, 1048592> = SField::new();
401pub const UNLModifyDisabling: SField<u8, 1048593> = SField::new();
402pub const HookResult: SField<u8, 1048594> = SField::new();
403pub const WasLockingChainSend: SField<u8, 1048595> = SField::new();
404pub const WithdrawalPolicy: SField<u8, 1048596> = SField::new();
405pub const TakerPaysCurrency: SField<Hash160, 1114113> = SField::new();
406pub const TakerPaysIssuer: SField<Hash160, 1114114> = SField::new();
407pub const TakerGetsCurrency: SField<Hash160, 1114115> = SField::new();
408pub const TakerGetsIssuer: SField<Hash160, 1114116> = SField::new();
409pub const Paths: SField<u8, 1179649> = SField::new();
410pub const Indexes: SField<u8, 1245185> = SField::new();
411pub const Hashes: SField<u8, 1245186> = SField::new();
412pub const Amendments: SField<u8, 1245187> = SField::new();
413pub const NFTokenOffers: SField<u8, 1245188> = SField::new();
414pub const CredentialIDs: SField<u8, 1245189> = SField::new();
415pub const MPTokenIssuanceID: SField<Hash192, 1376257> = SField::new();
416pub const ShareMPTID: SField<Hash192, 1376258> = SField::new();
417pub const LockingChainIssue: SField<Issue, 1572865> = SField::new();
418pub const IssuingChainIssue: SField<Issue, 1572866> = SField::new();
419pub const Asset: SField<Issue, 1572867> = SField::new();
420pub const Asset2: SField<Issue, 1572868> = SField::new();
421pub const XChainBridge: SField<u8, 1638401> = SField::new();
422pub const BaseAsset: SField<Currency, 1703937> = SField::new();
423pub const QuoteAsset: SField<Currency, 1703938> = SField::new();
424pub const Transaction: SField<u8, 655425793> = SField::new();
425pub const LedgerEntry: SField<u8, 655491329> = SField::new();
426pub const Validation: SField<u8, 655556865> = SField::new();
427pub const Metadata: SField<u8, 655622401> = SField::new();