SPB Git

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%
1.6 KB · 44 lines swift
Raw Blame History
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