spb/os-vault Public
Self-custody, multi-chain crypto wallet for macOS. One recovery phrase, six chain families, zero API keys — nothing leaves your Mac.
Swift 96%
Shell 3.4%
Makefile 0.6%
1import Foundation23public protocol TokenAccountLayoutState: BufferLayout {4 var mint: PublicKey { get }5 var owner: PublicKey { get }6 var lamports: UInt64 { get }7 var delegateOption: UInt32 { get }8 var delegate: PublicKey? { get set }9 var isInitialized: Bool { get }10 var isFrozen: Bool { get }11 var state: UInt8 { get }12 var isNativeOption: UInt32 { get }13 var rentExemptReserve: UInt64? { get }14 var isNativeRaw: UInt64 { get }15 var isNative: Bool { get }16 var delegatedAmount: UInt64 { get set }17 var closeAuthorityOption: UInt32 { get }18 var closeAuthority: PublicKey? { get set }19}2021extension TokenAccountLayoutState {22 func serializeCommonProperties(to writer: inout Data) throws {23 try mint.serialize(to: &writer)24 try owner.serialize(to: &writer)25 try lamports.serialize(to: &writer)26 try delegateOption.serialize(to: &writer)27 if let delegate = delegate {28 try delegate.serialize(to: &writer)29 } else {30 try PublicKey.NULL_PUBLICKEY_BYTES.forEach { try $0.serialize(to: &writer) }31 }32 try state.serialize(to: &writer)33 try isNativeOption.serialize(to: &writer)34 try isNativeRaw.serialize(to: &writer)35 try delegatedAmount.serialize(to: &writer)36 try closeAuthorityOption.serialize(to: &writer)37 if let closeAuthority = closeAuthority {38 try closeAuthority.serialize(to: &writer)39 } else {40 try PublicKey.NULL_PUBLICKEY_BYTES.forEach { try $0.serialize(to: &writer) }41 }42 }43}44