diff --git a/Cargo.lock b/Cargo.lock index 642b724..73a0b49 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -35,31 +35,22 @@ dependencies = [ ] [[package]] -name = "anchor-syn" -version = "0.29.0" +name = "anchor-lang-idl-spec" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9101b84702fed2ea57bd22992f75065da5648017135b844283a2f6d74f27825" +checksum = "2bdf143115440fe621bdac3a29a1f7472e09f6cd82b2aa569429a0c13f103838" dependencies = [ "anyhow", - "bs58 0.5.1", - "heck", - "proc-macro2", - "quote", "serde", - "serde_json", - "sha2 0.10.8", - "syn 1.0.109", - "thiserror", ] [[package]] name = "anchorpy_idl" version = "0.1.0" dependencies = [ - "anchor-syn", + "anchor-lang-idl-spec", "derive_more", "pyo3", - "pythonize", "serde", "serde_json", "solders-macros", @@ -415,15 +406,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" -[[package]] -name = "bs58" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" -dependencies = [ - "tinyvec", -] - [[package]] name = "bumpalo" version = "3.16.0" @@ -828,15 +810,6 @@ version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - [[package]] name = "hermit-abi" version = "0.1.19" @@ -1327,16 +1300,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "pythonize" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f7f0c136f5fbc01868185eef462800e49659eb23acca83b9e884367a006acb6" -dependencies = [ - "pyo3", - "serde", -] - [[package]] name = "qstring" version = "0.7.2" @@ -1691,7 +1654,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03ab2c30c15311b511c0d1151e4ab6bc9a3e080a37e7c6e7c2d96f5784cf9434" dependencies = [ "block-buffer 0.10.4", - "bs58 0.4.0", + "bs58", "bv", "either", "generic-array", @@ -1749,7 +1712,7 @@ dependencies = [ "borsh 0.10.4", "borsh 0.9.3", "borsh 1.5.1", - "bs58 0.4.0", + "bs58", "bv", "bytemuck", "cc", @@ -1798,7 +1761,7 @@ dependencies = [ "bincode", "bitflags", "borsh 1.5.1", - "bs58 0.4.0", + "bs58", "bytemuck", "byteorder", "chrono", @@ -1848,7 +1811,7 @@ version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b75d0f193a27719257af19144fdaebec0415d1c9e9226ae4bd29b791be5e9bd" dependencies = [ - "bs58 0.4.0", + "bs58", "proc-macro2", "quote", "rustversion", @@ -2043,12 +2006,6 @@ dependencies = [ "tinyvec", ] -[[package]] -name = "unicode-segmentation" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" - [[package]] name = "unindent" version = "0.1.11" diff --git a/Cargo.toml b/Cargo.toml index d67784e..9ed3821 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,11 +13,10 @@ name = "anchorpy_idl" crate-type = ["cdylib", "rlib"] [dependencies] +anchor-lang-idl-spec = "0.1.0" pyo3 = { version = "0.17.2", features = ["extension-module", "abi3-py37"] } solders-macros = "0.6.0" derive_more = "0.99.17" -anchor-syn = { version = "0.29.0", features = ["idl-types"] } serde = { version = "1.0.147", features = ["derive"] } solders-traits = "0.9.3" serde_json = "1.0.87" -pythonize = "0.17.0" diff --git a/python/anchorpy_idl/__init__.py b/python/anchorpy_idl/__init__.py index 9eb6947..c0d7990 100644 --- a/python/anchorpy_idl/__init__.py +++ b/python/anchorpy_idl/__init__.py @@ -4,22 +4,17 @@ IdlTypeOption, IdlTypeVec, IdlTypeArray, - IdlTypeGenericLenArray, IdlTypeGeneric, IdlDefinedTypeArg, - IdlTypeDefinedWithTypeArgs, IdlConst, IdlField, - IdlTypeDefinitionTyStruct, - IdlTypeDefinitionTyAlias, - EnumFieldsNamed, - EnumFieldsTuple, IdlEnumVariant, - IdlTypeDefinitionTyEnum, - IdlTypeDefinitionTy, - IdlTypeDefinition, + IdlTypeDef, + IdlTypeDefAlias, + IdlTypeDefEnum, + IdlTypeDefStruct, + IdlTypeDefTy, IdlAccountItem, - IdlAccounts, IdlSeedConst, IdlSeedArg, IdlSeedAccount, @@ -27,9 +22,7 @@ IdlPda, IdlAccount, IdlInstruction, - IdlState, IdlEvent, - IdlEventField, IdlErrorCode, Idl, IdlTypeCompound, @@ -44,23 +37,17 @@ "IdlTypeOption", "IdlTypeVec", "IdlTypeArray", - "IdlTypeGenericLenArray", "IdlTypeGeneric", "IdlDefinedTypeArg", - "IdlTypeDefinedWithTypeArgs", - "IdlTypeDefinedWithTypeArgs", "IdlConst", "IdlField", - "IdlTypeDefinitionTyStruct", - "IdlTypeDefinitionTyAlias", - "EnumFieldsNamed", - "EnumFieldsTuple", "IdlEnumVariant", - "IdlTypeDefinitionTyEnum", - "IdlTypeDefinitionTy", - "IdlTypeDefinition", + "IdlTypeDef", + "IdlTypeDefAlias", + "IdlTypeDefEnum", + "IdlTypeDefStruct", + "IdlTypeDefTy", "IdlAccountItem", - "IdlAccounts", "IdlSeedConst", "IdlSeedArg", "IdlSeedAccount", @@ -68,9 +55,7 @@ "IdlPda", "IdlAccount", "IdlInstruction", - "IdlState", "IdlEvent", - "IdlEventField", "IdlErrorCode", "Idl", "IdlTypeCompound", diff --git a/python/anchorpy_idl/__init__.pyi b/python/anchorpy_idl/__init__.pyi index 9276191..9a5c01c 100644 --- a/python/anchorpy_idl/__init__.pyi +++ b/python/anchorpy_idl/__init__.pyi @@ -19,7 +19,7 @@ class IdlTypeSimple: I256: "IdlTypeSimple" Bytes: "IdlTypeSimple" String: "IdlTypeSimple" - PublicKey: "IdlTypeSimple" + Pubkey: "IdlTypeSimple" def __int__(self) -> int: ... def __str__(self) -> str: ... def __repr__(self) -> str: ... @@ -167,33 +167,33 @@ class IdlField: @staticmethod def from_json(raw: str) -> "IdlField": ... -class IdlTypeDefinitionTyStruct: +class IdlTypeDefStruct: def __init__(self, fields: Sequence[IdlField]) -> None: ... @property def fields(self) -> List[IdlField]: ... def __bytes__(self) -> bytes: ... def __str__(self) -> str: ... def __repr__(self) -> str: ... - def __richcmp__(self, other: "IdlTypeDefinitionTyStruct", op: int) -> bool: ... + def __richcmp__(self, other: "IdlTypeDefStruct", op: int) -> bool: ... @staticmethod - def from_bytes(raw_bytes: bytes) -> "IdlTypeDefinitionTyStruct": ... + def from_bytes(raw_bytes: bytes) -> "IdlTypeDefStruct": ... def to_json(self) -> str: ... @staticmethod - def from_json(raw: str) -> "IdlTypeDefinitionTyStruct": ... + def from_json(raw: str) -> "IdlTypeDefStruct": ... -class IdlTypeDefinitionTyAlias: +class IdlTypeDefAlias: def __init__(self, value: IdlType) -> None: ... @property def value(self) -> IdlType: ... def __bytes__(self) -> bytes: ... def __str__(self) -> str: ... def __repr__(self) -> str: ... - def __richcmp__(self, other: "IdlTypeDefinitionTyAlias", op: int) -> bool: ... + def __richcmp__(self, other: "IdlTypeDefAlias", op: int) -> bool: ... @staticmethod - def from_bytes(raw_bytes: bytes) -> "IdlTypeDefinitionTyAlias": ... + def from_bytes(raw_bytes: bytes) -> "IdlTypeDefAlias": ... def to_json(self) -> str: ... @staticmethod - def from_json(raw: str) -> "IdlTypeDefinitionTyAlias": ... + def from_json(raw: str) -> "IdlTypeDefAlias": ... class EnumFieldsNamed: def __init__(self, fields: Sequence[IdlField]) -> None: ... @@ -239,45 +239,191 @@ class IdlEnumVariant: @staticmethod def from_json(raw: str) -> "IdlEnumVariant": ... -class IdlTypeDefinitionTyEnum: +class IdlTypeDefEnum: def __init__(self, variants: Sequence[IdlEnumVariant]) -> None: ... @property def variants(self) -> List[IdlEnumVariant]: ... def __bytes__(self) -> bytes: ... def __str__(self) -> str: ... def __repr__(self) -> str: ... - def __richcmp__(self, other: "IdlTypeDefinitionTyEnum", op: int) -> bool: ... + def __richcmp__(self, other: "IdlTypeDefEnum", op: int) -> bool: ... @staticmethod - def from_bytes(raw_bytes: bytes) -> "IdlTypeDefinitionTyEnum": ... + def from_bytes(raw_bytes: bytes) -> "IdlTypeDefEnum": ... def to_json(self) -> str: ... @staticmethod - def from_json(raw: str) -> "IdlTypeDefinitionTyEnum": ... + def from_json(raw: str) -> "IdlTypeDefEnum": ... -IdlTypeDefinitionTy = Union[ - IdlTypeDefinitionTyStruct, IdlTypeDefinitionTyEnum, IdlTypeDefinitionTyAlias -] +IdlTypeDefTy = Union[IdlTypeDefStruct, IdlTypeDefEnum, IdlTypeDefAlias] + +class IdlSerializationSimple: + Borsh: "IdlSerializationSimple" + Bytemuck: "IdlSerializationSimple" + BytemuckUnsafe: "IdlSerializationSimple" + def __int__(self) -> int: ... + def __str__(self) -> str: ... + def __repr__(self) -> str: ... + def __eq__(self, o: object) -> bool: ... + def __hash__(self) -> int: ... + +IdlSerialization = Union[IdlSerializationSimple, str] + +class IdlReprModifierRust: + def __init__(self, packed: bool, align: Optional[int]) -> None: ... + @property + def packed(self) -> bool: ... + @property + def align(self) -> Optional[int]: ... + def __bytes__(self) -> bytes: ... + def __str__(self) -> str: ... + def __repr__(self) -> str: ... + def __richcmp__(self, other: "IdlReprModifierRust", op: int) -> bool: ... + @staticmethod + def from_bytes(raw_bytes: bytes) -> "IdlReprModifierRust": ... + def to_json(self) -> str: ... + @staticmethod + def from_json(raw: str) -> "IdlReprModifierRust": ... + +class IdlReprModifierC: + def __init__(self, packed: bool, align: Optional[int]) -> None: ... + @property + def packed(self) -> bool: ... + @property + def align(self) -> Optional[int]: ... + def __bytes__(self) -> bytes: ... + def __str__(self) -> str: ... + def __repr__(self) -> str: ... + def __richcmp__(self, other: "IdlReprModifierC", op: int) -> bool: ... + @staticmethod + def from_bytes(raw_bytes: bytes) -> "IdlReprModifierC": ... + def to_json(self) -> str: ... + @staticmethod + def from_json(raw: str) -> "IdlReprModifierC": ... + +class IdlReprSimple: + Transparent: "IdlReprSimple" + def __int__(self) -> int: ... + def __str__(self) -> str: ... + def __repr__(self) -> str: ... + def __eq__(self, o: object) -> bool: ... + def __hash__(self) -> int: ... + +IdlRepr = Union[IdlReprModifierRust, IdlReprModifierC, IdlReprSimple] + +class IdlTypeDefGenericType: + def __init__(self, name: str) -> None: ... + @property + def name(self) -> str: ... + def __bytes__(self) -> bytes: ... + def __str__(self) -> str: ... + def __repr__(self) -> str: ... + def __richcmp__(self, other: "IdlTypeDefGenericType", op: int) -> bool: ... + @staticmethod + def from_bytes(raw_bytes: bytes) -> "IdlTypeDefGenericType": ... + def to_json(self) -> str: ... + @staticmethod + def from_json(raw: str) -> "IdlTypeDefGenericType": ... + +class IdlTypeDefGenericConst: + def __init__(self, name: str, ty: str) -> None: ... + @property + def name(self) -> str: ... + def __bytes__(self) -> bytes: ... + def __str__(self) -> str: ... + def __repr__(self) -> str: ... + def __richcmp__(self, other: "IdlTypeDefGenericConst", op: int) -> bool: ... + @staticmethod + def from_bytes(raw_bytes: bytes) -> "IdlTypeDefGenericConst": ... + def to_json(self) -> str: ... + @staticmethod + def from_json(raw: str) -> "IdlTypeDefGenericConst": ... + +IdlTypeDefGeneric = Union[IdlTypeDefGenericType, IdlTypeDefGenericConst] -class IdlTypeDefinition: +class IdlTypeDef: def __init__( - self, name: str, docs: Optional[Sequence[str]], ty: IdlTypeDefinitionTy + self, + name: str, + docs: Sequence[str], + serialization: IdlSerialization, + repr: Optional[IdlRepr], + generics: Sequence[IdlTypeDefGeneric], + ty: IdlTypeDefTy, ) -> None: ... @property def name(self) -> str: ... @property - def docs(self) -> Optional[List[str]]: ... + def docs(self) -> List[str]: ... + @property + def serialization(self) -> IdlSerialization: ... + @property + def repr(self) -> Optional[IdlRepr]: ... @property - def ty(self) -> IdlTypeDefinitionTy: ... + def generics(self) -> List[IdlTypeDefGeneric]: ... + @property + def ty(self) -> IdlTypeDefTy: ... def __bytes__(self) -> bytes: ... def __str__(self) -> str: ... def __repr__(self) -> str: ... - def __richcmp__(self, other: "IdlTypeDefinition", op: int) -> bool: ... + def __richcmp__(self, other: "IdlTypeDef", op: int) -> bool: ... @staticmethod - def from_bytes(raw_bytes: bytes) -> "IdlTypeDefinition": ... + def from_bytes(raw_bytes: bytes) -> "IdlTypeDef": ... def to_json(self) -> str: ... @staticmethod - def from_json(raw: str) -> "IdlTypeDefinition": ... + def from_json(raw: str) -> "IdlTypeDef": ... -IdlAccountItem = Union[IdlAccount, IdlAccounts] +class IdlInstructionAccounts: + def __init__(self, name: str, accounts: Sequence[IdlAccountItem]) -> None: ... + @property + def name(self) -> str: ... + @property + def accounts(self) -> List[IdlAccountItem]: ... + def __bytes__(self) -> bytes: ... + def __str__(self) -> str: ... + def __repr__(self) -> str: ... + def __richcmp__(self, other: "IdlInstructionAccounts", op: int) -> bool: ... + @staticmethod + def from_bytes(raw_bytes: bytes) -> "IdlInstructionAccounts": ... + def to_json(self) -> str: ... + @staticmethod + def from_json(raw: str) -> "IdlInstructionAccounts": ... + +class IdlInstructionAccount: + def __init__( + self, + name: str, + docs: Sequence[str], + writable: bool, + signer: bool, + optional: bool, + address: Optional[str], + pda: Optional[IdlPda], + relations: Sequence[str], + ) -> None: ... + @property + def name(self) -> str: ... + @property + def docs(self) -> List[str]: ... + @property + def writable(self) -> bool: ... + @property + def optional(self) -> bool: ... + @property + def address(self) -> Optional[str]: ... + @property + def pda(self) -> Optional[IdlPda]: ... + @property + def relations(self) -> List[str]: ... + def __bytes__(self) -> bytes: ... + def __str__(self) -> str: ... + def __repr__(self) -> str: ... + def __richcmp__(self, other: "IdlInstructionAccount", op: int) -> bool: ... + @staticmethod + def from_bytes(raw_bytes: bytes) -> "IdlInstructionAccount": ... + def to_json(self) -> str: ... + @staticmethod + def from_json(raw: str) -> "IdlInstructionAccount": ... + +IdlAccountItem = Union[IdlInstructionAccount, IdlInstructionAccounts] class IdlAccounts: def __init__(self, name: str, accounts: Sequence[IdlAccountItem]) -> None: ... @@ -296,13 +442,11 @@ class IdlAccounts: def from_json(raw: str) -> "IdlAccounts": ... class IdlSeedConst: - def __init__(self, ty: IdlType, value: Json) -> None: ... - @property - def ty(self) -> IdlType: ... + def __init__(self, value: Union[bytes, Sequence[int]]) -> None: ... @property def value( self, - ) -> Json: ... + ) -> List[int]: ... def __bytes__(self) -> bytes: ... def __str__(self) -> str: ... def __repr__(self) -> str: ... @@ -314,9 +458,7 @@ class IdlSeedConst: def from_json(raw: str) -> "IdlSeedConst": ... class IdlSeedArg: - def __init__(self, ty: IdlType, path: str) -> None: ... - @property - def ty(self) -> IdlType: ... + def __init__(self, path: str) -> None: ... @property def path(self) -> str: ... def __bytes__(self) -> bytes: ... @@ -330,9 +472,7 @@ class IdlSeedArg: def from_json(raw: str) -> "IdlSeedArg": ... class IdlSeedAccount: - def __init__(self, ty: IdlType, account: Optional[str], path: str) -> None: ... - @property - def ty(self) -> IdlType: ... + def __init__(self, account: Optional[str], path: str) -> None: ... @property def acount(self) -> Optional[str]: ... @property @@ -431,66 +571,112 @@ class IdlInstruction: @staticmethod def from_json(raw: str) -> "IdlInstruction": ... -class IdlState: +class IdlEvent: def __init__( - self, strct: IdlTypeDefinition, methods: Sequence[IdlInstruction] + self, name: str, discriminator: Union[bytes, Sequence[int]] ) -> None: ... @property - def strct(self) -> IdlTypeDefinition: ... + def name(self) -> str: ... @property - def methods(self) -> List[IdlInstruction]: ... + def discriminator(self) -> List[int]: ... def __bytes__(self) -> bytes: ... def __str__(self) -> str: ... def __repr__(self) -> str: ... - def __richcmp__(self, other: "IdlState", op: int) -> bool: ... + def __richcmp__(self, other: "IdlEvent", op: int) -> bool: ... @staticmethod - def from_bytes(raw_bytes: bytes) -> "IdlState": ... + def from_bytes(raw_bytes: bytes) -> "IdlEvent": ... def to_json(self) -> str: ... @staticmethod - def from_json(raw: str) -> "IdlState": ... + def from_json(raw: str) -> "IdlEvent": ... -class IdlEvent: - def __init__(self, name: str, fields: Sequence[IdlEventField]) -> None: ... +class IdlErrorCode: + def __init__(self, code: int, name: str, msg: Optional[str]) -> None: ... + @property + def code(self) -> int: ... @property def name(self) -> str: ... @property - def fields(self) -> List[IdlEventField]: ... + def msg(self) -> Optional[str]: ... def __bytes__(self) -> bytes: ... def __str__(self) -> str: ... def __repr__(self) -> str: ... - def __richcmp__(self, other: "IdlEvent", op: int) -> bool: ... + def __richcmp__(self, other: "IdlErrorCode", op: int) -> bool: ... @staticmethod - def from_bytes(raw_bytes: bytes) -> "IdlEvent": ... + def from_bytes(raw_bytes: bytes) -> "IdlErrorCode": ... def to_json(self) -> str: ... @staticmethod - def from_json(raw: str) -> "IdlEvent": ... + def from_json(raw: str) -> "IdlErrorCode": ... -class IdlEventField: - def __init__(self, name: str, ty: IdlType, index: bool) -> None: ... - @property - def name(self) -> str: ... +class IdlDependency: + def __init__(self, name: str, version: str) -> None: ... @property - def ty(self) -> IdlType: ... + def name(self) -> int: ... @property - def index(self) -> bool: ... + def version(self) -> str: ... def __bytes__(self) -> bytes: ... def __str__(self) -> str: ... def __repr__(self) -> str: ... - def __richcmp__(self, other: "IdlEventField", op: int) -> bool: ... + def __richcmp__(self, other: "IdlDependency", op: int) -> bool: ... @staticmethod - def from_bytes(raw_bytes: bytes) -> "IdlEventField": ... + def from_bytes(raw_bytes: bytes) -> "IdlDependency": ... def to_json(self) -> str: ... @staticmethod - def from_json(raw: str) -> "IdlEventField": ... + def from_json(raw: str) -> "IdlDependency": ... -class IdlErrorCode: - def __init__(self, code: int, name: str, msg: Optional[str]) -> None: ... +class IdlDeployments: + def __init__( + self, + mainnet: Optional[str], + testnet: Optional[str], + devnet: Optional[str], + localnet: Optional[str], + ) -> None: ... @property - def code(self) -> int: ... + def mainnet(self) -> Optional[str]: ... + @property + def testnet(self) -> Optional[str]: ... + @property + def devnet(self) -> Optional[str]: ... + @property + def localnet(self) -> Optional[str]: ... + def __bytes__(self) -> bytes: ... + def __str__(self) -> str: ... + def __repr__(self) -> str: ... + def __richcmp__(self, other: "IdlDeployments", op: int) -> bool: ... + @staticmethod + def from_bytes(raw_bytes: bytes) -> "IdlDeployments": ... + def to_json(self) -> str: ... + @staticmethod + def from_json(raw: str) -> "IdlDeployments": ... + +class IdlMetadata: + def __init__( + self, + name: str, + version: str, + spec: str, + description: Optional[str], + repository: Optional[str], + dependencies: Sequence[IdlDependency], + contact: Optional[str], + deployments: Optional[IdlDeployments], + ) -> None: ... @property def name(self) -> str: ... @property - def msg(self) -> Optional[str]: ... + def version(self) -> str: ... + @property + def spec(self) -> str: ... + @property + def description(self) -> Optional[str]: ... + @property + def repository(self) -> Optional[str]: ... + @property + def dependencies(self) -> List[IdlDependency]: ... + @property + def contact(self) -> Optional[str]: ... + @property + def deployments(self) -> Optional[IdlDeployments]: ... def __bytes__(self) -> bytes: ... def __str__(self) -> str: ... def __repr__(self) -> str: ... @@ -504,40 +690,34 @@ class IdlErrorCode: class Idl: def __init__( self, - version: str, - name: str, - docs: Optional[Sequence[str]], - constants: Sequence[IdlConst], + address: str, + metadata: IdlMetadata, + docs: Sequence[str], instructions: Sequence[IdlInstruction], - state: Optional[IdlState], - accounts: Sequence[IdlTypeDefinition], - types: Sequence[IdlTypeDefinition], + accounts: Sequence[IdlAccount], events: Optional[Sequence[IdlEvent]], errors: Optional[Sequence[IdlErrorCode]], - metadata: Json = None, + types: Sequence[IdlTypeDef], + constants: Sequence[IdlConst], ) -> None: ... @property - def version(self) -> str: ... + def address(self) -> str: ... @property - def name(self) -> str: ... - @property - def docs(self) -> Optional[List[str]]: ... + def metadata(self) -> IdlMetadata: ... @property - def constants(self) -> List[IdlConst]: ... + def docs(self) -> List[str]: ... @property def instructions(self) -> List[IdlInstruction]: ... @property - def state(self) -> Optional[IdlState]: ... - @property - def accounts(self) -> List[IdlTypeDefinition]: ... - @property - def types(self) -> List[IdlTypeDefinition]: ... + def accounts(self) -> List[IdlAccount]: ... @property def events(self) -> Optional[List[IdlEvent]]: ... @property def errors(self) -> Optional[List[IdlErrorCode]]: ... @property - def metadata(self) -> Json: ... + def types(self) -> List[IdlTypeDef]: ... + @property + def constants(self) -> List[IdlConst]: ... def __bytes__(self) -> bytes: ... def __str__(self) -> str: ... def __repr__(self) -> str: ... diff --git a/src/idl.rs b/src/idl.rs index 89748a7..9b88bc2 100644 --- a/src/idl.rs +++ b/src/idl.rs @@ -1,31 +1,21 @@ -use anchor_syn::idl as anchor_idl; +use anchor_lang_idl_spec as anchor_idl; use derive_more::{Display, From, Into}; -use pyo3::{exceptions::PyValueError, prelude::*}; -use pythonize::{depythonize, pythonize}; -use serde::{Deserialize, Serialize}; -use serde_json::Value; -use solders_macros::{common_methods, pyhash, richcmp_eq_only}; -use solders_traits::{ - CommonMethods, PyBytesBincode, PyBytesGeneral, PyFromBytesBincode, PyFromBytesGeneral, PyHash, - RichcmpEqualityOnly, -}; +use pyo3::prelude::*; +use serde::Deserialize; +use solders_macros::{pyhash, richcmp_eq_only}; +use solders_traits::{handle_py_value_err, PyHash, RichcmpEqualityOnly}; + +trait PyFromJson<'a>: Deserialize<'a> { + fn py_from_json(raw: &'a str) -> PyResult { + let res: serde_json::Result = serde_json::from_str(raw); + handle_py_value_err(res) + } +} macro_rules! struct_boilerplate { ($name:ident) => { - impl PyBytesBincode for $name {} - impl PyBytesGeneral for $name { - fn pybytes_general<'a>(&self, py: Python<'a>) -> &'a pyo3::types::PyBytes { - self.pybytes_bincode(py) - } - } - impl PyFromBytesBincode<'_> for $name {} - impl PyFromBytesGeneral for $name { - fn py_from_bytes_general(raw: &[u8]) -> PyResult { - Self::py_from_bytes_bincode(raw) - } - } impl RichcmpEqualityOnly for $name {} - impl CommonMethods<'_> for $name {} + impl PyFromJson<'_> for $name {} }; } @@ -45,16 +35,8 @@ macro_rules! iter_into { }; } -fn to_py_value_err(err: &impl ToString) -> PyErr { - PyValueError::new_err(err.to_string()) -} - -fn handle_py_value_err, E: ToString, P>(res: Result) -> PyResult

{ - res.map_or_else(|e| Err(to_py_value_err(&e)), |v| Ok(v.into())) -} - -#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Display, Hash)] -#[pyclass(module = "anchorpy_idl.idl")] +#[derive(Debug, Clone, PartialEq, Eq, Deserialize, Display, Hash)] +#[pyclass(module = "anchorpy_idl")] pub enum IdlTypeSimple { Bool, U8, @@ -73,10 +55,10 @@ pub enum IdlTypeSimple { I256, Bytes, String, - PublicKey, + Pubkey, } -impl From for anchor_idl::types::IdlType { +impl From for anchor_idl::IdlType { fn from(t: IdlTypeSimple) -> Self { match t { IdlTypeSimple::Bool => Self::Bool, @@ -96,7 +78,7 @@ impl From for anchor_idl::types::IdlType { IdlTypeSimple::I256 => Self::I256, IdlTypeSimple::Bytes => Self::Bytes, IdlTypeSimple::String => Self::String, - IdlTypeSimple::PublicKey => Self::PublicKey, + IdlTypeSimple::Pubkey => Self::Pubkey, } } } @@ -107,41 +89,48 @@ impl PyHash for IdlTypeSimple {} #[pymethods] impl IdlTypeSimple {} -#[derive(Debug, Clone, PartialEq, Eq, From, Into, Serialize, Deserialize, Hash, Display)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlTypeDefined(String); - -impl PyHash for IdlTypeDefined {} +#[derive(Debug, Clone, PartialEq, Eq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlTypeDefined { + #[serde(rename = "name")] + #[pyo3(get)] + name: String, + #[pyo3(get)] + generics: Vec, +} #[richcmp_eq_only] -#[common_methods] -#[pyhash] #[pymethods] impl IdlTypeDefined { - #[new] - pub fn new(defined: String) -> Self { - defined.into() + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) } - - #[getter] - pub fn defined(&self) -> String { - self.0.clone() + #[new] + pub fn new(name: String, generics: Vec) -> Self { + Self { + name: name, + generics, + } } } struct_boilerplate!(IdlTypeDefined); -#[derive(Debug, Clone, PartialEq, Eq, From, Into, Serialize, Deserialize, Hash, Display)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] +#[derive(Debug, Clone, PartialEq, Eq, From, Into, Deserialize, Hash, Display)] +#[pyclass(module = "anchorpy_idl", subclass)] pub struct IdlTypeGeneric(String); impl PyHash for IdlTypeGeneric {} #[richcmp_eq_only] -#[common_methods] #[pyhash] #[pymethods] impl IdlTypeGeneric { + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) + } #[new] pub fn new(generic: String) -> Self { generic.into() @@ -155,73 +144,18 @@ impl IdlTypeGeneric { struct_boilerplate!(IdlTypeGeneric); -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, FromPyObject)] -#[serde(rename_all = "camelCase")] -pub enum IdlDefinedTypeArg { - Generic(IdlTypeGeneric), - Value(String), - Type(IdlType), -} - -impl IntoPy for IdlDefinedTypeArg { - fn into_py(self, py: Python<'_>) -> PyObject { - match self { - Self::Generic(s) => s.into_py(py), - Self::Value(v) => v.into_py(py), - Self::Type(t) => t.into_py(py), - } - } -} - -impl From for anchor_idl::types::IdlDefinedTypeArg { - fn from(value: IdlDefinedTypeArg) -> Self { - match value { - IdlDefinedTypeArg::Generic(s) => Self::Generic(s.0), - IdlDefinedTypeArg::Value(s) => Self::Value(s), - IdlDefinedTypeArg::Type(t) => Self::Type(t.into()), - } - } -} - -impl From for IdlDefinedTypeArg { - fn from(value: anchor_idl::types::IdlDefinedTypeArg) -> Self { - match value { - anchor_idl::types::IdlDefinedTypeArg::Generic(s) => Self::Generic(IdlTypeGeneric(s)), - anchor_idl::types::IdlDefinedTypeArg::Value(s) => Self::Value(s), - anchor_idl::types::IdlDefinedTypeArg::Type(t) => Self::Type(t.into()), - } - } -} - -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlTypeDefinedWithTypeArgs { - #[pyo3(get)] - name: String, - #[pyo3(get)] - args: Vec, -} - -debug_display!(IdlTypeDefinedWithTypeArgs); - -#[pymethods] -impl IdlTypeDefinedWithTypeArgs { - #[new] - pub fn new(name: String, args: Vec) -> Self { - Self { name, args } - } -} - -struct_boilerplate!(IdlTypeDefinedWithTypeArgs); - -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize, Eq)] +#[pyclass(module = "anchorpy_idl", subclass)] pub struct IdlTypeOption(Box); debug_display!(IdlTypeOption); #[pymethods] impl IdlTypeOption { + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) + } #[new] pub fn new(option: IdlType) -> Self { Self(option.into()) @@ -235,12 +169,16 @@ impl IdlTypeOption { struct_boilerplate!(IdlTypeOption); -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize, Eq)] +#[pyclass(module = "anchorpy_idl", subclass)] pub struct IdlTypeVec(Box); #[pymethods] impl IdlTypeVec { + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) + } #[new] pub fn new(vec: IdlType) -> Self { Self(vec.into()) @@ -255,73 +193,141 @@ impl IdlTypeVec { struct_boilerplate!(IdlTypeVec); debug_display!(IdlTypeVec); -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlTypeArray(Box, usize); +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize, Eq)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlGenericArgType { + #[serde(rename = "type")] + #[pyo3(get)] + pub ty: IdlType, +} + +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize, Eq)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlGenericArgConst { + #[pyo3(get)] + pub value: String, +} + +#[derive(Debug, Clone, Deserialize, PartialEq, FromPyObject, Eq)] +#[serde(tag = "kind", rename_all = "lowercase")] +pub enum IdlGenericArg { + Type(IdlGenericArgType), + Const(IdlGenericArgConst), +} + +impl IntoPy for IdlGenericArg { + fn into_py(self, py: Python<'_>) -> PyObject { + match self { + Self::Type(s) => s.into_py(py), + Self::Const(v) => v.into_py(py), + } + } +} + +impl From for anchor_idl::IdlGenericArg { + fn from(value: IdlGenericArg) -> Self { + match value { + IdlGenericArg::Type(s) => Self::Type { ty: s.ty.into() }, + IdlGenericArg::Const(s) => Self::Const { + value: s.value.into(), + }, + } + } +} + +impl From for IdlGenericArg { + fn from(value: anchor_idl::IdlGenericArg) -> Self { + match value { + anchor_idl::IdlGenericArg::Type { ty } => { + Self::Type(IdlGenericArgType { ty: ty.into() }) + } + anchor_idl::IdlGenericArg::Const { value } => Self::Const(IdlGenericArgConst { + value: value.into(), + }), + } + } +} + +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize, Eq)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlTypeArray(Box, IdlArrayLen); #[pymethods] impl IdlTypeArray { + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) + } #[new] - pub fn new(array: (IdlType, usize)) -> Self { + pub fn new(array: (IdlType, IdlArrayLen)) -> Self { Self(array.0.into(), array.1) } #[getter] - pub fn array(&self) -> (IdlType, usize) { - (*self.0.clone(), self.1) + pub fn array(&self, py: Python<'_>) -> (IdlType, PyObject) { + (*self.0.clone(), self.clone().1.into_py(py)) } } struct_boilerplate!(IdlTypeArray); debug_display!(IdlTypeArray); -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlTypeGenericLenArray(Box, String); +#[derive(Debug, Clone, Deserialize, PartialEq, FromPyObject, Eq)] +#[serde(rename_all = "lowercase")] +pub enum IdlArrayLen { + Generic(String), + #[serde(untagged)] + Value(usize), +} -#[pymethods] -impl IdlTypeGenericLenArray { - #[new] - pub fn new(generic_len_array: (IdlType, String)) -> Self { - Self(generic_len_array.0.into(), generic_len_array.1) +impl IntoPy for IdlArrayLen { + fn into_py(self, py: Python<'_>) -> PyObject { + match self { + Self::Generic(s) => s.into_py(py), + Self::Value(v) => v.into_py(py), + } } +} - #[getter] - pub fn generic_len_array(&self) -> (IdlType, String) { - (*self.0.clone(), self.1.clone()) +impl From for anchor_idl::IdlArrayLen { + fn from(value: IdlArrayLen) -> Self { + match value { + IdlArrayLen::Generic(s) => Self::Generic(s), + IdlArrayLen::Value(s) => Self::Value(s), + } } } -struct_boilerplate!(IdlTypeGenericLenArray); -debug_display!(IdlTypeGenericLenArray); +impl From for IdlArrayLen { + fn from(value: anchor_idl::IdlArrayLen) -> Self { + match value { + anchor_idl::IdlArrayLen::Generic(s) => Self::Generic(s), + anchor_idl::IdlArrayLen::Value(s) => Self::Value(s), + } + } +} -#[derive(Debug, Clone, PartialEq, FromPyObject, Serialize, Deserialize)] +#[derive(Debug, Clone, PartialEq, FromPyObject, Deserialize, Eq)] #[serde(rename_all = "camelCase")] pub enum IdlTypeCompound { Defined(IdlTypeDefined), Option(IdlTypeOption), Vec(IdlTypeVec), Array(IdlTypeArray), - GenericLenArray(IdlTypeGenericLenArray), - Generic(IdlTypeGeneric), - DefinedWithTypeArgs(IdlTypeDefinedWithTypeArgs), + Generic(String), } -impl From for anchor_idl::types::IdlType { +impl From for anchor_idl::IdlType { fn from(t: IdlTypeCompound) -> Self { match t { - IdlTypeCompound::Defined(d) => Self::Defined(d.0), - IdlTypeCompound::Option(o) => Self::Option(Box::new(Self::from(*o.0))), - IdlTypeCompound::Vec(v) => Self::Vec(Box::new(Self::from(*v.0))), - IdlTypeCompound::Array(a) => Self::Array(Box::new(Self::from(*a.0)), a.1), - IdlTypeCompound::GenericLenArray(g) => { - Self::GenericLenArray(Box::new(Self::from(*g.0)), g.1) - } - IdlTypeCompound::Generic(g) => Self::Generic(g.0), - IdlTypeCompound::DefinedWithTypeArgs(d) => Self::DefinedWithTypeArgs { + IdlTypeCompound::Defined(d) => Self::Defined { name: d.name, - args: iter_into!(d.args), + generics: d.generics.into_iter().map(|x| x.into()).collect(), }, + IdlTypeCompound::Option(o) => Self::Option(Box::new(Self::from(*o.0))), + IdlTypeCompound::Vec(v) => Self::Vec(Box::new(Self::from(*v.0))), + IdlTypeCompound::Array(a) => Self::Array(Box::new(Self::from(*a.0)), a.1.into()), + IdlTypeCompound::Generic(g) => Self::Generic(g), } } } @@ -333,14 +339,12 @@ impl IntoPy for IdlTypeCompound { IdlTypeCompound::Option(x) => x.into_py(py), IdlTypeCompound::Vec(x) => x.into_py(py), IdlTypeCompound::Array(x) => x.into_py(py), - IdlTypeCompound::GenericLenArray(x) => x.into_py(py), IdlTypeCompound::Generic(x) => x.into_py(py), - IdlTypeCompound::DefinedWithTypeArgs(x) => x.into_py(py), } } } -#[derive(FromPyObject, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[derive(FromPyObject, Debug, Clone, PartialEq, Deserialize, Eq)] #[serde(untagged)] pub enum IdlType { Simple(IdlTypeSimple), @@ -356,58 +360,51 @@ impl IntoPy for IdlType { } } -impl From for IdlType { - fn from(t: anchor_idl::types::IdlType) -> Self { +impl From for IdlType { + fn from(t: anchor_idl::IdlType) -> Self { match t { - anchor_idl::types::IdlType::Bool => Self::Simple(IdlTypeSimple::Bool), - anchor_idl::types::IdlType::U8 => Self::Simple(IdlTypeSimple::U8), - anchor_idl::types::IdlType::I8 => Self::Simple(IdlTypeSimple::I8), - anchor_idl::types::IdlType::U16 => Self::Simple(IdlTypeSimple::U16), - anchor_idl::types::IdlType::I16 => Self::Simple(IdlTypeSimple::I16), - anchor_idl::types::IdlType::U32 => Self::Simple(IdlTypeSimple::U32), - anchor_idl::types::IdlType::I32 => Self::Simple(IdlTypeSimple::I32), - anchor_idl::types::IdlType::F32 => Self::Simple(IdlTypeSimple::F32), - anchor_idl::types::IdlType::U64 => Self::Simple(IdlTypeSimple::U64), - anchor_idl::types::IdlType::I64 => Self::Simple(IdlTypeSimple::I64), - anchor_idl::types::IdlType::F64 => Self::Simple(IdlTypeSimple::F64), - anchor_idl::types::IdlType::U128 => Self::Simple(IdlTypeSimple::U128), - anchor_idl::types::IdlType::I128 => Self::Simple(IdlTypeSimple::I128), - anchor_idl::types::IdlType::U256 => Self::Simple(IdlTypeSimple::U256), - anchor_idl::types::IdlType::I256 => Self::Simple(IdlTypeSimple::I256), - anchor_idl::types::IdlType::Bytes => Self::Simple(IdlTypeSimple::Bytes), - anchor_idl::types::IdlType::String => Self::Simple(IdlTypeSimple::String), - anchor_idl::types::IdlType::PublicKey => Self::Simple(IdlTypeSimple::PublicKey), - anchor_idl::types::IdlType::Defined(d) => { - Self::Compound(IdlTypeCompound::Defined(IdlTypeDefined(d))) + anchor_idl::IdlType::Bool => Self::Simple(IdlTypeSimple::Bool), + anchor_idl::IdlType::U8 => Self::Simple(IdlTypeSimple::U8), + anchor_idl::IdlType::I8 => Self::Simple(IdlTypeSimple::I8), + anchor_idl::IdlType::U16 => Self::Simple(IdlTypeSimple::U16), + anchor_idl::IdlType::I16 => Self::Simple(IdlTypeSimple::I16), + anchor_idl::IdlType::U32 => Self::Simple(IdlTypeSimple::U32), + anchor_idl::IdlType::I32 => Self::Simple(IdlTypeSimple::I32), + anchor_idl::IdlType::F32 => Self::Simple(IdlTypeSimple::F32), + anchor_idl::IdlType::U64 => Self::Simple(IdlTypeSimple::U64), + anchor_idl::IdlType::I64 => Self::Simple(IdlTypeSimple::I64), + anchor_idl::IdlType::F64 => Self::Simple(IdlTypeSimple::F64), + anchor_idl::IdlType::U128 => Self::Simple(IdlTypeSimple::U128), + anchor_idl::IdlType::I128 => Self::Simple(IdlTypeSimple::I128), + anchor_idl::IdlType::U256 => Self::Simple(IdlTypeSimple::U256), + anchor_idl::IdlType::I256 => Self::Simple(IdlTypeSimple::I256), + anchor_idl::IdlType::Bytes => Self::Simple(IdlTypeSimple::Bytes), + anchor_idl::IdlType::String => Self::Simple(IdlTypeSimple::String), + anchor_idl::IdlType::Pubkey => Self::Simple(IdlTypeSimple::Pubkey), + anchor_idl::IdlType::Defined { name, generics } => { + Self::Compound(IdlTypeCompound::Defined(IdlTypeDefined { + name, + generics: generics.into_iter().map(|x| x.into()).collect(), + })) } - anchor_idl::types::IdlType::Option(o) => Self::Compound(IdlTypeCompound::Option( + anchor_idl::IdlType::Option(o) => Self::Compound(IdlTypeCompound::Option( IdlTypeOption(Box::new(IdlType::from(*o))), )), - anchor_idl::types::IdlType::Vec(v) => Self::Compound(IdlTypeCompound::Vec(IdlTypeVec( + anchor_idl::IdlType::Vec(v) => Self::Compound(IdlTypeCompound::Vec(IdlTypeVec( Box::new(IdlType::from(*v)), ))), - anchor_idl::types::IdlType::Array(a, size) => Self::Compound(IdlTypeCompound::Array( - IdlTypeArray(Box::new(IdlType::from(*a)), size), + anchor_idl::IdlType::Array(a, size) => Self::Compound(IdlTypeCompound::Array( + IdlTypeArray(Box::new(IdlType::from(*a)), size.into()), )), - anchor_idl::types::IdlType::GenericLenArray(type_, generic) => { - Self::Compound(IdlTypeCompound::GenericLenArray(IdlTypeGenericLenArray( - Box::new(IdlType::from(*type_)), - generic, - ))) - } - anchor_idl::types::IdlType::Generic(g) => { - Self::Compound(IdlTypeCompound::Generic(IdlTypeGeneric(g))) - } - anchor_idl::types::IdlType::DefinedWithTypeArgs { name, args } => { - Self::Compound(IdlTypeCompound::DefinedWithTypeArgs( - IdlTypeDefinedWithTypeArgs::new(name, iter_into!(args)), - )) + anchor_idl::IdlType::Generic(g) => Self::Compound(IdlTypeCompound::Generic(g)), + _ => { + panic!("Unexpected IdlType variant: {t:?}"); } } } } -impl From for anchor_idl::types::IdlType { +impl From for anchor_idl::IdlType { fn from(t: IdlType) -> Self { match t { IdlType::Simple(s) => Self::from(s), @@ -416,20 +413,24 @@ impl From for anchor_idl::types::IdlType { } } -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlConst(anchor_idl::types::IdlConst); +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlConst(anchor_idl::IdlConst); #[richcmp_eq_only] -#[common_methods] #[pymethods] impl IdlConst { + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) + } #[new] - pub fn new(name: String, ty: IdlType, value: String) -> Self { - anchor_idl::types::IdlConst { + pub fn new(name: String, ty: IdlType, value: String, docs: Vec) -> Self { + anchor_idl::IdlConst { name, ty: ty.into(), value, + docs, } .into() } @@ -453,17 +454,20 @@ impl IdlConst { struct_boilerplate!(IdlConst); debug_display!(IdlConst); -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlField(anchor_idl::types::IdlField); +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlField(anchor_idl::IdlField); #[richcmp_eq_only] -#[common_methods] #[pymethods] impl IdlField { + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) + } #[new] - pub fn new(name: String, docs: Option>, ty: IdlType) -> Self { - anchor_idl::types::IdlField { + pub fn new(name: String, docs: Vec, ty: IdlType) -> Self { + anchor_idl::IdlField { name, docs, ty: ty.into(), @@ -477,7 +481,7 @@ impl IdlField { } #[getter] - pub fn docs(&self) -> Option> { + pub fn docs(&self) -> Vec { self.0.docs.clone() } @@ -490,58 +494,71 @@ impl IdlField { struct_boilerplate!(IdlField); debug_display!(IdlField); -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlTypeDefinitionTyStruct(Vec); +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlTypeDefStruct { + fields: Option, +} #[richcmp_eq_only] -#[common_methods] #[pymethods] -impl IdlTypeDefinitionTyStruct { +impl IdlTypeDefStruct { + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) + } #[new] - pub fn new(fields: Vec) -> Self { - fields.into() + pub fn new(fields: Option) -> Self { + Self { fields } } #[getter] - pub fn fields(&self) -> Vec { - self.0.clone() + pub fn fields(&self) -> Option { + self.fields.clone() } } -struct_boilerplate!(IdlTypeDefinitionTyStruct); -debug_display!(IdlTypeDefinitionTyStruct); +struct_boilerplate!(IdlTypeDefStruct); +debug_display!(IdlTypeDefStruct); -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlTypeDefinitionTyAlias(IdlType); +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlTypeDefAlias { + alias: IdlType, +} #[richcmp_eq_only] -#[common_methods] #[pymethods] -impl IdlTypeDefinitionTyAlias { +impl IdlTypeDefAlias { + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) + } #[new] - pub fn new(value: IdlType) -> Self { - Self(value) + pub fn new(alias: IdlType) -> Self { + Self { alias } } #[getter] - pub fn value(&self) -> IdlType { - self.0.clone() + pub fn alias(&self) -> IdlType { + self.alias.clone() } } -struct_boilerplate!(IdlTypeDefinitionTyAlias); -debug_display!(IdlTypeDefinitionTyAlias); +struct_boilerplate!(IdlTypeDefAlias); +debug_display!(IdlTypeDefAlias); -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct EnumFieldsNamed(Vec); +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlDefinedFieldsNamed(Vec); #[richcmp_eq_only] -#[common_methods] #[pymethods] -impl EnumFieldsNamed { +impl IdlDefinedFieldsNamed { + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) + } #[new] pub fn new(fields: Vec) -> Self { fields.into() @@ -553,17 +570,20 @@ impl EnumFieldsNamed { } } -struct_boilerplate!(EnumFieldsNamed); -debug_display!(EnumFieldsNamed); +struct_boilerplate!(IdlDefinedFieldsNamed); +debug_display!(IdlDefinedFieldsNamed); -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct EnumFieldsTuple(Vec); +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlDefinedFieldsTuple(Vec); #[richcmp_eq_only] -#[common_methods] #[pymethods] -impl EnumFieldsTuple { +impl IdlDefinedFieldsTuple { + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) + } #[new] pub fn new(fields: Vec) -> Self { fields.into() @@ -575,54 +595,61 @@ impl EnumFieldsTuple { } } -struct_boilerplate!(EnumFieldsTuple); -debug_display!(EnumFieldsTuple); +struct_boilerplate!(IdlDefinedFieldsTuple); +debug_display!(IdlDefinedFieldsTuple); -#[derive(Debug, Clone, PartialEq, FromPyObject, Serialize, Deserialize)] +#[derive(Debug, Clone, PartialEq, FromPyObject, Deserialize)] #[serde(untagged)] -pub enum EnumFields { - Named(EnumFieldsNamed), - Tuple(EnumFieldsTuple), +pub enum IdlDefinedFields { + Named(IdlDefinedFieldsNamed), + Tuple(IdlDefinedFieldsTuple), } -impl From for anchor_idl::types::EnumFields { - fn from(t: EnumFields) -> Self { +impl From for anchor_idl::IdlDefinedFields { + fn from(t: IdlDefinedFields) -> Self { match t { - EnumFields::Named(n) => Self::Named(iter_into!(n.0)), - EnumFields::Tuple(t) => Self::Tuple(iter_into!(t.0)), + IdlDefinedFields::Named(n) => Self::Named(iter_into!(n.0)), + IdlDefinedFields::Tuple(t) => Self::Tuple(iter_into!(t.0)), } } } -impl From for EnumFields { - fn from(t: anchor_idl::types::EnumFields) -> Self { +impl From for IdlDefinedFields { + fn from(t: anchor_idl::IdlDefinedFields) -> Self { match t { - anchor_idl::types::EnumFields::Named(n) => Self::Named(EnumFieldsNamed(iter_into!(n))), - anchor_idl::types::EnumFields::Tuple(t) => Self::Tuple(EnumFieldsTuple(iter_into!(t))), + anchor_idl::IdlDefinedFields::Named(n) => { + Self::Named(IdlDefinedFieldsNamed(iter_into!(n))) + } + anchor_idl::IdlDefinedFields::Tuple(t) => { + Self::Tuple(IdlDefinedFieldsTuple(iter_into!(t))) + } } } } -impl IntoPy for EnumFields { +impl IntoPy for IdlDefinedFields { fn into_py(self, py: Python<'_>) -> PyObject { match self { - EnumFields::Named(x) => x.into_py(py), - EnumFields::Tuple(x) => x.into_py(py), + IdlDefinedFields::Named(x) => x.into_py(py), + IdlDefinedFields::Tuple(x) => x.into_py(py), } } } -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlEnumVariant(anchor_idl::types::IdlEnumVariant); +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlEnumVariant(anchor_idl::IdlEnumVariant); #[richcmp_eq_only] -#[common_methods] #[pymethods] impl IdlEnumVariant { + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) + } #[new] - pub fn new(name: String, fields: Option) -> Self { - anchor_idl::types::IdlEnumVariant { + pub fn new(name: String, fields: Option) -> Self { + anchor_idl::IdlEnumVariant { name, fields: fields.map(|f| f.into()), } @@ -635,7 +662,7 @@ impl IdlEnumVariant { } #[getter] - pub fn fields(&self) -> Option { + pub fn fields(&self) -> Option { self.0.fields.clone().map(|f| f.into()) } } @@ -643,96 +670,386 @@ impl IdlEnumVariant { struct_boilerplate!(IdlEnumVariant); debug_display!(IdlEnumVariant); -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlTypeDefinitionTyEnum(Vec); +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlTypeDefEnum { + variants: Vec, +} #[richcmp_eq_only] -#[common_methods] #[pymethods] -impl IdlTypeDefinitionTyEnum { +impl IdlTypeDefEnum { + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) + } #[new] pub fn new(variants: Vec) -> Self { - variants.into() + Self { variants } } #[getter] pub fn variants(&self) -> Vec { - self.0.clone() + self.variants.clone() } } -struct_boilerplate!(IdlTypeDefinitionTyEnum); -debug_display!(IdlTypeDefinitionTyEnum); +struct_boilerplate!(IdlTypeDefEnum); +debug_display!(IdlTypeDefEnum); -#[derive(Debug, Clone, PartialEq, FromPyObject, Serialize, Deserialize)] +#[derive(Debug, Clone, PartialEq, FromPyObject, Deserialize)] #[serde(rename_all = "lowercase", tag = "kind")] -pub enum IdlTypeDefinitionTy { - Struct(IdlTypeDefinitionTyStruct), - Enum(IdlTypeDefinitionTyEnum), - Alias(IdlTypeDefinitionTyAlias), +pub enum IdlTypeDefTy { + Struct(IdlTypeDefStruct), + Enum(IdlTypeDefEnum), + Type(IdlTypeDefAlias), } -impl From for anchor_idl::types::IdlTypeDefinitionTy { - fn from(t: IdlTypeDefinitionTy) -> Self { +impl From for anchor_idl::IdlTypeDefTy { + fn from(t: IdlTypeDefTy) -> Self { match t { - IdlTypeDefinitionTy::Struct(s) => Self::Struct { - fields: iter_into!(s.0), + IdlTypeDefTy::Struct(s) => Self::Struct { + fields: s.fields.map(|x| x.into()), }, - IdlTypeDefinitionTy::Enum(e) => Self::Enum { - variants: iter_into!(e.0), + IdlTypeDefTy::Enum(e) => Self::Enum { + variants: e.variants.into_iter().map(|x| x.into()).collect(), }, - IdlTypeDefinitionTy::Alias(a) => Self::Alias { value: a.0.into() }, + IdlTypeDefTy::Type(a) => Self::Type { + alias: a.alias.into(), + }, + } + } +} + +impl From for IdlTypeDefTy { + fn from(t: anchor_idl::IdlTypeDefTy) -> Self { + match t { + anchor_idl::IdlTypeDefTy::Struct { fields } => Self::Struct(IdlTypeDefStruct { + fields: fields.map(|x| x.into()), + }), + anchor_idl::IdlTypeDefTy::Enum { variants } => Self::Enum(IdlTypeDefEnum { + variants: variants.into_iter().map(|x| x.into()).collect(), + }), + anchor_idl::IdlTypeDefTy::Type { alias } => Self::Type(IdlTypeDefAlias { + alias: alias.into(), + }), + } + } +} + +impl IntoPy for IdlTypeDefTy { + fn into_py(self, py: Python<'_>) -> PyObject { + match self { + IdlTypeDefTy::Struct(x) => x.into_py(py), + IdlTypeDefTy::Enum(x) => x.into_py(py), + IdlTypeDefTy::Type(x) => x.into_py(py), + } + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Deserialize, Display, Hash, Default)] +#[pyclass(module = "anchorpy_idl")] +pub enum IdlSerializationSimple { + #[default] + Borsh, + Bytemuck, + BytemuckUnsafe, +} + +impl From for anchor_idl::IdlSerialization { + fn from(value: IdlSerializationSimple) -> Self { + match value { + IdlSerializationSimple::Borsh => Self::Borsh, + IdlSerializationSimple::Bytemuck => Self::Bytemuck, + IdlSerializationSimple::BytemuckUnsafe => Self::BytemuckUnsafe, + } + } +} + +impl PyHash for IdlSerializationSimple {} + +#[pyhash] +#[pymethods] +impl IdlSerializationSimple {} + +#[derive(Debug, Clone, PartialEq, Eq, Deserialize, Display, Hash, FromPyObject)] +pub enum IdlSerializationCompound { + Custom(String), +} + +impl From for anchor_idl::IdlSerialization { + fn from(t: IdlSerializationCompound) -> Self { + match t { + IdlSerializationCompound::Custom(s) => Self::Custom(s), + } + } +} + +impl IntoPy for IdlSerializationCompound { + fn into_py(self, py: Python<'_>) -> PyObject { + match self { + IdlSerializationCompound::Custom(x) => x.into_py(py), + } + } +} + +#[derive(FromPyObject, Debug, Clone, PartialEq, Deserialize, Eq)] +#[serde(untagged)] +pub enum IdlSerialization { + Simple(IdlSerializationSimple), + Compound(IdlSerializationCompound), +} + +impl IntoPy for IdlSerialization { + fn into_py(self, py: Python<'_>) -> PyObject { + match self { + IdlSerialization::Simple(s) => s.into_py(py), + IdlSerialization::Compound(c) => c.into_py(py), + } + } +} + +impl From for anchor_idl::IdlSerialization { + fn from(t: IdlSerialization) -> Self { + match t { + IdlSerialization::Simple(s) => s.into(), + IdlSerialization::Compound(s) => s.into(), } } } -impl From for IdlTypeDefinitionTy { - fn from(t: anchor_idl::types::IdlTypeDefinitionTy) -> Self { +impl From for IdlSerialization { + fn from(t: anchor_idl::IdlSerialization) -> Self { match t { - anchor_idl::types::IdlTypeDefinitionTy::Struct { fields } => { - Self::Struct(IdlTypeDefinitionTyStruct(iter_into!(fields))) + anchor_idl::IdlSerialization::Borsh => Self::Simple(IdlSerializationSimple::Borsh), + anchor_idl::IdlSerialization::Bytemuck => { + Self::Simple(IdlSerializationSimple::Bytemuck) } - anchor_idl::types::IdlTypeDefinitionTy::Enum { variants } => { - Self::Enum(IdlTypeDefinitionTyEnum(iter_into!(variants))) + anchor_idl::IdlSerialization::BytemuckUnsafe => { + Self::Simple(IdlSerializationSimple::BytemuckUnsafe) } - anchor_idl::types::IdlTypeDefinitionTy::Alias { value } => { - Self::Alias(IdlTypeDefinitionTyAlias(value.into())) + anchor_idl::IdlSerialization::Custom(s) => { + Self::Compound(IdlSerializationCompound::Custom(s)) } + _ => { + panic!("Unexpected IdlSerialization variant: {t:?}"); + } + } + } +} + +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize, Eq)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlTypeDefGenericType { + #[pyo3(get)] + pub name: String, +} + +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize, Eq)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlTypeDefGenericConst { + #[serde(rename = "name")] + #[pyo3(get)] + name: String, + #[serde(rename = "type")] + #[pyo3(get)] + ty: String, +} + +#[derive(Debug, Clone, Deserialize, PartialEq, FromPyObject, Eq)] +#[serde(tag = "kind", rename_all = "lowercase")] +pub enum IdlTypeDefGeneric { + Type(IdlTypeDefGenericType), + Const(IdlTypeDefGenericConst), +} + +impl IntoPy for IdlTypeDefGeneric { + fn into_py(self, py: Python<'_>) -> PyObject { + match self { + Self::Type(s) => s.into_py(py), + Self::Const(v) => v.into_py(py), + } + } +} + +impl From for anchor_idl::IdlTypeDefGeneric { + fn from(value: IdlTypeDefGeneric) -> Self { + match value { + IdlTypeDefGeneric::Type(s) => Self::Type { name: s.name }, + IdlTypeDefGeneric::Const(s) => Self::Const { + name: s.name, + ty: s.ty, + }, + } + } +} + +impl From for IdlTypeDefGeneric { + fn from(value: anchor_idl::IdlTypeDefGeneric) -> Self { + match value { + anchor_idl::IdlTypeDefGeneric::Type { name } => { + Self::Type(IdlTypeDefGenericType { name }) + } + anchor_idl::IdlTypeDefGeneric::Const { name, ty } => { + Self::Const(IdlTypeDefGenericConst { name, ty }) + } + } + } +} + +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlReprModifierRust(anchor_idl::IdlReprModifier); + +#[pymethods] +impl IdlReprModifierRust { + #[new] + pub fn new(packed: bool, align: Option) -> Self { + Self(anchor_idl::IdlReprModifier { packed, align }) + } + + #[getter] + pub fn packed(&self) -> bool { + self.0.packed + } + + #[getter] + pub fn align(&self) -> Option { + self.0.align + } +} + +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlReprModifierC(anchor_idl::IdlReprModifier); + +#[pymethods] +impl IdlReprModifierC { + #[new] + pub fn new(packed: bool, align: Option) -> Self { + Self(anchor_idl::IdlReprModifier { packed, align }) + } + + #[getter] + pub fn packed(&self) -> bool { + self.0.packed + } + + #[getter] + pub fn align(&self) -> Option { + self.0.align + } +} + +#[derive(Debug, Clone, PartialEq, Eq, Deserialize, Display, Hash)] +#[pyclass(module = "anchorpy_idl")] +pub enum IdlReprSimple { + Transparent, +} + +impl From for anchor_idl::IdlRepr { + fn from(value: IdlReprSimple) -> Self { + match value { + IdlReprSimple::Transparent => Self::Transparent, + } + } +} + +impl PyHash for IdlReprSimple {} + +#[pyhash] +#[pymethods] +impl IdlReprSimple {} + +#[derive(Debug, Clone, PartialEq, Deserialize, FromPyObject)] +pub enum IdlReprCompound { + Rust(IdlReprModifierRust), + C(IdlReprModifierC), +} + +impl From for anchor_idl::IdlRepr { + fn from(t: IdlReprCompound) -> Self { + match t { + IdlReprCompound::Rust(x) => Self::Rust(x.0), + IdlReprCompound::C(x) => Self::C(x.0), + } + } +} + +impl IntoPy for IdlReprCompound { + fn into_py(self, py: Python<'_>) -> PyObject { + match self { + IdlReprCompound::Rust(x) => x.into_py(py), + IdlReprCompound::C(x) => x.into_py(py), } } } -impl IntoPy for IdlTypeDefinitionTy { +#[derive(Debug, Clone, Deserialize, PartialEq, FromPyObject)] +#[serde(tag = "kind", rename_all = "lowercase")] +pub enum IdlRepr { + Compound(IdlReprCompound), + Simple(IdlReprSimple), +} + +impl IntoPy for IdlRepr { fn into_py(self, py: Python<'_>) -> PyObject { match self { - IdlTypeDefinitionTy::Struct(x) => x.into_py(py), - IdlTypeDefinitionTy::Enum(x) => x.into_py(py), - IdlTypeDefinitionTy::Alias(x) => x.into_py(py), + Self::Compound(s) => s.into_py(py), + Self::Simple(v) => v.into_py(py), + } + } +} + +impl From for anchor_idl::IdlRepr { + fn from(value: IdlRepr) -> Self { + match value { + IdlRepr::Compound(s) => s.into(), + IdlRepr::Simple(s) => s.into(), + } + } +} + +impl From for IdlRepr { + fn from(value: anchor_idl::IdlRepr) -> Self { + match value { + anchor_idl::IdlRepr::Rust(x) => Self::Compound(IdlReprCompound::Rust(x.into())), + anchor_idl::IdlRepr::C(x) => Self::Compound(IdlReprCompound::C(x.into())), + anchor_idl::IdlRepr::Transparent => Self::Simple(IdlReprSimple::Transparent), + _ => { + panic!("Unexpected IdlRepr variant: {value:?}"); + } } } } -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlTypeDefinition(anchor_idl::types::IdlTypeDefinition); +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlTypeDef(anchor_idl::IdlTypeDef); #[richcmp_eq_only] -#[common_methods] #[pymethods] -impl IdlTypeDefinition { +impl IdlTypeDef { + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) + } #[new] pub fn new( name: String, - docs: Option>, - ty: IdlTypeDefinitionTy, - generics: Option>, + docs: Vec, + serialization: IdlSerialization, + repr: Option, + generics: Vec, + ty: IdlTypeDefTy, ) -> Self { - anchor_idl::types::IdlTypeDefinition { + anchor_idl::IdlTypeDef { name, docs, + serialization: serialization.into(), + repr: repr.map(|x| x.into()), + generics: generics.into_iter().map(|x| x.into()).collect(), ty: ty.into(), - generics, } .into() } @@ -743,64 +1060,82 @@ impl IdlTypeDefinition { } #[getter] - pub fn docs(&self) -> Option> { + pub fn docs(&self) -> Vec { self.0.docs.clone() } #[getter] - pub fn ty(&self) -> IdlTypeDefinitionTy { + pub fn serialization(&self) -> IdlSerialization { + self.0.serialization.clone().into() + } + + #[getter] + pub fn generics(&self) -> Vec { + self.0 + .generics + .clone() + .into_iter() + .map(|x| x.into()) + .collect() + } + + #[getter] + pub fn ty(&self) -> IdlTypeDefTy { self.0.ty.clone().into() } } -struct_boilerplate!(IdlTypeDefinition); -debug_display!(IdlTypeDefinition); +struct_boilerplate!(IdlTypeDef); +debug_display!(IdlTypeDef); -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, FromPyObject)] +#[derive(Debug, Clone, Deserialize, PartialEq, FromPyObject)] #[serde(untagged)] -pub enum IdlAccountItem { - IdlAccount(IdlAccount), - IdlAccounts(IdlAccounts), +pub enum IdlInstructionAccountItem { + Composite(IdlInstructionAccounts), + Single(IdlInstructionAccount), } -impl From for anchor_idl::types::IdlAccountItem { - fn from(a: IdlAccountItem) -> Self { +impl From for anchor_idl::IdlInstructionAccountItem { + fn from(a: IdlInstructionAccountItem) -> Self { match a { - IdlAccountItem::IdlAccount(x) => Self::IdlAccount(x.into()), - IdlAccountItem::IdlAccounts(x) => Self::IdlAccounts(x.into()), + IdlInstructionAccountItem::Single(x) => Self::Single(x.into()), + IdlInstructionAccountItem::Composite(x) => Self::Composite(x.into()), } } } -impl From for IdlAccountItem { - fn from(a: anchor_idl::types::IdlAccountItem) -> Self { +impl From for IdlInstructionAccountItem { + fn from(a: anchor_idl::IdlInstructionAccountItem) -> Self { match a { - anchor_idl::types::IdlAccountItem::IdlAccount(x) => Self::IdlAccount(x.into()), - anchor_idl::types::IdlAccountItem::IdlAccounts(x) => Self::IdlAccounts(x.into()), + anchor_idl::IdlInstructionAccountItem::Single(x) => Self::Single(x.into()), + anchor_idl::IdlInstructionAccountItem::Composite(x) => Self::Composite(x.into()), } } } -impl IntoPy for IdlAccountItem { +impl IntoPy for IdlInstructionAccountItem { fn into_py(self, py: Python<'_>) -> PyObject { match self { - IdlAccountItem::IdlAccount(x) => x.into_py(py), - IdlAccountItem::IdlAccounts(x) => x.into_py(py), + IdlInstructionAccountItem::Single(x) => x.into_py(py), + IdlInstructionAccountItem::Composite(x) => x.into_py(py), } } } -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlAccounts(anchor_idl::types::IdlAccounts); +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlInstructionAccounts(anchor_idl::IdlInstructionAccounts); #[richcmp_eq_only] -#[common_methods] #[pymethods] -impl IdlAccounts { +impl IdlInstructionAccounts { + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) + } #[new] - pub fn new(name: String, accounts: Vec) -> Self { - anchor_idl::types::IdlAccounts { + pub fn new(name: String, accounts: Vec) -> Self { + anchor_idl::IdlInstructionAccounts { name, accounts: iter_into!(accounts), } @@ -813,66 +1148,52 @@ impl IdlAccounts { } #[getter] - pub fn accounts(&self) -> Vec { + pub fn accounts(&self) -> Vec { iter_into!(self.0.accounts.clone()) } } -struct_boilerplate!(IdlAccounts); -debug_display!(IdlAccounts); +struct_boilerplate!(IdlInstructionAccounts); +debug_display!(IdlInstructionAccounts); -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlSeedConst(anchor_idl::types::IdlSeedConst); +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlSeedConst(anchor_idl::IdlSeedConst); -#[richcmp_eq_only] -#[common_methods] #[pymethods] impl IdlSeedConst { - #[new] - pub fn new(ty: IdlType, value: &PyAny) -> PyResult { - let parsed_val = handle_py_value_err(depythonize::(value))?; - Ok(anchor_idl::types::IdlSeedConst { - ty: ty.into(), - value: parsed_val, - } - .into()) + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) } - - #[getter] - pub fn ty(&self) -> IdlType { - self.0.ty.clone().into() + #[new] + pub fn new(value: Vec) -> Self { + Self(anchor_idl::IdlSeedConst { value }) } #[getter] - pub fn value(&self, py: Python<'_>) -> PyResult { - handle_py_value_err(pythonize(py, &self.0.value)) + pub fn value(&self) -> Vec { + self.0.value.clone() } } struct_boilerplate!(IdlSeedConst); debug_display!(IdlSeedConst); -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlSeedArg(anchor_idl::types::IdlSeedArg); +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlSeedArg(anchor_idl::IdlSeedArg); #[richcmp_eq_only] -#[common_methods] #[pymethods] impl IdlSeedArg { - #[new] - pub fn new(ty: IdlType, path: String) -> Self { - anchor_idl::types::IdlSeedArg { - ty: ty.into(), - path, - } - .into() + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) } - - #[getter] - pub fn ty(&self) -> IdlType { - self.0.ty.clone().into() + #[new] + pub fn new(path: String) -> Self { + anchor_idl::IdlSeedArg { path }.into() } #[getter] @@ -884,27 +1205,20 @@ impl IdlSeedArg { struct_boilerplate!(IdlSeedArg); debug_display!(IdlSeedArg); -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlSeedAccount(anchor_idl::types::IdlSeedAccount); +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlSeedAccount(anchor_idl::IdlSeedAccount); #[richcmp_eq_only] -#[common_methods] #[pymethods] impl IdlSeedAccount { - #[new] - pub fn new(ty: IdlType, account: Option, path: String) -> Self { - anchor_idl::types::IdlSeedAccount { - ty: ty.into(), - account, - path, - } - .into() + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) } - - #[getter] - pub fn ty(&self) -> IdlType { - self.0.ty.clone().into() + #[new] + pub fn new(account: Option, path: String) -> Self { + anchor_idl::IdlSeedAccount { account, path }.into() } #[getter] @@ -921,7 +1235,7 @@ impl IdlSeedAccount { struct_boilerplate!(IdlSeedAccount); debug_display!(IdlSeedAccount); -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, FromPyObject)] +#[derive(Debug, Clone, Deserialize, PartialEq, FromPyObject)] #[serde(rename_all = "camelCase", tag = "kind")] pub enum IdlSeed { Const(IdlSeedConst), @@ -929,7 +1243,7 @@ pub enum IdlSeed { Account(IdlSeedAccount), } -impl From for anchor_idl::types::IdlSeed { +impl From for anchor_idl::IdlSeed { fn from(s: IdlSeed) -> Self { match s { IdlSeed::Const(x) => Self::Const(x.into()), @@ -939,12 +1253,12 @@ impl From for anchor_idl::types::IdlSeed { } } -impl From for IdlSeed { - fn from(s: anchor_idl::types::IdlSeed) -> Self { +impl From for IdlSeed { + fn from(s: anchor_idl::IdlSeed) -> Self { match s { - anchor_idl::types::IdlSeed::Const(x) => Self::Const(x.into()), - anchor_idl::types::IdlSeed::Arg(x) => Self::Arg(x.into()), - anchor_idl::types::IdlSeed::Account(x) => Self::Account(x.into()), + anchor_idl::IdlSeed::Const(x) => Self::Const(x.into()), + anchor_idl::IdlSeed::Arg(x) => Self::Arg(x.into()), + anchor_idl::IdlSeed::Account(x) => Self::Account(x.into()), } } } @@ -959,19 +1273,22 @@ impl IntoPy for IdlSeed { } } -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlPda(anchor_idl::types::IdlPda); +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlPda(anchor_idl::IdlPda); #[richcmp_eq_only] -#[common_methods] #[pymethods] impl IdlPda { + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) + } #[new] - pub fn new(seeds: Vec, program_id: Option) -> Self { - anchor_idl::types::IdlPda { + pub fn new(seeds: Vec, program: Option) -> Self { + anchor_idl::IdlPda { seeds: iter_into!(seeds), - program_id: program_id.map(|x| x.into()), + program: program.map(|x| x.into()), } .into() } @@ -982,37 +1299,42 @@ impl IdlPda { } #[getter] - pub fn program_id(&self) -> Option { - self.0.program_id.clone().map(|x| x.into()) + pub fn program(&self) -> Option { + self.0.program.clone().map(|x| x.into()) } } struct_boilerplate!(IdlPda); debug_display!(IdlPda); -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlAccount(anchor_idl::types::IdlAccount); +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlInstructionAccount(anchor_idl::IdlInstructionAccount); #[richcmp_eq_only] -#[common_methods] #[pymethods] -impl IdlAccount { +impl IdlInstructionAccount { + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) + } #[new] pub fn new( name: String, - is_mut: bool, - is_signer: bool, - is_optional: Option, - docs: Option>, + docs: Vec, + writable: bool, + signer: bool, + optional: bool, + address: Option, pda: Option, relations: Vec, ) -> Self { - anchor_idl::types::IdlAccount { + anchor_idl::IdlInstructionAccount { name, - is_mut, - is_signer, - is_optional, + writable, + signer, + optional, + address, docs, pda: pda.map(|x| x.into()), relations, @@ -1026,25 +1348,30 @@ impl IdlAccount { } #[getter] - pub fn is_mut(&self) -> bool { - self.0.is_mut + pub fn writable(&self) -> bool { + self.0.writable } #[getter] - pub fn is_signer(&self) -> bool { - self.0.is_signer + pub fn signer(&self) -> bool { + self.0.signer } #[getter] - pub fn is_optional(&self) -> Option { - self.0.is_optional + pub fn optional(&self) -> bool { + self.0.optional } #[getter] - pub fn docs(&self) -> Option> { + pub fn docs(&self) -> Vec { self.0.docs.clone() } + #[getter] + pub fn address(&self) -> Option { + self.0.address.clone() + } + #[getter] pub fn pda(&self) -> Option { self.0.pda.clone().map(|x| x.into()) @@ -1056,28 +1383,33 @@ impl IdlAccount { } } -struct_boilerplate!(IdlAccount); -debug_display!(IdlAccount); +struct_boilerplate!(IdlInstructionAccount); +debug_display!(IdlInstructionAccount); -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlInstruction(anchor_idl::types::IdlInstruction); +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlInstruction(anchor_idl::IdlInstruction); #[richcmp_eq_only] -#[common_methods] #[pymethods] impl IdlInstruction { + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) + } #[new] pub fn new( name: String, - docs: Option>, - accounts: Vec, + docs: Vec, + discriminator: Vec, + accounts: Vec, args: Vec, returns: Option, ) -> Self { - anchor_idl::types::IdlInstruction { + anchor_idl::IdlInstruction { name, docs, + discriminator, accounts: iter_into!(accounts), args: iter_into!(args), returns: returns.map(|x| x.into()), @@ -1091,12 +1423,17 @@ impl IdlInstruction { } #[getter] - pub fn docs(&self) -> Option> { + pub fn docs(&self) -> Vec { self.0.docs.clone() } #[getter] - pub fn accounts(&self) -> Vec { + pub fn discriminator(&self) -> Vec { + self.0.discriminator.clone() + } + + #[getter] + pub fn accounts(&self) -> Vec { iter_into!(self.0.accounts.clone()) } @@ -1113,53 +1450,59 @@ impl IdlInstruction { struct_boilerplate!(IdlInstruction); debug_display!(IdlInstruction); - -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlState(anchor_idl::types::IdlState); +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlEvent(anchor_idl::IdlEvent); #[richcmp_eq_only] -#[common_methods] #[pymethods] -impl IdlState { +impl IdlEvent { + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) + } #[new] - pub fn new(strct: IdlTypeDefinition, methods: Vec) -> Self { - anchor_idl::types::IdlState { - strct: strct.into(), - methods: iter_into!(methods), + pub fn new(name: String, discriminator: Vec) -> Self { + anchor_idl::IdlEvent { + name, + discriminator, } .into() } #[getter] - pub fn strct(&self) -> IdlTypeDefinition { - self.0.strct.clone().into() + pub fn name(&self) -> String { + self.0.name.clone() } #[getter] - pub fn methods(&self) -> Vec { - iter_into!(self.0.methods.clone()) + pub fn discriminator(&self) -> Vec { + self.0.discriminator.clone() } } -struct_boilerplate!(IdlState); -debug_display!(IdlState); +struct_boilerplate!(IdlEvent); +debug_display!(IdlEvent); -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlEvent(anchor_idl::types::IdlEvent); +#[derive(Debug, Clone, PartialEq, Eq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlErrorCode(anchor_idl::IdlErrorCode); #[richcmp_eq_only] -#[common_methods] #[pymethods] -impl IdlEvent { +impl IdlErrorCode { + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) + } #[new] - pub fn new(name: String, fields: Vec) -> Self { - anchor_idl::types::IdlEvent { - name, - fields: iter_into!(fields), - } - .into() + pub fn new(code: u32, name: String, msg: Option) -> Self { + anchor_idl::IdlErrorCode { code, name, msg }.into() + } + + #[getter] + pub fn code(&self) -> u32 { + self.0.code } #[getter] @@ -1168,67 +1511,151 @@ impl IdlEvent { } #[getter] - pub fn fields(&self) -> Vec { - iter_into!(self.0.fields.clone()) + pub fn msg(&self) -> Option { + self.0.msg.clone() } } -struct_boilerplate!(IdlEvent); -debug_display!(IdlEvent); +struct_boilerplate!(IdlErrorCode); +debug_display!(IdlErrorCode); -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlEventField(anchor_idl::types::IdlEventField); +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct Idl(anchor_idl::Idl); -#[richcmp_eq_only] -#[common_methods] #[pymethods] -impl IdlEventField { +impl Idl { + #[allow(clippy::too_many_arguments)] #[new] - pub fn new(name: String, ty: IdlType, index: bool) -> Self { - anchor_idl::types::IdlEventField { - name, - ty: ty.into(), - index, - } - .into() + pub fn new( + address: String, + metadata: IdlMetadata, + docs: Vec, + instructions: Vec, + accounts: Vec, + events: Vec, + errors: Vec, + types: Vec, + constants: Vec, + ) -> Self { + Self(anchor_idl::Idl { + address, + metadata: metadata.0, + docs, + instructions: iter_into!(instructions), + accounts: iter_into!(accounts), + events: iter_into!(events), + errors: iter_into!(errors), + types: iter_into!(types), + constants: iter_into!(constants), + }) } #[getter] - pub fn name(&self) -> String { - self.0.name.clone() + pub fn address(&self) -> String { + self.0.address.clone() } - #[getter] - pub fn ty(&self) -> IdlType { - self.0.ty.clone().into() + pub fn metadata(&self) -> IdlMetadata { + self.0.metadata.clone().into() + } + #[getter] + pub fn docs(&self) -> Vec { + self.0.docs.clone() + } + #[getter] + pub fn instructions(&self) -> Vec { + iter_into!(self.0.instructions.clone()) + } + #[getter] + pub fn accounts(&self) -> Vec { + iter_into!(self.0.accounts.clone()) + } + #[getter] + pub fn events(&self) -> Vec { + iter_into!(self.0.events.clone()) + } + #[getter] + pub fn errors(&self) -> Vec { + iter_into!(self.0.errors.clone()) } - #[getter] - pub fn index(&self) -> bool { - self.0.index + pub fn types(&self) -> Vec { + iter_into!(self.0.types.clone()) + } + #[getter] + pub fn constants(&self) -> Vec { + iter_into!(self.0.constants.clone()) + } + + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) } } -struct_boilerplate!(IdlEventField); -debug_display!(IdlEventField); +struct_boilerplate!(Idl); +debug_display!(Idl); -#[derive(Debug, Clone, PartialEq, Eq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct IdlErrorCode(anchor_idl::types::IdlErrorCode); +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlDeployments(anchor_idl::IdlDeployments); -#[richcmp_eq_only] -#[common_methods] #[pymethods] -impl IdlErrorCode { +impl IdlDeployments { #[new] - pub fn new(code: u32, name: String, msg: Option) -> Self { - anchor_idl::types::IdlErrorCode { code, name, msg }.into() + pub fn new( + mainnet: Option, + testnet: Option, + devnet: Option, + localnet: Option, + ) -> Self { + Self(anchor_idl::IdlDeployments { + mainnet, + testnet, + devnet, + localnet, + }) } #[getter] - pub fn code(&self) -> u32 { - self.0.code + pub fn mainnet(&self) -> Option { + self.0.mainnet.clone() + } + + #[getter] + pub fn testnet(&self) -> Option { + self.0.testnet.clone() + } + + #[getter] + pub fn devnet(&self) -> Option { + self.0.devnet.clone() + } + + #[getter] + pub fn localnet(&self) -> Option { + self.0.localnet.clone() + } + + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) + } +} + +struct_boilerplate!(IdlDeployments); +debug_display!(IdlDeployments); + +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlDependency(anchor_idl::IdlDependency); + +#[pymethods] +impl IdlDependency { + #[new] + pub fn new(name: String, version: String) -> Self { + Self(anchor_idl::IdlDependency { name, version }) } #[getter] @@ -1237,93 +1664,130 @@ impl IdlErrorCode { } #[getter] - pub fn msg(&self) -> Option { - self.0.msg.clone() + pub fn version(&self) -> String { + self.0.version.clone() } } -struct_boilerplate!(IdlErrorCode); -debug_display!(IdlErrorCode); +struct_boilerplate!(IdlDependency); +debug_display!(IdlDependency); -#[derive(Debug, Clone, PartialEq, From, Into, Serialize, Deserialize)] -#[pyclass(module = "anchorpy_idl.idl", subclass)] -pub struct Idl(anchor_idl::types::Idl); +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlMetadata(anchor_idl::IdlMetadata); -#[richcmp_eq_only] -#[common_methods] #[pymethods] -impl Idl { - #[allow(clippy::too_many_arguments)] +impl IdlMetadata { + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) + } #[new] pub fn new( - version: String, name: String, - docs: Option>, - constants: Vec, - instructions: Vec, - accounts: Vec, - types: Vec, - events: Option>, - errors: Option>, - metadata: &PyAny, - ) -> PyResult { - let parsed_metadata = handle_py_value_err(depythonize::(metadata))?; - Ok(anchor_idl::types::Idl { - version, + version: String, + spec: String, + description: Option, + repository: Option, + dependencies: Vec, + contact: Option, + deployments: Option, + ) -> Self { + Self(anchor_idl::IdlMetadata { name, - docs, - constants: iter_into!(constants), - instructions: iter_into!(instructions), - accounts: iter_into!(accounts), - types: iter_into!(types), - events: events.map(|x| iter_into!(x)), - errors: errors.map(|x| iter_into!(x)), - metadata: parsed_metadata, - } - .into()) + version, + spec, + description, + repository, + dependencies: iter_into!(dependencies), + contact, + deployments: deployments.map(|x| x.into()), + }) + } + + #[getter] + pub fn name(&self) -> String { + self.0.name.clone() } #[getter] pub fn version(&self) -> String { self.0.version.clone() } + #[getter] - pub fn name(&self) -> String { - self.0.name.clone() + pub fn spec(&self) -> String { + self.0.spec.clone() } + #[getter] - pub fn docs(&self) -> Option> { - self.0.docs.clone() + pub fn description(&self) -> Option { + self.0.description.clone() } + #[getter] - pub fn constants(&self) -> Vec { - iter_into!(self.0.constants.clone()) + pub fn repository(&self) -> Option { + self.0.repository.clone() } + #[getter] - pub fn instructions(&self) -> Vec { - iter_into!(self.0.instructions.clone()) + pub fn dependencies(&self) -> Vec { + self.0 + .dependencies + .clone() + .into_iter() + .map(|x| x.into()) + .collect() } + #[getter] - pub fn accounts(&self) -> Vec { - iter_into!(self.0.accounts.clone()) + pub fn contact(&self) -> Option { + self.0.contact.clone() } + #[getter] - pub fn types(&self) -> Vec { - iter_into!(self.0.types.clone()) + pub fn deployments(&self) -> Vec { + self.0 + .deployments + .clone() + .into_iter() + .map(|x| x.into()) + .collect() } - #[getter] - pub fn events(&self) -> Option> { - self.0.events.clone().map(|x| iter_into!(x)) +} + +struct_boilerplate!(IdlMetadata); +debug_display!(IdlMetadata); + +#[derive(Debug, Clone, PartialEq, From, Into, Deserialize)] +#[pyclass(module = "anchorpy_idl", subclass)] +pub struct IdlAccount(anchor_idl::IdlAccount); + +#[pymethods] +impl IdlAccount { + #[staticmethod] + pub fn from_json(raw: &str) -> PyResult { + Self::py_from_json(raw) } + + #[new] + pub fn new(name: String, discriminator: Vec) -> Self { + Self(anchor_idl::IdlAccount { + name, + discriminator, + }) + } + #[getter] - pub fn errors(&self) -> Option> { - self.0.errors.clone().map(|x| iter_into!(x)) + pub fn name(&self) -> String { + self.0.name.clone() } + #[getter] - pub fn metadata(&self, py: Python<'_>) -> PyResult { - handle_py_value_err(pythonize(py, &self.0.metadata)) + pub fn discriminator(&self) -> Vec { + self.0.discriminator.clone() } } -struct_boilerplate!(Idl); -debug_display!(Idl); +struct_boilerplate!(IdlAccount); +debug_display!(IdlAccount); diff --git a/src/lib.rs b/src/lib.rs index b35f5c3..13fd572 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,10 +1,11 @@ use idl::{ - EnumFieldsNamed, EnumFieldsTuple, Idl, IdlAccount, IdlAccounts, IdlConst, IdlEnumVariant, - IdlErrorCode, IdlEvent, IdlEventField, IdlField, IdlInstruction, IdlPda, IdlSeedAccount, - IdlSeedArg, IdlSeedConst, IdlState, IdlTypeArray, IdlTypeDefined, IdlTypeDefinedWithTypeArgs, - IdlTypeDefinition, IdlTypeDefinitionTyAlias, IdlTypeDefinitionTyEnum, - IdlTypeDefinitionTyStruct, IdlTypeGeneric, IdlTypeGenericLenArray, IdlTypeOption, - IdlTypeSimple, IdlTypeVec, + Idl, IdlAccount, IdlConst, IdlDefinedFieldsNamed, IdlDefinedFieldsTuple, IdlDependency, + IdlDeployments, IdlEnumVariant, IdlErrorCode, IdlEvent, IdlField, IdlInstruction, + IdlInstructionAccount, IdlInstructionAccounts, IdlMetadata, IdlPda, IdlReprModifierC, + IdlReprModifierRust, IdlReprSimple, IdlSeedAccount, IdlSeedArg, IdlSeedConst, + IdlSerializationSimple, IdlTypeArray, IdlTypeDef, IdlTypeDefAlias, IdlTypeDefEnum, + IdlTypeDefGenericConst, IdlTypeDefGenericType, IdlTypeDefStruct, IdlTypeDefined, + IdlTypeGeneric, IdlTypeOption, IdlTypeSimple, IdlTypeVec, }; use pyo3::{ prelude::*, @@ -21,44 +22,54 @@ fn anchorpy_idl(py: Python, m: &PyModule) -> PyResult<()> { m.add_class::()?; m.add_class::()?; m.add_class::()?; - m.add_class::()?; - m.add_class::()?; m.add_class::()?; m.add_class::()?; - m.add_class::()?; - m.add_class::()?; - m.add_class::()?; + m.add_class::()?; + m.add_class::()?; + m.add_class::()?; m.add_class::()?; - m.add_class::()?; - m.add_class::()?; - m.add_class::()?; - m.add_class::()?; + m.add_class::()?; + m.add_class::()?; + m.add_class::()?; + m.add_class::()?; + m.add_class::()?; + m.add_class::()?; m.add_class::()?; m.add_class::()?; + m.add_class::()?; + m.add_class::()?; + m.add_class::()?; m.add_class::()?; + m.add_class::()?; m.add_class::()?; - m.add_class::()?; + m.add_class::()?; m.add_class::()?; - m.add_class::()?; m.add_class::()?; - m.add_class::()?; m.add_class::()?; m.add_class::()?; + m.add_class::()?; + m.add_class::()?; + m.add_class::()?; + m.add_class::()?; m.add_class::()?; let typing = py.import("typing")?; let union = typing.getattr("Union")?; - let idl_account_item_members = vec![IdlAccount::type_object(py), IdlAccounts::type_object(py)]; + let idl_account_item_members = vec![ + IdlInstructionAccount::type_object(py), + IdlInstructionAccounts::type_object(py), + ]; m.add( "IdlAccountItem", union.get_item(PyTuple::new(py, idl_account_item_members))?, )?; let idl_type_definition_ty_members = vec![ - IdlTypeDefinitionTyStruct::type_object(py), - IdlTypeDefinitionTyEnum::type_object(py), + IdlTypeDefAlias::type_object(py), + IdlTypeDefStruct::type_object(py), + IdlTypeDefEnum::type_object(py), ]; m.add( - "IdlTypeDefinitionTy", + "IdlTypeDefTy", union.get_item(PyTuple::new(py, idl_type_definition_ty_members))?, )?; let idl_seed_members = vec![ @@ -70,13 +81,38 @@ fn anchorpy_idl(py: Python, m: &PyModule) -> PyResult<()> { "IdlSeed", union.get_item(PyTuple::new(py, idl_seed_members))?, )?; + + let idl_repr_members = vec![ + IdlReprModifierRust::type_object(py), + IdlReprModifierC::type_object(py), + IdlReprSimple::type_object(py), + ]; + m.add( + "IdlRepr", + union.get_item(PyTuple::new(py, idl_repr_members))?, + )?; + let idl_serialization_members = vec![ + IdlSerializationSimple::type_object(py), + PyString::type_object(py), + ]; + m.add( + "IdlSerialization", + union.get_item(PyTuple::new(py, idl_serialization_members))?, + )?; + let idl_type_def_generic_members = vec![ + IdlTypeDefGenericType::type_object(py), + IdlTypeDefGenericConst::type_object(py), + ]; + m.add( + "IdlTypeDefGeneric", + union.get_item(PyTuple::new(py, idl_type_def_generic_members))?, + )?; let compound_members = vec![ IdlTypeDefined::type_object(py), IdlTypeOption::type_object(py), IdlTypeVec::type_object(py), IdlTypeArray::type_object(py), - IdlTypeDefinedWithTypeArgs::type_object(py), - IdlTypeGenericLenArray::type_object(py), + PyString::type_object(py), ]; m.add( "IdlTypeCompound", @@ -98,8 +134,8 @@ fn anchorpy_idl(py: Python, m: &PyModule) -> PyResult<()> { union.get_item(PyTuple::new(py, idl_defined_type_arg_members))?, )?; let enum_fields_members = vec![ - EnumFieldsNamed::type_object(py), - EnumFieldsTuple::type_object(py), + IdlDefinedFieldsNamed::type_object(py), + IdlDefinedFieldsTuple::type_object(py), ]; m.add( "EnumFields", diff --git a/tests/idls/basic_0.json b/tests/idls/basic_0.json index 6eb8507..0c099cb 100644 --- a/tests/idls/basic_0.json +++ b/tests/idls/basic_0.json @@ -1,14 +1,26 @@ { - "version": "0.0.0", - "name": "basic_0", + "address": "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS", + "metadata": { + "name": "basic_0", + "version": "0.1.0", + "spec": "0.1.0", + "description": "Created with Anchor" + }, "instructions": [ { "name": "initialize", + "discriminator": [ + 175, + 175, + 109, + 31, + 13, + 152, + 155, + 237 + ], "accounts": [], "args": [] } - ], - "metadata": { - "address": "8nA4T4UFdYz1sKuEFdnj2mYcJ6hp79Tw14sPvTQVWwVb" - } + ] } \ No newline at end of file diff --git a/tests/idls/basic_1.json b/tests/idls/basic_1.json index 810ed34..6059ae9 100644 --- a/tests/idls/basic_1.json +++ b/tests/idls/basic_1.json @@ -1,19 +1,38 @@ { - "version": "0.0.0", - "name": "basic_1", + "address": "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS", + "metadata": { + "name": "basic_1", + "version": "0.1.0", + "spec": "0.1.0", + "description": "Created with Anchor" + }, "instructions": [ { "name": "initialize", + "discriminator": [ + 175, + 175, + 109, + 31, + 13, + 152, + 155, + 237 + ], "accounts": [ { - "name": "myAccount", - "isMut": true, - "isSigner": false + "name": "my_account", + "writable": true, + "signer": true + }, + { + "name": "user", + "writable": true, + "signer": true }, { - "name": "rent", - "isMut": false, - "isSigner": false + "name": "system_program", + "address": "11111111111111111111111111111111" } ], "args": [ @@ -25,11 +44,20 @@ }, { "name": "update", + "discriminator": [ + 219, + 200, + 88, + 176, + 158, + 63, + 253, + 127 + ], "accounts": [ { - "name": "myAccount", - "isMut": true, - "isSigner": false + "name": "my_account", + "writable": true } ], "args": [ @@ -41,6 +69,21 @@ } ], "accounts": [ + { + "name": "MyAccount", + "discriminator": [ + 246, + 28, + 6, + 87, + 251, + 45, + 50, + 42 + ] + } + ], + "types": [ { "name": "MyAccount", "type": { diff --git a/tests/idls/basic_2.json b/tests/idls/basic_2.json index 7777c45..e53b087 100644 --- a/tests/idls/basic_2.json +++ b/tests/idls/basic_2.json @@ -1,46 +1,91 @@ { - "version": "0.0.0", - "name": "basic_2", + "address": "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS", + "metadata": { + "name": "basic_2", + "version": "0.1.0", + "spec": "0.1.0", + "description": "Created with Anchor" + }, "instructions": [ { "name": "create", + "discriminator": [ + 24, + 30, + 200, + 40, + 5, + 28, + 7, + 119 + ], "accounts": [ { "name": "counter", - "isMut": true, - "isSigner": false + "writable": true, + "signer": true + }, + { + "name": "user", + "writable": true, + "signer": true }, { - "name": "rent", - "isMut": false, - "isSigner": false + "name": "system_program", + "address": "11111111111111111111111111111111" } ], "args": [ { "name": "authority", - "type": "publicKey" + "type": "pubkey" } ] }, { "name": "increment", + "discriminator": [ + 11, + 18, + 104, + 9, + 104, + 174, + 59, + 33 + ], "accounts": [ { "name": "counter", - "isMut": true, - "isSigner": false + "writable": true }, { "name": "authority", - "isMut": false, - "isSigner": true + "signer": true, + "relations": [ + "counter" + ] } ], "args": [] } ], "accounts": [ + { + "name": "Counter", + "discriminator": [ + 255, + 176, + 4, + 245, + 188, + 253, + 124, + 25 + ] + } + ], + "types": [ { "name": "Counter", "type": { @@ -48,7 +93,7 @@ "fields": [ { "name": "authority", - "type": "publicKey" + "type": "pubkey" }, { "name": "count", @@ -57,8 +102,5 @@ ] } } - ], - "metadata": { - "address": "4V6T2muqU1mHSg5XfK3SMgxZWQRSEUh72LzwGTLHGzsY" - } + ] } \ No newline at end of file diff --git a/tests/idls/basic_5.json b/tests/idls/basic_5.json index ecde024..be3a78d 100644 --- a/tests/idls/basic_5.json +++ b/tests/idls/basic_5.json @@ -1,40 +1,174 @@ { - "version": "0.0.0", - "name": "basic_5", + "address": "DuT6R8tQGYa8ACYXyudFJtxDppSALLcmK39b7918jeSC", + "metadata": { + "name": "basic_5", + "version": "0.1.0", + "spec": "0.1.0", + "description": "Created with Anchor" + }, "instructions": [ { - "name": "createMint", + "name": "create", + "discriminator": [ + 24, + 30, + 200, + 40, + 5, + 28, + 7, + 119 + ], + "accounts": [ + { + "name": "action_state", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 97, + 99, + 116, + 105, + 111, + 110, + 45, + 115, + 116, + 97, + 116, + 101 + ] + }, + { + "kind": "account", + "path": "user" + } + ] + } + }, + { + "name": "user", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + } + ], + "args": [] + }, + { + "name": "jump", + "discriminator": [ + 115, + 18, + 221, + 88, + 166, + 230, + 219, + 32 + ], "accounts": [ { - "name": "mint", - "isMut": true, - "isSigner": false + "name": "action_state", + "writable": true + }, + { + "name": "user", + "writable": true, + "signer": true, + "relations": [ + "action_state" + ] } ], "args": [] }, { - "name": "createToken", + "name": "reset", + "discriminator": [ + 23, + 81, + 251, + 84, + 138, + 183, + 240, + 214 + ], "accounts": [ { - "name": "token", - "isMut": true, - "isSigner": false + "name": "action_state", + "writable": true }, { - "name": "authority", - "isMut": true, - "isSigner": true + "name": "user", + "writable": true, + "signer": true, + "relations": [ + "action_state" + ] + } + ], + "args": [] + }, + { + "name": "run", + "discriminator": [ + 203, + 27, + 228, + 218, + 208, + 69, + 35, + 84 + ], + "accounts": [ + { + "name": "action_state", + "writable": true }, { - "name": "mint", - "isMut": false, - "isSigner": false + "name": "user", + "writable": true, + "signer": true, + "relations": [ + "action_state" + ] + } + ], + "args": [] + }, + { + "name": "walk", + "discriminator": [ + 117, + 227, + 10, + 68, + 128, + 250, + 50, + 154 + ], + "accounts": [ + { + "name": "action_state", + "writable": true }, { - "name": "systemProgram", - "isMut": false, - "isSigner": false + "name": "user", + "writable": true, + "signer": true, + "relations": [ + "action_state" + ] } ], "args": [] @@ -42,39 +176,35 @@ ], "accounts": [ { - "name": "Mint", - "type": { - "kind": "struct", - "fields": [ - { - "name": "supply", - "type": "u32" - } - ] - } - }, + "name": "ActionState", + "discriminator": [ + 68, + 223, + 59, + 227, + 180, + 86, + 142, + 180 + ] + } + ], + "types": [ { - "name": "Token", + "name": "ActionState", "type": { "kind": "struct", "fields": [ { - "name": "amount", - "type": "u32" - }, - { - "name": "authority", - "type": "publicKey" + "name": "user", + "type": "pubkey" }, { - "name": "mint", - "type": "publicKey" + "name": "action", + "type": "u8" } ] } } - ], - "metadata": { - "address": "99cGumFqPFhCLTUxs9BoyhXAV6c19Ca44BYZVn6KG1Pu" - } + ] } \ No newline at end of file diff --git a/tests/idls/candy_machine.json b/tests/idls/candy_machine.json deleted file mode 100644 index dcae308..0000000 --- a/tests/idls/candy_machine.json +++ /dev/null @@ -1,915 +0,0 @@ -{ - "version": "4.0.2", - "name": "candy_machine", - "instructions": [ - { - "name": "initializeCandyMachine", - "accounts": [ - { - "name": "candyMachine", - "isMut": true, - "isSigner": false - }, - { - "name": "wallet", - "isMut": false, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": false - }, - { - "name": "payer", - "isMut": false, - "isSigner": true - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "data", - "type": { - "defined": "CandyMachineData" - } - } - ] - }, - { - "name": "updateCandyMachine", - "accounts": [ - { - "name": "candyMachine", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "wallet", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "data", - "type": { - "defined": "CandyMachineData" - } - } - ] - }, - { - "name": "updateAuthority", - "accounts": [ - { - "name": "candyMachine", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "wallet", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "newAuthority", - "type": { - "option": "publicKey" - } - } - ] - }, - { - "name": "addConfigLines", - "accounts": [ - { - "name": "candyMachine", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - } - ], - "args": [ - { - "name": "index", - "type": "u32" - }, - { - "name": "configLines", - "type": { - "vec": { - "defined": "ConfigLine" - } - } - } - ] - }, - { - "name": "setCollection", - "accounts": [ - { - "name": "candyMachine", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "collectionPda", - "isMut": true, - "isSigner": false - }, - { - "name": "payer", - "isMut": false, - "isSigner": true - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - }, - { - "name": "metadata", - "isMut": false, - "isSigner": false - }, - { - "name": "mint", - "isMut": false, - "isSigner": false - }, - { - "name": "edition", - "isMut": false, - "isSigner": false - }, - { - "name": "collectionAuthorityRecord", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenMetadataProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "removeCollection", - "accounts": [ - { - "name": "candyMachine", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "collectionPda", - "isMut": true, - "isSigner": false - }, - { - "name": "metadata", - "isMut": false, - "isSigner": false - }, - { - "name": "mint", - "isMut": false, - "isSigner": false - }, - { - "name": "collectionAuthorityRecord", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenMetadataProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "mintNft", - "accounts": [ - { - "name": "candyMachine", - "isMut": true, - "isSigner": false - }, - { - "name": "candyMachineCreator", - "isMut": false, - "isSigner": false - }, - { - "name": "payer", - "isMut": false, - "isSigner": true - }, - { - "name": "wallet", - "isMut": true, - "isSigner": false - }, - { - "name": "metadata", - "isMut": true, - "isSigner": false - }, - { - "name": "mint", - "isMut": true, - "isSigner": false - }, - { - "name": "mintAuthority", - "isMut": false, - "isSigner": true - }, - { - "name": "updateAuthority", - "isMut": false, - "isSigner": true - }, - { - "name": "masterEdition", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenMetadataProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - }, - { - "name": "clock", - "isMut": false, - "isSigner": false, - "docs": [ - "Account not actually used." - ] - }, - { - "name": "recentBlockhashes", - "isMut": false, - "isSigner": false - }, - { - "name": "instructionSysvarAccount", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "creatorBump", - "type": "u8" - } - ] - }, - { - "name": "setCollectionDuringMint", - "accounts": [ - { - "name": "candyMachine", - "isMut": false, - "isSigner": false - }, - { - "name": "metadata", - "isMut": false, - "isSigner": false - }, - { - "name": "payer", - "isMut": false, - "isSigner": true - }, - { - "name": "collectionPda", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenMetadataProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "instructions", - "isMut": false, - "isSigner": false - }, - { - "name": "collectionMint", - "isMut": false, - "isSigner": false - }, - { - "name": "collectionMetadata", - "isMut": false, - "isSigner": false - }, - { - "name": "collectionMasterEdition", - "isMut": false, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": false - }, - { - "name": "collectionAuthorityRecord", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "withdrawFunds", - "accounts": [ - { - "name": "candyMachine", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - } - ], - "args": [] - } - ], - "accounts": [ - { - "name": "CandyMachine", - "docs": [ - "Candy machine state and config data." - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "authority", - "type": "publicKey" - }, - { - "name": "wallet", - "type": "publicKey" - }, - { - "name": "tokenMint", - "type": { - "option": "publicKey" - } - }, - { - "name": "itemsRedeemed", - "type": "u64" - }, - { - "name": "data", - "type": { - "defined": "CandyMachineData" - } - } - ] - } - }, - { - "name": "CollectionPDA", - "docs": [ - "Collection PDA account" - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "mint", - "type": "publicKey" - }, - { - "name": "candyMachine", - "type": "publicKey" - } - ] - } - } - ], - "types": [ - { - "name": "CandyMachineData", - "docs": [ - "Candy machine settings data." - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "uuid", - "type": "string" - }, - { - "name": "price", - "type": "u64" - }, - { - "name": "symbol", - "docs": [ - "The symbol for the asset" - ], - "type": "string" - }, - { - "name": "sellerFeeBasisPoints", - "docs": [ - "Royalty basis points that goes to creators in secondary sales (0-10000)" - ], - "type": "u16" - }, - { - "name": "maxSupply", - "type": "u64" - }, - { - "name": "isMutable", - "type": "bool" - }, - { - "name": "retainAuthority", - "type": "bool" - }, - { - "name": "goLiveDate", - "type": { - "option": "i64" - } - }, - { - "name": "endSettings", - "type": { - "option": { - "defined": "EndSettings" - } - } - }, - { - "name": "creators", - "type": { - "vec": { - "defined": "Creator" - } - } - }, - { - "name": "hiddenSettings", - "type": { - "option": { - "defined": "HiddenSettings" - } - } - }, - { - "name": "whitelistMintSettings", - "type": { - "option": { - "defined": "WhitelistMintSettings" - } - } - }, - { - "name": "itemsAvailable", - "type": "u64" - }, - { - "name": "gatekeeper", - "docs": [ - "If [`Some`] requires gateway tokens on mint" - ], - "type": { - "option": { - "defined": "GatekeeperConfig" - } - } - } - ] - } - }, - { - "name": "ConfigLine", - "docs": [ - "Individual config line for storing NFT data pre-mint." - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "name", - "type": "string" - }, - { - "name": "uri", - "docs": [ - "URI pointing to JSON representing the asset" - ], - "type": "string" - } - ] - } - }, - { - "name": "EndSettings", - "type": { - "kind": "struct", - "fields": [ - { - "name": "endSettingType", - "type": { - "defined": "EndSettingType" - } - }, - { - "name": "number", - "type": "u64" - } - ] - } - }, - { - "name": "Creator", - "type": { - "kind": "struct", - "fields": [ - { - "name": "address", - "type": "publicKey" - }, - { - "name": "verified", - "type": "bool" - }, - { - "name": "share", - "type": "u8" - } - ] - } - }, - { - "name": "HiddenSettings", - "docs": [ - "Hidden Settings for large mints used with offline data." - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "name", - "type": "string" - }, - { - "name": "uri", - "type": "string" - }, - { - "name": "hash", - "type": { - "array": [ - "u8", - 32 - ] - } - } - ] - } - }, - { - "name": "WhitelistMintSettings", - "type": { - "kind": "struct", - "fields": [ - { - "name": "mode", - "type": { - "defined": "WhitelistMintMode" - } - }, - { - "name": "mint", - "type": "publicKey" - }, - { - "name": "presale", - "type": "bool" - }, - { - "name": "discountPrice", - "type": { - "option": "u64" - } - } - ] - } - }, - { - "name": "GatekeeperConfig", - "docs": [ - "Configurations options for the gatekeeper." - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "gatekeeperNetwork", - "docs": [ - "The network for the gateway token required" - ], - "type": "publicKey" - }, - { - "name": "expireOnUse", - "docs": [ - "Whether or not the token should expire after minting.", - "The gatekeeper network must support this if true." - ], - "type": "bool" - } - ] - } - }, - { - "name": "EndSettingType", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Date" - }, - { - "name": "Amount" - } - ] - } - }, - { - "name": "WhitelistMintMode", - "type": { - "kind": "enum", - "variants": [ - { - "name": "BurnEveryTime" - }, - { - "name": "NeverBurn" - } - ] - } - } - ], - "errors": [ - { - "code": 6000, - "name": "IncorrectOwner", - "msg": "Account does not have correct owner!" - }, - { - "code": 6001, - "name": "Uninitialized", - "msg": "Account is not initialized!" - }, - { - "code": 6002, - "name": "MintMismatch", - "msg": "Mint Mismatch!" - }, - { - "code": 6003, - "name": "IndexGreaterThanLength", - "msg": "Index greater than length!" - }, - { - "code": 6004, - "name": "NumericalOverflowError", - "msg": "Numerical overflow error!" - }, - { - "code": 6005, - "name": "TooManyCreators", - "msg": "Can only provide up to 4 creators to candy machine (because candy machine is one)!" - }, - { - "code": 6006, - "name": "UuidMustBeExactly6Length", - "msg": "Uuid must be exactly of 6 length" - }, - { - "code": 6007, - "name": "NotEnoughTokens", - "msg": "Not enough tokens to pay for this minting" - }, - { - "code": 6008, - "name": "NotEnoughSOL", - "msg": "Not enough SOL to pay for this minting" - }, - { - "code": 6009, - "name": "TokenTransferFailed", - "msg": "Token transfer failed" - }, - { - "code": 6010, - "name": "CandyMachineEmpty", - "msg": "Candy machine is empty!" - }, - { - "code": 6011, - "name": "CandyMachineNotLive", - "msg": "Candy machine is not live!" - }, - { - "code": 6012, - "name": "HiddenSettingsConfigsDoNotHaveConfigLines", - "msg": "Configs that are using hidden uris do not have config lines, they have a single hash representing hashed order" - }, - { - "code": 6013, - "name": "CannotChangeNumberOfLines", - "msg": "Cannot change number of lines unless is a hidden config" - }, - { - "code": 6014, - "name": "DerivedKeyInvalid", - "msg": "Derived key invalid" - }, - { - "code": 6015, - "name": "PublicKeyMismatch", - "msg": "Public key mismatch" - }, - { - "code": 6016, - "name": "NoWhitelistToken", - "msg": "No whitelist token present" - }, - { - "code": 6017, - "name": "TokenBurnFailed", - "msg": "Token burn failed" - }, - { - "code": 6018, - "name": "GatewayAppMissing", - "msg": "Missing gateway app when required" - }, - { - "code": 6019, - "name": "GatewayTokenMissing", - "msg": "Missing gateway token when required" - }, - { - "code": 6020, - "name": "GatewayTokenExpireTimeInvalid", - "msg": "Invalid gateway token expire time" - }, - { - "code": 6021, - "name": "NetworkExpireFeatureMissing", - "msg": "Missing gateway network expire feature when required" - }, - { - "code": 6022, - "name": "CannotFindUsableConfigLine", - "msg": "Unable to find an unused config line near your random number index" - }, - { - "code": 6023, - "name": "InvalidString", - "msg": "Invalid string" - }, - { - "code": 6024, - "name": "SuspiciousTransaction", - "msg": "Suspicious transaction detected" - }, - { - "code": 6025, - "name": "CannotSwitchToHiddenSettings", - "msg": "Cannot Switch to Hidden Settings after items available is greater than 0" - }, - { - "code": 6026, - "name": "IncorrectSlotHashesPubkey", - "msg": "Incorrect SlotHashes PubKey" - }, - { - "code": 6027, - "name": "IncorrectCollectionAuthority", - "msg": "Incorrect collection NFT authority" - }, - { - "code": 6028, - "name": "MismatchedCollectionPDA", - "msg": "Collection PDA address is invalid" - }, - { - "code": 6029, - "name": "MismatchedCollectionMint", - "msg": "Provided mint account doesn't match collection PDA mint" - }, - { - "code": 6030, - "name": "SlotHashesEmpty", - "msg": "Slot hashes Sysvar is empty" - }, - { - "code": 6031, - "name": "MetadataAccountMustBeEmpty", - "msg": "The metadata account has data in it, and this must be empty to mint a new NFT" - }, - { - "code": 6032, - "name": "MissingSetCollectionDuringMint", - "msg": "Missing set collection during mint IX for Candy Machine with collection set" - }, - { - "code": 6033, - "name": "NoChangingCollectionDuringMint", - "msg": "Can't change collection settings after items have begun to be minted" - }, - { - "code": 6034, - "name": "CandyCollectionRequiresRetainAuthority", - "msg": "Retain authority must be true for Candy Machines with a collection set" - }, - { - "code": 6035, - "name": "GatewayProgramError", - "msg": "Error within Gateway program" - } - ] -} \ No newline at end of file diff --git a/tests/idls/cashiers_check.json b/tests/idls/cashiers_check.json deleted file mode 100644 index 0b24577..0000000 --- a/tests/idls/cashiers_check.json +++ /dev/null @@ -1,191 +0,0 @@ -{ - "version": "0.0.0", - "name": "cashiers_check", - "instructions": [ - { - "name": "createCheck", - "accounts": [ - { - "name": "check", - "isMut": true, - "isSigner": false - }, - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "checkSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "from", - "isMut": true, - "isSigner": false - }, - { - "name": "to", - "isMut": false, - "isSigner": false - }, - { - "name": "owner", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "amount", - "type": "u64" - }, - { - "name": "memo", - "type": { - "option": "string" - } - }, - { - "name": "nonce", - "type": "u8" - } - ] - }, - { - "name": "cashCheck", - "accounts": [ - { - "name": "check", - "isMut": true, - "isSigner": false - }, - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "checkSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "to", - "isMut": true, - "isSigner": false - }, - { - "name": "owner", - "isMut": false, - "isSigner": true - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "cancelCheck", - "accounts": [ - { - "name": "check", - "isMut": true, - "isSigner": false - }, - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "checkSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "from", - "isMut": true, - "isSigner": false - }, - { - "name": "owner", - "isMut": false, - "isSigner": true - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - } - ], - "accounts": [ - { - "name": "Check", - "type": { - "kind": "struct", - "fields": [ - { - "name": "from", - "type": "publicKey" - }, - { - "name": "to", - "type": "publicKey" - }, - { - "name": "amount", - "type": "u64" - }, - { - "name": "memo", - "type": { - "option": "string" - } - }, - { - "name": "vault", - "type": "publicKey" - }, - { - "name": "nonce", - "type": "u8" - }, - { - "name": "burned", - "type": "bool" - } - ] - } - } - ], - "errors": [ - { - "code": 300, - "name": "InvalidCheckNonce", - "msg": "The given nonce does not create a valid program derived address." - }, - { - "code": 301, - "name": "InvalidCheckSigner", - "msg": "The derived check signer does not match that which was given." - }, - { - "code": 302, - "name": "AlreadyBurned", - "msg": "The given check has already been burned." - } - ] -} \ No newline at end of file diff --git a/tests/idls/chat.json b/tests/idls/chat.json deleted file mode 100644 index c911efa..0000000 --- a/tests/idls/chat.json +++ /dev/null @@ -1,157 +0,0 @@ -{ - "version": "0.0.0", - "name": "chat", - "instructions": [ - { - "name": "createUser", - "accounts": [ - { - "name": "user", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "name", - "type": "string" - } - ] - }, - { - "name": "createChatRoom", - "accounts": [ - { - "name": "chatRoom", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "name", - "type": "string" - } - ] - }, - { - "name": "sendMessage", - "accounts": [ - { - "name": "user", - "isMut": false, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "chatRoom", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "msg", - "type": "string" - } - ] - } - ], - "accounts": [ - { - "name": "User", - "type": { - "kind": "struct", - "fields": [ - { - "name": "name", - "type": "string" - }, - { - "name": "authority", - "type": "publicKey" - } - ] - } - }, - { - "name": "ChatRoom", - "type": { - "kind": "struct", - "fields": [ - { - "name": "head", - "type": "u64" - }, - { - "name": "tail", - "type": "u64" - }, - { - "name": "name", - "type": { - "array": [ - "u8", - 280 - ] - } - }, - { - "name": "messages", - "type": { - "array": [ - { - "defined": "Message" - }, - 33607 - ] - } - } - ] - } - } - ], - "types": [ - { - "name": "Message", - "type": { - "kind": "struct", - "fields": [ - { - "name": "from", - "type": "publicKey" - }, - { - "name": "data", - "type": { - "array": [ - "u8", - 280 - ] - } - } - ] - } - } - ], - "errors": [ - { - "code": 300, - "name": "Unknown" - } - ] -} \ No newline at end of file diff --git a/tests/idls/clientgen_example_program.json b/tests/idls/clientgen_example_program.json deleted file mode 100644 index dfe1712..0000000 --- a/tests/idls/clientgen_example_program.json +++ /dev/null @@ -1,568 +0,0 @@ -{ - "version": "0.1.0", - "name": "example_program", - "instructions": [ - { - "name": "initialize", - "accounts": [ - { - "name": "state", - "isMut": true, - "isSigner": true - }, - { - "name": "nested", - "accounts": [ - { - "name": "clock", - "isMut": false, - "isSigner": false - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - } - ] - }, - { - "name": "payer", - "isMut": true, - "isSigner": true - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "initializeWithValues", - "accounts": [ - { - "name": "state", - "isMut": true, - "isSigner": true - }, - { - "name": "nested", - "accounts": [ - { - "name": "clock", - "isMut": false, - "isSigner": false - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - } - ] - }, - { - "name": "payer", - "isMut": true, - "isSigner": true - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "boolField", - "type": "bool" - }, - { - "name": "u8Field", - "type": "u8" - }, - { - "name": "i8Field", - "type": "i8" - }, - { - "name": "u16Field", - "type": "u16" - }, - { - "name": "i16Field", - "type": "i16" - }, - { - "name": "u32Field", - "type": "u32" - }, - { - "name": "i32Field", - "type": "i32" - }, - { - "name": "f32Field", - "type": "f32" - }, - { - "name": "u64Field", - "type": "u64" - }, - { - "name": "i64Field", - "type": "i64" - }, - { - "name": "f64Field", - "type": "f64" - }, - { - "name": "u128Field", - "type": "u128" - }, - { - "name": "i128Field", - "type": "i128" - }, - { - "name": "bytesField", - "type": "bytes" - }, - { - "name": "stringField", - "type": "string" - }, - { - "name": "pubkeyField", - "type": "publicKey" - }, - { - "name": "vecField", - "type": { - "vec": "u64" - } - }, - { - "name": "vecStructField", - "type": { - "vec": { - "defined": "FooStruct" - } - } - }, - { - "name": "optionField", - "type": { - "option": "bool" - } - }, - { - "name": "optionStructField", - "type": { - "option": { - "defined": "FooStruct" - } - } - }, - { - "name": "structField", - "type": { - "defined": "FooStruct" - } - }, - { - "name": "arrayField", - "type": { - "array": ["bool", 3] - } - }, - { - "name": "enumField1", - "type": { - "defined": "FooEnum" - } - }, - { - "name": "enumField2", - "type": { - "defined": "FooEnum" - } - }, - { - "name": "enumField3", - "type": { - "defined": "FooEnum" - } - }, - { - "name": "enumField4", - "type": { - "defined": "FooEnum" - } - } - ] - }, - { - "name": "initializeWithValues2", - "accounts": [ - { - "name": "state", - "isMut": true, - "isSigner": true - }, - { - "name": "payer", - "isMut": true, - "isSigner": true - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "vecOfOption", - "type": { - "vec": { - "option": "u64" - } - } - } - ] - }, - { - "name": "incrementStateWhenPresent", - "accounts": [ - { - "name": "firstState", - "isMut": true, - "isSigner": false, - "isOptional": true - }, - { - "name": "secondState", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "causeError", - "accounts": [], - "args": [] - } - ], - "accounts": [ - { - "name": "State", - "type": { - "kind": "struct", - "fields": [ - { - "name": "boolField", - "type": "bool" - }, - { - "name": "u8Field", - "type": "u8" - }, - { - "name": "i8Field", - "type": "i8" - }, - { - "name": "u16Field", - "type": "u16" - }, - { - "name": "i16Field", - "type": "i16" - }, - { - "name": "u32Field", - "type": "u32" - }, - { - "name": "i32Field", - "type": "i32" - }, - { - "name": "f32Field", - "type": "f32" - }, - { - "name": "u64Field", - "type": "u64" - }, - { - "name": "i64Field", - "type": "i64" - }, - { - "name": "f64Field", - "type": "f64" - }, - { - "name": "u128Field", - "type": "u128" - }, - { - "name": "i128Field", - "type": "i128" - }, - { - "name": "bytesField", - "type": "bytes" - }, - { - "name": "stringField", - "type": "string" - }, - { - "name": "pubkeyField", - "type": "publicKey" - }, - { - "name": "vecField", - "type": { - "vec": "u64" - } - }, - { - "name": "vecStructField", - "type": { - "vec": { - "defined": "FooStruct" - } - } - }, - { - "name": "optionField", - "type": { - "option": "bool" - } - }, - { - "name": "optionStructField", - "type": { - "option": { - "defined": "FooStruct" - } - } - }, - { - "name": "structField", - "type": { - "defined": "FooStruct" - } - }, - { - "name": "arrayField", - "type": { - "array": ["bool", 3] - } - }, - { - "name": "enumField1", - "type": { - "defined": "FooEnum" - } - }, - { - "name": "enumField2", - "type": { - "defined": "FooEnum" - } - }, - { - "name": "enumField3", - "type": { - "defined": "FooEnum" - } - }, - { - "name": "enumField4", - "type": { - "defined": "FooEnum" - } - } - ] - } - }, - { - "name": "State2", - "type": { - "kind": "struct", - "fields": [ - { - "name": "vecOfOption", - "type": { - "vec": { - "option": "u64" - } - } - } - ] - } - } - ], - "types": [ - { - "name": "BarStruct", - "type": { - "kind": "struct", - "fields": [ - { - "name": "someField", - "type": "bool" - }, - { - "name": "otherField", - "type": "u8" - } - ] - } - }, - { - "name": "FooStruct", - "type": { - "kind": "struct", - "fields": [ - { - "name": "field1", - "type": "u8" - }, - { - "name": "field2", - "type": "u16" - }, - { - "name": "nested", - "type": { - "defined": "BarStruct" - } - }, - { - "name": "vecNested", - "type": { - "vec": { - "defined": "BarStruct" - } - } - }, - { - "name": "optionNested", - "type": { - "option": { - "defined": "BarStruct" - } - } - }, - { - "name": "enumField", - "type": { - "defined": "FooEnum" - } - } - ] - } - }, - { - "name": "FooEnum", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Unnamed", - "fields": [ - "bool", - "u8", - { - "defined": "BarStruct" - } - ] - }, - { - "name": "UnnamedSingle", - "fields": [ - { - "defined": "BarStruct" - } - ] - }, - { - "name": "Named", - "fields": [ - { - "name": "bool_field", - "type": "bool" - }, - { - "name": "u8_field", - "type": "u8" - }, - { - "name": "nested", - "type": { - "defined": "BarStruct" - } - } - ] - }, - { - "name": "Struct", - "fields": [ - { - "defined": "BarStruct" - } - ] - }, - { - "name": "OptionStruct", - "fields": [ - { - "option": { - "defined": "BarStruct" - } - } - ] - }, - { - "name": "VecStruct", - "fields": [ - { - "vec": { - "defined": "BarStruct" - } - } - ] - }, - { - "name": "NoFields" - } - ] - } - } - ], - "errors": [ - { - "code": 6000, - "name": "SomeError", - "msg": "Example error." - }, - { - "code": 6001, - "name": "OtherError", - "msg": "Another error." - } - ] -} diff --git a/tests/idls/composite.json b/tests/idls/composite.json deleted file mode 100644 index e8d15b7..0000000 --- a/tests/idls/composite.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "version": "0.0.0", - "name": "composite", - "instructions": [ - { - "name": "initialize", - "accounts": [ - { - "name": "dummyA", - "isMut": true, - "isSigner": false - }, - { - "name": "dummyB", - "isMut": true, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "compositeUpdate", - "accounts": [ - { - "name": "foo", - "accounts": [ - { - "name": "dummyA", - "isMut": true, - "isSigner": false - } - ] - }, - { - "name": "bar", - "accounts": [ - { - "name": "dummyB", - "isMut": true, - "isSigner": false - } - ] - } - ], - "args": [ - { - "name": "dummyA", - "type": "u64" - }, - { - "name": "dummyB", - "type": "u64" - } - ] - } - ], - "accounts": [ - { - "name": "DummyA", - "type": { - "kind": "struct", - "fields": [ - { - "name": "data", - "type": "u64" - } - ] - } - }, - { - "name": "DummyB", - "type": { - "kind": "struct", - "fields": [ - { - "name": "data", - "type": "u64" - } - ] - } - } - ], - "metadata": { - "address": "FYuVUPk3hmpT44GjCTL6w8Z3kYQoYBAWZMXEi4P63xto" - } -} \ No newline at end of file diff --git a/tests/idls/counter_auth.json b/tests/idls/counter_auth.json deleted file mode 100644 index 4ad926a..0000000 --- a/tests/idls/counter_auth.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "version": "0.0.0", - "name": "counter_auth", - "instructions": [] -} \ No newline at end of file diff --git a/tests/idls/errors.json b/tests/idls/errors.json deleted file mode 100644 index 346f8a4..0000000 --- a/tests/idls/errors.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "version": "0.0.0", - "name": "errors", - "instructions": [ - { - "name": "hello", - "accounts": [], - "args": [] - }, - { - "name": "helloNoMsg", - "accounts": [], - "args": [] - }, - { - "name": "helloNext", - "accounts": [], - "args": [] - }, - { - "name": "mutError", - "accounts": [ - { - "name": "myAccount", - "isMut": true, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "hasOneError", - "accounts": [ - { - "name": "myAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "owner", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "signerError", - "accounts": [ - { - "name": "myAccount", - "isMut": false, - "isSigner": true - } - ], - "args": [] - } - ], - "accounts": [ - { - "name": "HasOneAccount", - "type": { - "kind": "struct", - "fields": [ - { - "name": "owner", - "type": "publicKey" - } - ] - } - } - ], - "errors": [ - { - "code": 300, - "name": "Hello", - "msg": "This is an error message clients will automatically display" - }, - { - "code": 423, - "name": "HelloNoMsg" - }, - { - "code": 424, - "name": "HelloNext" - } - ] -} \ No newline at end of file diff --git a/tests/idls/escrow.json b/tests/idls/escrow.json deleted file mode 100644 index 5d7c733..0000000 --- a/tests/idls/escrow.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "version": "0.0.0", - "name": "escrow", - "instructions": [ - { - "name": "initializeEscrow", - "accounts": [ - { - "name": "initializer", - "isMut": false, - "isSigner": true - }, - { - "name": "initializerDepositTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "initializerReceiveTokenAccount", - "isMut": false, - "isSigner": false - }, - { - "name": "escrowAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "initializerAmount", - "type": "u64" - }, - { - "name": "takerAmount", - "type": "u64" - } - ] - }, - { - "name": "cancelEscrow", - "accounts": [ - { - "name": "initializer", - "isMut": false, - "isSigner": false - }, - { - "name": "pdaDepositTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "pdaAccount", - "isMut": false, - "isSigner": false - }, - { - "name": "escrowAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "exchange", - "accounts": [ - { - "name": "taker", - "isMut": false, - "isSigner": true - }, - { - "name": "takerDepositTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "takerReceiveTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "pdaDepositTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "initializerReceiveTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "initializerMainAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "escrowAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "pdaAccount", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - } - ], - "accounts": [ - { - "name": "EscrowAccount", - "type": { - "kind": "struct", - "fields": [ - { - "name": "initializerKey", - "type": "publicKey" - }, - { - "name": "initializerDepositTokenAccount", - "type": "publicKey" - }, - { - "name": "initializerReceiveTokenAccount", - "type": "publicKey" - }, - { - "name": "initializerAmount", - "type": "u64" - }, - { - "name": "takerAmount", - "type": "u64" - } - ] - } - } - ], - "metadata": { - "address": "38VPDKPpsXerxe7oWCXGQtm5usFGXrf65tbF3A7cs518" - } -} \ No newline at end of file diff --git a/tests/idls/events.json b/tests/idls/events.json deleted file mode 100644 index 3de103d..0000000 --- a/tests/idls/events.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "version": "0.0.0", - "name": "events", - "instructions": [ - { - "name": "initialize", - "accounts": [], - "args": [] - } - ], - "events": [ - { - "name": "MyEvent", - "fields": [ - { - "name": "data", - "type": "u64", - "index": false - }, - { - "name": "label", - "type": "string", - "index": true - } - ] - } - ] -} \ No newline at end of file diff --git a/tests/idls/generics_build.json b/tests/idls/generics_build.json deleted file mode 100644 index 67f8a40..0000000 --- a/tests/idls/generics_build.json +++ /dev/null @@ -1,418 +0,0 @@ -{ - "version": "0.1.0", - "name": "generics", - "instructions": [ - { - "name": "generic", - "accounts": [ - { - "name": "genericAcc", - "isMut": false, - "isSigner": false - }, - { - "name": "payer", - "isMut": true, - "isSigner": true - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "genericField", - "type": { - "definedWithTypeArgs": { - "name": "GenericType", - "args": [ - { - "type": "u32" - }, - { - "type": "u64" - }, - { - "value": "10" - } - ] - } - } - } - ] - } - ], - "accounts": [ - { - "name": "GenericAccount", - "type": { - "kind": "struct", - "fields": [ - { - "name": "data", - "type": { - "definedWithTypeArgs": { - "name": "GenericType", - "args": [ - { - "type": "u32" - }, - { - "type": "u64" - }, - { - "value": "10" - } - ] - } - } - } - ] - } - } - ], - "types": [ - { - "name": "Baz", - "type": { - "kind": "struct", - "fields": [ - { - "name": "someField", - "type": "u8" - } - ] - } - }, - { - "name": "GenericEnum", - "generics": [ - "T", - "U", - "N" - ], - "type": { - "kind": "enum", - "variants": [ - { - "name": "Unnamed", - "fields": [ - { - "generic": "T" - }, - { - "generic": "U" - } - ] - }, - { - "name": "Named", - "fields": [ - { - "name": "gen1", - "type": { - "generic": "T" - } - }, - { - "name": "gen2", - "type": { - "generic": "U" - } - } - ] - }, - { - "name": "Struct", - "fields": [ - { - "definedWithTypeArgs": { - "name": "GenericNested", - "args": [ - { - "type": { - "generic": "T" - } - }, - { - "type": { - "generic": "U" - } - } - ] - } - } - ] - }, - { - "name": "Arr", - "fields": [ - { - "genericLenArray": [ - { - "generic": "T" - }, - "N" - ] - } - ] - } - ] - } - }, - { - "name": "GenericNested", - "generics": [ - "V", - "Z" - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "gen1", - "type": { - "generic": "V" - } - }, - { - "name": "gen2", - "type": { - "generic": "Z" - } - } - ] - } - }, - { - "name": "GenericType", - "generics": [ - "T", - "U", - "N" - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "gen1", - "type": { - "generic": "T" - } - }, - { - "name": "gen2", - "type": { - "generic": "U" - } - }, - { - "name": "gen3", - "type": { - "definedWithTypeArgs": { - "name": "GenericNested", - "args": [ - { - "type": "u32" - }, - { - "type": { - "generic": "U" - } - } - ] - } - } - }, - { - "name": "gen4", - "type": { - "definedWithTypeArgs": { - "name": "GenericNested", - "args": [ - { - "type": { - "generic": "T" - } - }, - { - "type": { - "defined": "Baz" - } - } - ] - } - } - }, - { - "name": "gen5", - "type": { - "definedWithTypeArgs": { - "name": "GenericNested", - "args": [ - { - "type": { - "generic": "T" - } - }, - { - "type": { - "generic": "U" - } - } - ] - } - } - }, - { - "name": "gen6", - "type": { - "definedWithTypeArgs": { - "name": "GenericNested", - "args": [ - { - "type": "u32" - }, - { - "type": "u64" - } - ] - } - } - }, - { - "name": "gen7", - "type": { - "definedWithTypeArgs": { - "name": "GenericNested", - "args": [ - { - "type": { - "generic": "T" - } - }, - { - "type": { - "definedWithTypeArgs": { - "name": "GenericNested", - "args": [ - { - "type": { - "generic": "T" - } - }, - { - "type": { - "generic": "U" - } - } - ] - } - } - } - ] - } - } - }, - { - "name": "arr", - "type": { - "genericLenArray": [ - "u8", - "N" - ] - } - }, - { - "name": "warr", - "type": { - "definedWithTypeArgs": { - "name": "WrappedU8Array", - "args": [ - { - "type": { - "generic": "N" - } - } - ] - } - } - }, - { - "name": "warrval", - "type": { - "definedWithTypeArgs": { - "name": "WrappedU8Array", - "args": [ - { - "value": "10" - } - ] - } - } - }, - { - "name": "enm1", - "type": { - "definedWithTypeArgs": { - "name": "GenericEnum", - "args": [ - { - "type": { - "generic": "T" - } - }, - { - "type": { - "generic": "U" - } - }, - { - "type": { - "generic": "N" - } - } - ] - } - } - }, - { - "name": "enm2", - "type": { - "definedWithTypeArgs": { - "name": "GenericEnum", - "args": [ - { - "type": { - "definedWithTypeArgs": { - "name": "GenericNested", - "args": [ - { - "type": { - "generic": "T" - } - }, - { - "type": "u64" - } - ] - } - } - }, - { - "type": "u32" - }, - { - "value": "30" - } - ] - } - } - } - ] - } - } - ] - } \ No newline at end of file diff --git a/tests/idls/ido_pool.json b/tests/idls/ido_pool.json deleted file mode 100644 index 430c4d2..0000000 --- a/tests/idls/ido_pool.json +++ /dev/null @@ -1,397 +0,0 @@ -{ - "version": "0.0.0", - "name": "ido_pool", - "instructions": [ - { - "name": "initializePool", - "accounts": [ - { - "name": "poolAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "poolSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "redeemableMint", - "isMut": false, - "isSigner": false - }, - { - "name": "usdcMint", - "isMut": false, - "isSigner": false - }, - { - "name": "poolWatermelon", - "isMut": true, - "isSigner": false - }, - { - "name": "poolUsdc", - "isMut": false, - "isSigner": false - }, - { - "name": "distributionAuthority", - "isMut": false, - "isSigner": true - }, - { - "name": "creatorWatermelon", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "clock", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "numIdoTokens", - "type": "u64" - }, - { - "name": "nonce", - "type": "u8" - }, - { - "name": "startIdoTs", - "type": "i64" - }, - { - "name": "endDepositsTs", - "type": "i64" - }, - { - "name": "endIdoTs", - "type": "i64" - } - ] - }, - { - "name": "exchangeUsdcForRedeemable", - "accounts": [ - { - "name": "poolAccount", - "isMut": false, - "isSigner": false - }, - { - "name": "poolSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "redeemableMint", - "isMut": true, - "isSigner": false - }, - { - "name": "poolUsdc", - "isMut": true, - "isSigner": false - }, - { - "name": "userAuthority", - "isMut": false, - "isSigner": true - }, - { - "name": "userUsdc", - "isMut": true, - "isSigner": false - }, - { - "name": "userRedeemable", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "clock", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "amount", - "type": "u64" - } - ] - }, - { - "name": "exchangeRedeemableForUsdc", - "accounts": [ - { - "name": "poolAccount", - "isMut": false, - "isSigner": false - }, - { - "name": "poolSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "redeemableMint", - "isMut": true, - "isSigner": false - }, - { - "name": "poolUsdc", - "isMut": true, - "isSigner": false - }, - { - "name": "userAuthority", - "isMut": false, - "isSigner": true - }, - { - "name": "userUsdc", - "isMut": true, - "isSigner": false - }, - { - "name": "userRedeemable", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "clock", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "amount", - "type": "u64" - } - ] - }, - { - "name": "exchangeRedeemableForWatermelon", - "accounts": [ - { - "name": "poolAccount", - "isMut": false, - "isSigner": false - }, - { - "name": "poolSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "redeemableMint", - "isMut": true, - "isSigner": false - }, - { - "name": "poolWatermelon", - "isMut": true, - "isSigner": false - }, - { - "name": "userAuthority", - "isMut": false, - "isSigner": true - }, - { - "name": "userWatermelon", - "isMut": true, - "isSigner": false - }, - { - "name": "userRedeemable", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "clock", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "amount", - "type": "u64" - } - ] - }, - { - "name": "withdrawPoolUsdc", - "accounts": [ - { - "name": "poolAccount", - "isMut": false, - "isSigner": false - }, - { - "name": "poolSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "poolUsdc", - "isMut": true, - "isSigner": false - }, - { - "name": "distributionAuthority", - "isMut": false, - "isSigner": true - }, - { - "name": "creatorUsdc", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "clock", - "isMut": false, - "isSigner": false - } - ], - "args": [] - } - ], - "accounts": [ - { - "name": "PoolAccount", - "type": { - "kind": "struct", - "fields": [ - { - "name": "redeemableMint", - "type": "publicKey" - }, - { - "name": "poolWatermelon", - "type": "publicKey" - }, - { - "name": "watermelonMint", - "type": "publicKey" - }, - { - "name": "poolUsdc", - "type": "publicKey" - }, - { - "name": "distributionAuthority", - "type": "publicKey" - }, - { - "name": "nonce", - "type": "u8" - }, - { - "name": "numIdoTokens", - "type": "u64" - }, - { - "name": "startIdoTs", - "type": "i64" - }, - { - "name": "endDepositsTs", - "type": "i64" - }, - { - "name": "endIdoTs", - "type": "i64" - } - ] - } - } - ], - "errors": [ - { - "code": 300, - "name": "IdoFuture", - "msg": "IDO must start in the future" - }, - { - "code": 301, - "name": "SeqTimes", - "msg": "IDO times are non-sequential" - }, - { - "code": 302, - "name": "StartIdoTime", - "msg": "IDO has not started" - }, - { - "code": 303, - "name": "EndDepositsTime", - "msg": "Deposits period has ended" - }, - { - "code": 304, - "name": "EndIdoTime", - "msg": "IDO has ended" - }, - { - "code": 305, - "name": "IdoNotOver", - "msg": "IDO has not finished yet" - }, - { - "code": 306, - "name": "LowUsdc", - "msg": "Insufficient USDC" - }, - { - "code": 307, - "name": "LowRedeemable", - "msg": "Insufficient redeemable tokens" - }, - { - "code": 308, - "name": "UsdcNotEqRedeem", - "msg": "USDC total and redeemable total don't match" - }, - { - "code": 309, - "name": "InvalidNonce", - "msg": "Given nonce is invalid" - } - ], - "metadata": { - "address": "6iQsUPMA3k453npuvqbgARkSudA8YEtuDersUW7J5Ak1" - } -} \ No newline at end of file diff --git a/tests/idls/jet.json b/tests/idls/jet.json deleted file mode 100644 index 9269654..0000000 --- a/tests/idls/jet.json +++ /dev/null @@ -1,1905 +0,0 @@ -{ - "version": "0.0.0", - "name": "jet", - "instructions": [ - { - "name": "initMarket", - "accounts": [ - { - "name": "market", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "owner", - "type": "publicKey" - }, - { - "name": "quoteCurrency", - "type": "string" - }, - { - "name": "quoteTokenMint", - "type": "publicKey" - } - ] - }, - { - "name": "initReserve", - "accounts": [ - { - "name": "market", - "isMut": true, - "isSigner": false - }, - { - "name": "marketAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "reserve", - "isMut": true, - "isSigner": false - }, - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "feeNoteVault", - "isMut": true, - "isSigner": false - }, - { - "name": "dexSwapTokens", - "isMut": true, - "isSigner": false - }, - { - "name": "dexOpenOrders", - "isMut": true, - "isSigner": false - }, - { - "name": "dexMarket", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenMint", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "dexProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "oraclePrice", - "isMut": false, - "isSigner": false - }, - { - "name": "oracleProduct", - "isMut": false, - "isSigner": false - }, - { - "name": "depositNoteMint", - "isMut": true, - "isSigner": false - }, - { - "name": "loanNoteMint", - "isMut": true, - "isSigner": false - }, - { - "name": "quoteTokenMint", - "isMut": false, - "isSigner": false - }, - { - "name": "owner", - "isMut": false, - "isSigner": true - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "bump", - "type": { - "defined": "InitReserveBumpSeeds" - } - }, - { - "name": "config", - "type": { - "defined": "ReserveConfig" - } - } - ] - }, - { - "name": "updateReserveConfig", - "accounts": [ - { - "name": "market", - "isMut": false, - "isSigner": false - }, - { - "name": "reserve", - "isMut": true, - "isSigner": false - }, - { - "name": "owner", - "isMut": false, - "isSigner": true - } - ], - "args": [ - { - "name": "newConfig", - "type": { - "defined": "ReserveConfig" - } - } - ] - }, - { - "name": "initDepositAccount", - "accounts": [ - { - "name": "market", - "isMut": false, - "isSigner": false - }, - { - "name": "marketAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "reserve", - "isMut": false, - "isSigner": false - }, - { - "name": "depositNoteMint", - "isMut": false, - "isSigner": false - }, - { - "name": "depositor", - "isMut": true, - "isSigner": true - }, - { - "name": "depositAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "bump", - "type": "u8" - } - ] - }, - { - "name": "initCollateralAccount", - "accounts": [ - { - "name": "market", - "isMut": false, - "isSigner": false - }, - { - "name": "marketAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "obligation", - "isMut": true, - "isSigner": false - }, - { - "name": "reserve", - "isMut": false, - "isSigner": false - }, - { - "name": "depositNoteMint", - "isMut": false, - "isSigner": false - }, - { - "name": "owner", - "isMut": true, - "isSigner": true - }, - { - "name": "collateralAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "bump", - "type": "u8" - } - ] - }, - { - "name": "initLoanAccount", - "accounts": [ - { - "name": "market", - "isMut": false, - "isSigner": false - }, - { - "name": "marketAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "obligation", - "isMut": true, - "isSigner": false - }, - { - "name": "reserve", - "isMut": false, - "isSigner": false - }, - { - "name": "loanNoteMint", - "isMut": false, - "isSigner": false - }, - { - "name": "owner", - "isMut": true, - "isSigner": true - }, - { - "name": "loanAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "bump", - "type": "u8" - } - ] - }, - { - "name": "initObligation", - "accounts": [ - { - "name": "market", - "isMut": false, - "isSigner": false - }, - { - "name": "marketAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "borrower", - "isMut": true, - "isSigner": true - }, - { - "name": "obligation", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "bump", - "type": "u8" - } - ] - }, - { - "name": "setMarketOwner", - "accounts": [ - { - "name": "market", - "isMut": true, - "isSigner": false - }, - { - "name": "owner", - "isMut": false, - "isSigner": true - } - ], - "args": [ - { - "name": "newOwner", - "type": "publicKey" - } - ] - }, - { - "name": "setMarketFlags", - "accounts": [ - { - "name": "market", - "isMut": true, - "isSigner": false - }, - { - "name": "owner", - "isMut": false, - "isSigner": true - } - ], - "args": [ - { - "name": "flags", - "type": "u64" - } - ] - }, - { - "name": "closeDepositAccount", - "accounts": [ - { - "name": "market", - "isMut": false, - "isSigner": false - }, - { - "name": "marketAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "reserve", - "isMut": true, - "isSigner": false - }, - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "depositNoteMint", - "isMut": true, - "isSigner": false - }, - { - "name": "depositor", - "isMut": true, - "isSigner": true - }, - { - "name": "depositAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "receiverAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "bump", - "type": "u8" - } - ] - }, - { - "name": "deposit", - "accounts": [ - { - "name": "market", - "isMut": false, - "isSigner": false - }, - { - "name": "marketAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "reserve", - "isMut": true, - "isSigner": false - }, - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "depositNoteMint", - "isMut": true, - "isSigner": false - }, - { - "name": "depositor", - "isMut": false, - "isSigner": true - }, - { - "name": "depositAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "depositSource", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "bump", - "type": "u8" - }, - { - "name": "amount", - "type": { - "defined": "Amount" - } - } - ] - }, - { - "name": "withdraw", - "accounts": [ - { - "name": "market", - "isMut": false, - "isSigner": false - }, - { - "name": "marketAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "reserve", - "isMut": true, - "isSigner": false - }, - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "depositNoteMint", - "isMut": true, - "isSigner": false - }, - { - "name": "depositor", - "isMut": false, - "isSigner": true - }, - { - "name": "depositAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "withdrawAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "bump", - "type": "u8" - }, - { - "name": "amount", - "type": { - "defined": "Amount" - } - } - ] - }, - { - "name": "depositCollateral", - "accounts": [ - { - "name": "market", - "isMut": false, - "isSigner": false - }, - { - "name": "marketAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "reserve", - "isMut": false, - "isSigner": false - }, - { - "name": "obligation", - "isMut": true, - "isSigner": false - }, - { - "name": "owner", - "isMut": false, - "isSigner": true - }, - { - "name": "depositAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "collateralAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "bump", - "type": { - "defined": "DepositCollateralBumpSeeds" - } - }, - { - "name": "amount", - "type": { - "defined": "Amount" - } - } - ] - }, - { - "name": "withdrawCollateral", - "accounts": [ - { - "name": "market", - "isMut": false, - "isSigner": false - }, - { - "name": "marketAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "reserve", - "isMut": false, - "isSigner": false - }, - { - "name": "obligation", - "isMut": true, - "isSigner": false - }, - { - "name": "owner", - "isMut": false, - "isSigner": true - }, - { - "name": "depositAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "collateralAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "bump", - "type": { - "defined": "WithdrawCollateralBumpSeeds" - } - }, - { - "name": "amount", - "type": { - "defined": "Amount" - } - } - ] - }, - { - "name": "borrow", - "accounts": [ - { - "name": "market", - "isMut": false, - "isSigner": false - }, - { - "name": "marketAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "obligation", - "isMut": true, - "isSigner": false - }, - { - "name": "reserve", - "isMut": true, - "isSigner": false - }, - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "loanNoteMint", - "isMut": true, - "isSigner": false - }, - { - "name": "borrower", - "isMut": false, - "isSigner": true - }, - { - "name": "loanAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "receiverAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "bump", - "type": "u8" - }, - { - "name": "amount", - "type": { - "defined": "Amount" - } - } - ] - }, - { - "name": "repay", - "accounts": [ - { - "name": "market", - "isMut": false, - "isSigner": false - }, - { - "name": "marketAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "obligation", - "isMut": true, - "isSigner": false - }, - { - "name": "reserve", - "isMut": true, - "isSigner": false - }, - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "loanNoteMint", - "isMut": true, - "isSigner": false - }, - { - "name": "loanAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "payerAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "payer", - "isMut": false, - "isSigner": true - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "amount", - "type": { - "defined": "Amount" - } - } - ] - }, - { - "name": "liquidate", - "accounts": [ - { - "name": "market", - "isMut": false, - "isSigner": false - }, - { - "name": "marketAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "obligation", - "isMut": true, - "isSigner": false - }, - { - "name": "reserve", - "isMut": true, - "isSigner": false - }, - { - "name": "collateralReserve", - "isMut": false, - "isSigner": false - }, - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "loanNoteMint", - "isMut": true, - "isSigner": false - }, - { - "name": "loanAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "collateralAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "payerAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "receiverAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "payer", - "isMut": false, - "isSigner": true - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "amount", - "type": { - "defined": "Amount" - } - }, - { - "name": "minCollateral", - "type": "u64" - } - ] - }, - { - "name": "mockLiquidateDex", - "accounts": [ - { - "name": "sourceMarket", - "accounts": [ - { - "name": "market", - "isMut": true, - "isSigner": false - }, - { - "name": "openOrders", - "isMut": true, - "isSigner": false - }, - { - "name": "requestQueue", - "isMut": true, - "isSigner": false - }, - { - "name": "eventQueue", - "isMut": true, - "isSigner": false - }, - { - "name": "bids", - "isMut": true, - "isSigner": false - }, - { - "name": "asks", - "isMut": true, - "isSigner": false - }, - { - "name": "coinVault", - "isMut": true, - "isSigner": false - }, - { - "name": "pcVault", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultSigner", - "isMut": false, - "isSigner": false - } - ] - }, - { - "name": "targetMarket", - "accounts": [ - { - "name": "market", - "isMut": true, - "isSigner": false - }, - { - "name": "openOrders", - "isMut": true, - "isSigner": false - }, - { - "name": "requestQueue", - "isMut": true, - "isSigner": false - }, - { - "name": "eventQueue", - "isMut": true, - "isSigner": false - }, - { - "name": "bids", - "isMut": true, - "isSigner": false - }, - { - "name": "asks", - "isMut": true, - "isSigner": false - }, - { - "name": "coinVault", - "isMut": true, - "isSigner": false - }, - { - "name": "pcVault", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultSigner", - "isMut": false, - "isSigner": false - } - ] - }, - { - "name": "toLiquidate", - "accounts": [ - { - "name": "market", - "isMut": false, - "isSigner": false - }, - { - "name": "marketAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "obligation", - "isMut": true, - "isSigner": false - }, - { - "name": "loanReserve", - "isMut": true, - "isSigner": false - }, - { - "name": "loanReserveVault", - "isMut": true, - "isSigner": false - }, - { - "name": "loanNoteMint", - "isMut": true, - "isSigner": false - }, - { - "name": "loanAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "collateralReserve", - "isMut": false, - "isSigner": false - }, - { - "name": "collateralReserveVault", - "isMut": true, - "isSigner": false - }, - { - "name": "depositNoteMint", - "isMut": true, - "isSigner": false - }, - { - "name": "collateralAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "dexSwapTokens", - "isMut": true, - "isSigner": false - }, - { - "name": "dexProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - } - ] - } - ], - "args": [] - }, - { - "name": "refreshReserve", - "accounts": [ - { - "name": "market", - "isMut": true, - "isSigner": false - }, - { - "name": "marketAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "reserve", - "isMut": true, - "isSigner": false - }, - { - "name": "feeNoteVault", - "isMut": true, - "isSigner": false - }, - { - "name": "depositNoteMint", - "isMut": true, - "isSigner": false - }, - { - "name": "pythOraclePrice", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - } - ], - "accounts": [ - { - "name": "Market", - "type": { - "kind": "struct", - "fields": [ - { - "name": "version", - "type": "u32" - }, - { - "name": "quoteExponent", - "type": "i32" - }, - { - "name": "quoteCurrency", - "type": { - "array": [ - "u8", - 15 - ] - } - }, - { - "name": "authorityBumpSeed", - "type": { - "array": [ - "u8", - 1 - ] - } - }, - { - "name": "authoritySeed", - "type": "publicKey" - }, - { - "name": "marketAuthority", - "type": "publicKey" - }, - { - "name": "owner", - "type": "publicKey" - }, - { - "name": "quoteTokenMint", - "type": "publicKey" - }, - { - "name": "flags", - "type": "u64" - }, - { - "name": "reserved", - "type": { - "array": [ - "u8", - 352 - ] - } - }, - { - "name": "reserves", - "type": { - "array": [ - "u8", - 12288 - ] - } - } - ] - } - }, - { - "name": "Obligation", - "type": { - "kind": "struct", - "fields": [ - { - "name": "version", - "type": "u32" - }, - { - "name": "reserved0", - "type": "u32" - }, - { - "name": "market", - "type": "publicKey" - }, - { - "name": "owner", - "type": "publicKey" - }, - { - "name": "reserved1", - "type": { - "array": [ - "u8", - 184 - ] - } - }, - { - "name": "cached", - "type": { - "array": [ - "u8", - 256 - ] - } - }, - { - "name": "collateral", - "type": { - "array": [ - "u8", - 2048 - ] - } - }, - { - "name": "loans", - "type": { - "array": [ - "u8", - 2048 - ] - } - } - ] - } - }, - { - "name": "Reserve", - "type": { - "kind": "struct", - "fields": [ - { - "name": "version", - "type": "u16" - }, - { - "name": "index", - "type": "u16" - }, - { - "name": "exponent", - "type": "i32" - }, - { - "name": "market", - "type": "publicKey" - }, - { - "name": "pythOraclePrice", - "type": "publicKey" - }, - { - "name": "pythOracleProduct", - "type": "publicKey" - }, - { - "name": "tokenMint", - "type": "publicKey" - }, - { - "name": "depositNoteMint", - "type": "publicKey" - }, - { - "name": "loanNoteMint", - "type": "publicKey" - }, - { - "name": "vault", - "type": "publicKey" - }, - { - "name": "feeNoteVault", - "type": "publicKey" - }, - { - "name": "dexSwapTokens", - "type": "publicKey" - }, - { - "name": "dexOpenOrders", - "type": "publicKey" - }, - { - "name": "dexMarket", - "type": "publicKey" - }, - { - "name": "reserved0", - "type": { - "array": [ - "u8", - 408 - ] - } - }, - { - "name": "config", - "type": { - "defined": "ReserveConfig" - } - }, - { - "name": "reserved1", - "type": { - "array": [ - "u8", - 704 - ] - } - }, - { - "name": "state", - "type": { - "array": [ - "u8", - 512 - ] - } - } - ] - } - } - ], - "types": [ - { - "name": "Amount", - "type": { - "kind": "struct", - "fields": [ - { - "name": "units", - "type": { - "defined": "AmountUnits" - } - }, - { - "name": "value", - "type": "u64" - } - ] - } - }, - { - "name": "DepositCollateralBumpSeeds", - "type": { - "kind": "struct", - "fields": [ - { - "name": "collateralAccount", - "type": "u8" - }, - { - "name": "depositAccount", - "type": "u8" - } - ] - } - }, - { - "name": "InitReserveBumpSeeds", - "type": { - "kind": "struct", - "fields": [ - { - "name": "vault", - "type": "u8" - }, - { - "name": "feeNoteVault", - "type": "u8" - }, - { - "name": "dexOpenOrders", - "type": "u8" - }, - { - "name": "dexSwapTokens", - "type": "u8" - }, - { - "name": "depositNoteMint", - "type": "u8" - }, - { - "name": "loanNoteMint", - "type": "u8" - } - ] - } - }, - { - "name": "ReserveConfig", - "type": { - "kind": "struct", - "fields": [ - { - "name": "utilizationRate1", - "type": "u16" - }, - { - "name": "utilizationRate2", - "type": "u16" - }, - { - "name": "borrowRate0", - "type": "u16" - }, - { - "name": "borrowRate1", - "type": "u16" - }, - { - "name": "borrowRate2", - "type": "u16" - }, - { - "name": "borrowRate3", - "type": "u16" - }, - { - "name": "minCollateralRatio", - "type": "u16" - }, - { - "name": "liquidationPremium", - "type": "u16" - }, - { - "name": "manageFeeCollectionThreshold", - "type": "u64" - }, - { - "name": "manageFeeRate", - "type": "u16" - }, - { - "name": "loanOriginationFee", - "type": "u16" - }, - { - "name": "liquidationSlippage", - "type": "u16" - }, - { - "name": "reserved0", - "type": "u16" - }, - { - "name": "liquidationDexTradeMax", - "type": "u64" - }, - { - "name": "reserved1", - "type": { - "array": [ - "u8", - 24 - ] - } - } - ] - } - }, - { - "name": "WithdrawCollateralBumpSeeds", - "type": { - "kind": "struct", - "fields": [ - { - "name": "collateralAccount", - "type": "u8" - }, - { - "name": "depositAccount", - "type": "u8" - } - ] - } - }, - { - "name": "CacheInvalidError", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Expired", - "fields": [ - { - "name": "msg", - "type": "string" - } - ] - }, - { - "name": "TooNew", - "fields": [ - { - "name": "msg", - "type": "string" - } - ] - }, - { - "name": "Invalidated" - } - ] - } - }, - { - "name": "AmountUnits", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Tokens" - }, - { - "name": "DepositNotes" - }, - { - "name": "LoanNotes" - } - ] - } - }, - { - "name": "Rounding", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Up" - }, - { - "name": "Down" - } - ] - } - }, - { - "name": "DexSide", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Bid" - }, - { - "name": "Ask" - } - ] - } - }, - { - "name": "Side", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Collateral" - }, - { - "name": "Loan" - } - ] - } - }, - { - "name": "JobCompletion", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Partial" - }, - { - "name": "Full" - } - ] - } - } - ], - "events": [ - { - "name": "BorrowEvent", - "fields": [ - { - "name": "borrower", - "type": "publicKey", - "index": false - }, - { - "name": "reserve", - "type": "publicKey", - "index": false - }, - { - "name": "debt", - "type": "u64", - "index": false - } - ] - }, - { - "name": "DepositCollateralEvent", - "fields": [ - { - "name": "depositor", - "type": "publicKey", - "index": false - }, - { - "name": "reserve", - "type": "publicKey", - "index": false - }, - { - "name": "amount", - "type": { - "defined": "Amount" - }, - "index": false - } - ] - }, - { - "name": "LiquidateEvent", - "fields": [ - { - "name": "borrower", - "type": "publicKey", - "index": false - }, - { - "name": "debtReserve", - "type": "publicKey", - "index": false - }, - { - "name": "collateralReserve", - "type": "publicKey", - "index": false - }, - { - "name": "paidAmount", - "type": { - "defined": "Amount" - }, - "index": false - }, - { - "name": "collateralAmount", - "type": "u64", - "index": false - } - ] - }, - { - "name": "RepayEvent", - "fields": [ - { - "name": "borrower", - "type": "publicKey", - "index": false - }, - { - "name": "reserve", - "type": "publicKey", - "index": false - }, - { - "name": "amount", - "type": { - "defined": "Amount" - }, - "index": false - } - ] - }, - { - "name": "WithdrawCollateralEvent", - "fields": [ - { - "name": "depositor", - "type": "publicKey", - "index": false - }, - { - "name": "reserve", - "type": "publicKey", - "index": false - }, - { - "name": "amount", - "type": { - "defined": "Amount" - }, - "index": false - } - ] - } - ], - "errors": [ - { - "code": 300, - "name": "ArithmeticError", - "msg": "failed to perform some math operation safely" - }, - { - "code": 301, - "name": "InvalidOracle", - "msg": "oracle account provided is not valid" - }, - { - "code": 302, - "name": "NoFreeReserves", - "msg": "no free space left to add a new reserve in the market" - }, - { - "code": 303, - "name": "NoFreeObligation", - "msg": "no free space left to add the new loan or collateral in an obligation" - }, - { - "code": 304, - "name": "UnregisteredPosition", - "msg": "the obligation account doesn't have any record of the loan or collateral account" - }, - { - "code": 305, - "name": "InvalidOraclePrice", - "msg": "the oracle price account has an invalid price value" - }, - { - "code": 306, - "name": "InsufficientCollateral", - "msg": "there is not enough collateral deposited to borrow against" - }, - { - "code": 307, - "name": "SimultaneousDepositAndBorrow", - "msg": "cannot both deposit collateral to and borrow from the same reserve" - }, - { - "code": 308, - "name": "ObligationHealthy", - "msg": "cannot liquidate a healthy position" - }, - { - "code": 309, - "name": "ObligationUnhealthy", - "msg": "cannot perform an action that would leave the obligation unhealthy" - }, - { - "code": 310, - "name": "ExceptionalReserveState", - "msg": "reserve requires special action; call refresh_reserve until up to date" - }, - { - "code": 311, - "name": "InvalidAmountUnits", - "msg": "the units provided in the amount are not valid for the instruction" - }, - { - "code": 312, - "name": "InvalidDexMarketMints", - "msg": "the tokens in the DEX market don't match the reserve and lending market quote token" - }, - { - "code": 313, - "name": "InvalidMarketAuthority", - "msg": "the market authority provided doesn't match the market account" - }, - { - "code": 314, - "name": "InvalidLiquidationQuoteTokenAccount", - "msg": "the quote token account provided cannot be used for liquidations" - }, - { - "code": 315, - "name": "ObligationAccountMismatch", - "msg": "the obligation account doesn't have the collateral/loan registered" - }, - { - "code": 316, - "name": "UnknownInstruction", - "msg": "unknown instruction" - }, - { - "code": 317, - "name": "Disallowed", - "msg": "current conditions prevent an action from being performed" - }, - { - "code": 318, - "name": "LiquidationSwapSlipped", - "msg": "the actual slipped amount on the DEX trade exceeded the threshold configured" - }, - { - "code": 319, - "name": "CollateralValueTooSmall", - "msg": "the collateral value is too small for a DEX trade" - }, - { - "code": 320, - "name": "LiquidationLowCollateral", - "msg": "the collateral returned by the liquidation is smaller than requested" - }, - { - "code": 321, - "name": "NotSupported", - "msg": "this action is currently not supported by this version of the program" - }, - { - "code": 322, - "name": "MarketHalted", - "msg": "the market has currently halted this kind of operation" - }, - { - "code": 323, - "name": "InvalidParameter", - "msg": "a given parameter is not valid" - } - ], - "metadata": { - "address": "JPv1rCqrhagNNmJVM5J1he7msQ5ybtvE1nNuHpDHMNU" - } -} \ No newline at end of file diff --git a/tests/idls/jet_auth.json b/tests/idls/jet_auth.json deleted file mode 100644 index 337d251..0000000 --- a/tests/idls/jet_auth.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "version": "1.0.0", - "name": "jet_auth", - "instructions": [ - { - "name": "createUserAuth", - "accounts": [ - { - "name": "user", - "isMut": false, - "isSigner": true - }, - { - "name": "payer", - "isMut": true, - "isSigner": true - }, - { - "name": "auth", - "isMut": true, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [], - "returns": null - }, - { - "name": "authenticate", - "accounts": [ - { - "name": "auth", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "authority", - "isMut": false, - "isSigner": false - } - ], - "args": [], - "returns": null - } - ], - "accounts": [ - { - "name": "UserAuthentication", - "type": { - "kind": "struct", - "fields": [ - { - "name": "owner", - "type": "publicKey" - }, - { - "name": "complete", - "type": "bool" - }, - { - "name": "allowed", - "type": "bool" - } - ] - } - } - ], - "events": [ - { - "name": "AuthAccountCreated", - "fields": [ - { - "name": "user", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "Authenticated", - "fields": [ - { - "name": "user", - "type": "publicKey", - "index": false - } - ] - } - ] -} diff --git a/tests/idls/jet_rewards.json b/tests/idls/jet_rewards.json deleted file mode 100644 index 6894a17..0000000 --- a/tests/idls/jet_rewards.json +++ /dev/null @@ -1,1177 +0,0 @@ -{ - "version": "1.0.0", - "name": "jet_rewards", - "constants": [ - { - "name": "AWARD", - "type": { - "defined": "&[u8]" - }, - "value": "b\"award\"" - }, - { - "name": "DISTRIBUTION", - "type": { - "defined": "&[u8]" - }, - "value": "b\"distribution\"" - }, - { - "name": "VAULT", - "type": { - "defined": "&[u8]" - }, - "value": "b\"vault\"" - } - ], - "instructions": [ - { - "name": "airdropCreate", - "accounts": [ - { - "name": "airdrop", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": false - }, - { - "name": "rewardVault", - "isMut": true, - "isSigner": false - }, - { - "name": "payer", - "isMut": true, - "isSigner": true - }, - { - "name": "tokenMint", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "AirdropCreateParams" - } - } - ], - "returns": null - }, - { - "name": "airdropAddRecipients", - "accounts": [ - { - "name": "airdrop", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "AirdropAddRecipientsParams" - } - } - ], - "returns": null - }, - { - "name": "airdropFinalize", - "accounts": [ - { - "name": "airdrop", - "isMut": true, - "isSigner": false - }, - { - "name": "rewardVault", - "isMut": false, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - } - ], - "args": [], - "returns": null - }, - { - "name": "airdropClose", - "accounts": [ - { - "name": "airdrop", - "isMut": true, - "isSigner": false - }, - { - "name": "rewardVault", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "receiver", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenReceiver", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [], - "returns": null - }, - { - "name": "airdropClaim", - "accounts": [ - { - "name": "airdrop", - "isMut": true, - "isSigner": false - }, - { - "name": "rewardVault", - "isMut": true, - "isSigner": false - }, - { - "name": "recipient", - "isMut": false, - "isSigner": true - }, - { - "name": "receiver", - "isMut": true, - "isSigner": false - }, - { - "name": "stakePool", - "isMut": true, - "isSigner": false - }, - { - "name": "stakePoolVault", - "isMut": true, - "isSigner": false - }, - { - "name": "stakeAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "voterWeightRecord", - "isMut": true, - "isSigner": false - }, - { - "name": "maxVoterWeightRecord", - "isMut": true, - "isSigner": false - }, - { - "name": "stakingProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [], - "returns": null - }, - { - "name": "distributionCreate", - "accounts": [ - { - "name": "distribution", - "isMut": true, - "isSigner": false - }, - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "payerRent", - "isMut": true, - "isSigner": true - }, - { - "name": "payerTokenAuthority", - "isMut": false, - "isSigner": true - }, - { - "name": "payerTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenMint", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "DistributionCreateParams" - } - } - ], - "returns": null - }, - { - "name": "distributionRelease", - "accounts": [ - { - "name": "distribution", - "isMut": true, - "isSigner": false - }, - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "targetAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [], - "returns": null - }, - { - "name": "distributionClose", - "accounts": [ - { - "name": "distribution", - "isMut": true, - "isSigner": false - }, - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "receiver", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [], - "returns": null - }, - { - "name": "awardCreate", - "accounts": [ - { - "name": "award", - "isMut": true, - "isSigner": false - }, - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenMint", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenSource", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenSourceAuthority", - "isMut": false, - "isSigner": true - }, - { - "name": "payerRent", - "isMut": true, - "isSigner": true - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "AwardCreateParams" - } - } - ], - "returns": null - }, - { - "name": "awardRelease", - "accounts": [ - { - "name": "award", - "isMut": true, - "isSigner": false - }, - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "stakeAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "voterWeightRecord", - "isMut": true, - "isSigner": false - }, - { - "name": "maxVoterWeightRecord", - "isMut": true, - "isSigner": false - }, - { - "name": "stakePool", - "isMut": true, - "isSigner": false - }, - { - "name": "stakePoolVault", - "isMut": true, - "isSigner": false - }, - { - "name": "stakingProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [], - "returns": null - }, - { - "name": "awardClose", - "accounts": [ - { - "name": "award", - "isMut": true, - "isSigner": false - }, - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "receiver", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [], - "returns": null - }, - { - "name": "awardRevoke", - "accounts": [ - { - "name": "award", - "isMut": true, - "isSigner": false - }, - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "receiver", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenReceiver", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [], - "returns": null - } - ], - "accounts": [ - { - "name": "Airdrop", - "type": { - "kind": "struct", - "fields": [ - { - "name": "address", - "type": "publicKey" - }, - { - "name": "rewardVault", - "type": "publicKey" - }, - { - "name": "authority", - "type": "publicKey" - }, - { - "name": "expireAt", - "type": "i64" - }, - { - "name": "stakePool", - "type": "publicKey" - }, - { - "name": "flags", - "type": "u64" - }, - { - "name": "shortDesc", - "type": { - "array": ["u8", 32] - } - }, - { - "name": "longDesc", - "type": { - "array": ["u8", 255] - } - }, - { - "name": "vaultBump", - "type": { - "array": ["u8", 1] - } - }, - { - "name": "targetInfo", - "type": { - "array": ["u8", 400024] - } - } - ] - } - }, - { - "name": "Award", - "type": { - "kind": "struct", - "fields": [ - { - "name": "authority", - "type": "publicKey" - }, - { - "name": "seed", - "type": { - "array": ["u8", 30] - } - }, - { - "name": "seedLen", - "type": "u8" - }, - { - "name": "bumpSeed", - "type": { - "array": ["u8", 1] - } - }, - { - "name": "stakeAccount", - "type": "publicKey" - }, - { - "name": "vault", - "type": "publicKey" - }, - { - "name": "tokenDistribution", - "type": { - "defined": "TokenDistribution" - } - } - ] - } - }, - { - "name": "Distribution", - "type": { - "kind": "struct", - "fields": [ - { - "name": "address", - "type": "publicKey" - }, - { - "name": "authority", - "type": "publicKey" - }, - { - "name": "vault", - "type": "publicKey" - }, - { - "name": "seed", - "type": { - "array": ["u8", 30] - } - }, - { - "name": "seedLen", - "type": "u8" - }, - { - "name": "bumpSeed", - "type": { - "array": ["u8", 1] - } - }, - { - "name": "targetAccount", - "type": "publicKey" - }, - { - "name": "tokenDistribution", - "type": { - "defined": "TokenDistribution" - } - } - ] - } - } - ], - "types": [ - { - "name": "AirdropAddRecipientsParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "startIndex", - "type": "u64" - }, - { - "name": "recipients", - "type": { - "vec": { - "defined": "AirdropRecipientParam" - } - } - } - ] - } - }, - { - "name": "AirdropRecipientParam", - "type": { - "kind": "struct", - "fields": [ - { - "name": "amount", - "type": "u64" - }, - { - "name": "recipient", - "type": "publicKey" - } - ] - } - }, - { - "name": "AirdropCreateParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "expireAt", - "type": "i64" - }, - { - "name": "stakePool", - "type": "publicKey" - }, - { - "name": "shortDesc", - "type": "string" - }, - { - "name": "longDesc", - "type": "string" - }, - { - "name": "flags", - "type": "u64" - } - ] - } - }, - { - "name": "AwardCreateParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "seed", - "type": "string" - }, - { - "name": "authority", - "type": "publicKey" - }, - { - "name": "stakeAccount", - "type": "publicKey" - }, - { - "name": "amount", - "type": "u64" - }, - { - "name": "beginAt", - "type": "u64" - }, - { - "name": "endAt", - "type": "u64" - } - ] - } - }, - { - "name": "DistributionCreateParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "seed", - "type": "string" - }, - { - "name": "authority", - "type": "publicKey" - }, - { - "name": "targetAccount", - "type": "publicKey" - }, - { - "name": "amount", - "type": "u64" - }, - { - "name": "beginAt", - "type": "u64" - }, - { - "name": "endAt", - "type": "u64" - } - ] - } - }, - { - "name": "TokenDistribution", - "type": { - "kind": "struct", - "fields": [ - { - "name": "targetAmount", - "type": "u64" - }, - { - "name": "distributed", - "type": "u64" - }, - { - "name": "beginAt", - "type": "u64" - }, - { - "name": "endAt", - "type": "u64" - }, - { - "name": "kind", - "type": { - "defined": "DistributionKind" - } - } - ] - } - }, - { - "name": "DistributionKind", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Linear" - } - ] - } - } - ], - "events": [ - { - "name": "AirdropCreated", - "fields": [ - { - "name": "airdrop", - "type": "publicKey", - "index": false - }, - { - "name": "authority", - "type": "publicKey", - "index": false - }, - { - "name": "tokenMint", - "type": "publicKey", - "index": false - }, - { - "name": "params", - "type": { - "defined": "AirdropCreateParams" - }, - "index": false - } - ] - }, - { - "name": "AirdropRecipientsAdded", - "fields": [ - { - "name": "airdrop", - "type": "publicKey", - "index": false - }, - { - "name": "rewardAdditional", - "type": "u64", - "index": false - }, - { - "name": "rewardTotal", - "type": "u64", - "index": false - }, - { - "name": "recipientsAdditional", - "type": "u64", - "index": false - }, - { - "name": "recipientsTotal", - "type": "u64", - "index": false - }, - { - "name": "recipients", - "type": { - "vec": { - "defined": "AirdropRecipientParam" - } - }, - "index": false - } - ] - }, - { - "name": "AirdropFinalized", - "fields": [ - { - "name": "airdrop", - "type": "publicKey", - "index": false - }, - { - "name": "rewardTotal", - "type": "u64", - "index": false - }, - { - "name": "recipientsTotal", - "type": "u64", - "index": false - }, - { - "name": "vaultBalance", - "type": "u64", - "index": false - } - ] - }, - { - "name": "AirdropClaimed", - "fields": [ - { - "name": "airdrop", - "type": "publicKey", - "index": false - }, - { - "name": "recipient", - "type": "publicKey", - "index": false - }, - { - "name": "claimedAmount", - "type": "u64", - "index": false - }, - { - "name": "remainingAmount", - "type": "u64", - "index": false - }, - { - "name": "vaultBalance", - "type": "u64", - "index": false - } - ] - }, - { - "name": "AirdropClosed", - "fields": [ - { - "name": "airdrop", - "type": "publicKey", - "index": false - }, - { - "name": "vaultAmount", - "type": "u64", - "index": false - } - ] - }, - { - "name": "AwardCreated", - "fields": [ - { - "name": "award", - "type": "publicKey", - "index": false - }, - { - "name": "tokenMint", - "type": "publicKey", - "index": false - }, - { - "name": "params", - "type": { - "defined": "AwardCreateParams" - }, - "index": false - }, - { - "name": "distributionKind", - "type": { - "defined": "DistributionKind" - }, - "index": false - } - ] - }, - { - "name": "AwardReleased", - "fields": [ - { - "name": "award", - "type": "publicKey", - "index": false - }, - { - "name": "amountReleased", - "type": "u64", - "index": false - }, - { - "name": "totalReleased", - "type": "u64", - "index": false - }, - { - "name": "vaultBalance", - "type": "u64", - "index": false - } - ] - }, - { - "name": "AwardRevoked", - "fields": [ - { - "name": "award", - "type": "publicKey", - "index": false - }, - { - "name": "unreleasedAmount", - "type": "u64", - "index": false - }, - { - "name": "totalReleased", - "type": "u64", - "index": false - }, - { - "name": "vaultAmount", - "type": "u64", - "index": false - } - ] - }, - { - "name": "AwardClosed", - "fields": [ - { - "name": "award", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "DistributionCreated", - "fields": [ - { - "name": "distribution", - "type": "publicKey", - "index": false - }, - { - "name": "authority", - "type": "publicKey", - "index": false - }, - { - "name": "tokenMint", - "type": "publicKey", - "index": false - }, - { - "name": "params", - "type": { - "defined": "DistributionCreateParams" - }, - "index": false - }, - { - "name": "distributionKind", - "type": { - "defined": "DistributionKind" - }, - "index": false - } - ] - }, - { - "name": "DistributionReleased", - "fields": [ - { - "name": "distribution", - "type": "publicKey", - "index": false - }, - { - "name": "amountReleased", - "type": "u64", - "index": false - }, - { - "name": "totalDistributed", - "type": "u64", - "index": false - }, - { - "name": "vaultBalance", - "type": "u64", - "index": false - } - ] - }, - { - "name": "DistributionClosed", - "fields": [ - { - "name": "distribution", - "type": "publicKey", - "index": false - } - ] - } - ], - "errors": [ - { - "code": 13000, - "name": "RecipientNotFound" - }, - { - "code": 13001, - "name": "AddOutOfOrder" - }, - { - "code": 13002, - "name": "AirdropFinal" - }, - { - "code": 13003, - "name": "AirdropInsufficientRewardBalance" - }, - { - "code": 13004, - "name": "AirdropExpired" - }, - { - "code": 13005, - "name": "AirdropNotFinal" - }, - { - "code": 13006, - "name": "RecipientsNotSorted" - }, - { - "code": 13007, - "name": "DistributionNotEnded" - }, - { - "code": 13008, - "name": "AwardNotFullyVested" - } - ] -} diff --git a/tests/idls/merkle_distributor.json b/tests/idls/merkle_distributor.json deleted file mode 100644 index d68ecc8..0000000 --- a/tests/idls/merkle_distributor.json +++ /dev/null @@ -1,480 +0,0 @@ -{ - "version": "0.0.0", - "name": "merkle_distributor", - "instructions": [ - { - "name": "newDistributor", - "accounts": [ - { - "name": "base", - "isMut": false, - "isSigner": true - }, - { - "name": "distributor", - "isMut": true, - "isSigner": false - }, - { - "name": "payer", - "isMut": false, - "isSigner": true - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "bump", - "type": "u8" - }, - { - "name": "root", - "type": { - "array": [ - "u8", - 32 - ] - } - }, - { - "name": "temporal", - "type": "publicKey" - } - ] - }, - { - "name": "closeDistributor", - "accounts": [ - { - "name": "base", - "isMut": false, - "isSigner": true - }, - { - "name": "distributor", - "isMut": true, - "isSigner": false - }, - { - "name": "distributorWallet", - "isMut": true, - "isSigner": false - }, - { - "name": "receiver", - "isMut": false, - "isSigner": true - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "bump", - "type": "u8" - }, - { - "name": "walletBump", - "type": "u8" - } - ] - }, - { - "name": "claim", - "accounts": [ - { - "name": "distributor", - "isMut": true, - "isSigner": false - }, - { - "name": "claimStatus", - "isMut": true, - "isSigner": false - }, - { - "name": "from", - "isMut": true, - "isSigner": false - }, - { - "name": "to", - "isMut": true, - "isSigner": false - }, - { - "name": "temporal", - "isMut": false, - "isSigner": true - }, - { - "name": "payer", - "isMut": false, - "isSigner": true - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "bump", - "type": "u8" - }, - { - "name": "index", - "type": "u64" - }, - { - "name": "amount", - "type": "u64" - }, - { - "name": "claimantSecret", - "type": "publicKey" - }, - { - "name": "proof", - "type": { - "vec": { - "array": [ - "u8", - 32 - ] - } - } - } - ] - }, - { - "name": "claimCandy", - "accounts": [ - { - "name": "distributor", - "isMut": true, - "isSigner": false - }, - { - "name": "distributorWallet", - "isMut": true, - "isSigner": false - }, - { - "name": "claimCount", - "isMut": true, - "isSigner": false - }, - { - "name": "temporal", - "isMut": false, - "isSigner": true - }, - { - "name": "payer", - "isMut": false, - "isSigner": true - }, - { - "name": "candyMachineConfig", - "isMut": false, - "isSigner": false - }, - { - "name": "candyMachine", - "isMut": true, - "isSigner": false - }, - { - "name": "candyMachineWallet", - "isMut": true, - "isSigner": false - }, - { - "name": "candyMachineMint", - "isMut": true, - "isSigner": false - }, - { - "name": "candyMachineMetadata", - "isMut": true, - "isSigner": false - }, - { - "name": "candyMachineMasterEdition", - "isMut": true, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenMetadataProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "candyMachineProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - }, - { - "name": "clock", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "walletBump", - "type": "u8" - }, - { - "name": "claimBump", - "type": "u8" - }, - { - "name": "index", - "type": "u64" - }, - { - "name": "amount", - "type": "u64" - }, - { - "name": "claimantSecret", - "type": "publicKey" - }, - { - "name": "proof", - "type": { - "vec": { - "array": [ - "u8", - 32 - ] - } - } - } - ] - } - ], - "accounts": [ - { - "name": "MerkleDistributor", - "type": { - "kind": "struct", - "fields": [ - { - "name": "base", - "type": "publicKey" - }, - { - "name": "bump", - "type": "u8" - }, - { - "name": "root", - "type": { - "array": [ - "u8", - 32 - ] - } - }, - { - "name": "temporal", - "type": "publicKey" - } - ] - } - }, - { - "name": "ClaimStatus", - "type": { - "kind": "struct", - "fields": [ - { - "name": "isClaimed", - "type": "bool" - }, - { - "name": "claimant", - "type": "publicKey" - }, - { - "name": "claimedAt", - "type": "i64" - }, - { - "name": "amount", - "type": "u64" - } - ] - } - }, - { - "name": "ClaimCount", - "type": { - "kind": "struct", - "fields": [ - { - "name": "count", - "type": "u64" - }, - { - "name": "claimant", - "type": "publicKey" - } - ] - } - }, - { - "name": "CandyMachine", - "type": { - "kind": "struct", - "fields": [ - { - "name": "authority", - "type": "publicKey" - }, - { - "name": "wallet", - "type": "publicKey" - }, - { - "name": "tokenMint", - "type": { - "option": "publicKey" - } - }, - { - "name": "config", - "type": "publicKey" - }, - { - "name": "data", - "type": { - "defined": "CandyMachineData" - } - }, - { - "name": "itemsRedeemed", - "type": "u64" - }, - { - "name": "bump", - "type": "u8" - } - ] - } - } - ], - "types": [ - { - "name": "CandyMachineData", - "type": { - "kind": "struct", - "fields": [ - { - "name": "uuid", - "type": "string" - }, - { - "name": "price", - "type": "u64" - }, - { - "name": "itemsAvailable", - "type": "u64" - }, - { - "name": "goLiveDate", - "type": { - "option": "i64" - } - } - ] - } - } - ], - "events": [ - { - "name": "ClaimedEvent", - "fields": [ - { - "name": "index", - "type": "u64", - "index": false - }, - { - "name": "claimant", - "type": "publicKey", - "index": false - }, - { - "name": "amount", - "type": "u64", - "index": false - } - ] - } - ], - "errors": [ - { - "code": 300, - "name": "InvalidProof", - "msg": "Invalid Merkle proof." - }, - { - "code": 301, - "name": "DropAlreadyClaimed", - "msg": "Drop already claimed." - }, - { - "code": 302, - "name": "Unauthorized", - "msg": "Account is not authorized to execute this instruction" - }, - { - "code": 303, - "name": "OwnerMismatch", - "msg": "Token account owner did not match intended owner" - }, - { - "code": 304, - "name": "TemporalMismatch", - "msg": "Temporal signer did not match distributor" - } - ] -} \ No newline at end of file diff --git a/tests/idls/misc.json b/tests/idls/misc.json new file mode 100644 index 0000000..41e2748 --- /dev/null +++ b/tests/idls/misc.json @@ -0,0 +1,3611 @@ +{ + "address": "3TEqcc8xhrhdspwbvoamUJe2borm4Nr72JxL66k6rgrh", + "metadata": { + "name": "misc", + "version": "0.1.0", + "spec": "0.1.0", + "description": "Created with Anchor" + }, + "instructions": [ + { + "name": "init_decrease_lamports", + "discriminator": [ + 176, + 148, + 191, + 1, + 254, + 139, + 189, + 186 + ], + "accounts": [ + { + "name": "data", + "writable": true, + "signer": true + }, + { + "name": "user", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + } + ], + "args": [] + }, + { + "name": "init_if_needed_checks_rent_exemption", + "discriminator": [ + 78, + 197, + 161, + 114, + 87, + 60, + 63, + 224 + ], + "accounts": [ + { + "name": "data", + "writable": true, + "signer": true + }, + { + "name": "user", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + } + ], + "args": [] + }, + { + "name": "init_with_space", + "discriminator": [ + 45, + 40, + 160, + 115, + 73, + 131, + 182, + 139 + ], + "accounts": [ + { + "name": "data", + "writable": true, + "signer": true + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + } + ], + "args": [ + { + "name": "_data", + "type": "u16" + } + ] + }, + { + "name": "initialize", + "discriminator": [ + 175, + 175, + 109, + 31, + 13, + 152, + 155, + 237 + ], + "accounts": [ + { + "name": "data", + "writable": true + } + ], + "args": [ + { + "name": "udata", + "type": "u128" + }, + { + "name": "idata", + "type": "i128" + } + ] + }, + { + "name": "initialize_no_rent_exempt", + "discriminator": [ + 173, + 1, + 8, + 204, + 254, + 80, + 20, + 123 + ], + "accounts": [ + { + "name": "data" + } + ], + "args": [] + }, + { + "name": "initialize_skip_rent_exempt", + "discriminator": [ + 72, + 82, + 242, + 84, + 200, + 79, + 133, + 134 + ], + "accounts": [ + { + "name": "data", + "writable": true + } + ], + "args": [] + }, + { + "name": "test_associated_constraint", + "discriminator": [ + 87, + 97, + 89, + 44, + 61, + 182, + 139, + 157 + ], + "accounts": [ + { + "name": "token", + "pda": { + "seeds": [ + { + "kind": "account", + "path": "authority" + }, + { + "kind": "const", + "value": [ + 6, + 221, + 246, + 225, + 215, + 101, + 161, + 147, + 217, + 203, + 225, + 70, + 206, + 235, + 121, + 172, + 28, + 180, + 133, + 237, + 95, + 91, + 55, + 145, + 58, + 140, + 245, + 133, + 126, + 255, + 0, + 169 + ] + }, + { + "kind": "account", + "path": "mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "mint" + }, + { + "name": "authority" + } + ], + "args": [] + }, + { + "name": "test_associated_token_with_token_program_constraint", + "discriminator": [ + 22, + 165, + 23, + 91, + 189, + 67, + 2, + 220 + ], + "accounts": [ + { + "name": "token", + "pda": { + "seeds": [ + { + "kind": "account", + "path": "authority" + }, + { + "kind": "account", + "path": "associated_token_token_program" + }, + { + "kind": "account", + "path": "mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "mint" + }, + { + "name": "authority" + }, + { + "name": "associated_token_token_program" + } + ], + "args": [] + }, + { + "name": "test_boxed_owner_constraint", + "docs": [ + "Compilation test for https://github.com/coral-xyz/anchor/issues/3074" + ], + "discriminator": [ + 0, + 92, + 11, + 253, + 255, + 6, + 240, + 230 + ], + "accounts": [ + { + "name": "my_account" + }, + { + "name": "program", + "address": "3TEqcc8xhrhdspwbvoamUJe2borm4Nr72JxL66k6rgrh" + } + ], + "args": [] + }, + { + "name": "test_close", + "discriminator": [ + 19, + 116, + 151, + 239, + 161, + 109, + 114, + 246 + ], + "accounts": [ + { + "name": "data", + "writable": true + }, + { + "name": "sol_dest" + } + ], + "args": [] + }, + { + "name": "test_close_mut", + "discriminator": [ + 91, + 46, + 50, + 28, + 112, + 176, + 92, + 83 + ], + "accounts": [ + { + "name": "data", + "writable": true + }, + { + "name": "sol_dest" + } + ], + "args": [] + }, + { + "name": "test_close_twice", + "discriminator": [ + 239, + 105, + 123, + 252, + 224, + 0, + 167, + 161 + ], + "accounts": [ + { + "name": "data", + "writable": true + }, + { + "name": "sol_dest" + } + ], + "args": [] + }, + { + "name": "test_composite_payer", + "discriminator": [ + 154, + 212, + 232, + 227, + 74, + 18, + 41, + 167 + ], + "accounts": [ + { + "name": "composite", + "accounts": [ + { + "name": "data", + "writable": true, + "signer": true + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + } + ] + }, + { + "name": "data", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + } + ], + "args": [] + }, + { + "name": "test_const_array_size", + "discriminator": [ + 212, + 128, + 112, + 95, + 226, + 6, + 154, + 135 + ], + "accounts": [ + { + "name": "data", + "writable": true + } + ], + "args": [ + { + "name": "data", + "type": "u8" + } + ] + }, + { + "name": "test_const_ix_data_size", + "discriminator": [ + 1, + 215, + 66, + 15, + 134, + 110, + 137, + 246 + ], + "accounts": [ + { + "name": "data", + "writable": true + } + ], + "args": [ + { + "name": "data", + "type": { + "array": [ + "u8", + 10 + ] + } + } + ] + }, + { + "name": "test_empty_seeds_constraint", + "discriminator": [ + 226, + 79, + 68, + 17, + 51, + 41, + 86, + 149 + ], + "accounts": [ + { + "name": "pda", + "pda": { + "seeds": [] + } + } + ], + "args": [] + }, + { + "name": "test_enforce_rent_exempt", + "discriminator": [ + 146, + 88, + 98, + 59, + 150, + 158, + 117, + 150 + ], + "accounts": [ + { + "name": "data" + } + ], + "args": [] + }, + { + "name": "test_executable", + "discriminator": [ + 144, + 192, + 228, + 167, + 114, + 90, + 215, + 185 + ], + "accounts": [ + { + "name": "program" + } + ], + "args": [] + }, + { + "name": "test_fetch_all", + "discriminator": [ + 111, + 12, + 61, + 225, + 227, + 152, + 245, + 188 + ], + "accounts": [ + { + "name": "data", + "writable": true, + "signer": true + }, + { + "name": "authority", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + } + ], + "args": [ + { + "name": "filterable", + "type": "pubkey" + } + ] + }, + { + "name": "test_init", + "discriminator": [ + 48, + 51, + 92, + 122, + 81, + 19, + 112, + 41 + ], + "accounts": [ + { + "name": "data", + "writable": true, + "signer": true + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + } + ], + "args": [] + }, + { + "name": "test_init_associated_token", + "discriminator": [ + 238, + 163, + 243, + 161, + 14, + 201, + 173, + 55 + ], + "accounts": [ + { + "name": "token", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "payer" + }, + { + "kind": "const", + "value": [ + 6, + 221, + 246, + 225, + 215, + 101, + 161, + 147, + 217, + 203, + 225, + 70, + 206, + 235, + 121, + 172, + 28, + 180, + 133, + 237, + 95, + 91, + 55, + 145, + 58, + 140, + 245, + 133, + 126, + 255, + 0, + 169 + ] + }, + { + "kind": "account", + "path": "mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "mint" + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_program", + "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + }, + { + "name": "associated_token_program", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + } + ], + "args": [] + }, + { + "name": "test_init_associated_token_if_needed", + "discriminator": [ + 156, + 117, + 112, + 149, + 142, + 209, + 35, + 130 + ], + "accounts": [ + { + "name": "token", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "authority" + }, + { + "kind": "const", + "value": [ + 6, + 221, + 246, + 225, + 215, + 101, + 161, + 147, + 217, + 203, + 225, + 70, + 206, + 235, + 121, + 172, + 28, + 180, + 133, + 237, + 95, + 91, + 55, + 145, + 58, + 140, + 245, + 133, + 126, + 255, + 0, + 169 + ] + }, + { + "kind": "account", + "path": "mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "mint" + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_program", + "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + }, + { + "name": "associated_token_program", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "authority" + } + ], + "args": [] + }, + { + "name": "test_init_associated_token_if_needed_with_token_program", + "discriminator": [ + 5, + 109, + 121, + 149, + 108, + 212, + 111, + 35 + ], + "accounts": [ + { + "name": "token", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "authority" + }, + { + "kind": "account", + "path": "associated_token_token_program" + }, + { + "kind": "account", + "path": "mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "mint" + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "associated_token_token_program" + }, + { + "name": "associated_token_program", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + }, + { + "name": "authority" + } + ], + "args": [] + }, + { + "name": "test_init_associated_token_with_token_program", + "discriminator": [ + 40, + 40, + 10, + 136, + 70, + 123, + 95, + 60 + ], + "accounts": [ + { + "name": "token", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "payer" + }, + { + "kind": "account", + "path": "associated_token_token_program" + }, + { + "kind": "account", + "path": "mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "mint" + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "associated_token_token_program" + }, + { + "name": "associated_token_program", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + } + ], + "args": [] + }, + { + "name": "test_init_if_needed", + "discriminator": [ + 16, + 205, + 96, + 126, + 156, + 48, + 191, + 188 + ], + "accounts": [ + { + "name": "data", + "writable": true, + "signer": true + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + } + ], + "args": [ + { + "name": "data", + "type": "u16" + } + ] + }, + { + "name": "test_init_if_needed_checks_owner", + "discriminator": [ + 233, + 184, + 243, + 38, + 95, + 174, + 183, + 153 + ], + "accounts": [ + { + "name": "data", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 104, + 101, + 108, + 108, + 111 + ] + } + ] + } + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "owner" + } + ], + "args": [] + }, + { + "name": "test_init_if_needed_checks_seeds", + "discriminator": [ + 178, + 186, + 52, + 6, + 254, + 237, + 92, + 16 + ], + "accounts": [ + { + "name": "data", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "arg", + "path": "seed_data" + } + ] + } + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + } + ], + "args": [ + { + "name": "_seed_data", + "type": "string" + } + ] + }, + { + "name": "test_init_many_associated_token_accounts", + "discriminator": [ + 85, + 129, + 144, + 112, + 247, + 157, + 250, + 177 + ], + "accounts": [ + { + "name": "mint", + "writable": true, + "signer": true + }, + { + "name": "ata1", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "user" + }, + { + "kind": "const", + "value": [ + 6, + 221, + 246, + 225, + 215, + 101, + 161, + 147, + 217, + 203, + 225, + 70, + 206, + 235, + 121, + 172, + 28, + 180, + 133, + 237, + 95, + 91, + 55, + 145, + 58, + 140, + 245, + 133, + 126, + 255, + 0, + 169 + ] + }, + { + "kind": "account", + "path": "mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "ata2", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "system_program" + }, + { + "kind": "const", + "value": [ + 6, + 221, + 246, + 225, + 215, + 101, + 161, + 147, + 217, + 203, + 225, + 70, + 206, + 235, + 121, + 172, + 28, + 180, + 133, + 237, + 95, + 91, + 55, + 145, + 58, + 140, + 245, + 133, + 126, + 255, + 0, + 169 + ] + }, + { + "kind": "account", + "path": "mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "ata3", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "token_program" + }, + { + "kind": "const", + "value": [ + 6, + 221, + 246, + 225, + 215, + 101, + 161, + 147, + 217, + 203, + 225, + 70, + 206, + 235, + 121, + 172, + 28, + 180, + 133, + 237, + 95, + 91, + 55, + 145, + 58, + 140, + 245, + 133, + 126, + 255, + 0, + 169 + ] + }, + { + "kind": "account", + "path": "mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "ata4", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "associated_token_program" + }, + { + "kind": "const", + "value": [ + 6, + 221, + 246, + 225, + 215, + 101, + 161, + 147, + 217, + 203, + 225, + 70, + 206, + 235, + 121, + 172, + 28, + 180, + 133, + 237, + 95, + 91, + 55, + 145, + 58, + 140, + 245, + 133, + 126, + 255, + 0, + 169 + ] + }, + { + "kind": "account", + "path": "mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "ata5", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "account", + "path": "mint" + }, + { + "kind": "const", + "value": [ + 6, + 221, + 246, + 225, + 215, + 101, + 161, + 147, + 217, + 203, + 225, + 70, + 206, + 235, + 121, + 172, + 28, + 180, + 133, + 237, + 95, + 91, + 55, + 145, + 58, + 140, + 245, + 133, + 126, + 255, + 0, + 169 + ] + }, + { + "kind": "account", + "path": "mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "user", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_program", + "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + }, + { + "name": "associated_token_program", + "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + } + ], + "args": [] + }, + { + "name": "test_init_mint", + "discriminator": [ + 143, + 94, + 198, + 131, + 228, + 237, + 145, + 69 + ], + "accounts": [ + { + "name": "mint", + "writable": true, + "signer": true + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_program", + "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + } + ], + "args": [] + }, + { + "name": "test_init_mint_if_needed", + "discriminator": [ + 186, + 191, + 10, + 216, + 159, + 216, + 164, + 189 + ], + "accounts": [ + { + "name": "mint", + "writable": true, + "signer": true + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_program", + "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + }, + { + "name": "mint_authority" + }, + { + "name": "freeze_authority" + } + ], + "args": [ + { + "name": "_decimals", + "type": "u8" + } + ] + }, + { + "name": "test_init_mint_if_needed_with_token_program", + "discriminator": [ + 133, + 73, + 16, + 208, + 137, + 89, + 198, + 242 + ], + "accounts": [ + { + "name": "mint", + "writable": true, + "signer": true + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "mint_token_program" + }, + { + "name": "mint_authority" + }, + { + "name": "freeze_authority" + } + ], + "args": [] + }, + { + "name": "test_init_mint_with_token_program", + "discriminator": [ + 181, + 18, + 199, + 134, + 241, + 101, + 247, + 218 + ], + "accounts": [ + { + "name": "mint", + "writable": true, + "signer": true + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "mint_token_program" + } + ], + "args": [] + }, + { + "name": "test_init_token", + "discriminator": [ + 156, + 164, + 56, + 49, + 80, + 56, + 253, + 217 + ], + "accounts": [ + { + "name": "token", + "writable": true, + "signer": true + }, + { + "name": "mint" + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_program", + "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + } + ], + "args": [] + }, + { + "name": "test_init_token_if_needed", + "discriminator": [ + 86, + 253, + 132, + 193, + 105, + 56, + 185, + 124 + ], + "accounts": [ + { + "name": "token", + "writable": true, + "signer": true + }, + { + "name": "mint" + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_program", + "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + }, + { + "name": "authority" + } + ], + "args": [] + }, + { + "name": "test_init_token_if_needed_with_token_program", + "discriminator": [ + 127, + 138, + 63, + 243, + 214, + 2, + 213, + 2 + ], + "accounts": [ + { + "name": "token", + "writable": true, + "signer": true + }, + { + "name": "mint" + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_token_program" + }, + { + "name": "authority" + } + ], + "args": [] + }, + { + "name": "test_init_token_with_token_program", + "discriminator": [ + 172, + 136, + 109, + 28, + 117, + 149, + 207, + 166 + ], + "accounts": [ + { + "name": "token", + "writable": true, + "signer": true + }, + { + "name": "mint" + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_token_program" + } + ], + "args": [] + }, + { + "name": "test_init_with_empty_seeds", + "discriminator": [ + 193, + 141, + 135, + 230, + 46, + 149, + 156, + 3 + ], + "accounts": [ + { + "name": "pda", + "writable": true, + "pda": { + "seeds": [] + } + }, + { + "name": "authority", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + } + ], + "args": [] + }, + { + "name": "test_init_zero_copy", + "discriminator": [ + 156, + 220, + 153, + 132, + 205, + 36, + 157, + 184 + ], + "accounts": [ + { + "name": "data", + "writable": true, + "signer": true + }, + { + "name": "payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + } + ], + "args": [] + }, + { + "name": "test_instruction_constraint", + "discriminator": [ + 26, + 70, + 124, + 226, + 78, + 74, + 4, + 224 + ], + "accounts": [ + { + "name": "my_pda", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 121, + 45, + 115, + 101, + 101, + 100 + ] + }, + { + "kind": "account", + "path": "my_account" + } + ] + } + }, + { + "name": "my_account" + } + ], + "args": [ + { + "name": "_nonce", + "type": "u8" + } + ] + }, + { + "name": "test_mint_constraint", + "discriminator": [ + 26, + 14, + 45, + 214, + 83, + 29, + 105, + 84 + ], + "accounts": [ + { + "name": "mint" + }, + { + "name": "mint_authority" + }, + { + "name": "freeze_authority" + } + ], + "args": [ + { + "name": "_decimals", + "type": "u8" + } + ] + }, + { + "name": "test_mint_miss_mint_auth_constraint", + "discriminator": [ + 249, + 159, + 246, + 95, + 140, + 17, + 40, + 231 + ], + "accounts": [ + { + "name": "mint" + }, + { + "name": "freeze_authority" + } + ], + "args": [ + { + "name": "_decimals", + "type": "u8" + } + ] + }, + { + "name": "test_mint_only_auth_constraint", + "discriminator": [ + 54, + 36, + 86, + 126, + 36, + 43, + 166, + 249 + ], + "accounts": [ + { + "name": "mint" + }, + { + "name": "mint_authority" + }, + { + "name": "freeze_authority" + } + ], + "args": [] + }, + { + "name": "test_mint_only_decimals_constraint", + "discriminator": [ + 70, + 210, + 158, + 15, + 243, + 200, + 137, + 210 + ], + "accounts": [ + { + "name": "mint" + } + ], + "args": [ + { + "name": "_decimals", + "type": "u8" + } + ] + }, + { + "name": "test_mint_only_one_auth_constraint", + "discriminator": [ + 34, + 166, + 73, + 2, + 38, + 134, + 171, + 67 + ], + "accounts": [ + { + "name": "mint" + }, + { + "name": "mint_authority" + } + ], + "args": [] + }, + { + "name": "test_mint_only_token_program_constraint", + "discriminator": [ + 19, + 177, + 49, + 237, + 49, + 250, + 143, + 105 + ], + "accounts": [ + { + "name": "mint" + }, + { + "name": "mint_token_program" + } + ], + "args": [] + }, + { + "name": "test_multidimensional_array", + "discriminator": [ + 177, + 201, + 100, + 70, + 153, + 227, + 192, + 239 + ], + "accounts": [ + { + "name": "data", + "writable": true + } + ], + "args": [ + { + "name": "data", + "type": { + "array": [ + { + "array": [ + "u8", + 10 + ] + }, + 10 + ] + } + } + ] + }, + { + "name": "test_multidimensional_array_const_sizes", + "discriminator": [ + 42, + 25, + 47, + 79, + 84, + 105, + 243, + 48 + ], + "accounts": [ + { + "name": "data", + "writable": true + } + ], + "args": [ + { + "name": "data", + "type": { + "array": [ + { + "array": [ + "u8", + 11 + ] + }, + 10 + ] + } + } + ] + }, + { + "name": "test_no_rent_exempt", + "discriminator": [ + 153, + 120, + 195, + 37, + 254, + 42, + 97, + 139 + ], + "accounts": [ + { + "name": "data" + } + ], + "args": [] + }, + { + "name": "test_only_auth_constraint", + "discriminator": [ + 143, + 232, + 74, + 144, + 160, + 20, + 213, + 146 + ], + "accounts": [ + { + "name": "token" + }, + { + "name": "mint" + }, + { + "name": "payer", + "signer": true + } + ], + "args": [] + }, + { + "name": "test_only_mint_constraint", + "discriminator": [ + 144, + 58, + 128, + 48, + 7, + 29, + 29, + 32 + ], + "accounts": [ + { + "name": "token" + }, + { + "name": "mint" + } + ], + "args": [] + }, + { + "name": "test_only_token_program_constraint", + "discriminator": [ + 217, + 84, + 7, + 187, + 85, + 97, + 251, + 94 + ], + "accounts": [ + { + "name": "token" + }, + { + "name": "token_token_program" + } + ], + "args": [] + }, + { + "name": "test_owner", + "discriminator": [ + 120, + 243, + 230, + 255, + 3, + 180, + 85, + 30 + ], + "accounts": [ + { + "name": "data" + }, + { + "name": "misc" + } + ], + "args": [] + }, + { + "name": "test_pda_init", + "discriminator": [ + 192, + 232, + 43, + 4, + 187, + 135, + 7, + 107 + ], + "accounts": [ + { + "name": "my_pda", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 121, + 45, + 115, + 101, + 101, + 100 + ] + }, + { + "kind": "arg", + "path": "domain" + }, + { + "kind": "account", + "path": "foo" + }, + { + "kind": "arg", + "path": "seed" + } + ] + } + }, + { + "name": "my_payer", + "writable": true, + "signer": true + }, + { + "name": "foo" + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + } + ], + "args": [ + { + "name": "_domain", + "type": "string" + }, + { + "name": "_seed", + "type": "bytes" + }, + { + "name": "_bump", + "type": "u8" + } + ] + }, + { + "name": "test_pda_init_zero_copy", + "discriminator": [ + 149, + 170, + 7, + 150, + 255, + 141, + 176, + 8 + ], + "accounts": [ + { + "name": "my_pda", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 121, + 45, + 115, + 101, + 101, + 100 + ] + } + ] + } + }, + { + "name": "my_payer", + "writable": true, + "signer": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + } + ], + "args": [] + }, + { + "name": "test_pda_mut_zero_copy", + "discriminator": [ + 130, + 23, + 183, + 116, + 227, + 167, + 202, + 169 + ], + "accounts": [ + { + "name": "my_pda", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 121, + 45, + 115, + 101, + 101, + 100 + ] + } + ] + } + }, + { + "name": "my_payer" + } + ], + "args": [] + }, + { + "name": "test_program_id_constraint", + "discriminator": [ + 69, + 123, + 96, + 54, + 160, + 50, + 160, + 63 + ], + "accounts": [ + { + "name": "first", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 115, + 101, + 101, + 100 + ] + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "second", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 115, + 101, + 101, + 100 + ] + } + ], + "program": { + "kind": "const", + "value": [ + 36, + 112, + 31, + 43, + 136, + 102, + 227, + 71, + 225, + 62, + 103, + 95, + 68, + 124, + 18, + 191, + 52, + 169, + 97, + 188, + 151, + 165, + 107, + 47, + 74, + 229, + 109, + 37, + 97, + 143, + 89, + 86 + ] + } + } + } + ], + "args": [ + { + "name": "_bump", + "type": "u8" + }, + { + "name": "_second_bump", + "type": "u8" + } + ] + }, + { + "name": "test_program_id_constraint_find_pda", + "discriminator": [ + 151, + 85, + 137, + 7, + 240, + 67, + 70, + 210 + ], + "accounts": [ + { + "name": "first", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 115, + 101, + 101, + 100 + ] + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "second", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 115, + 101, + 101, + 100 + ] + } + ], + "program": { + "kind": "const", + "value": [ + 36, + 112, + 31, + 43, + 136, + 102, + 227, + 71, + 225, + 62, + 103, + 95, + 68, + 124, + 18, + 191, + 52, + 169, + 97, + 188, + 151, + 165, + 107, + 47, + 74, + 229, + 109, + 37, + 97, + 143, + 89, + 86 + ] + } + } + } + ], + "args": [] + }, + { + "name": "test_simulate", + "discriminator": [ + 217, + 212, + 224, + 155, + 238, + 251, + 172, + 110 + ], + "accounts": [], + "args": [ + { + "name": "data", + "type": "u32" + } + ] + }, + { + "name": "test_token_auth_constraint", + "discriminator": [ + 88, + 149, + 22, + 34, + 10, + 162, + 53, + 189 + ], + "accounts": [ + { + "name": "token" + }, + { + "name": "mint" + }, + { + "name": "fake_authority" + } + ], + "args": [] + }, + { + "name": "test_token_constraint", + "discriminator": [ + 158, + 10, + 23, + 135, + 180, + 174, + 56, + 156 + ], + "accounts": [ + { + "name": "token" + }, + { + "name": "mint" + }, + { + "name": "payer", + "signer": true + } + ], + "args": [] + }, + { + "name": "test_token_seeds_init", + "discriminator": [ + 149, + 216, + 197, + 15, + 14, + 118, + 227, + 18 + ], + "accounts": [ + { + "name": "mint", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 121, + 45, + 109, + 105, + 110, + 116, + 45, + 115, + 101, + 101, + 100 + ] + } + ] + } + }, + { + "name": "my_pda", + "writable": true, + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 109, + 121, + 45, + 116, + 111, + 107, + 101, + 110, + 45, + 115, + 101, + 101, + 100 + ] + } + ] + } + }, + { + "name": "authority", + "writable": true + }, + { + "name": "system_program", + "address": "11111111111111111111111111111111" + }, + { + "name": "token_program", + "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" + } + ], + "args": [] + }, + { + "name": "test_used_identifiers", + "discriminator": [ + 189, + 151, + 27, + 194, + 71, + 97, + 24, + 129 + ], + "accounts": [ + { + "name": "test" + }, + { + "name": "test1" + }, + { + "name": "test2" + }, + { + "name": "test3" + }, + { + "name": "test4" + } + ], + "args": [ + { + "name": "program_id", + "type": "u8" + }, + { + "name": "accounts", + "type": "u8" + }, + { + "name": "ix_data", + "type": "u8" + }, + { + "name": "remaining_accounts", + "type": "u8" + } + ] + }, + { + "name": "test_validate_associated_token", + "discriminator": [ + 244, + 183, + 136, + 13, + 185, + 187, + 67, + 57 + ], + "accounts": [ + { + "name": "token", + "pda": { + "seeds": [ + { + "kind": "account", + "path": "wallet" + }, + { + "kind": "const", + "value": [ + 6, + 221, + 246, + 225, + 215, + 101, + 161, + 147, + 217, + 203, + 225, + 70, + 206, + 235, + 121, + 172, + 28, + 180, + 133, + 237, + 95, + 91, + 55, + 145, + 58, + 140, + 245, + 133, + 126, + 255, + 0, + 169 + ] + }, + { + "kind": "account", + "path": "mint" + } + ], + "program": { + "kind": "const", + "value": [ + 140, + 151, + 37, + 143, + 78, + 36, + 137, + 241, + 187, + 61, + 16, + 41, + 20, + 142, + 13, + 131, + 11, + 90, + 19, + 153, + 218, + 255, + 16, + 132, + 4, + 142, + 123, + 216, + 219, + 233, + 248, + 89 + ] + } + } + }, + { + "name": "mint" + }, + { + "name": "wallet" + } + ], + "args": [] + } + ], + "accounts": [ + { + "name": "Data", + "discriminator": [ + 206, + 156, + 59, + 188, + 18, + 79, + 240, + 232 + ] + }, + { + "name": "DataConstArraySize", + "discriminator": [ + 194, + 95, + 138, + 247, + 193, + 228, + 165, + 220 + ] + }, + { + "name": "DataI8", + "discriminator": [ + 41, + 118, + 177, + 101, + 9, + 142, + 97, + 101 + ] + }, + { + "name": "DataMultidimensionalArray", + "discriminator": [ + 72, + 13, + 147, + 231, + 155, + 199, + 208, + 11 + ] + }, + { + "name": "DataMultidimensionalArrayConstSizes", + "discriminator": [ + 239, + 173, + 196, + 26, + 157, + 226, + 175, + 36 + ] + }, + { + "name": "DataU16", + "discriminator": [ + 211, + 250, + 253, + 209, + 29, + 76, + 16, + 92 + ] + }, + { + "name": "DataWithFilter", + "discriminator": [ + 107, + 229, + 42, + 141, + 12, + 35, + 98, + 161 + ] + }, + { + "name": "DataZeroCopy", + "discriminator": [ + 18, + 76, + 140, + 34, + 15, + 3, + 29, + 237 + ] + } + ], + "events": [ + { + "name": "E1", + "discriminator": [ + 54, + 12, + 130, + 3, + 218, + 38, + 193, + 179 + ] + }, + { + "name": "E2", + "discriminator": [ + 124, + 248, + 110, + 32, + 66, + 202, + 254, + 78 + ] + }, + { + "name": "E3", + "discriminator": [ + 142, + 246, + 232, + 194, + 203, + 229, + 154, + 71 + ] + }, + { + "name": "E4", + "discriminator": [ + 154, + 15, + 179, + 171, + 242, + 180, + 177, + 116 + ] + }, + { + "name": "E5", + "discriminator": [ + 207, + 19, + 57, + 157, + 225, + 39, + 75, + 89 + ] + }, + { + "name": "E6", + "discriminator": [ + 131, + 78, + 132, + 139, + 97, + 139, + 214, + 2 + ] + } + ], + "types": [ + { + "name": "Data", + "type": { + "kind": "struct", + "fields": [ + { + "name": "udata", + "type": "u128" + }, + { + "name": "idata", + "type": "i128" + } + ] + } + }, + { + "name": "DataConstArraySize", + "type": { + "kind": "struct", + "fields": [ + { + "name": "data", + "type": { + "array": [ + "u8", + 10 + ] + } + } + ] + } + }, + { + "name": "DataI8", + "type": { + "kind": "struct", + "fields": [ + { + "name": "data", + "type": "i8" + } + ] + } + }, + { + "name": "DataMultidimensionalArray", + "type": { + "kind": "struct", + "fields": [ + { + "name": "data", + "type": { + "array": [ + { + "array": [ + "u8", + 10 + ] + }, + 10 + ] + } + } + ] + } + }, + { + "name": "DataMultidimensionalArrayConstSizes", + "type": { + "kind": "struct", + "fields": [ + { + "name": "data", + "type": { + "array": [ + { + "array": [ + "u8", + 11 + ] + }, + 10 + ] + } + } + ] + } + }, + { + "name": "DataU16", + "type": { + "kind": "struct", + "fields": [ + { + "name": "data", + "type": "u16" + } + ] + } + }, + { + "name": "DataWithFilter", + "type": { + "kind": "struct", + "fields": [ + { + "name": "authority", + "type": "pubkey" + }, + { + "name": "filterable", + "type": "pubkey" + } + ] + } + }, + { + "name": "DataZeroCopy", + "serialization": "bytemuck", + "repr": { + "kind": "c" + }, + "type": { + "kind": "struct", + "fields": [ + { + "name": "data", + "type": "u16" + }, + { + "name": "_padding", + "type": "u8" + }, + { + "name": "bump", + "type": "u8" + } + ] + } + }, + { + "name": "E1", + "type": { + "kind": "struct", + "fields": [ + { + "name": "data", + "type": "u32" + } + ] + } + }, + { + "name": "E2", + "type": { + "kind": "struct", + "fields": [ + { + "name": "data", + "type": "u32" + } + ] + } + }, + { + "name": "E3", + "type": { + "kind": "struct", + "fields": [ + { + "name": "data", + "type": "u32" + } + ] + } + }, + { + "name": "E4", + "type": { + "kind": "struct", + "fields": [ + { + "name": "data", + "type": "pubkey" + } + ] + } + }, + { + "name": "E5", + "type": { + "kind": "struct", + "fields": [ + { + "name": "data", + "type": { + "array": [ + "u8", + 10 + ] + } + } + ] + } + }, + { + "name": "E6", + "type": { + "kind": "struct", + "fields": [ + { + "name": "data", + "type": { + "array": [ + "u8", + 11 + ] + } + } + ] + } + } + ] +} \ No newline at end of file diff --git a/tests/idls/multisig.json b/tests/idls/multisig.json deleted file mode 100644 index 8b825b9..0000000 --- a/tests/idls/multisig.json +++ /dev/null @@ -1,277 +0,0 @@ -{ - "version": "0.0.0", - "name": "multisig", - "instructions": [ - { - "name": "createMultisig", - "accounts": [ - { - "name": "multisig", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "owners", - "type": { - "vec": "publicKey" - } - }, - { - "name": "threshold", - "type": "u64" - }, - { - "name": "nonce", - "type": "u8" - } - ] - }, - { - "name": "createTransaction", - "accounts": [ - { - "name": "multisig", - "isMut": false, - "isSigner": false - }, - { - "name": "transaction", - "isMut": true, - "isSigner": false - }, - { - "name": "proposer", - "isMut": false, - "isSigner": true - } - ], - "args": [ - { - "name": "pid", - "type": "publicKey" - }, - { - "name": "accs", - "type": { - "vec": { - "defined": "TransactionAccount" - } - } - }, - { - "name": "data", - "type": "bytes" - } - ] - }, - { - "name": "approve", - "accounts": [ - { - "name": "multisig", - "isMut": false, - "isSigner": false - }, - { - "name": "transaction", - "isMut": true, - "isSigner": false - }, - { - "name": "owner", - "isMut": false, - "isSigner": true - } - ], - "args": [] - }, - { - "name": "setOwners", - "accounts": [ - { - "name": "multisig", - "isMut": true, - "isSigner": false - }, - { - "name": "multisigSigner", - "isMut": false, - "isSigner": true - } - ], - "args": [ - { - "name": "owners", - "type": { - "vec": "publicKey" - } - } - ] - }, - { - "name": "changeThreshold", - "accounts": [ - { - "name": "multisig", - "isMut": true, - "isSigner": false - }, - { - "name": "multisigSigner", - "isMut": false, - "isSigner": true - } - ], - "args": [ - { - "name": "threshold", - "type": "u64" - } - ] - }, - { - "name": "executeTransaction", - "accounts": [ - { - "name": "multisig", - "isMut": false, - "isSigner": false - }, - { - "name": "multisigSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "transaction", - "isMut": true, - "isSigner": false - } - ], - "args": [] - } - ], - "accounts": [ - { - "name": "Multisig", - "type": { - "kind": "struct", - "fields": [ - { - "name": "owners", - "type": { - "vec": "publicKey" - } - }, - { - "name": "threshold", - "type": "u64" - }, - { - "name": "nonce", - "type": "u8" - } - ] - } - }, - { - "name": "Transaction", - "type": { - "kind": "struct", - "fields": [ - { - "name": "multisig", - "type": "publicKey" - }, - { - "name": "programId", - "type": "publicKey" - }, - { - "name": "accounts", - "type": { - "vec": { - "defined": "TransactionAccount" - } - } - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "signers", - "type": { - "vec": "bool" - } - }, - { - "name": "didExecute", - "type": "bool" - } - ] - } - } - ], - "types": [ - { - "name": "TransactionAccount", - "type": { - "kind": "struct", - "fields": [ - { - "name": "pubkey", - "type": "publicKey" - }, - { - "name": "isSigner", - "type": "bool" - }, - { - "name": "isWritable", - "type": "bool" - } - ] - } - } - ], - "errors": [ - { - "code": 300, - "name": "InvalidOwner", - "msg": "The given owner is not part of this multisig." - }, - { - "code": 301, - "name": "NotEnoughSigners", - "msg": "Not enough owners signed this transaction." - }, - { - "code": 302, - "name": "TransactionAlreadySigned", - "msg": "Cannot delete a transaction that has been signed by an owner." - }, - { - "code": 303, - "name": "Overflow", - "msg": "Overflow when adding." - }, - { - "code": 304, - "name": "UnableToDelete", - "msg": "Cannot delete a transaction the owner did not create." - }, - { - "code": 305, - "name": "AlreadyExecuted", - "msg": "The given transaction has already been executed." - }, - { - "code": 306, - "name": "InvalidThreshold", - "msg": "Threshold must be less than or equal to the number of owners." - } - ] -} \ No newline at end of file diff --git a/tests/idls/puppet.json b/tests/idls/puppet.json deleted file mode 100644 index 625b61e..0000000 --- a/tests/idls/puppet.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "version": "0.0.0", - "name": "puppet", - "instructions": [ - { - "name": "initialize", - "accounts": [ - { - "name": "puppet", - "isMut": true, - "isSigner": false - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "setData", - "accounts": [ - { - "name": "puppet", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "data", - "type": "u64" - } - ] - } - ], - "accounts": [ - { - "name": "Puppet", - "type": { - "kind": "struct", - "fields": [ - { - "name": "data", - "type": "u64" - } - ] - } - } - ], - "metadata": { - "address": "61Q5bAAha3NF2gowifnZxaRttM1eyCs4Y3j9YjgMWrqb" - } -} \ No newline at end of file diff --git a/tests/idls/puppet_master.json b/tests/idls/puppet_master.json deleted file mode 100644 index 186d86e..0000000 --- a/tests/idls/puppet_master.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": "0.0.0", - "name": "puppet_master", - "instructions": [ - { - "name": "pullStrings", - "accounts": [ - { - "name": "puppet", - "isMut": true, - "isSigner": false - }, - { - "name": "puppetProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "data", - "type": "u64" - } - ] - } - ], - "metadata": { - "address": "3UDzsDD9WWPAgHASFHyFdqZz1hFmWpWVCZzLPZabDJxe" - } -} \ No newline at end of file diff --git a/tests/idls/pyth.json b/tests/idls/pyth.json deleted file mode 100644 index 0516aaf..0000000 --- a/tests/idls/pyth.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "version": "0.0.0", - "name": "pyth", - "instructions": [ - { - "name": "initialize", - "accounts": [ - { - "name": "price", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "price", - "type": "i64" - }, - { - "name": "expo", - "type": "i32" - }, - { - "name": "conf", - "type": "u64" - } - ] - }, - { - "name": "setPrice", - "accounts": [ - { - "name": "price", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "price", - "type": "i64" - } - ] - } - ], - "types": [ - { - "name": "PriceStatus", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Unknown" - }, - { - "name": "Trading" - }, - { - "name": "Halted" - }, - { - "name": "Auction" - } - ] - } - }, - { - "name": "CorpAction", - "type": { - "kind": "enum", - "variants": [ - { - "name": "NoCorpAct" - } - ] - } - }, - { - "name": "PriceType", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Unknown" - }, - { - "name": "Price" - }, - { - "name": "TWAP" - }, - { - "name": "Volatility" - } - ] - } - } - ] -} \ No newline at end of file diff --git a/tests/idls/quarry_mine.json b/tests/idls/quarry_mine.json deleted file mode 100644 index 0d5b494..0000000 --- a/tests/idls/quarry_mine.json +++ /dev/null @@ -1,980 +0,0 @@ -{ - "version": "0.0.0", - "name": "quarry_mine", - "instructions": [ - { - "name": "newRewarder", - "accounts": [ - { - "name": "base", - "isMut": false, - "isSigner": true - }, - { - "name": "rewarder", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": false - }, - { - "name": "payer", - "isMut": true, - "isSigner": true - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "unusedClock", - "isMut": false, - "isSigner": false - }, - { - "name": "mintWrapper", - "isMut": false, - "isSigner": false - }, - { - "name": "rewardsTokenMint", - "isMut": false, - "isSigner": false - }, - { - "name": "claimFeeTokenAccount", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "bump", - "type": "u8" - } - ] - }, - { - "name": "setPauseAuthority", - "accounts": [ - { - "name": "auth", - "accounts": [ - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "rewarder", - "isMut": true, - "isSigner": false - } - ] - }, - { - "name": "pauseAuthority", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "pause", - "accounts": [ - { - "name": "pauseAuthority", - "isMut": false, - "isSigner": true - }, - { - "name": "rewarder", - "isMut": true, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "unpause", - "accounts": [ - { - "name": "pauseAuthority", - "isMut": false, - "isSigner": true - }, - { - "name": "rewarder", - "isMut": true, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "transferAuthority", - "accounts": [ - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "rewarder", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "newAuthority", - "type": "publicKey" - } - ] - }, - { - "name": "acceptAuthority", - "accounts": [ - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "rewarder", - "isMut": true, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "setAnnualRewards", - "accounts": [ - { - "name": "auth", - "accounts": [ - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "rewarder", - "isMut": true, - "isSigner": false - } - ] - } - ], - "args": [ - { - "name": "newRate", - "type": "u64" - } - ] - }, - { - "name": "createQuarry", - "accounts": [ - { - "name": "quarry", - "isMut": true, - "isSigner": false - }, - { - "name": "auth", - "accounts": [ - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "rewarder", - "isMut": true, - "isSigner": false - } - ] - }, - { - "name": "tokenMint", - "isMut": false, - "isSigner": false - }, - { - "name": "payer", - "isMut": true, - "isSigner": true - }, - { - "name": "unusedClock", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "bump", - "type": "u8" - } - ] - }, - { - "name": "setRewardsShare", - "accounts": [ - { - "name": "auth", - "accounts": [ - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "rewarder", - "isMut": true, - "isSigner": false - } - ] - }, - { - "name": "quarry", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "newShare", - "type": "u64" - } - ] - }, - { - "name": "setFamine", - "accounts": [ - { - "name": "auth", - "accounts": [ - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "rewarder", - "isMut": false, - "isSigner": false - } - ] - }, - { - "name": "quarry", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "famineTs", - "type": "i64" - } - ] - }, - { - "name": "updateQuarryRewards", - "accounts": [ - { - "name": "quarry", - "isMut": true, - "isSigner": false - }, - { - "name": "rewarder", - "isMut": false, - "isSigner": false - } - ], - "args": [] - }, - { - "name": "createMiner", - "accounts": [ - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "miner", - "isMut": true, - "isSigner": false - }, - { - "name": "quarry", - "isMut": true, - "isSigner": false - }, - { - "name": "rewarder", - "isMut": false, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "payer", - "isMut": true, - "isSigner": true - }, - { - "name": "tokenMint", - "isMut": false, - "isSigner": false - }, - { - "name": "minerVault", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "bump", - "type": "u8" - } - ] - }, - { - "name": "claimRewards", - "accounts": [ - { - "name": "mintWrapper", - "isMut": true, - "isSigner": false - }, - { - "name": "mintWrapperProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "minter", - "isMut": true, - "isSigner": false - }, - { - "name": "rewardsTokenMint", - "isMut": true, - "isSigner": false - }, - { - "name": "rewardsTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "claimFeeTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "stake", - "accounts": [ - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "miner", - "isMut": true, - "isSigner": false - }, - { - "name": "quarry", - "isMut": true, - "isSigner": false - }, - { - "name": "unusedMinerVault", - "isMut": true, - "isSigner": false - }, - { - "name": "unusedTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "rewarder", - "isMut": false, - "isSigner": false - } - ] - } - ], - "args": [] - }, - { - "name": "stakeTokens", - "accounts": [ - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "miner", - "isMut": true, - "isSigner": false - }, - { - "name": "quarry", - "isMut": true, - "isSigner": false - }, - { - "name": "minerVault", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "rewarder", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "amount", - "type": "u64" - } - ] - }, - { - "name": "withdrawTokens", - "accounts": [ - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "miner", - "isMut": true, - "isSigner": false - }, - { - "name": "quarry", - "isMut": true, - "isSigner": false - }, - { - "name": "minerVault", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "rewarder", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "amount", - "type": "u64" - } - ] - }, - { - "name": "extractFees", - "accounts": [ - { - "name": "rewarder", - "isMut": false, - "isSigner": false - }, - { - "name": "claimFeeTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "feeToTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [] - } - ], - "accounts": [ - { - "name": "Rewarder", - "type": { - "kind": "struct", - "fields": [ - { - "name": "base", - "type": "publicKey" - }, - { - "name": "bump", - "type": "u8" - }, - { - "name": "authority", - "type": "publicKey" - }, - { - "name": "pendingAuthority", - "type": "publicKey" - }, - { - "name": "numQuarries", - "type": "u16" - }, - { - "name": "annualRewardsRate", - "type": "u64" - }, - { - "name": "totalRewardsShares", - "type": "u64" - }, - { - "name": "mintWrapper", - "type": "publicKey" - }, - { - "name": "rewardsTokenMint", - "type": "publicKey" - }, - { - "name": "claimFeeTokenAccount", - "type": "publicKey" - }, - { - "name": "maxClaimFeeMillibps", - "type": "u64" - }, - { - "name": "pauseAuthority", - "type": "publicKey" - }, - { - "name": "isPaused", - "type": "bool" - } - ] - } - }, - { - "name": "Quarry", - "type": { - "kind": "struct", - "fields": [ - { - "name": "rewarderKey", - "type": "publicKey" - }, - { - "name": "tokenMintKey", - "type": "publicKey" - }, - { - "name": "bump", - "type": "u8" - }, - { - "name": "index", - "type": "u16" - }, - { - "name": "tokenMintDecimals", - "type": "u8" - }, - { - "name": "famineTs", - "type": "i64" - }, - { - "name": "lastUpdateTs", - "type": "i64" - }, - { - "name": "rewardsPerTokenStored", - "type": "u128" - }, - { - "name": "annualRewardsRate", - "type": "u64" - }, - { - "name": "rewardsShare", - "type": "u64" - }, - { - "name": "totalTokensDeposited", - "type": "u64" - }, - { - "name": "numMiners", - "type": "u64" - } - ] - } - }, - { - "name": "Miner", - "type": { - "kind": "struct", - "fields": [ - { - "name": "quarryKey", - "type": "publicKey" - }, - { - "name": "authority", - "type": "publicKey" - }, - { - "name": "bump", - "type": "u8" - }, - { - "name": "tokenVaultKey", - "type": "publicKey" - }, - { - "name": "rewardsEarned", - "type": "u64" - }, - { - "name": "rewardsPerTokenPaid", - "type": "u128" - }, - { - "name": "balance", - "type": "u64" - }, - { - "name": "index", - "type": "u64" - } - ] - } - } - ], - "types": [ - { - "name": "StakeAction", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Stake" - }, - { - "name": "Withdraw" - } - ] - } - } - ], - "events": [ - { - "name": "NewRewarderEvent", - "fields": [ - { - "name": "authority", - "type": "publicKey", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - }, - { - "name": "ClaimEvent", - "fields": [ - { - "name": "authority", - "type": "publicKey", - "index": false - }, - { - "name": "stakedToken", - "type": "publicKey", - "index": false - }, - { - "name": "rewardsToken", - "type": "publicKey", - "index": false - }, - { - "name": "amount", - "type": "u64", - "index": false - }, - { - "name": "fees", - "type": "u64", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - }, - { - "name": "StakeEvent", - "fields": [ - { - "name": "authority", - "type": "publicKey", - "index": false - }, - { - "name": "token", - "type": "publicKey", - "index": false - }, - { - "name": "amount", - "type": "u64", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - }, - { - "name": "WithdrawEvent", - "fields": [ - { - "name": "authority", - "type": "publicKey", - "index": false - }, - { - "name": "token", - "type": "publicKey", - "index": false - }, - { - "name": "amount", - "type": "u64", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - }, - { - "name": "RewarderAnnualRewardsUpdateEvent", - "fields": [ - { - "name": "previousRate", - "type": "u64", - "index": false - }, - { - "name": "newRate", - "type": "u64", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - }, - { - "name": "MinerCreateEvent", - "fields": [ - { - "name": "authority", - "type": "publicKey", - "index": false - }, - { - "name": "quarry", - "type": "publicKey", - "index": false - }, - { - "name": "miner", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "QuarryCreateEvent", - "fields": [ - { - "name": "tokenMint", - "type": "publicKey", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - }, - { - "name": "QuarryRewardsUpdateEvent", - "fields": [ - { - "name": "tokenMint", - "type": "publicKey", - "index": false - }, - { - "name": "annualRewardsRate", - "type": "u64", - "index": false - }, - { - "name": "rewardsShare", - "type": "u64", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - } - ], - "errors": [ - { - "code": 300, - "name": "Unauthorized", - "msg": "You are not authorized to perform this action." - }, - { - "code": 301, - "name": "InsufficientBalance", - "msg": "Insufficient staked balance for withdraw request." - }, - { - "code": 302, - "name": "PendingAuthorityNotSet", - "msg": "Pending authority not set" - }, - { - "code": 303, - "name": "InvalidRewardsShare", - "msg": "Invalid quarry rewards share" - }, - { - "code": 304, - "name": "InsufficientAllowance", - "msg": "Insufficient allowance." - }, - { - "code": 305, - "name": "NewVaultNotEmpty", - "msg": "New vault not empty." - }, - { - "code": 306, - "name": "NotEnoughTokens", - "msg": "Not enough tokens." - }, - { - "code": 307, - "name": "InvalidTimestamp", - "msg": "Invalid timestamp." - }, - { - "code": 308, - "name": "InvalidMaxClaimFee", - "msg": "Invalid max claim fee." - }, - { - "code": 309, - "name": "MaxAnnualRewardsRateExceeded", - "msg": "Max annual rewards rate exceeded." - }, - { - "code": 310, - "name": "Paused", - "msg": "Rewarder is paused." - }, - { - "code": 311, - "name": "UpperboundExceeded", - "msg": "Rewards earned exceeded quarry's upper bound." - } - ] -} \ No newline at end of file diff --git a/tests/idls/swap.json b/tests/idls/swap.json deleted file mode 100644 index 6ea31d0..0000000 --- a/tests/idls/swap.json +++ /dev/null @@ -1,352 +0,0 @@ -{ - "version": "0.0.0", - "name": "swap", - "instructions": [ - { - "name": "swap", - "accounts": [ - { - "name": "market", - "accounts": [ - { - "name": "market", - "isMut": true, - "isSigner": false - }, - { - "name": "openOrders", - "isMut": true, - "isSigner": false - }, - { - "name": "requestQueue", - "isMut": true, - "isSigner": false - }, - { - "name": "eventQueue", - "isMut": true, - "isSigner": false - }, - { - "name": "bids", - "isMut": true, - "isSigner": false - }, - { - "name": "asks", - "isMut": true, - "isSigner": false - }, - { - "name": "orderPayerTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "coinVault", - "isMut": true, - "isSigner": false - }, - { - "name": "pcVault", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "coinWallet", - "isMut": true, - "isSigner": false - } - ] - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "pcWallet", - "isMut": true, - "isSigner": false - }, - { - "name": "dexProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "side", - "type": { - "defined": "Side" - } - }, - { - "name": "amount", - "type": "u64" - }, - { - "name": "minExpectedSwapAmount", - "type": "u64" - } - ] - }, - { - "name": "swapTransitive", - "accounts": [ - { - "name": "from", - "accounts": [ - { - "name": "market", - "isMut": true, - "isSigner": false - }, - { - "name": "openOrders", - "isMut": true, - "isSigner": false - }, - { - "name": "requestQueue", - "isMut": true, - "isSigner": false - }, - { - "name": "eventQueue", - "isMut": true, - "isSigner": false - }, - { - "name": "bids", - "isMut": true, - "isSigner": false - }, - { - "name": "asks", - "isMut": true, - "isSigner": false - }, - { - "name": "orderPayerTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "coinVault", - "isMut": true, - "isSigner": false - }, - { - "name": "pcVault", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "coinWallet", - "isMut": true, - "isSigner": false - } - ] - }, - { - "name": "to", - "accounts": [ - { - "name": "market", - "isMut": true, - "isSigner": false - }, - { - "name": "openOrders", - "isMut": true, - "isSigner": false - }, - { - "name": "requestQueue", - "isMut": true, - "isSigner": false - }, - { - "name": "eventQueue", - "isMut": true, - "isSigner": false - }, - { - "name": "bids", - "isMut": true, - "isSigner": false - }, - { - "name": "asks", - "isMut": true, - "isSigner": false - }, - { - "name": "orderPayerTokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "coinVault", - "isMut": true, - "isSigner": false - }, - { - "name": "pcVault", - "isMut": true, - "isSigner": false - }, - { - "name": "vaultSigner", - "isMut": false, - "isSigner": false - }, - { - "name": "coinWallet", - "isMut": true, - "isSigner": false - } - ] - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "pcWallet", - "isMut": true, - "isSigner": false - }, - { - "name": "dexProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "amount", - "type": "u64" - }, - { - "name": "minExpectedSwapAmount", - "type": "u64" - } - ] - } - ], - "types": [ - { - "name": "Side", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Bid" - }, - { - "name": "Ask" - } - ] - } - } - ], - "events": [ - { - "name": "DidSwap", - "fields": [ - { - "name": "givenAmount", - "type": "u64", - "index": false - }, - { - "name": "minExpectedSwapAmount", - "type": "u64", - "index": false - }, - { - "name": "fromAmount", - "type": "u64", - "index": false - }, - { - "name": "toAmount", - "type": "u64", - "index": false - }, - { - "name": "spillAmount", - "type": "u64", - "index": false - }, - { - "name": "fromMint", - "type": "publicKey", - "index": false - }, - { - "name": "toMint", - "type": "publicKey", - "index": false - }, - { - "name": "quoteMint", - "type": "publicKey", - "index": false - }, - { - "name": "authority", - "type": "publicKey", - "index": false - } - ] - } - ], - "errors": [ - { - "code": 300, - "name": "SwapTokensCannotMatch", - "msg": "The tokens being swapped must have different mints" - }, - { - "code": 301, - "name": "SlippageExceeded", - "msg": "Slippage tolerance exceeded" - } - ] -} \ No newline at end of file diff --git a/tests/idls/switchboard.json b/tests/idls/switchboard.json deleted file mode 100644 index c476c4a..0000000 --- a/tests/idls/switchboard.json +++ /dev/null @@ -1 +0,0 @@ -{"version": "0.1.0", "name": "switchboard_v2", "instructions": [{"name": "vaultTransfer", "accounts": [{"name": "state", "isMut": false, "isSigner": false}, {"name": "authority", "isMut": false, "isSigner": true}, {"name": "to", "isMut": true, "isSigner": false}, {"name": "vault", "isMut": true, "isSigner": false}, {"name": "tokenProgram", "isMut": false, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "VaultTransferParams"}}]}, {"name": "programInit", "accounts": [{"name": "state", "isMut": true, "isSigner": false}, {"name": "authority", "isMut": false, "isSigner": false}, {"name": "tokenMint", "isMut": true, "isSigner": false}, {"name": "vault", "isMut": true, "isSigner": false}, {"name": "payer", "isMut": true, "isSigner": false}, {"name": "systemProgram", "isMut": false, "isSigner": false}, {"name": "tokenProgram", "isMut": false, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "ProgramInitParams"}}]}, {"name": "programConfig", "accounts": [{"name": "authority", "isMut": false, "isSigner": true}, {"name": "programState", "isMut": false, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "ProgramConfigParams"}}]}, {"name": "aggregatorInit", "accounts": [{"name": "aggregator", "isMut": true, "isSigner": false}, {"name": "authority", "isMut": false, "isSigner": false}, {"name": "queue", "isMut": false, "isSigner": false}, {"name": "authorWallet", "isMut": false, "isSigner": false}, {"name": "programState", "isMut": false, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "AggregatorInitParams"}}]}, {"name": "aggregatorLock", "accounts": [{"name": "aggregator", "isMut": true, "isSigner": false}, {"name": "authority", "isMut": true, "isSigner": true}], "args": [{"name": "params", "type": {"defined": "AggregatorLockParams"}}]}, {"name": "aggregatorSetAuthority", "accounts": [{"name": "aggregator", "isMut": true, "isSigner": false}, {"name": "authority", "isMut": false, "isSigner": true}, {"name": "newAuthority", "isMut": false, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "AggregatorSetAuthorityParams"}}]}, {"name": "aggregatorSetBatchSize", "accounts": [{"name": "aggregator", "isMut": true, "isSigner": false}, {"name": "authority", "isMut": false, "isSigner": true}], "args": [{"name": "params", "type": {"defined": "AggregatorSetBatchSizeParams"}}]}, {"name": "aggregatorSetMinJobs", "accounts": [{"name": "aggregator", "isMut": true, "isSigner": false}, {"name": "authority", "isMut": false, "isSigner": true}], "args": [{"name": "params", "type": {"defined": "AggregatorSetMinJobsParams"}}]}, {"name": "aggregatorSetMinOracles", "accounts": [{"name": "aggregator", "isMut": true, "isSigner": false}, {"name": "authority", "isMut": false, "isSigner": true}], "args": [{"name": "params", "type": {"defined": "AggregatorSetMinOraclesParams"}}]}, {"name": "aggregatorSetVarianceThreshold", "accounts": [{"name": "aggregator", "isMut": true, "isSigner": false}, {"name": "authority", "isMut": false, "isSigner": true}], "args": [{"name": "params", "type": {"defined": "AggregatorSetVarianceThresholdParams"}}]}, {"name": "aggregatorSetHistoryBuffer", "accounts": [{"name": "aggregator", "isMut": true, "isSigner": false}, {"name": "authority", "isMut": false, "isSigner": true}, {"name": "buffer", "isMut": true, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "AggregatorSetHistoryBufferParams"}}]}, {"name": "aggregatorSetQueue", "accounts": [{"name": "aggregator", "isMut": true, "isSigner": false}, {"name": "authority", "isMut": false, "isSigner": true}, {"name": "queue", "isMut": false, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "AggregatorSetQueueParams"}}]}, {"name": "aggregatorAddJob", "accounts": [{"name": "aggregator", "isMut": true, "isSigner": false}, {"name": "authority", "isMut": false, "isSigner": true}, {"name": "job", "isMut": true, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "AggregatorAddJobParams"}}]}, {"name": "aggregatorRemoveJob", "accounts": [{"name": "aggregator", "isMut": true, "isSigner": false}, {"name": "authority", "isMut": false, "isSigner": true}, {"name": "job", "isMut": true, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "AggregatorRemoveJobParams"}}]}, {"name": "aggregatorOpenRound", "accounts": [{"name": "aggregator", "isMut": true, "isSigner": false}, {"name": "lease", "isMut": true, "isSigner": false}, {"name": "oracleQueue", "isMut": true, "isSigner": false}, {"name": "queueAuthority", "isMut": false, "isSigner": false}, {"name": "permission", "isMut": true, "isSigner": false}, {"name": "escrow", "isMut": true, "isSigner": false}, {"name": "programState", "isMut": false, "isSigner": false}, {"name": "payoutWallet", "isMut": true, "isSigner": false}, {"name": "tokenProgram", "isMut": false, "isSigner": false}, {"name": "dataBuffer", "isMut": false, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "AggregatorOpenRoundParams"}}]}, {"name": "aggregatorSaveResult", "accounts": [{"name": "aggregator", "isMut": true, "isSigner": false}, {"name": "oracle", "isMut": true, "isSigner": false}, {"name": "oracleAuthority", "isMut": false, "isSigner": true}, {"name": "oracleQueue", "isMut": false, "isSigner": false}, {"name": "queueAuthority", "isMut": false, "isSigner": false}, {"name": "feedPermission", "isMut": true, "isSigner": false}, {"name": "oraclePermission", "isMut": false, "isSigner": false}, {"name": "lease", "isMut": true, "isSigner": false}, {"name": "escrow", "isMut": true, "isSigner": false}, {"name": "tokenProgram", "isMut": false, "isSigner": false}, {"name": "programState", "isMut": false, "isSigner": false}, {"name": "historyBuffer", "isMut": true, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "AggregatorSaveResultParams"}}]}, {"name": "jobInit", "accounts": [{"name": "job", "isMut": true, "isSigner": false}, {"name": "authorWallet", "isMut": false, "isSigner": false}, {"name": "programState", "isMut": false, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "JobInitParams"}}]}, {"name": "permissionInit", "accounts": [{"name": "permission", "isMut": true, "isSigner": false}, {"name": "authority", "isMut": false, "isSigner": false}, {"name": "granter", "isMut": false, "isSigner": false}, {"name": "grantee", "isMut": false, "isSigner": false}, {"name": "payer", "isMut": true, "isSigner": true}, {"name": "systemProgram", "isMut": false, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "PermissionInitParams"}}]}, {"name": "permissionSet", "accounts": [{"name": "permission", "isMut": true, "isSigner": false}, {"name": "authority", "isMut": false, "isSigner": true}], "args": [{"name": "params", "type": {"defined": "PermissionSetParams"}}]}, {"name": "oracleQueueInit", "accounts": [{"name": "oracleQueue", "isMut": true, "isSigner": true}, {"name": "authority", "isMut": false, "isSigner": false}, {"name": "buffer", "isMut": true, "isSigner": false}, {"name": "payer", "isMut": true, "isSigner": false}, {"name": "systemProgram", "isMut": false, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "OracleQueueInitParams"}}]}, {"name": "oracleQueueSetRewards", "accounts": [{"name": "queue", "isMut": true, "isSigner": false}, {"name": "authority", "isMut": false, "isSigner": true}], "args": [{"name": "params", "type": {"defined": "OracleQueueSetRewardsParams"}}]}, {"name": "oracleInit", "accounts": [{"name": "oracle", "isMut": true, "isSigner": false}, {"name": "oracleAuthority", "isMut": false, "isSigner": false}, {"name": "wallet", "isMut": false, "isSigner": false}, {"name": "programState", "isMut": false, "isSigner": false}, {"name": "queue", "isMut": false, "isSigner": false}, {"name": "payer", "isMut": false, "isSigner": false}, {"name": "systemProgram", "isMut": false, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "OracleInitParams"}}]}, {"name": "oracleHeartbeat", "accounts": [{"name": "oracle", "isMut": true, "isSigner": false}, {"name": "oracleAuthority", "isMut": false, "isSigner": true}, {"name": "tokenAccount", "isMut": false, "isSigner": false}, {"name": "gcOracle", "isMut": true, "isSigner": false}, {"name": "oracleQueue", "isMut": true, "isSigner": false}, {"name": "permission", "isMut": false, "isSigner": false}, {"name": "dataBuffer", "isMut": true, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "OracleHeartbeatParams"}}]}, {"name": "oracleWithdraw", "accounts": [{"name": "oracle", "isMut": true, "isSigner": false}, {"name": "oracleAuthority", "isMut": false, "isSigner": true}, {"name": "tokenAccount", "isMut": true, "isSigner": false}, {"name": "withdrawAccount", "isMut": true, "isSigner": false}, {"name": "oracleQueue", "isMut": true, "isSigner": false}, {"name": "permission", "isMut": true, "isSigner": false}, {"name": "tokenProgram", "isMut": false, "isSigner": false}, {"name": "programState", "isMut": false, "isSigner": false}, {"name": "payer", "isMut": true, "isSigner": true}, {"name": "systemProgram", "isMut": false, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "OracleWithdrawParams"}}]}, {"name": "leaseInit", "accounts": [{"name": "lease", "isMut": true, "isSigner": false}, {"name": "queue", "isMut": true, "isSigner": false}, {"name": "aggregator", "isMut": false, "isSigner": false}, {"name": "funder", "isMut": true, "isSigner": false}, {"name": "payer", "isMut": true, "isSigner": true}, {"name": "systemProgram", "isMut": false, "isSigner": false}, {"name": "tokenProgram", "isMut": false, "isSigner": false}, {"name": "owner", "isMut": true, "isSigner": true}, {"name": "escrow", "isMut": true, "isSigner": false}, {"name": "programState", "isMut": false, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "LeaseInitParams"}}]}, {"name": "leaseExtend", "accounts": [{"name": "lease", "isMut": true, "isSigner": false}, {"name": "aggregator", "isMut": false, "isSigner": false}, {"name": "queue", "isMut": false, "isSigner": false}, {"name": "funder", "isMut": true, "isSigner": false}, {"name": "owner", "isMut": true, "isSigner": true}, {"name": "escrow", "isMut": true, "isSigner": false}, {"name": "tokenProgram", "isMut": false, "isSigner": false}, {"name": "programState", "isMut": false, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "LeaseExtendParams"}}]}, {"name": "leaseWithdraw", "accounts": [{"name": "lease", "isMut": true, "isSigner": false}, {"name": "escrow", "isMut": true, "isSigner": false}, {"name": "aggregator", "isMut": false, "isSigner": false}, {"name": "queue", "isMut": false, "isSigner": false}, {"name": "withdrawAuthority", "isMut": false, "isSigner": true}, {"name": "withdrawAccount", "isMut": true, "isSigner": false}, {"name": "tokenProgram", "isMut": false, "isSigner": false}, {"name": "programState", "isMut": false, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "LeaseWithdrawParams"}}]}, {"name": "crankInit", "accounts": [{"name": "crank", "isMut": true, "isSigner": true}, {"name": "queue", "isMut": false, "isSigner": false}, {"name": "buffer", "isMut": true, "isSigner": false}, {"name": "payer", "isMut": true, "isSigner": false}, {"name": "systemProgram", "isMut": false, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "CrankInitParams"}}]}, {"name": "crankPush", "accounts": [{"name": "crank", "isMut": true, "isSigner": false}, {"name": "aggregator", "isMut": true, "isSigner": false}, {"name": "oracleQueue", "isMut": true, "isSigner": false}, {"name": "queueAuthority", "isMut": false, "isSigner": false}, {"name": "permission", "isMut": false, "isSigner": false}, {"name": "lease", "isMut": true, "isSigner": false}, {"name": "escrow", "isMut": true, "isSigner": false}, {"name": "programState", "isMut": false, "isSigner": false}, {"name": "dataBuffer", "isMut": true, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "CrankPushParams"}}]}, {"name": "crankPop", "accounts": [{"name": "crank", "isMut": true, "isSigner": false}, {"name": "oracleQueue", "isMut": true, "isSigner": false}, {"name": "queueAuthority", "isMut": false, "isSigner": false}, {"name": "programState", "isMut": false, "isSigner": false}, {"name": "payoutWallet", "isMut": true, "isSigner": false}, {"name": "tokenProgram", "isMut": false, "isSigner": false}, {"name": "crankDataBuffer", "isMut": true, "isSigner": false}, {"name": "queueDataBuffer", "isMut": false, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "CrankPopParams"}}]}, {"name": "ecvrfVerify", "accounts": [{"name": "randomnessProducer", "isMut": false, "isSigner": false}], "args": [{"name": "params", "type": {"defined": "EcvrfVerifyParams"}}]}], "accounts": [{"name": "SbState", "type": {"kind": "struct", "fields": [{"name": "authority", "type": "publicKey"}, {"name": "tokenMint", "type": "publicKey"}, {"name": "tokenVault", "type": "publicKey"}, {"name": "ebuf", "type": {"array": ["u8", 1024]}}]}}, {"name": "AggregatorAccountData", "type": {"kind": "struct", "fields": [{"name": "name", "type": {"array": ["u8", 32]}}, {"name": "metadata", "type": {"array": ["u8", 128]}}, {"name": "authorWallet", "type": "publicKey"}, {"name": "queuePubkey", "type": "publicKey"}, {"name": "oracleRequestBatchSize", "type": "u32"}, {"name": "minOracleResults", "type": "u32"}, {"name": "minJobResults", "type": "u32"}, {"name": "minUpdateDelaySeconds", "type": "u32"}, {"name": "startAfter", "type": "i64"}, {"name": "varianceThreshold", "type": {"defined": "SwitchboardDecimal"}}, {"name": "forceReportPeriod", "type": "i64"}, {"name": "expiration", "type": "i64"}, {"name": "consecutiveFailureCount", "type": "u64"}, {"name": "nextAllowedUpdateTime", "type": "i64"}, {"name": "isLocked", "type": "bool"}, {"name": "crankPubkey", "type": "publicKey"}, {"name": "latestConfirmedRound", "type": {"defined": "AggregatorRound"}}, {"name": "currentRound", "type": {"defined": "AggregatorRound"}}, {"name": "jobPubkeysData", "type": {"array": ["publicKey", 16]}}, {"name": "jobHashes", "type": {"array": [{"defined": "Hash"}, 16]}}, {"name": "jobPubkeysSize", "type": "u32"}, {"name": "jobsChecksum", "type": {"array": ["u8", 32]}}, {"name": "authority", "type": "publicKey"}, {"name": "historyBuffer", "type": "publicKey"}, {"name": "ebuf", "type": {"array": ["u8", 192]}}]}}, {"name": "PermissionAccountData", "type": {"kind": "struct", "fields": [{"name": "authority", "type": "publicKey"}, {"name": "permissions", "type": "u32"}, {"name": "granter", "type": "publicKey"}, {"name": "grantee", "type": "publicKey"}, {"name": "expiration", "type": "i64"}, {"name": "ebuf", "type": {"array": ["u8", 256]}}]}}, {"name": "LeaseAccountData", "type": {"kind": "struct", "fields": [{"name": "escrow", "type": "publicKey"}, {"name": "queue", "type": "publicKey"}, {"name": "aggregator", "type": "publicKey"}, {"name": "tokenProgram", "type": "publicKey"}, {"name": "isActive", "type": "bool"}, {"name": "crankRowCount", "type": "u32"}, {"name": "createdAt", "type": "i64"}, {"name": "updateCount", "type": "u128"}, {"name": "withdrawAuthority", "type": "publicKey"}, {"name": "ebuf", "type": {"array": ["u8", 256]}}]}}, {"name": "OracleQueueAccountData", "type": {"kind": "struct", "fields": [{"name": "name", "type": {"array": ["u8", 32]}}, {"name": "metadata", "type": {"array": ["u8", 64]}}, {"name": "authority", "type": "publicKey"}, {"name": "oracleTimeout", "type": "u32"}, {"name": "reward", "type": "u64"}, {"name": "minStake", "type": "u64"}, {"name": "slashingEnabled", "type": "bool"}, {"name": "varianceToleranceMultiplier", "type": {"defined": "SwitchboardDecimal"}}, {"name": "feedProbationPeriod", "type": "u32"}, {"name": "currIdx", "type": "u32"}, {"name": "size", "type": "u32"}, {"name": "gcIdx", "type": "u32"}, {"name": "consecutiveFeedFailureLimit", "type": "u64"}, {"name": "consecutiveOracleFailureLimit", "type": "u64"}, {"name": "unpermissionedFeedsEnabled", "type": "bool"}, {"name": "ebuf", "type": {"array": ["u8", 1023]}}, {"name": "maxSize", "type": "u32"}, {"name": "dataBuffer", "type": "publicKey"}]}}, {"name": "CrankAccountData", "type": {"kind": "struct", "fields": [{"name": "name", "type": {"array": ["u8", 32]}}, {"name": "metadata", "type": {"array": ["u8", 64]}}, {"name": "queuePubkey", "type": "publicKey"}, {"name": "pqSize", "type": "u32"}, {"name": "maxRows", "type": "u32"}, {"name": "jitterModifier", "type": "u8"}, {"name": "ebuf", "type": {"array": ["u8", 255]}}, {"name": "dataBuffer", "type": "publicKey"}]}}, {"name": "VrfAccountData", "type": {"kind": "struct", "fields": [{"name": "counter", "type": "u128"}, {"name": "latestFinalizedRound", "type": {"defined": "VrfRound"}}, {"name": "currentRound", "type": {"defined": "VrfRound"}}, {"name": "ebuf", "type": {"array": ["u8", 255]}}]}}, {"name": "OracleAccountData", "type": {"kind": "struct", "fields": [{"name": "name", "type": {"array": ["u8", 32]}}, {"name": "metadata", "type": {"array": ["u8", 128]}}, {"name": "oracleAuthority", "type": "publicKey"}, {"name": "lastHeartbeat", "type": "i64"}, {"name": "numInUse", "type": "u32"}, {"name": "tokenAccount", "type": "publicKey"}, {"name": "queuePubkey", "type": "publicKey"}, {"name": "metrics", "type": {"defined": "OracleMetrics"}}, {"name": "ebuf", "type": {"array": ["u8", 256]}}]}}, {"name": "JobAccountData", "type": {"kind": "struct", "fields": [{"name": "name", "type": {"array": ["u8", 32]}}, {"name": "metadata", "type": {"array": ["u8", 64]}}, {"name": "authorWallet", "type": "publicKey"}, {"name": "expiration", "type": "i64"}, {"name": "hash", "type": {"array": ["u8", 32]}}, {"name": "data", "type": "bytes"}, {"name": "referenceCount", "type": "u32"}]}}], "types": [{"name": "AggregatorAddJobParams", "type": {"kind": "struct", "fields": []}}, {"name": "AggregatorInitParams", "type": {"kind": "struct", "fields": [{"name": "name", "type": {"array": ["u8", 32]}}, {"name": "metadata", "type": {"array": ["u8", 128]}}, {"name": "batchSize", "type": "u32"}, {"name": "minOracleResults", "type": "u32"}, {"name": "minJobResults", "type": "u32"}, {"name": "minUpdateDelaySeconds", "type": "u32"}, {"name": "startAfter", "type": "i64"}, {"name": "varianceThreshold", "type": {"defined": "BorshDecimal"}}, {"name": "forceReportPeriod", "type": "i64"}, {"name": "expiration", "type": "i64"}, {"name": "stateBump", "type": "u8"}]}}, {"name": "AggregatorLockParams", "type": {"kind": "struct", "fields": []}}, {"name": "AggregatorOpenRoundParams", "type": {"kind": "struct", "fields": [{"name": "stateBump", "type": "u8"}, {"name": "leaseBump", "type": "u8"}, {"name": "permissionBump", "type": "u8"}, {"name": "jitter", "type": "u8"}]}}, {"name": "AggregatorRemoveJobParams", "type": {"kind": "struct", "fields": [{"name": "jobIdx", "type": "u32"}]}}, {"name": "AggregatorSaveResultParams", "type": {"kind": "struct", "fields": [{"name": "oracleIdx", "type": "u32"}, {"name": "error", "type": "bool"}, {"name": "value", "type": {"defined": "BorshDecimal"}}, {"name": "jobsChecksum", "type": {"array": ["u8", 32]}}, {"name": "minResponse", "type": {"defined": "BorshDecimal"}}, {"name": "maxResponse", "type": {"defined": "BorshDecimal"}}, {"name": "feedPermissionBump", "type": "u8"}, {"name": "oraclePermissionBump", "type": "u8"}, {"name": "leaseBump", "type": "u8"}, {"name": "stateBump", "type": "u8"}]}}, {"name": "AggregatorSetAuthorityParams", "type": {"kind": "struct", "fields": []}}, {"name": "AggregatorSetBatchSizeParams", "type": {"kind": "struct", "fields": [{"name": "batchSize", "type": "u32"}]}}, {"name": "AggregatorSetHistoryBufferParams", "type": {"kind": "struct", "fields": []}}, {"name": "AggregatorSetMinJobsParams", "type": {"kind": "struct", "fields": [{"name": "minJobResults", "type": "u32"}]}}, {"name": "AggregatorSetMinOraclesParams", "type": {"kind": "struct", "fields": [{"name": "minOracleResults", "type": "u32"}]}}, {"name": "AggregatorSetQueueParams", "type": {"kind": "struct", "fields": []}}, {"name": "AggregatorSetVarianceThresholdParams", "type": {"kind": "struct", "fields": [{"name": "varianceThreshold", "type": {"defined": "BorshDecimal"}}]}}, {"name": "CrankInitParams", "type": {"kind": "struct", "fields": [{"name": "name", "type": "bytes"}, {"name": "metadata", "type": "bytes"}, {"name": "crankSize", "type": "u32"}]}}, {"name": "CrankPopParams", "type": {"kind": "struct", "fields": [{"name": "stateBump", "type": "u8"}, {"name": "leaseBumps", "type": "bytes"}, {"name": "permissionBumps", "type": "bytes"}, {"name": "nonce", "type": {"option": "u32"}}, {"name": "failOpenOnAccountMismatch", "type": {"option": "bool"}}]}}, {"name": "CrankPushParams", "type": {"kind": "struct", "fields": [{"name": "stateBump", "type": "u8"}, {"name": "permissionBump", "type": "u8"}]}}, {"name": "EcvrfVerifyParams", "type": {"kind": "struct", "fields": [{"name": "proof", "type": "bytes"}, {"name": "alpha", "type": "bytes"}]}}, {"name": "JobInitParams", "type": {"kind": "struct", "fields": [{"name": "name", "type": {"array": ["u8", 32]}}, {"name": "expiration", "type": "i64"}, {"name": "stateBump", "type": "u8"}, {"name": "data", "type": "bytes"}]}}, {"name": "LeaseExtendParams", "type": {"kind": "struct", "fields": [{"name": "loadAmount", "type": "u64"}, {"name": "leaseBump", "type": "u8"}, {"name": "stateBump", "type": "u8"}]}}, {"name": "LeaseInitParams", "type": {"kind": "struct", "fields": [{"name": "loadAmount", "type": "u64"}, {"name": "withdrawAuthority", "type": "publicKey"}, {"name": "leaseBump", "type": "u8"}, {"name": "stateBump", "type": "u8"}]}}, {"name": "LeaseWithdrawParams", "type": {"kind": "struct", "fields": [{"name": "stateBump", "type": "u8"}, {"name": "leaseBump", "type": "u8"}, {"name": "amount", "type": "u64"}]}}, {"name": "OracleHeartbeatParams", "type": {"kind": "struct", "fields": [{"name": "permissionBump", "type": "u8"}]}}, {"name": "OracleInitParams", "type": {"kind": "struct", "fields": [{"name": "name", "type": "bytes"}, {"name": "metadata", "type": "bytes"}, {"name": "stateBump", "type": "u8"}, {"name": "oracleBump", "type": "u8"}]}}, {"name": "OracleQueueInitParams", "type": {"kind": "struct", "fields": [{"name": "name", "type": {"array": ["u8", 32]}}, {"name": "metadata", "type": {"array": ["u8", 64]}}, {"name": "reward", "type": "u64"}, {"name": "minStake", "type": "u64"}, {"name": "feedProbationPeriod", "type": "u32"}, {"name": "oracleTimeout", "type": "u32"}, {"name": "slashingEnabled", "type": "bool"}, {"name": "varianceToleranceMultiplier", "type": {"defined": "BorshDecimal"}}, {"name": "consecutiveFeedFailureLimit", "type": "u64"}, {"name": "consecutiveOracleFailureLimit", "type": "u64"}, {"name": "queueSize", "type": "u32"}, {"name": "unpermissionedFeeds", "type": "bool"}]}}, {"name": "OracleQueueSetRewardsParams", "type": {"kind": "struct", "fields": [{"name": "rewards", "type": "u64"}]}}, {"name": "OracleWithdrawParams", "type": {"kind": "struct", "fields": [{"name": "stateBump", "type": "u8"}, {"name": "permissionBump", "type": "u8"}, {"name": "amount", "type": "u64"}]}}, {"name": "PermissionInitParams", "type": {"kind": "struct", "fields": [{"name": "permissionBump", "type": "u8"}]}}, {"name": "PermissionSetParams", "type": {"kind": "struct", "fields": [{"name": "permission", "type": {"defined": "SwitchboardPermission"}}, {"name": "enable", "type": "bool"}]}}, {"name": "ProgramConfigParams", "type": {"kind": "struct", "fields": [{"name": "token", "type": "publicKey"}, {"name": "bump", "type": "u8"}]}}, {"name": "ProgramInitParams", "type": {"kind": "struct", "fields": [{"name": "stateBump", "type": "u8"}]}}, {"name": "Hash", "type": {"kind": "struct", "fields": [{"name": "data", "type": {"array": ["u8", 32]}}]}}, {"name": "AggregatorRound", "type": {"kind": "struct", "fields": [{"name": "numSuccess", "type": "u32"}, {"name": "numError", "type": "u32"}, {"name": "isClosed", "type": "bool"}, {"name": "roundOpenSlot", "type": "u64"}, {"name": "roundOpenTimestamp", "type": "i64"}, {"name": "result", "type": {"defined": "SwitchboardDecimal"}}, {"name": "stdDeviation", "type": {"defined": "SwitchboardDecimal"}}, {"name": "minResponse", "type": {"defined": "SwitchboardDecimal"}}, {"name": "maxResponse", "type": {"defined": "SwitchboardDecimal"}}, {"name": "oraclePubkeysData", "type": {"array": ["publicKey", 16]}}, {"name": "mediansData", "type": {"array": [{"defined": "SwitchboardDecimal"}, 16]}}, {"name": "currentPayout", "type": {"array": ["i64", 16]}}, {"name": "mediansFulfilled", "type": {"array": ["bool", 16]}}, {"name": "errorsFulfilled", "type": {"array": ["bool", 16]}}]}}, {"name": "AggregatorHistoryRow", "type": {"kind": "struct", "fields": [{"name": "timestamp", "type": "i64"}, {"name": "value", "type": {"defined": "SwitchboardDecimal"}}]}}, {"name": "SwitchboardDecimal", "type": {"kind": "struct", "fields": [{"name": "mantissa", "type": "i128"}, {"name": "scale", "type": "u32"}]}}, {"name": "VrfRound", "type": {"kind": "struct", "fields": [{"name": "vrfProducer", "type": "publicKey"}, {"name": "reprProof", "type": {"array": ["u8", 224]}}, {"name": "proof", "type": {"array": ["u8", 80]}}, {"name": "alpha", "type": {"array": ["u8", 64]}}, {"name": "alphaLen", "type": "u32"}, {"name": "stage", "type": "u32"}, {"name": "ebuf", "type": {"array": ["u8", 255]}}]}}, {"name": "CrankRow", "type": {"kind": "struct", "fields": [{"name": "pubkey", "type": "publicKey"}, {"name": "nextTimestamp", "type": "i64"}]}}, {"name": "OracleMetrics", "type": {"kind": "struct", "fields": [{"name": "consecutiveSuccess", "type": "u64"}, {"name": "consecutiveError", "type": "u64"}, {"name": "consecutiveDisagreement", "type": "u64"}, {"name": "consecutiveLateResponse", "type": "u64"}, {"name": "consecutiveFailure", "type": "u64"}, {"name": "totalSuccess", "type": "u128"}, {"name": "totalError", "type": "u128"}, {"name": "totalDisagreement", "type": "u128"}, {"name": "totalLateResponse", "type": "u128"}]}}, {"name": "BorshDecimal", "type": {"kind": "struct", "fields": [{"name": "mantissa", "type": "i128"}, {"name": "scale", "type": "u32"}]}}, {"name": "VaultTransferParams", "type": {"kind": "struct", "fields": [{"name": "stateBump", "type": "u8"}, {"name": "amount", "type": "u64"}]}}, {"name": "SwitchboardPermission", "type": {"kind": "enum", "variants": [{"name": "PermitOracleHeartbeat"}, {"name": "PermitOracleQueueUsage"}]}}, {"name": "OracleResponseType", "type": {"kind": "enum", "variants": [{"name": "TypeSuccess"}, {"name": "TypeError"}, {"name": "TypeDisagreement"}, {"name": "TypeNoResponse"}]}}, {"name": "Error", "type": {"kind": "enum", "variants": [{"name": "InvalidPublicKey"}, {"name": "SerializationError", "fields": [{"defined": "bincode::Error"}]}, {"name": "DeserializationError", "fields": [{"defined": "bincode::Error"}]}, {"name": "InvalidDataError"}]}}], "events": [{"name": "AggregatorInitEvent", "fields": [{"name": "feedPubkey", "type": "publicKey", "index": false}]}, {"name": "AggregatorOpenRoundEvent", "fields": [{"name": "feedPubkey", "type": "publicKey", "index": false}, {"name": "oraclePubkeys", "type": {"vec": "publicKey"}, "index": false}, {"name": "jobPubkeys", "type": {"vec": "publicKey"}, "index": false}, {"name": "remainingFunds", "type": "u64", "index": false}, {"name": "queueAuthority", "type": "publicKey", "index": false}]}, {"name": "AggregatorValueUpdateEvent", "fields": [{"name": "feedPubkey", "type": "publicKey", "index": false}, {"name": "value", "type": {"defined": "BorshDecimal"}, "index": false}, {"name": "slot", "type": "u64", "index": false}, {"name": "timestamp", "type": "i64", "index": false}, {"name": "oraclePubkeys", "type": {"vec": "publicKey"}, "index": false}, {"name": "oracleValues", "type": {"vec": {"defined": "BorshDecimal"}}, "index": false}]}, {"name": "OracleRewardEvent", "fields": [{"name": "feedPubkey", "type": "publicKey", "index": false}, {"name": "leasePubkey", "type": "publicKey", "index": false}, {"name": "oraclePubkey", "type": "publicKey", "index": false}, {"name": "walletPubkey", "type": "publicKey", "index": false}, {"name": "amount", "type": "u64", "index": false}, {"name": "roundSlot", "type": "u64", "index": false}, {"name": "timestamp", "type": "i64", "index": false}]}, {"name": "OracleWithdrawEvent", "fields": [{"name": "oraclePubkey", "type": "publicKey", "index": false}, {"name": "walletPubkey", "type": "publicKey", "index": false}, {"name": "destinationWallet", "type": "publicKey", "index": false}, {"name": "previousAmount", "type": "u64", "index": false}, {"name": "newAmount", "type": "u64", "index": false}, {"name": "timestamp", "type": "i64", "index": false}]}, {"name": "LeaseWithdrawEvent", "fields": [{"name": "leasePubkey", "type": "publicKey", "index": false}, {"name": "walletPubkey", "type": "publicKey", "index": false}, {"name": "previousAmount", "type": "u64", "index": false}, {"name": "newAmount", "type": "u64", "index": false}, {"name": "timestamp", "type": "i64", "index": false}]}, {"name": "OracleSlashEvent", "fields": [{"name": "feedPubkey", "type": "publicKey", "index": false}, {"name": "leasePubkey", "type": "publicKey", "index": false}, {"name": "oraclePubkey", "type": "publicKey", "index": false}, {"name": "walletPubkey", "type": "publicKey", "index": false}, {"name": "amount", "type": "u64", "index": false}, {"name": "roundSlot", "type": "u64", "index": false}, {"name": "timestamp", "type": "i64", "index": false}]}, {"name": "LeaseFundEvent", "fields": [{"name": "leasePubkey", "type": "publicKey", "index": false}, {"name": "funder", "type": "publicKey", "index": false}, {"name": "amount", "type": "u64", "index": false}, {"name": "timestamp", "type": "i64", "index": false}]}, {"name": "ProbationBrokenEvent", "fields": [{"name": "feedPubkey", "type": "publicKey", "index": false}, {"name": "queuePubkey", "type": "publicKey", "index": false}, {"name": "timestamp", "type": "i64", "index": false}]}, {"name": "FeedPermissionRevokedEvent", "fields": [{"name": "feedPubkey", "type": "publicKey", "index": false}, {"name": "timestamp", "type": "i64", "index": false}]}, {"name": "GarbageCollectFailureEvent", "fields": [{"name": "queuePubkey", "type": "publicKey", "index": false}]}, {"name": "OracleBootedEvent", "fields": [{"name": "queuePubkey", "type": "publicKey", "index": false}, {"name": "oraclePubkey", "type": "publicKey", "index": false}]}, {"name": "CrankLeaseInsufficientFundsEvent", "fields": [{"name": "feedPubkey", "type": "publicKey", "index": false}, {"name": "leasePubkey", "type": "publicKey", "index": false}]}, {"name": "CrankPopExpectedFailureEvent", "fields": [{"name": "feedPubkey", "type": "publicKey", "index": false}, {"name": "leasePubkey", "type": "publicKey", "index": false}]}], "errors": [{"code": 6000, "name": "ArrayOperationError", "msg": "Illegal operation on a Switchboard array."}, {"code": 6001, "name": "QueueOperationError", "msg": "Illegal operation on a Switchboard queue."}, {"code": 6002, "name": "IncorrectProgramOwnerError", "msg": "An account required to be owned by the program has a different owner."}, {"code": 6003, "name": "InvalidAggregatorRound", "msg": "Aggregator is not currently populated with a valid round."}, {"code": 6004, "name": "TooManyAggregatorJobs", "msg": "Aggregator cannot fit any more jobs."}, {"code": 6005, "name": "AggregatorCurrentRoundClosed", "msg": "Aggregator's current round is closed. No results are being accepted."}, {"code": 6006, "name": "AggregatorInvalidSaveResult", "msg": "Aggregator received an invalid save result instruction."}, {"code": 6007, "name": "InvalidStrDecimalConversion", "msg": "Failed to convert string to decimal format."}, {"code": 6008, "name": "AccountLoaderMissingSignature", "msg": "AccountLoader account is missing a required signature."}, {"code": 6009, "name": "MissingRequiredSignature", "msg": "Account is missing a required signature."}, {"code": 6010, "name": "ArrayOverflowError", "msg": "The attempted action will overflow a zero-copy account array."}, {"code": 6011, "name": "ArrayUnderflowError", "msg": "The attempted action will underflow a zero-copy account array."}, {"code": 6012, "name": "PubkeyNotFoundError", "msg": "The queried public key was not found."}, {"code": 6013, "name": "AggregatorIllegalRoundOpenCall", "msg": "Aggregator round open called too early."}, {"code": 6014, "name": "AggregatorIllegalRoundCloseCall", "msg": "Aggregator round close called too early."}, {"code": 6015, "name": "AggregatorClosedError", "msg": "Aggregator is closed. Illegal aciton."}, {"code": 6016, "name": "IllegalOracleIdxError", "msg": "Illegal oracle index."}, {"code": 6017, "name": "OracleAlreadyRespondedError", "msg": "The provided oracle has already responded this round."}, {"code": 6018, "name": "ProtoDeserializeError", "msg": "Failed to deserialize protocol buffer."}, {"code": 6019, "name": "UnauthorizedStateUpdateError", "msg": "Unathorized program state modification attempted."}, {"code": 6020, "name": "MissingOracleAccountsError", "msg": "Not enough oracle accounts provided to closeRounds."}, {"code": 6021, "name": "OracleMismatchError", "msg": "An unexpected oracle account was provided for the transaction."}, {"code": 6022, "name": "CrankMaxCapacityError", "msg": "Attempted to push to a Crank that's at capacity"}, {"code": 6023, "name": "AggregatorLeaseInsufficientFunds", "msg": "Aggregator update call attempted but attached lease has insufficient funds."}, {"code": 6024, "name": "IncorrectTokenAccountMint", "msg": "The provided token account does not point to the Switchbaord token mint."}, {"code": 6025, "name": "InvalidEscrowAccount", "msg": "An invalid escrow account was provided."}, {"code": 6026, "name": "CrankEmptyError", "msg": "Crank empty. Pop failed."}, {"code": 6027, "name": "PdaDeriveError", "msg": "Failed to derive a PDA from the provided seed."}, {"code": 6028, "name": "AggregatorAccountNotFound", "msg": "Aggregator account missing from provided account list."}, {"code": 6029, "name": "PermissionAccountNotFound", "msg": "Permission account missing from provided account list."}, {"code": 6030, "name": "LeaseAccountDeriveFailure", "msg": "Failed to derive a lease account."}, {"code": 6031, "name": "PermissionAccountDeriveFailure", "msg": "Failed to derive a permission account."}, {"code": 6032, "name": "EscrowAccountNotFound", "msg": "Escrow account missing from provided account list."}, {"code": 6033, "name": "LeaseAccountNotFound", "msg": "Lease account missing from provided account list."}, {"code": 6034, "name": "DecimalConversionError", "msg": "Decimal conversion method failed."}, {"code": 6035, "name": "PermissionDenied", "msg": "Permission account is missing required flags for the given action."}, {"code": 6036, "name": "QueueAtCapacity", "msg": "Oracle queue is at lease capacity."}, {"code": 6037, "name": "ExcessiveCrankRowsError", "msg": "Data feed is already pushed on a crank."}, {"code": 6038, "name": "AggregatorLockedError", "msg": "Aggregator is locked, no setting modifications or job additions allowed."}, {"code": 6039, "name": "AggregatorInvalidBatchSizeError", "msg": "Aggregator invalid batch size."}, {"code": 6040, "name": "AggregatorJobChecksumMismatch", "msg": "Oracle provided an incorrect aggregator job checksum."}, {"code": 6041, "name": "IntegerOverflowError", "msg": "An integer overflow occurred."}, {"code": 6042, "name": "InvalidUpdatePeriodError", "msg": "Mimimum update period is 5 seconds."}, {"code": 6043, "name": "NoResultsError", "msg": "Aggregator round evaluation attempted with no results."}, {"code": 6044, "name": "InvalidExpirationError", "msg": "An expiration constraint was broken."}, {"code": 6045, "name": "InsufficientStakeError", "msg": "An account provided insufficient stake for aciton."}, {"code": 6046, "name": "LeaseInactiveError", "msg": "The provided lease account is not active."}, {"code": 6047, "name": "NoAggregatorJobsFound", "msg": "No jobs are currently included in the aggregator."}, {"code": 6048, "name": "IntegerUnderflowError", "msg": "An integer underflow occurred."}, {"code": 6049, "name": "OracleQueueMismatch", "msg": "An invalid oracle queue account was provided."}, {"code": 6050, "name": "OracleWalletMismatchError", "msg": "An unexpected oracle wallet account was provided for the transaction."}, {"code": 6051, "name": "InvalidBufferAccountError", "msg": "An invalid buffer account was provided."}, {"code": 6052, "name": "InsufficientOracleQueueError", "msg": "Insufficient oracle queue size."}, {"code": 6053, "name": "InvalidAuthorityError", "msg": "Invalid authority account provided."}, {"code": 6054, "name": "InvalidTokenAccountMintError", "msg": "A provided token wallet is associated with an incorrect mint."}, {"code": 6055, "name": "ExcessiveLeaseWithdrawlError", "msg": "You must leave enough funds to perform at least 1 update in the lease."}, {"code": 6056, "name": "InvalideHistoryAccountError", "msg": "Invalid history account provided."}, {"code": 6057, "name": "InvalidLeaseAccountEscrowError", "msg": "Invalid lease account escrow."}, {"code": 6058, "name": "InvalidCrankAccountError", "msg": "Invalid crank provided."}, {"code": 6059, "name": "CrankNoElementsReadyError", "msg": "No elements ready to be popped."}, {"code": 6060, "name": "VrfVerifyError", "msg": "Error in verifying vrf proof."}]} \ No newline at end of file diff --git a/tests/idls/switchboard_v2.mainnet.06022022.json b/tests/idls/switchboard_v2.mainnet.06022022.json deleted file mode 100644 index 1635cf8..0000000 --- a/tests/idls/switchboard_v2.mainnet.06022022.json +++ /dev/null @@ -1,4601 +0,0 @@ -{ - "version": "0.1.0", - "name": "switchboard_v2", - "instructions": [ - { - "name": "aggregatorAddJob", - "accounts": [ - { - "name": "aggregator", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "job", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "AggregatorAddJobParams" - } - } - ] - }, - { - "name": "aggregatorInit", - "accounts": [ - { - "name": "aggregator", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": false - }, - { - "name": "queue", - "isMut": false, - "isSigner": false - }, - { - "name": "authorWallet", - "isMut": false, - "isSigner": false - }, - { - "name": "programState", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "AggregatorInitParams" - } - } - ] - }, - { - "name": "aggregatorLock", - "accounts": [ - { - "name": "aggregator", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": true, - "isSigner": true - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "AggregatorLockParams" - } - } - ] - }, - { - "name": "aggregatorOpenRound", - "accounts": [ - { - "name": "aggregator", - "isMut": true, - "isSigner": false - }, - { - "name": "lease", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleQueue", - "isMut": true, - "isSigner": false - }, - { - "name": "queueAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "permission", - "isMut": true, - "isSigner": false - }, - { - "name": "escrow", - "isMut": true, - "isSigner": false - }, - { - "name": "programState", - "isMut": false, - "isSigner": false - }, - { - "name": "payoutWallet", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "dataBuffer", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "AggregatorOpenRoundParams" - } - } - ] - }, - { - "name": "aggregatorRemoveJob", - "accounts": [ - { - "name": "aggregator", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "job", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "AggregatorRemoveJobParams" - } - } - ] - }, - { - "name": "aggregatorSaveResult", - "accounts": [ - { - "name": "aggregator", - "isMut": true, - "isSigner": false - }, - { - "name": "oracle", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleAuthority", - "isMut": false, - "isSigner": true - }, - { - "name": "oracleQueue", - "isMut": false, - "isSigner": false - }, - { - "name": "queueAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "feedPermission", - "isMut": true, - "isSigner": false - }, - { - "name": "oraclePermission", - "isMut": false, - "isSigner": false - }, - { - "name": "lease", - "isMut": true, - "isSigner": false - }, - { - "name": "escrow", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "programState", - "isMut": false, - "isSigner": false - }, - { - "name": "historyBuffer", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "AggregatorSaveResultParams" - } - } - ] - }, - { - "name": "aggregatorSetAuthority", - "accounts": [ - { - "name": "aggregator", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "newAuthority", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "AggregatorSetAuthorityParams" - } - } - ] - }, - { - "name": "aggregatorSetBatchSize", - "accounts": [ - { - "name": "aggregator", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "AggregatorSetBatchSizeParams" - } - } - ] - }, - { - "name": "aggregatorSetHistoryBuffer", - "accounts": [ - { - "name": "aggregator", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "buffer", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "AggregatorSetHistoryBufferParams" - } - } - ] - }, - { - "name": "aggregatorSetMinJobs", - "accounts": [ - { - "name": "aggregator", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "AggregatorSetMinJobsParams" - } - } - ] - }, - { - "name": "aggregatorSetMinOracles", - "accounts": [ - { - "name": "aggregator", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "AggregatorSetMinOraclesParams" - } - } - ] - }, - { - "name": "aggregatorSetQueue", - "accounts": [ - { - "name": "aggregator", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "queue", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "AggregatorSetQueueParams" - } - } - ] - }, - { - "name": "aggregatorSetUpdateInterval", - "accounts": [ - { - "name": "aggregator", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "AggregatorSetUpdateIntervalParams" - } - } - ] - }, - { - "name": "aggregatorSetVarianceThreshold", - "accounts": [ - { - "name": "aggregator", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "AggregatorSetVarianceThresholdParams" - } - } - ] - }, - { - "name": "crankInit", - "accounts": [ - { - "name": "crank", - "isMut": true, - "isSigner": true - }, - { - "name": "queue", - "isMut": false, - "isSigner": false - }, - { - "name": "buffer", - "isMut": true, - "isSigner": false - }, - { - "name": "payer", - "isMut": true, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "CrankInitParams" - } - } - ] - }, - { - "name": "crankPop", - "accounts": [ - { - "name": "crank", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleQueue", - "isMut": true, - "isSigner": false - }, - { - "name": "queueAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "programState", - "isMut": false, - "isSigner": false - }, - { - "name": "payoutWallet", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "crankDataBuffer", - "isMut": true, - "isSigner": false - }, - { - "name": "queueDataBuffer", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "CrankPopParams" - } - } - ] - }, - { - "name": "crankPush", - "accounts": [ - { - "name": "crank", - "isMut": true, - "isSigner": false - }, - { - "name": "aggregator", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleQueue", - "isMut": true, - "isSigner": false - }, - { - "name": "queueAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "permission", - "isMut": false, - "isSigner": false - }, - { - "name": "lease", - "isMut": true, - "isSigner": false - }, - { - "name": "escrow", - "isMut": true, - "isSigner": false - }, - { - "name": "programState", - "isMut": false, - "isSigner": false - }, - { - "name": "dataBuffer", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "CrankPushParams" - } - } - ] - }, - { - "name": "jobInit", - "accounts": [ - { - "name": "job", - "isMut": true, - "isSigner": false - }, - { - "name": "authorWallet", - "isMut": false, - "isSigner": false - }, - { - "name": "programState", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "JobInitParams" - } - } - ] - }, - { - "name": "leaseExtend", - "accounts": [ - { - "name": "lease", - "isMut": true, - "isSigner": false - }, - { - "name": "aggregator", - "isMut": false, - "isSigner": false - }, - { - "name": "queue", - "isMut": false, - "isSigner": false - }, - { - "name": "funder", - "isMut": true, - "isSigner": false - }, - { - "name": "owner", - "isMut": true, - "isSigner": true - }, - { - "name": "escrow", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "programState", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "LeaseExtendParams" - } - } - ] - }, - { - "name": "leaseInit", - "accounts": [ - { - "name": "lease", - "isMut": true, - "isSigner": false - }, - { - "name": "queue", - "isMut": true, - "isSigner": false - }, - { - "name": "aggregator", - "isMut": false, - "isSigner": false - }, - { - "name": "funder", - "isMut": true, - "isSigner": false - }, - { - "name": "payer", - "isMut": true, - "isSigner": true - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "owner", - "isMut": true, - "isSigner": true - }, - { - "name": "escrow", - "isMut": true, - "isSigner": false - }, - { - "name": "programState", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "LeaseInitParams" - } - } - ] - }, - { - "name": "leaseSetAuthority", - "accounts": [ - { - "name": "lease", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "newAuthority", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "LeaseSetAuthorityParams" - } - } - ] - }, - { - "name": "leaseWithdraw", - "accounts": [ - { - "name": "lease", - "isMut": true, - "isSigner": false - }, - { - "name": "escrow", - "isMut": true, - "isSigner": false - }, - { - "name": "aggregator", - "isMut": false, - "isSigner": false - }, - { - "name": "queue", - "isMut": false, - "isSigner": false - }, - { - "name": "withdrawAuthority", - "isMut": false, - "isSigner": true - }, - { - "name": "withdrawAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "programState", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "LeaseWithdrawParams" - } - } - ] - }, - { - "name": "oracleHeartbeat", - "accounts": [ - { - "name": "oracle", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleAuthority", - "isMut": false, - "isSigner": true - }, - { - "name": "tokenAccount", - "isMut": false, - "isSigner": false - }, - { - "name": "gcOracle", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleQueue", - "isMut": true, - "isSigner": false - }, - { - "name": "permission", - "isMut": false, - "isSigner": false - }, - { - "name": "dataBuffer", - "isMut": true, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "OracleHeartbeatParams" - } - } - ] - }, - { - "name": "oracleInit", - "accounts": [ - { - "name": "oracle", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "wallet", - "isMut": false, - "isSigner": false - }, - { - "name": "programState", - "isMut": false, - "isSigner": false - }, - { - "name": "queue", - "isMut": false, - "isSigner": false - }, - { - "name": "payer", - "isMut": true, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "OracleInitParams" - } - } - ] - }, - { - "name": "oracleQueueInit", - "accounts": [ - { - "name": "oracleQueue", - "isMut": true, - "isSigner": true - }, - { - "name": "authority", - "isMut": false, - "isSigner": false - }, - { - "name": "buffer", - "isMut": true, - "isSigner": false - }, - { - "name": "payer", - "isMut": true, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "OracleQueueInitParams" - } - } - ] - }, - { - "name": "oracleQueueSetRewards", - "accounts": [ - { - "name": "queue", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "OracleQueueSetRewardsParams" - } - } - ] - }, - { - "name": "oracleQueueVrfConfig", - "accounts": [ - { - "name": "queue", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "OracleQueueVrfConfigParams" - } - } - ] - }, - { - "name": "oracleWithdraw", - "accounts": [ - { - "name": "oracle", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleAuthority", - "isMut": false, - "isSigner": true - }, - { - "name": "tokenAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "withdrawAccount", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleQueue", - "isMut": true, - "isSigner": false - }, - { - "name": "permission", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "programState", - "isMut": false, - "isSigner": false - }, - { - "name": "payer", - "isMut": true, - "isSigner": true - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "OracleWithdrawParams" - } - } - ] - }, - { - "name": "permissionInit", - "accounts": [ - { - "name": "permission", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": false - }, - { - "name": "granter", - "isMut": false, - "isSigner": false - }, - { - "name": "grantee", - "isMut": false, - "isSigner": false - }, - { - "name": "payer", - "isMut": true, - "isSigner": true - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "PermissionInitParams" - } - } - ] - }, - { - "name": "permissionSet", - "accounts": [ - { - "name": "permission", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "PermissionSetParams" - } - } - ] - }, - { - "name": "programConfig", - "accounts": [ - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "programState", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "ProgramConfigParams" - } - } - ] - }, - { - "name": "programInit", - "accounts": [ - { - "name": "state", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenMint", - "isMut": true, - "isSigner": false - }, - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "payer", - "isMut": true, - "isSigner": false - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "ProgramInitParams" - } - } - ] - }, - { - "name": "vaultTransfer", - "accounts": [ - { - "name": "state", - "isMut": false, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "to", - "isMut": true, - "isSigner": false - }, - { - "name": "vault", - "isMut": true, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "VaultTransferParams" - } - } - ] - }, - { - "name": "vrfInit", - "accounts": [ - { - "name": "vrf", - "isMut": true, - "isSigner": false - }, - { - "name": "authority", - "isMut": false, - "isSigner": false - }, - { - "name": "oracleQueue", - "isMut": false, - "isSigner": false - }, - { - "name": "escrow", - "isMut": true, - "isSigner": false - }, - { - "name": "programState", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "VrfInitParams" - } - } - ] - }, - { - "name": "vrfProve", - "accounts": [ - { - "name": "vrf", - "isMut": true, - "isSigner": false - }, - { - "name": "oracle", - "isMut": false, - "isSigner": false - }, - { - "name": "randomnessProducer", - "isMut": false, - "isSigner": true - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "VrfProveParams" - } - } - ] - }, - { - "name": "vrfProveAndVerify", - "accounts": [ - { - "name": "vrf", - "isMut": true, - "isSigner": false - }, - { - "name": "callbackPid", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "escrow", - "isMut": true, - "isSigner": false - }, - { - "name": "programState", - "isMut": false, - "isSigner": false - }, - { - "name": "oracle", - "isMut": false, - "isSigner": false - }, - { - "name": "oracleAuthority", - "isMut": false, - "isSigner": true - }, - { - "name": "oracleWallet", - "isMut": true, - "isSigner": false - }, - { - "name": "instructionsSysvar", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "VrfProveAndVerifyParams" - } - } - ] - }, - { - "name": "vrfRequestRandomness", - "accounts": [ - { - "name": "authority", - "isMut": false, - "isSigner": true - }, - { - "name": "vrf", - "isMut": true, - "isSigner": false - }, - { - "name": "oracleQueue", - "isMut": true, - "isSigner": false - }, - { - "name": "queueAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "dataBuffer", - "isMut": false, - "isSigner": false - }, - { - "name": "permission", - "isMut": true, - "isSigner": false - }, - { - "name": "escrow", - "isMut": true, - "isSigner": false - }, - { - "name": "payerWallet", - "isMut": true, - "isSigner": false - }, - { - "name": "payerAuthority", - "isMut": false, - "isSigner": true - }, - { - "name": "recentBlockhashes", - "isMut": false, - "isSigner": false - }, - { - "name": "programState", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "VrfRequestRandomnessParams" - } - } - ] - }, - { - "name": "vrfVerify", - "accounts": [ - { - "name": "vrf", - "isMut": true, - "isSigner": false - }, - { - "name": "callbackPid", - "isMut": false, - "isSigner": false - }, - { - "name": "tokenProgram", - "isMut": false, - "isSigner": false - }, - { - "name": "escrow", - "isMut": true, - "isSigner": false - }, - { - "name": "programState", - "isMut": false, - "isSigner": false - }, - { - "name": "oracle", - "isMut": false, - "isSigner": false - }, - { - "name": "oracleAuthority", - "isMut": false, - "isSigner": false - }, - { - "name": "oracleWallet", - "isMut": true, - "isSigner": false - }, - { - "name": "instructionsSysvar", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "params", - "type": { - "defined": "VrfVerifyParams" - } - } - ] - } - ], - "accounts": [ - { - "name": "SbState", - "type": { - "kind": "struct", - "fields": [ - { - "name": "authority", - "type": "publicKey" - }, - { - "name": "tokenMint", - "type": "publicKey" - }, - { - "name": "tokenVault", - "type": "publicKey" - }, - { - "name": "ebuf", - "type": { - "array": ["u8", 1024] - } - } - ] - } - }, - { - "name": "AggregatorAccountData", - "type": { - "kind": "struct", - "fields": [ - { - "name": "name", - "type": { - "array": ["u8", 32] - } - }, - { - "name": "metadata", - "type": { - "array": ["u8", 128] - } - }, - { - "name": "authorWallet", - "type": "publicKey" - }, - { - "name": "queuePubkey", - "type": "publicKey" - }, - { - "name": "oracleRequestBatchSize", - "type": "u32" - }, - { - "name": "minOracleResults", - "type": "u32" - }, - { - "name": "minJobResults", - "type": "u32" - }, - { - "name": "minUpdateDelaySeconds", - "type": "u32" - }, - { - "name": "startAfter", - "type": "i64" - }, - { - "name": "varianceThreshold", - "type": { - "defined": "SwitchboardDecimal" - } - }, - { - "name": "forceReportPeriod", - "type": "i64" - }, - { - "name": "expiration", - "type": "i64" - }, - { - "name": "consecutiveFailureCount", - "type": "u64" - }, - { - "name": "nextAllowedUpdateTime", - "type": "i64" - }, - { - "name": "isLocked", - "type": "bool" - }, - { - "name": "crankPubkey", - "type": "publicKey" - }, - { - "name": "latestConfirmedRound", - "type": { - "defined": "AggregatorRound" - } - }, - { - "name": "currentRound", - "type": { - "defined": "AggregatorRound" - } - }, - { - "name": "jobPubkeysData", - "type": { - "array": ["publicKey", 16] - } - }, - { - "name": "jobHashes", - "type": { - "array": [ - { - "defined": "Hash" - }, - 16 - ] - } - }, - { - "name": "jobPubkeysSize", - "type": "u32" - }, - { - "name": "jobsChecksum", - "type": { - "array": ["u8", 32] - } - }, - { - "name": "authority", - "type": "publicKey" - }, - { - "name": "historyBuffer", - "type": "publicKey" - }, - { - "name": "previousConfirmedRoundResult", - "type": { - "defined": "SwitchboardDecimal" - } - }, - { - "name": "previousConfirmedRoundSlot", - "type": "u64" - }, - { - "name": "disableCrank", - "type": "bool" - }, - { - "name": "ebuf", - "type": { - "array": ["u8", 163] - } - } - ] - } - }, - { - "name": "PermissionAccountData", - "type": { - "kind": "struct", - "fields": [ - { - "name": "authority", - "type": "publicKey" - }, - { - "name": "permissions", - "type": "u32" - }, - { - "name": "granter", - "type": "publicKey" - }, - { - "name": "grantee", - "type": "publicKey" - }, - { - "name": "expiration", - "type": "i64" - }, - { - "name": "ebuf", - "type": { - "array": ["u8", 256] - } - } - ] - } - }, - { - "name": "LeaseAccountData", - "type": { - "kind": "struct", - "fields": [ - { - "name": "escrow", - "type": "publicKey" - }, - { - "name": "queue", - "type": "publicKey" - }, - { - "name": "aggregator", - "type": "publicKey" - }, - { - "name": "tokenProgram", - "type": "publicKey" - }, - { - "name": "isActive", - "type": "bool" - }, - { - "name": "crankRowCount", - "type": "u32" - }, - { - "name": "createdAt", - "type": "i64" - }, - { - "name": "updateCount", - "type": "u128" - }, - { - "name": "withdrawAuthority", - "type": "publicKey" - }, - { - "name": "ebuf", - "type": { - "array": ["u8", 256] - } - } - ] - } - }, - { - "name": "OracleQueueAccountData", - "type": { - "kind": "struct", - "fields": [ - { - "name": "name", - "type": { - "array": ["u8", 32] - } - }, - { - "name": "metadata", - "type": { - "array": ["u8", 64] - } - }, - { - "name": "authority", - "type": "publicKey" - }, - { - "name": "oracleTimeout", - "type": "u32" - }, - { - "name": "reward", - "type": "u64" - }, - { - "name": "minStake", - "type": "u64" - }, - { - "name": "slashingEnabled", - "type": "bool" - }, - { - "name": "varianceToleranceMultiplier", - "type": { - "defined": "SwitchboardDecimal" - } - }, - { - "name": "feedProbationPeriod", - "type": "u32" - }, - { - "name": "currIdx", - "type": "u32" - }, - { - "name": "size", - "type": "u32" - }, - { - "name": "gcIdx", - "type": "u32" - }, - { - "name": "consecutiveFeedFailureLimit", - "type": "u64" - }, - { - "name": "consecutiveOracleFailureLimit", - "type": "u64" - }, - { - "name": "unpermissionedFeedsEnabled", - "type": "bool" - }, - { - "name": "unpermissionedVrfEnabled", - "type": "bool" - }, - { - "name": "curatorRewardCut", - "type": { - "defined": "SwitchboardDecimal" - } - }, - { - "name": "lockLeaseFunding", - "type": "bool" - }, - { - "name": "ebuf", - "type": { - "array": ["u8", 1001] - } - }, - { - "name": "maxSize", - "type": "u32" - }, - { - "name": "dataBuffer", - "type": "publicKey" - } - ] - } - }, - { - "name": "CrankAccountData", - "type": { - "kind": "struct", - "fields": [ - { - "name": "name", - "type": { - "array": ["u8", 32] - } - }, - { - "name": "metadata", - "type": { - "array": ["u8", 64] - } - }, - { - "name": "queuePubkey", - "type": "publicKey" - }, - { - "name": "pqSize", - "type": "u32" - }, - { - "name": "maxRows", - "type": "u32" - }, - { - "name": "jitterModifier", - "type": "u8" - }, - { - "name": "ebuf", - "type": { - "array": ["u8", 255] - } - }, - { - "name": "dataBuffer", - "type": "publicKey" - } - ] - } - }, - { - "name": "OracleAccountData", - "type": { - "kind": "struct", - "fields": [ - { - "name": "name", - "type": { - "array": ["u8", 32] - } - }, - { - "name": "metadata", - "type": { - "array": ["u8", 128] - } - }, - { - "name": "oracleAuthority", - "type": "publicKey" - }, - { - "name": "lastHeartbeat", - "type": "i64" - }, - { - "name": "numInUse", - "type": "u32" - }, - { - "name": "tokenAccount", - "type": "publicKey" - }, - { - "name": "queuePubkey", - "type": "publicKey" - }, - { - "name": "metrics", - "type": { - "defined": "OracleMetrics" - } - }, - { - "name": "ebuf", - "type": { - "array": ["u8", 256] - } - } - ] - } - }, - { - "name": "JobAccountData", - "type": { - "kind": "struct", - "fields": [ - { - "name": "name", - "type": { - "array": ["u8", 32] - } - }, - { - "name": "metadata", - "type": { - "array": ["u8", 64] - } - }, - { - "name": "authorWallet", - "type": "publicKey" - }, - { - "name": "expiration", - "type": "i64" - }, - { - "name": "hash", - "type": { - "array": ["u8", 32] - } - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "referenceCount", - "type": "u32" - }, - { - "name": "totalSpent", - "type": "u128" - } - ] - } - }, - { - "name": "VrfAccountData", - "type": { - "kind": "struct", - "fields": [ - { - "name": "status", - "type": { - "defined": "VrfStatus" - } - }, - { - "name": "counter", - "type": "u128" - }, - { - "name": "authority", - "type": "publicKey" - }, - { - "name": "oracleQueue", - "type": "publicKey" - }, - { - "name": "escrow", - "type": "publicKey" - }, - { - "name": "callback", - "type": { - "defined": "CallbackZC" - } - }, - { - "name": "batchSize", - "type": "u32" - }, - { - "name": "builders", - "type": { - "array": [ - { - "defined": "VrfBuilder" - }, - 8 - ] - } - }, - { - "name": "buildersLen", - "type": "u32" - }, - { - "name": "testMode", - "type": "bool" - }, - { - "name": "currentRound", - "type": { - "defined": "VrfRound" - } - }, - { - "name": "ebuf", - "type": { - "array": ["u8", 1024] - } - } - ] - } - } - ], - "types": [ - { - "name": "AggregatorAddJobParams", - "type": { - "kind": "struct", - "fields": [] - } - }, - { - "name": "AggregatorInitParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "name", - "type": { - "array": ["u8", 32] - } - }, - { - "name": "metadata", - "type": { - "array": ["u8", 128] - } - }, - { - "name": "batchSize", - "type": "u32" - }, - { - "name": "minOracleResults", - "type": "u32" - }, - { - "name": "minJobResults", - "type": "u32" - }, - { - "name": "minUpdateDelaySeconds", - "type": "u32" - }, - { - "name": "startAfter", - "type": "i64" - }, - { - "name": "varianceThreshold", - "type": { - "defined": "BorshDecimal" - } - }, - { - "name": "forceReportPeriod", - "type": "i64" - }, - { - "name": "expiration", - "type": "i64" - }, - { - "name": "stateBump", - "type": "u8" - } - ] - } - }, - { - "name": "AggregatorLockParams", - "type": { - "kind": "struct", - "fields": [] - } - }, - { - "name": "AggregatorOpenRoundParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "stateBump", - "type": "u8" - }, - { - "name": "leaseBump", - "type": "u8" - }, - { - "name": "permissionBump", - "type": "u8" - }, - { - "name": "jitter", - "type": "u8" - } - ] - } - }, - { - "name": "AggregatorRemoveJobParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "jobIdx", - "type": "u32" - } - ] - } - }, - { - "name": "AggregatorSaveResultParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "oracleIdx", - "type": "u32" - }, - { - "name": "error", - "type": "bool" - }, - { - "name": "value", - "type": { - "defined": "BorshDecimal" - } - }, - { - "name": "jobsChecksum", - "type": { - "array": ["u8", 32] - } - }, - { - "name": "minResponse", - "type": { - "defined": "BorshDecimal" - } - }, - { - "name": "maxResponse", - "type": { - "defined": "BorshDecimal" - } - }, - { - "name": "feedPermissionBump", - "type": "u8" - }, - { - "name": "oraclePermissionBump", - "type": "u8" - }, - { - "name": "leaseBump", - "type": "u8" - }, - { - "name": "stateBump", - "type": "u8" - } - ] - } - }, - { - "name": "AggregatorSetAuthorityParams", - "type": { - "kind": "struct", - "fields": [] - } - }, - { - "name": "AggregatorSetBatchSizeParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "batchSize", - "type": "u32" - } - ] - } - }, - { - "name": "AggregatorSetHistoryBufferParams", - "type": { - "kind": "struct", - "fields": [] - } - }, - { - "name": "AggregatorSetMinJobsParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "minJobResults", - "type": "u32" - } - ] - } - }, - { - "name": "AggregatorSetMinOraclesParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "minOracleResults", - "type": "u32" - } - ] - } - }, - { - "name": "AggregatorSetQueueParams", - "type": { - "kind": "struct", - "fields": [] - } - }, - { - "name": "AggregatorSetUpdateIntervalParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "newInterval", - "type": "u32" - } - ] - } - }, - { - "name": "AggregatorSetVarianceThresholdParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "varianceThreshold", - "type": { - "defined": "BorshDecimal" - } - } - ] - } - }, - { - "name": "CrankInitParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "name", - "type": "bytes" - }, - { - "name": "metadata", - "type": "bytes" - }, - { - "name": "crankSize", - "type": "u32" - } - ] - } - }, - { - "name": "CrankPopParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "stateBump", - "type": "u8" - }, - { - "name": "leaseBumps", - "type": "bytes" - }, - { - "name": "permissionBumps", - "type": "bytes" - }, - { - "name": "nonce", - "type": { - "option": "u32" - } - }, - { - "name": "failOpenOnAccountMismatch", - "type": { - "option": "bool" - } - } - ] - } - }, - { - "name": "CrankPushParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "stateBump", - "type": "u8" - }, - { - "name": "permissionBump", - "type": "u8" - } - ] - } - }, - { - "name": "JobInitParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "name", - "type": { - "array": ["u8", 32] - } - }, - { - "name": "expiration", - "type": "i64" - }, - { - "name": "stateBump", - "type": "u8" - }, - { - "name": "data", - "type": "bytes" - } - ] - } - }, - { - "name": "LeaseExtendParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "loadAmount", - "type": "u64" - }, - { - "name": "leaseBump", - "type": "u8" - }, - { - "name": "stateBump", - "type": "u8" - } - ] - } - }, - { - "name": "LeaseInitParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "loadAmount", - "type": "u64" - }, - { - "name": "withdrawAuthority", - "type": "publicKey" - }, - { - "name": "leaseBump", - "type": "u8" - }, - { - "name": "stateBump", - "type": "u8" - } - ] - } - }, - { - "name": "LeaseSetAuthorityParams", - "type": { - "kind": "struct", - "fields": [] - } - }, - { - "name": "LeaseWithdrawParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "stateBump", - "type": "u8" - }, - { - "name": "leaseBump", - "type": "u8" - }, - { - "name": "amount", - "type": "u64" - } - ] - } - }, - { - "name": "OracleHeartbeatParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "permissionBump", - "type": "u8" - } - ] - } - }, - { - "name": "OracleInitParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "name", - "type": "bytes" - }, - { - "name": "metadata", - "type": "bytes" - }, - { - "name": "stateBump", - "type": "u8" - }, - { - "name": "oracleBump", - "type": "u8" - } - ] - } - }, - { - "name": "OracleQueueInitParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "name", - "type": { - "array": ["u8", 32] - } - }, - { - "name": "metadata", - "type": { - "array": ["u8", 64] - } - }, - { - "name": "reward", - "type": "u64" - }, - { - "name": "minStake", - "type": "u64" - }, - { - "name": "feedProbationPeriod", - "type": "u32" - }, - { - "name": "oracleTimeout", - "type": "u32" - }, - { - "name": "slashingEnabled", - "type": "bool" - }, - { - "name": "varianceToleranceMultiplier", - "type": { - "defined": "BorshDecimal" - } - }, - { - "name": "consecutiveFeedFailureLimit", - "type": "u64" - }, - { - "name": "consecutiveOracleFailureLimit", - "type": "u64" - }, - { - "name": "queueSize", - "type": "u32" - }, - { - "name": "unpermissionedFeeds", - "type": "bool" - }, - { - "name": "unpermissionedVrf", - "type": "bool" - } - ] - } - }, - { - "name": "OracleQueueSetRewardsParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "rewards", - "type": "u64" - } - ] - } - }, - { - "name": "OracleQueueVrfConfigParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "unpermissionedVrfEnabled", - "type": "bool" - } - ] - } - }, - { - "name": "OracleWithdrawParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "stateBump", - "type": "u8" - }, - { - "name": "permissionBump", - "type": "u8" - }, - { - "name": "amount", - "type": "u64" - } - ] - } - }, - { - "name": "PermissionInitParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "permissionBump", - "type": "u8" - } - ] - } - }, - { - "name": "PermissionSetParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "permission", - "type": { - "defined": "SwitchboardPermission" - } - }, - { - "name": "enable", - "type": "bool" - } - ] - } - }, - { - "name": "ProgramConfigParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "token", - "type": "publicKey" - }, - { - "name": "bump", - "type": "u8" - } - ] - } - }, - { - "name": "ProgramInitParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "stateBump", - "type": "u8" - } - ] - } - }, - { - "name": "VaultTransferParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "stateBump", - "type": "u8" - }, - { - "name": "amount", - "type": "u64" - } - ] - } - }, - { - "name": "VrfInitParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "callback", - "type": { - "defined": "Callback" - } - }, - { - "name": "stateBump", - "type": "u8" - } - ] - } - }, - { - "name": "VrfProveParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "proof", - "type": "bytes" - }, - { - "name": "idx", - "type": "u32" - } - ] - } - }, - { - "name": "VrfProveAndVerifyParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "nonce", - "type": { - "option": "u32" - } - }, - { - "name": "stateBump", - "type": "u8" - }, - { - "name": "idx", - "type": "u32" - }, - { - "name": "proof", - "type": "bytes" - } - ] - } - }, - { - "name": "VrfRequestRandomnessParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "permissionBump", - "type": "u8" - }, - { - "name": "stateBump", - "type": "u8" - } - ] - } - }, - { - "name": "VrfVerifyParams", - "type": { - "kind": "struct", - "fields": [ - { - "name": "nonce", - "type": { - "option": "u32" - } - }, - { - "name": "stateBump", - "type": "u8" - }, - { - "name": "idx", - "type": "u32" - } - ] - } - }, - { - "name": "Hash", - "type": { - "kind": "struct", - "fields": [ - { - "name": "data", - "type": { - "array": ["u8", 32] - } - } - ] - } - }, - { - "name": "AggregatorRound", - "type": { - "kind": "struct", - "fields": [ - { - "name": "numSuccess", - "type": "u32" - }, - { - "name": "numError", - "type": "u32" - }, - { - "name": "isClosed", - "type": "bool" - }, - { - "name": "roundOpenSlot", - "type": "u64" - }, - { - "name": "roundOpenTimestamp", - "type": "i64" - }, - { - "name": "result", - "type": { - "defined": "SwitchboardDecimal" - } - }, - { - "name": "stdDeviation", - "type": { - "defined": "SwitchboardDecimal" - } - }, - { - "name": "minResponse", - "type": { - "defined": "SwitchboardDecimal" - } - }, - { - "name": "maxResponse", - "type": { - "defined": "SwitchboardDecimal" - } - }, - { - "name": "oraclePubkeysData", - "type": { - "array": ["publicKey", 16] - } - }, - { - "name": "mediansData", - "type": { - "array": [ - { - "defined": "SwitchboardDecimal" - }, - 16 - ] - } - }, - { - "name": "currentPayout", - "type": { - "array": ["i64", 16] - } - }, - { - "name": "mediansFulfilled", - "type": { - "array": ["bool", 16] - } - }, - { - "name": "errorsFulfilled", - "type": { - "array": ["bool", 16] - } - } - ] - } - }, - { - "name": "AggregatorHistoryRow", - "type": { - "kind": "struct", - "fields": [ - { - "name": "timestamp", - "type": "i64" - }, - { - "name": "value", - "type": { - "defined": "SwitchboardDecimal" - } - } - ] - } - }, - { - "name": "SwitchboardDecimal", - "type": { - "kind": "struct", - "fields": [ - { - "name": "mantissa", - "type": "i128" - }, - { - "name": "scale", - "type": "u32" - } - ] - } - }, - { - "name": "CrankRow", - "type": { - "kind": "struct", - "fields": [ - { - "name": "pubkey", - "type": "publicKey" - }, - { - "name": "nextTimestamp", - "type": "i64" - } - ] - } - }, - { - "name": "OracleMetrics", - "type": { - "kind": "struct", - "fields": [ - { - "name": "consecutiveSuccess", - "type": "u64" - }, - { - "name": "consecutiveError", - "type": "u64" - }, - { - "name": "consecutiveDisagreement", - "type": "u64" - }, - { - "name": "consecutiveLateResponse", - "type": "u64" - }, - { - "name": "consecutiveFailure", - "type": "u64" - }, - { - "name": "totalSuccess", - "type": "u128" - }, - { - "name": "totalError", - "type": "u128" - }, - { - "name": "totalDisagreement", - "type": "u128" - }, - { - "name": "totalLateResponse", - "type": "u128" - } - ] - } - }, - { - "name": "BorshDecimal", - "type": { - "kind": "struct", - "fields": [ - { - "name": "mantissa", - "type": "i128" - }, - { - "name": "scale", - "type": "u32" - } - ] - } - }, - { - "name": "EcvrfProofZC", - "type": { - "kind": "struct", - "fields": [ - { - "name": "gamma", - "type": { - "defined": "EdwardsPointZC" - } - }, - { - "name": "c", - "type": { - "defined": "Scalar" - } - }, - { - "name": "s", - "type": { - "defined": "Scalar" - } - } - ] - } - }, - { - "name": "Scalar", - "type": { - "kind": "struct", - "fields": [ - { - "name": "bytes", - "type": { - "array": ["u8", 32] - } - } - ] - } - }, - { - "name": "FieldElementZC", - "type": { - "kind": "struct", - "fields": [ - { - "name": "bytes", - "type": { - "array": ["u64", 5] - } - } - ] - } - }, - { - "name": "CompletedPointZC", - "type": { - "kind": "struct", - "fields": [ - { - "name": "x", - "type": { - "defined": "FieldElementZC" - } - }, - { - "name": "y", - "type": { - "defined": "FieldElementZC" - } - }, - { - "name": "z", - "type": { - "defined": "FieldElementZC" - } - }, - { - "name": "t", - "type": { - "defined": "FieldElementZC" - } - } - ] - } - }, - { - "name": "EdwardsPointZC", - "type": { - "kind": "struct", - "fields": [ - { - "name": "x", - "type": { - "defined": "FieldElementZC" - } - }, - { - "name": "y", - "type": { - "defined": "FieldElementZC" - } - }, - { - "name": "z", - "type": { - "defined": "FieldElementZC" - } - }, - { - "name": "t", - "type": { - "defined": "FieldElementZC" - } - } - ] - } - }, - { - "name": "ProjectivePointZC", - "type": { - "kind": "struct", - "fields": [ - { - "name": "x", - "type": { - "defined": "FieldElementZC" - } - }, - { - "name": "y", - "type": { - "defined": "FieldElementZC" - } - }, - { - "name": "z", - "type": { - "defined": "FieldElementZC" - } - } - ] - } - }, - { - "name": "EcvrfIntermediate", - "type": { - "kind": "struct", - "fields": [ - { - "name": "r", - "type": { - "defined": "FieldElementZC" - } - }, - { - "name": "nS", - "type": { - "defined": "FieldElementZC" - } - }, - { - "name": "d", - "type": { - "defined": "FieldElementZC" - } - }, - { - "name": "t13", - "type": { - "defined": "FieldElementZC" - } - }, - { - "name": "t15", - "type": { - "defined": "FieldElementZC" - } - } - ] - } - }, - { - "name": "VrfBuilder", - "type": { - "kind": "struct", - "fields": [ - { - "name": "producer", - "type": "publicKey" - }, - { - "name": "status", - "type": { - "defined": "VrfStatus" - } - }, - { - "name": "reprProof", - "type": { - "array": ["u8", 80] - } - }, - { - "name": "proof", - "type": { - "defined": "EcvrfProofZC" - } - }, - { - "name": "yPoint", - "type": "publicKey" - }, - { - "name": "stage", - "type": "u32" - }, - { - "name": "stage1Out", - "type": { - "defined": "EcvrfIntermediate" - } - }, - { - "name": "r1", - "type": { - "defined": "EdwardsPointZC" - } - }, - { - "name": "r2", - "type": { - "defined": "EdwardsPointZC" - } - }, - { - "name": "stage3Out", - "type": { - "defined": "EcvrfIntermediate" - } - }, - { - "name": "hPoint", - "type": { - "defined": "EdwardsPointZC" - } - }, - { - "name": "sReduced", - "type": { - "defined": "Scalar" - } - }, - { - "name": "yPointBuilder", - "type": { - "array": [ - { - "defined": "FieldElementZC" - }, - 3 - ] - } - }, - { - "name": "yRistrettoPoint", - "type": { - "defined": "EdwardsPointZC" - } - }, - { - "name": "mulRound", - "type": "u8" - }, - { - "name": "hashPointsRound", - "type": "u8" - }, - { - "name": "mulTmp1", - "type": { - "defined": "CompletedPointZC" - } - }, - { - "name": "uPoint1", - "type": { - "defined": "EdwardsPointZC" - } - }, - { - "name": "uPoint2", - "type": { - "defined": "EdwardsPointZC" - } - }, - { - "name": "vPoint1", - "type": { - "defined": "EdwardsPointZC" - } - }, - { - "name": "vPoint2", - "type": { - "defined": "EdwardsPointZC" - } - }, - { - "name": "uPoint", - "type": { - "defined": "EdwardsPointZC" - } - }, - { - "name": "vPoint", - "type": { - "defined": "EdwardsPointZC" - } - }, - { - "name": "u1", - "type": { - "defined": "FieldElementZC" - } - }, - { - "name": "u2", - "type": { - "defined": "FieldElementZC" - } - }, - { - "name": "invertee", - "type": { - "defined": "FieldElementZC" - } - }, - { - "name": "y", - "type": { - "defined": "FieldElementZC" - } - }, - { - "name": "z", - "type": { - "defined": "FieldElementZC" - } - }, - { - "name": "p1Bytes", - "type": { - "array": ["u8", 32] - } - }, - { - "name": "p2Bytes", - "type": { - "array": ["u8", 32] - } - }, - { - "name": "p3Bytes", - "type": { - "array": ["u8", 32] - } - }, - { - "name": "p4Bytes", - "type": { - "array": ["u8", 32] - } - }, - { - "name": "cPrimeHashbuf", - "type": { - "array": ["u8", 16] - } - }, - { - "name": "m1", - "type": { - "defined": "FieldElementZC" - } - }, - { - "name": "m2", - "type": { - "defined": "FieldElementZC" - } - }, - { - "name": "txRemaining", - "type": "u32" - }, - { - "name": "verified", - "type": "bool" - }, - { - "name": "result", - "type": { - "array": ["u8", 32] - } - } - ] - } - }, - { - "name": "AccountMetaZC", - "type": { - "kind": "struct", - "fields": [ - { - "name": "pubkey", - "type": "publicKey" - }, - { - "name": "isSigner", - "type": "bool" - }, - { - "name": "isWritable", - "type": "bool" - } - ] - } - }, - { - "name": "AccountMetaBorsh", - "type": { - "kind": "struct", - "fields": [ - { - "name": "pubkey", - "type": "publicKey" - }, - { - "name": "isSigner", - "type": "bool" - }, - { - "name": "isWritable", - "type": "bool" - } - ] - } - }, - { - "name": "CallbackZC", - "type": { - "kind": "struct", - "fields": [ - { - "name": "programId", - "type": "publicKey" - }, - { - "name": "accounts", - "type": { - "array": [ - { - "defined": "AccountMetaZC" - }, - 32 - ] - } - }, - { - "name": "accountsLen", - "type": "u32" - }, - { - "name": "ixData", - "type": { - "array": ["u8", 1024] - } - }, - { - "name": "ixDataLen", - "type": "u32" - } - ] - } - }, - { - "name": "Callback", - "type": { - "kind": "struct", - "fields": [ - { - "name": "programId", - "type": "publicKey" - }, - { - "name": "accounts", - "type": { - "vec": { - "defined": "AccountMetaBorsh" - } - } - }, - { - "name": "ixData", - "type": "bytes" - } - ] - } - }, - { - "name": "VrfRound", - "type": { - "kind": "struct", - "fields": [ - { - "name": "alpha", - "type": { - "array": ["u8", 256] - } - }, - { - "name": "alphaLen", - "type": "u32" - }, - { - "name": "requestSlot", - "type": "u64" - }, - { - "name": "requestTimestamp", - "type": "i64" - }, - { - "name": "result", - "type": { - "array": ["u8", 32] - } - }, - { - "name": "numVerified", - "type": "u32" - }, - { - "name": "ebuf", - "type": { - "array": ["u8", 256] - } - } - ] - } - }, - { - "name": "Lanes", - "type": { - "kind": "enum", - "variants": [ - { - "name": "C" - }, - { - "name": "D" - }, - { - "name": "AB" - }, - { - "name": "AC" - }, - { - "name": "CD" - }, - { - "name": "AD" - }, - { - "name": "BC" - }, - { - "name": "ABCD" - } - ] - } - }, - { - "name": "Shuffle", - "type": { - "kind": "enum", - "variants": [ - { - "name": "AAAA" - }, - { - "name": "BBBB" - }, - { - "name": "CACA" - }, - { - "name": "DBBD" - }, - { - "name": "ADDA" - }, - { - "name": "CBCB" - }, - { - "name": "ABAB" - }, - { - "name": "BADC" - }, - { - "name": "BACD" - }, - { - "name": "ABDC" - } - ] - } - }, - { - "name": "Shuffle", - "type": { - "kind": "enum", - "variants": [ - { - "name": "AAAA" - }, - { - "name": "BBBB" - }, - { - "name": "BADC" - }, - { - "name": "BACD" - }, - { - "name": "ADDA" - }, - { - "name": "CBCB" - }, - { - "name": "ABDC" - }, - { - "name": "ABAB" - }, - { - "name": "DBBD" - }, - { - "name": "CACA" - } - ] - } - }, - { - "name": "Lanes", - "type": { - "kind": "enum", - "variants": [ - { - "name": "D" - }, - { - "name": "C" - }, - { - "name": "AB" - }, - { - "name": "AC" - }, - { - "name": "AD" - }, - { - "name": "BCD" - } - ] - } - }, - { - "name": "SwitchboardPermission", - "type": { - "kind": "enum", - "variants": [ - { - "name": "PermitOracleHeartbeat" - }, - { - "name": "PermitOracleQueueUsage" - }, - { - "name": "PermitVrfRequests" - } - ] - } - }, - { - "name": "OracleResponseType", - "type": { - "kind": "enum", - "variants": [ - { - "name": "TypeSuccess" - }, - { - "name": "TypeError" - }, - { - "name": "TypeDisagreement" - }, - { - "name": "TypeNoResponse" - } - ] - } - }, - { - "name": "VrfStatus", - "type": { - "kind": "enum", - "variants": [ - { - "name": "StatusNone" - }, - { - "name": "StatusRequesting" - }, - { - "name": "StatusVerifying" - }, - { - "name": "StatusVerified" - }, - { - "name": "StatusCallbackSuccess" - }, - { - "name": "StatusVerifyFailure" - } - ] - } - } - ], - "events": [ - { - "name": "AggregatorInitEvent", - "fields": [ - { - "name": "feedPubkey", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "VrfRequestRandomnessEvent", - "fields": [ - { - "name": "vrfPubkey", - "type": "publicKey", - "index": true - }, - { - "name": "oraclePubkeys", - "type": { - "vec": "publicKey" - }, - "index": false - }, - { - "name": "loadAmount", - "type": "u64", - "index": false - }, - { - "name": "existingAmount", - "type": "u64", - "index": false - } - ] - }, - { - "name": "VrfRequestEvent", - "fields": [ - { - "name": "vrfPubkey", - "type": "publicKey", - "index": true - }, - { - "name": "oraclePubkeys", - "type": { - "vec": "publicKey" - }, - "index": false - } - ] - }, - { - "name": "VrfProveEvent", - "fields": [ - { - "name": "vrfPubkey", - "type": "publicKey", - "index": true - }, - { - "name": "oraclePubkey", - "type": "publicKey", - "index": true - }, - { - "name": "authorityPubkey", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "VrfVerifyEvent", - "fields": [ - { - "name": "vrfPubkey", - "type": "publicKey", - "index": true - }, - { - "name": "oraclePubkey", - "type": "publicKey", - "index": true - }, - { - "name": "authorityPubkey", - "type": "publicKey", - "index": false - }, - { - "name": "amount", - "type": "u64", - "index": false - } - ] - }, - { - "name": "VrfCallbackPerformedEvent", - "fields": [ - { - "name": "vrfPubkey", - "type": "publicKey", - "index": true - }, - { - "name": "oraclePubkey", - "type": "publicKey", - "index": true - }, - { - "name": "amount", - "type": "u64", - "index": false - } - ] - }, - { - "name": "AggregatorOpenRoundEvent", - "fields": [ - { - "name": "feedPubkey", - "type": "publicKey", - "index": false - }, - { - "name": "oraclePubkeys", - "type": { - "vec": "publicKey" - }, - "index": false - }, - { - "name": "jobPubkeys", - "type": { - "vec": "publicKey" - }, - "index": false - }, - { - "name": "remainingFunds", - "type": "u64", - "index": false - }, - { - "name": "queueAuthority", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "AggregatorValueUpdateEvent", - "fields": [ - { - "name": "feedPubkey", - "type": "publicKey", - "index": false - }, - { - "name": "value", - "type": { - "defined": "BorshDecimal" - }, - "index": false - }, - { - "name": "slot", - "type": "u64", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - }, - { - "name": "oraclePubkeys", - "type": { - "vec": "publicKey" - }, - "index": false - }, - { - "name": "oracleValues", - "type": { - "vec": { - "defined": "BorshDecimal" - } - }, - "index": false - } - ] - }, - { - "name": "OracleRewardEvent", - "fields": [ - { - "name": "feedPubkey", - "type": "publicKey", - "index": false - }, - { - "name": "leasePubkey", - "type": "publicKey", - "index": false - }, - { - "name": "oraclePubkey", - "type": "publicKey", - "index": false - }, - { - "name": "walletPubkey", - "type": "publicKey", - "index": false - }, - { - "name": "amount", - "type": "u64", - "index": false - }, - { - "name": "roundSlot", - "type": "u64", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - }, - { - "name": "OracleWithdrawEvent", - "fields": [ - { - "name": "oraclePubkey", - "type": "publicKey", - "index": false - }, - { - "name": "walletPubkey", - "type": "publicKey", - "index": false - }, - { - "name": "destinationWallet", - "type": "publicKey", - "index": false - }, - { - "name": "previousAmount", - "type": "u64", - "index": false - }, - { - "name": "newAmount", - "type": "u64", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - }, - { - "name": "LeaseWithdrawEvent", - "fields": [ - { - "name": "leasePubkey", - "type": "publicKey", - "index": false - }, - { - "name": "walletPubkey", - "type": "publicKey", - "index": false - }, - { - "name": "previousAmount", - "type": "u64", - "index": false - }, - { - "name": "newAmount", - "type": "u64", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - }, - { - "name": "OracleSlashEvent", - "fields": [ - { - "name": "feedPubkey", - "type": "publicKey", - "index": false - }, - { - "name": "leasePubkey", - "type": "publicKey", - "index": false - }, - { - "name": "oraclePubkey", - "type": "publicKey", - "index": false - }, - { - "name": "walletPubkey", - "type": "publicKey", - "index": false - }, - { - "name": "amount", - "type": "u64", - "index": false - }, - { - "name": "roundSlot", - "type": "u64", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - }, - { - "name": "LeaseFundEvent", - "fields": [ - { - "name": "leasePubkey", - "type": "publicKey", - "index": false - }, - { - "name": "funder", - "type": "publicKey", - "index": false - }, - { - "name": "amount", - "type": "u64", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - }, - { - "name": "ProbationBrokenEvent", - "fields": [ - { - "name": "feedPubkey", - "type": "publicKey", - "index": false - }, - { - "name": "queuePubkey", - "type": "publicKey", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - }, - { - "name": "FeedPermissionRevokedEvent", - "fields": [ - { - "name": "feedPubkey", - "type": "publicKey", - "index": false - }, - { - "name": "timestamp", - "type": "i64", - "index": false - } - ] - }, - { - "name": "GarbageCollectFailureEvent", - "fields": [ - { - "name": "queuePubkey", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "OracleBootedEvent", - "fields": [ - { - "name": "queuePubkey", - "type": "publicKey", - "index": false - }, - { - "name": "oraclePubkey", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "CrankLeaseInsufficientFundsEvent", - "fields": [ - { - "name": "feedPubkey", - "type": "publicKey", - "index": false - }, - { - "name": "leasePubkey", - "type": "publicKey", - "index": false - } - ] - }, - { - "name": "CrankPopExpectedFailureEvent", - "fields": [ - { - "name": "feedPubkey", - "type": "publicKey", - "index": false - }, - { - "name": "leasePubkey", - "type": "publicKey", - "index": false - } - ] - } - ], - "errors": [ - { - "code": 6000, - "name": "ArrayOperationError", - "msg": "Illegal operation on a Switchboard array." - }, - { - "code": 6001, - "name": "QueueOperationError", - "msg": "Illegal operation on a Switchboard queue." - }, - { - "code": 6002, - "name": "IncorrectProgramOwnerError", - "msg": "An account required to be owned by the program has a different owner." - }, - { - "code": 6003, - "name": "InvalidAggregatorRound", - "msg": "Aggregator is not currently populated with a valid round." - }, - { - "code": 6004, - "name": "TooManyAggregatorJobs", - "msg": "Aggregator cannot fit any more jobs." - }, - { - "code": 6005, - "name": "AggregatorCurrentRoundClosed", - "msg": "Aggregator's current round is closed. No results are being accepted." - }, - { - "code": 6006, - "name": "AggregatorInvalidSaveResult", - "msg": "Aggregator received an invalid save result instruction." - }, - { - "code": 6007, - "name": "InvalidStrDecimalConversion", - "msg": "Failed to convert string to decimal format." - }, - { - "code": 6008, - "name": "AccountLoaderMissingSignature", - "msg": "AccountLoader account is missing a required signature." - }, - { - "code": 6009, - "name": "MissingRequiredSignature", - "msg": "Account is missing a required signature." - }, - { - "code": 6010, - "name": "ArrayOverflowError", - "msg": "The attempted action will overflow a zero-copy account array." - }, - { - "code": 6011, - "name": "ArrayUnderflowError", - "msg": "The attempted action will underflow a zero-copy account array." - }, - { - "code": 6012, - "name": "PubkeyNotFoundError", - "msg": "The queried public key was not found." - }, - { - "code": 6013, - "name": "AggregatorIllegalRoundOpenCall", - "msg": "Aggregator round open called too early." - }, - { - "code": 6014, - "name": "AggregatorIllegalRoundCloseCall", - "msg": "Aggregator round close called too early." - }, - { - "code": 6015, - "name": "AggregatorClosedError", - "msg": "Aggregator is closed. Illegal action." - }, - { - "code": 6016, - "name": "IllegalOracleIdxError", - "msg": "Illegal oracle index." - }, - { - "code": 6017, - "name": "OracleAlreadyRespondedError", - "msg": "The provided oracle has already responded this round." - }, - { - "code": 6018, - "name": "ProtoDeserializeError", - "msg": "Failed to deserialize protocol buffer." - }, - { - "code": 6019, - "name": "UnauthorizedStateUpdateError", - "msg": "Unauthorized program state modification attempted." - }, - { - "code": 6020, - "name": "MissingOracleAccountsError", - "msg": "Not enough oracle accounts provided to closeRounds." - }, - { - "code": 6021, - "name": "OracleMismatchError", - "msg": "An unexpected oracle account was provided for the transaction." - }, - { - "code": 6022, - "name": "CrankMaxCapacityError", - "msg": "Attempted to push to a Crank that's at capacity" - }, - { - "code": 6023, - "name": "AggregatorLeaseInsufficientFunds", - "msg": "Aggregator update call attempted but attached lease has insufficient funds." - }, - { - "code": 6024, - "name": "IncorrectTokenAccountMint", - "msg": "The provided token account does not point to the Switchboard token mint." - }, - { - "code": 6025, - "name": "InvalidEscrowAccount", - "msg": "An invalid escrow account was provided." - }, - { - "code": 6026, - "name": "CrankEmptyError", - "msg": "Crank empty. Pop failed." - }, - { - "code": 6027, - "name": "PdaDeriveError", - "msg": "Failed to derive a PDA from the provided seed." - }, - { - "code": 6028, - "name": "AggregatorAccountNotFound", - "msg": "Aggregator account missing from provided account list." - }, - { - "code": 6029, - "name": "PermissionAccountNotFound", - "msg": "Permission account missing from provided account list." - }, - { - "code": 6030, - "name": "LeaseAccountDeriveFailure", - "msg": "Failed to derive a lease account." - }, - { - "code": 6031, - "name": "PermissionAccountDeriveFailure", - "msg": "Failed to derive a permission account." - }, - { - "code": 6032, - "name": "EscrowAccountNotFound", - "msg": "Escrow account missing from provided account list." - }, - { - "code": 6033, - "name": "LeaseAccountNotFound", - "msg": "Lease account missing from provided account list." - }, - { - "code": 6034, - "name": "DecimalConversionError", - "msg": "Decimal conversion method failed." - }, - { - "code": 6035, - "name": "PermissionDenied", - "msg": "Permission account is missing required flags for the given action." - }, - { - "code": 6036, - "name": "QueueAtCapacity", - "msg": "Oracle queue is at lease capacity." - }, - { - "code": 6037, - "name": "ExcessiveCrankRowsError", - "msg": "Data feed is already pushed on a crank." - }, - { - "code": 6038, - "name": "AggregatorLockedError", - "msg": "Aggregator is locked, no setting modifications or job additions allowed." - }, - { - "code": 6039, - "name": "AggregatorInvalidBatchSizeError", - "msg": "Aggregator invalid batch size." - }, - { - "code": 6040, - "name": "AggregatorJobChecksumMismatch", - "msg": "Oracle provided an incorrect aggregator job checksum." - }, - { - "code": 6041, - "name": "IntegerOverflowError", - "msg": "An integer overflow occurred." - }, - { - "code": 6042, - "name": "InvalidUpdatePeriodError", - "msg": "Minimum update period is 5 seconds." - }, - { - "code": 6043, - "name": "NoResultsError", - "msg": "Aggregator round evaluation attempted with no results." - }, - { - "code": 6044, - "name": "InvalidExpirationError", - "msg": "An expiration constraint was broken." - }, - { - "code": 6045, - "name": "InsufficientStakeError", - "msg": "An account provided insufficient stake for action." - }, - { - "code": 6046, - "name": "LeaseInactiveError", - "msg": "The provided lease account is not active." - }, - { - "code": 6047, - "name": "NoAggregatorJobsFound", - "msg": "No jobs are currently included in the aggregator." - }, - { - "code": 6048, - "name": "IntegerUnderflowError", - "msg": "An integer underflow occurred." - }, - { - "code": 6049, - "name": "OracleQueueMismatch", - "msg": "An invalid oracle queue account was provided." - }, - { - "code": 6050, - "name": "OracleWalletMismatchError", - "msg": "An unexpected oracle wallet account was provided for the transaction." - }, - { - "code": 6051, - "name": "InvalidBufferAccountError", - "msg": "An invalid buffer account was provided." - }, - { - "code": 6052, - "name": "InsufficientOracleQueueError", - "msg": "Insufficient oracle queue size." - }, - { - "code": 6053, - "name": "InvalidAuthorityError", - "msg": "Invalid authority account provided." - }, - { - "code": 6054, - "name": "InvalidTokenAccountMintError", - "msg": "A provided token wallet is associated with an incorrect mint." - }, - { - "code": 6055, - "name": "ExcessiveLeaseWithdrawlError", - "msg": "You must leave enough funds to perform at least 1 update in the lease." - }, - { - "code": 6056, - "name": "InvalideHistoryAccountError", - "msg": "Invalid history account provided." - }, - { - "code": 6057, - "name": "InvalidLeaseAccountEscrowError", - "msg": "Invalid lease account escrow." - }, - { - "code": 6058, - "name": "InvalidCrankAccountError", - "msg": "Invalid crank provided." - }, - { - "code": 6059, - "name": "CrankNoElementsReadyError", - "msg": "No elements ready to be popped." - }, - { - "code": 6060, - "name": "IndexOutOfBoundsError", - "msg": "Index out of bounds" - }, - { - "code": 6061, - "name": "VrfInvalidRequestError", - "msg": "Invalid vrf request params" - }, - { - "code": 6062, - "name": "VrfInvalidProofSubmissionError", - "msg": "Vrf proof failed to verify" - }, - { - "code": 6063, - "name": "VrfVerifyError", - "msg": "Error in verifying vrf proof." - }, - { - "code": 6064, - "name": "VrfCallbackError", - "msg": "Vrf callback function failed." - }, - { - "code": 6065, - "name": "VrfCallbackParamsError", - "msg": "Invalid vrf callback params provided." - }, - { - "code": 6066, - "name": "VrfCallbackAlreadyCalledError", - "msg": "Vrf callback has already been triggered." - }, - { - "code": 6067, - "name": "VrfInvalidPubkeyError", - "msg": "The provided pubkey is invalid to use in ecvrf proofs" - }, - { - "code": 6068, - "name": "VrfTooManyVerifyCallsError", - "msg": "Number of required verify calls exceeded" - }, - { - "code": 6069, - "name": "VrfRequestAlreadyLaunchedError", - "msg": "Vrf request is already pending" - }, - { - "code": 6070, - "name": "VrfInsufficientVerificationError", - "msg": "Insufficient amount of proofs collected for VRF callback" - }, - { - "code": 6071, - "name": "InvalidVrfProducerError", - "msg": "An incorrect oracle attempted to submit a proof" - }, - { - "code": 6072, - "name": "NoopError", - "msg": "Noop error" - } - ] -} diff --git a/tests/idls/sysvars.json b/tests/idls/sysvars.json deleted file mode 100644 index 11d7c4b..0000000 --- a/tests/idls/sysvars.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "version": "0.0.0", - "name": "sysvars", - "instructions": [ - { - "name": "sysvars", - "accounts": [ - { - "name": "clock", - "isMut": false, - "isSigner": false - }, - { - "name": "rent", - "isMut": false, - "isSigner": false - }, - { - "name": "stakeHistory", - "isMut": false, - "isSigner": false - } - ], - "args": [] - } - ] -} \ No newline at end of file diff --git a/tests/idls/tictactoe.json b/tests/idls/tictactoe.json deleted file mode 100644 index 507f863..0000000 --- a/tests/idls/tictactoe.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "version": "0.1.0", - "name": "tic_tac_toe", - "instructions": [ - { - "name": "setupGame", - "accounts": [ - { - "name": "game", - "isMut": true, - "isSigner": true - }, - { - "name": "playerOne", - "isMut": true, - "isSigner": true - }, - { - "name": "systemProgram", - "isMut": false, - "isSigner": false - } - ], - "args": [ - { - "name": "playerTwo", - "type": "publicKey" - } - ] - }, - { - "name": "play", - "accounts": [ - { - "name": "game", - "isMut": true, - "isSigner": false - }, - { - "name": "player", - "isMut": false, - "isSigner": true - } - ], - "args": [ - { - "name": "tile", - "type": { - "defined": "Tile" - } - } - ] - } - ], - "accounts": [ - { - "name": "Game", - "type": { - "kind": "struct", - "fields": [ - { - "name": "players", - "type": { - "array": ["publicKey", 2] - } - }, - { - "name": "turn", - "type": "u8" - }, - { - "name": "board", - "type": { - "array": [ - { - "array": [ - { - "option": { - "defined": "Sign" - } - }, - 3 - ] - }, - 3 - ] - } - }, - { - "name": "state", - "type": { - "defined": "GameState" - } - } - ] - } - } - ], - "types": [ - { - "name": "Tile", - "type": { - "kind": "struct", - "fields": [ - { - "name": "row", - "type": "u8" - }, - { - "name": "column", - "type": "u8" - } - ] - } - }, - { - "name": "GameState", - "type": { - "kind": "enum", - "variants": [ - { - "name": "Active" - }, - { - "name": "Tie" - }, - { - "name": "Won", - "fields": [ - { - "name": "winner", - "type": "publicKey" - } - ] - } - ] - } - }, - { - "name": "Sign", - "type": { - "kind": "enum", - "variants": [ - { - "name": "X" - }, - { - "name": "O" - } - ] - } - } - ], - "errors": [ - { - "code": 6000, - "name": "TileOutOfBounds" - }, - { - "code": 6001, - "name": "TileAlreadySet" - }, - { - "code": 6002, - "name": "GameAlreadyOver" - }, - { - "code": 6003, - "name": "NotPlayersTurn" - }, - { - "code": 6004, - "name": "GameAlreadyStarted" - } - ], - "metadata": { - "address": "4V6T2muqU1mHSg5XfK3SMgxZWQRSEUh72LzwGTLHGzsY" - } -} diff --git a/tests/idls/typescript.json b/tests/idls/typescript.json deleted file mode 100644 index 6aa06ab..0000000 --- a/tests/idls/typescript.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": "0.0.0", - "name": "typescript", - "instructions": [ - { - "name": "initialize", - "accounts": [], - "args": [] - } - ] -} \ No newline at end of file diff --git a/tests/test_idl.py b/tests/test_idl.py index bc35b70..f234b10 100644 --- a/tests/test_idl.py +++ b/tests/test_idl.py @@ -1,12 +1,6 @@ from anchorpy_idl import ( Idl, - IdlField, - IdlAccount, IdlTypeSimple, - IdlTypeDefinition, - IdlTypeDefinitionTyAlias, - IdlErrorCode, - IdlTypeDefinitionTyStruct, ) from pathlib import Path @@ -23,74 +17,3 @@ def test_idls() -> None: idl = Idl.from_json(raw) idls.append(idl) assert idls - - -def test_clientgen_example() -> None: - path = Path("tests/idls/clientgen_example_program.json") - raw = path.read_text() - idl = Idl.from_json(raw) - assert idl.version == "0.1.0" - assert idl.name == "example_program" - assert idl.docs is None - assert idl.constants == [] - second_ix = idl.instructions[1] - assert second_ix.name == "initializeWithValues" - assert second_ix.docs is None - assert second_ix.returns is None - first_arg = second_ix.args[0] - assert first_arg == IdlField(name="boolField", docs=None, ty=IdlTypeSimple.Bool) - first_acc_for_ix = second_ix.accounts[0] - assert first_acc_for_ix == IdlAccount( - name="state", - is_mut=True, - is_signer=True, - is_optional=None, - docs=None, - pda=None, - relations=[], - ) - fourth_ix = idl.instructions[3] - assert fourth_ix.name == "incrementStateWhenPresent" - first_acc_for_ix = fourth_ix.accounts[0] - assert first_acc_for_ix == IdlAccount( - name="firstState", - is_mut=True, - is_signer=False, - is_optional=True, - docs=None, - pda=None, - relations=[], - ) - first_acc = idl.accounts[0] - assert first_acc.name == "State" - assert first_acc.docs is None - first_acc_ty = first_acc.ty - assert first_acc_ty - assert isinstance(first_acc_ty, IdlTypeDefinitionTyStruct) - assert first_acc_ty.fields[0] == IdlField( - name="boolField", docs=None, ty=IdlTypeSimple.Bool - ) - first_type = idl.types[0] - assert first_type.name == "BarStruct" - assert first_type.docs is None - first_type_ty = first_type.ty - assert isinstance(first_type_ty, IdlTypeDefinitionTyStruct) - first_type_fields = first_type_ty.fields - assert first_type_fields is not None - first_field = first_type_fields[0] - assert first_field == IdlField(name="someField", docs=None, ty=IdlTypeSimple.Bool) - assert idl.events is None - assert idl.errors is not None - assert idl.errors[0] == IdlErrorCode( - code=6000, name="SomeError", msg="Example error." - ) - assert idl.metadata is None - - -def test_alias() -> None: - raw = ( - '{"name":"TickArryBitmap","type":{"kind":"alias","value":{"array":["u64",8]}}}' - ) - parsed = IdlTypeDefinition.from_json(raw) - ty = parsed.ty - assert isinstance(ty, IdlTypeDefinitionTyAlias)