use borsh::{BorshSerialize, BorshDeserialize};
use serde::{Serialize, Deserialize};
#[derive(Clone, Debug, BorshDeserialize, BorshSerialize, Eq, PartialEq, Serialize, Deserialize)]
pub struct OnChainProcessor {
pub name: String,
pub event_source_type: EventSourceType,
pub filter: String,
pub write_enabled: bool,
pub module_cid: [u8; 32],
pub owner_pubkey: [u8; 32],
pub write_pubkey: Option<[u8; 32]>,
}
#[derive(Clone, Debug, BorshDeserialize, BorshSerialize, Eq, PartialEq, Serialize, Deserialize)]
pub struct AddOnChainProcessor {
pub processor: OnChainProcessor,
pub bump_seed: u8
}
#[derive(Clone, Debug, BorshDeserialize, BorshSerialize, Eq, PartialEq, Serialize, Deserialize)]
pub struct AddFilteredEvent {
pub filtered_event: FilteredEvent,
pub bump_seed: u8,
}
#[derive(Clone, Debug, BorshDeserialize, BorshSerialize, Eq, PartialEq, Serialize, Deserialize)]
pub struct DeleteOnchainProcessor {
pub owner_pubkey: String,
pub name: String,
}
#[derive(Clone, Debug, BorshDeserialize, BorshSerialize, Eq, PartialEq, Serialize, Deserialize)]
pub struct FilteredEvent {
pub event_hash: String,
pub processor_pda: String,
}
#[derive(Clone, Debug, BorshDeserialize, BorshSerialize, Eq, PartialEq, Serialize, Deserialize)]
pub struct AddInvocationClaim {
pub invocation_claim: InvocationClaim,
pub bump_seed: u8,
}
#[derive(Clone, Debug, BorshDeserialize, BorshSerialize, Eq, PartialEq, Serialize, Deserialize)]
pub struct InvocationClaim {
pub filtered_event_pda: String,
pub processor_pda: String,
}
#[derive(Clone, Debug, BorshDeserialize, BorshSerialize, Eq, PartialEq, Serialize, Deserialize)]
pub struct InvocationAssignment {
pub filtered_event_pda: String,
pub assignee_pda: String,
pub processor_pda: String,
pub result_hash: String,
}
#[derive(Clone, Debug, BorshDeserialize, BorshSerialize, Eq, PartialEq, Serialize, Deserialize)]
pub enum EventSourceType {
Program,
Account,
}
#[derive(Clone, Debug, BorshDeserialize, BorshSerialize, Eq, PartialEq, Serialize, Deserialize)]
pub struct IndexUserPDAResource {
pub seed: String,
}
#[derive(Clone, Debug, BorshDeserialize, BorshSerialize, Eq, PartialEq, Serialize, Deserialize)]
pub struct SignedOnchainBytes {
pub inner: Vec<u8>,
pub owner_pubkey: [u8; 32]
}
#[derive(Clone, Debug, BorshDeserialize, BorshSerialize, Eq, PartialEq, Serialize, Deserialize)]
pub struct SignedOnchainBytesUpdate {
pub bytes: SignedOnchainBytes,
pub seed: String,
pub bump_seed: Option<u8>,
}
#[derive(Clone, Debug, BorshDeserialize, BorshSerialize, Eq, PartialEq, Serialize, Deserialize)]
pub struct RouteData {
pub route: String,
pub module_cid: [u8; 32],
pub encodings: Vec<Encoding>,
pub arguments: Vec<(Vec<u8>, ArgumentType)>,
pub cache_config: (bool, Option<u64>),
pub bump_seed: Option<u8>, }
#[derive(Clone, Debug, BorshDeserialize, BorshSerialize, Eq, PartialEq, Serialize, Deserialize)]
pub struct RouteUpdate {
pub route: String,
pub bump_seed: Option<u8>,
pub operation: u8,
}
#[derive(Clone, Debug, BorshDeserialize, BorshSerialize, Eq, PartialEq, Serialize, Deserialize)]
pub struct UserPDAResources {
pub seeds: Vec<String>,
}
#[derive(Clone, Debug, BorshDeserialize, BorshSerialize, Eq, PartialEq, Serialize, Deserialize)]
pub struct RouteDeploy {
pub source: Vec<u8>,
pub metadata: RouteData
}
#[derive(Clone, Debug, BorshDeserialize, BorshSerialize, Eq, PartialEq, Serialize, Deserialize)]
pub struct ProcessorDeploy {
pub source: Vec<u8>,
pub metadata: OnChainProcessor,
}
#[derive(Clone, Debug, BorshDeserialize, BorshSerialize, Eq, PartialEq, Serialize, Deserialize)]
pub enum Encoding {
ApplicationJson,
ApplicationOctetStream,
TextHtml,
TextPlain,
}
#[derive(Clone, Debug, BorshDeserialize, BorshSerialize, Eq, PartialEq, Serialize, Deserialize)]
pub enum ArgumentType {
U8,
U16,
U32,
U64,
I8,
I16,
I32,
I64,
F32,
F64,
Bool,
Str,
Array(CollectionType),
Map(CollectionType, CollectionType)
}
#[derive(Clone, Debug, BorshDeserialize, BorshSerialize, Eq, PartialEq, Serialize, Deserialize)]
pub enum CollectionType {
U8,
U16,
U32,
U64,
I8,
I16,
I32,
I64,
F32,
F64,
Bool,
Str,
Array(NestedCollectionType),
Map(NestedCollectionType, NestedCollectionType)
}
#[derive(Clone, Debug, BorshDeserialize, BorshSerialize, Eq, PartialEq, Serialize, Deserialize)]
pub enum NestedCollectionType {
U8,
U16,
U32,
U64,
I8,
I16,
I32,
I64,
F32,
F64,
Bool,
Str,
}