buyer initiated flow
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
use anchor_lang::prelude::*;
|
||||
use crate::state::{ResolverEntry, ResolverType};
|
||||
use crate::state::{AcceptancePolicy, ResolverEntry, ResolverType};
|
||||
use crate::error::RegistryError;
|
||||
|
||||
#[derive(Accounts)]
|
||||
@@ -22,6 +22,7 @@ pub struct RegisterResolver<'info> {
|
||||
pub fn handler(
|
||||
ctx: Context<RegisterResolver>,
|
||||
resolver_type: ResolverType,
|
||||
acceptance_policy: AcceptancePolicy,
|
||||
name: String,
|
||||
description: String,
|
||||
fee_bps: u16,
|
||||
@@ -34,6 +35,7 @@ pub fn handler(
|
||||
let entry = &mut ctx.accounts.resolver_entry;
|
||||
entry.authority = ctx.accounts.authority.key();
|
||||
entry.resolver_type = resolver_type;
|
||||
entry.acceptance_policy = acceptance_policy;
|
||||
entry.name = name;
|
||||
entry.description = description;
|
||||
entry.fee_bps = fee_bps;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#![allow(clippy::diverging_sub_expression)]
|
||||
#![allow(clippy::too_many_arguments)]
|
||||
|
||||
pub mod error;
|
||||
pub mod instructions;
|
||||
@@ -23,6 +24,7 @@ pub mod descro_ext_resolvers {
|
||||
pub fn register_resolver(
|
||||
ctx: Context<RegisterResolver>,
|
||||
resolver_type: ResolverType,
|
||||
acceptance_policy: AcceptancePolicy,
|
||||
name: String,
|
||||
description: String,
|
||||
fee_bps: u16,
|
||||
@@ -32,6 +34,7 @@ pub mod descro_ext_resolvers {
|
||||
register::handler(
|
||||
ctx,
|
||||
resolver_type,
|
||||
acceptance_policy,
|
||||
name,
|
||||
description,
|
||||
fee_bps,
|
||||
|
||||
@@ -5,6 +5,7 @@ use anchor_lang::prelude::*;
|
||||
pub struct ResolverEntry {
|
||||
pub authority: Pubkey,
|
||||
pub resolver_type: ResolverType,
|
||||
pub acceptance_policy: AcceptancePolicy,
|
||||
#[max_len(64)]
|
||||
pub name: String,
|
||||
#[max_len(256)]
|
||||
@@ -28,6 +29,13 @@ pub enum ResolverType {
|
||||
Multisig,
|
||||
}
|
||||
|
||||
#[derive(AnchorSerialize, AnchorDeserialize, Clone, PartialEq, InitSpace, Debug)]
|
||||
pub enum AcceptancePolicy {
|
||||
Open,
|
||||
SignatureGated,
|
||||
ProgramGated,
|
||||
}
|
||||
|
||||
/// Passed to update_stats; mirrors the Escrow program's Winner enum.
|
||||
#[derive(AnchorSerialize, AnchorDeserialize, Clone, PartialEq)]
|
||||
pub enum Ruling {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#![allow(dead_code, unused_imports)]
|
||||
#![allow(dead_code, unused_imports, clippy::too_many_arguments)]
|
||||
|
||||
pub use anchor_lang::prelude::Pubkey;
|
||||
use {
|
||||
@@ -6,7 +6,7 @@ use {
|
||||
solana_program::{instruction::Instruction, system_program},
|
||||
AccountDeserialize, InstructionData, ToAccountMetas,
|
||||
},
|
||||
descro_ext_resolvers::{ResolverEntry, ResolverType},
|
||||
descro_ext_resolvers::{AcceptancePolicy, ResolverEntry, ResolverType},
|
||||
litesvm::LiteSVM,
|
||||
solana_keypair::Keypair,
|
||||
solana_message::{Message, VersionedMessage},
|
||||
@@ -51,6 +51,7 @@ pub fn try_send(svm: &mut LiteSVM, ix: Instruction, payer: &Keypair) -> bool {
|
||||
pub fn ix_register(
|
||||
authority: &Pubkey,
|
||||
resolver_type: ResolverType,
|
||||
acceptance_policy: AcceptancePolicy,
|
||||
name: &str,
|
||||
description: &str,
|
||||
fee_bps: u16,
|
||||
@@ -62,6 +63,7 @@ pub fn ix_register(
|
||||
descro_ext_resolvers::id(),
|
||||
&descro_ext_resolvers::instruction::RegisterResolver {
|
||||
resolver_type,
|
||||
acceptance_policy,
|
||||
name: name.to_string(),
|
||||
description: description.to_string(),
|
||||
fee_bps,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
mod common;
|
||||
use common::*;
|
||||
use descro_ext_resolvers::ResolverType;
|
||||
use descro_ext_resolvers::{AcceptancePolicy, ResolverType};
|
||||
use solana_keypair::Keypair;
|
||||
use solana_signer::Signer;
|
||||
|
||||
@@ -13,6 +13,7 @@ fn registers_entry_with_correct_state() {
|
||||
ix_register(
|
||||
&authority.pubkey(),
|
||||
ResolverType::CentralAuthority,
|
||||
AcceptancePolicy::Open,
|
||||
"Acme Resolvers",
|
||||
"Fast and fair dispute resolution",
|
||||
100, // 1%
|
||||
@@ -25,6 +26,7 @@ fn registers_entry_with_correct_state() {
|
||||
let entry = read_entry(&svm, &authority.pubkey());
|
||||
assert_eq!(entry.authority, authority.pubkey());
|
||||
assert_eq!(entry.resolver_type, ResolverType::CentralAuthority);
|
||||
assert_eq!(entry.acceptance_policy, AcceptancePolicy::Open);
|
||||
assert_eq!(entry.name, "Acme Resolvers");
|
||||
assert_eq!(entry.fee_bps, 100);
|
||||
assert_eq!(entry.total_resolved, 0);
|
||||
@@ -41,6 +43,7 @@ fn duplicate_register_fails() {
|
||||
ix_register(
|
||||
&authority.pubkey(),
|
||||
ResolverType::CentralAuthority,
|
||||
AcceptancePolicy::Open,
|
||||
"Acme",
|
||||
"",
|
||||
0,
|
||||
@@ -54,6 +57,7 @@ fn duplicate_register_fails() {
|
||||
ix_register(
|
||||
&authority.pubkey(),
|
||||
ResolverType::CentralAuthority,
|
||||
AcceptancePolicy::Open,
|
||||
"Acme Again",
|
||||
"",
|
||||
0,
|
||||
@@ -73,6 +77,7 @@ fn register_empty_name_fails() {
|
||||
ix_register(
|
||||
&authority.pubkey(),
|
||||
ResolverType::CentralAuthority,
|
||||
AcceptancePolicy::Open,
|
||||
"",
|
||||
"",
|
||||
0,
|
||||
@@ -92,6 +97,7 @@ fn register_invalid_fee_bps_fails() {
|
||||
ix_register(
|
||||
&authority.pubkey(),
|
||||
ResolverType::CentralAuthority,
|
||||
AcceptancePolicy::Open,
|
||||
"Acme",
|
||||
"",
|
||||
10_001, // > 100%
|
||||
@@ -110,12 +116,12 @@ fn different_authorities_have_separate_entries() {
|
||||
|
||||
send(
|
||||
&mut svm,
|
||||
ix_register(&auth1.pubkey(), ResolverType::CentralAuthority, "Auth1", "", 0, auth1.pubkey(), ""),
|
||||
ix_register(&auth1.pubkey(), ResolverType::CentralAuthority, AcceptancePolicy::Open, "Auth1", "", 0, auth1.pubkey(), ""),
|
||||
&auth1,
|
||||
);
|
||||
send(
|
||||
&mut svm,
|
||||
ix_register(&auth2.pubkey(), ResolverType::JuryDAO, "Auth2", "", 50, auth2.pubkey(), ""),
|
||||
ix_register(&auth2.pubkey(), ResolverType::JuryDAO, AcceptancePolicy::Open, "Auth2", "", 50, auth2.pubkey(), ""),
|
||||
&auth2,
|
||||
);
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
mod common;
|
||||
use common::*;
|
||||
use descro_ext_resolvers::ResolverType;
|
||||
use descro_ext_resolvers::{AcceptancePolicy, ResolverType};
|
||||
use solana_keypair::Keypair;
|
||||
use solana_signer::Signer;
|
||||
|
||||
@@ -10,6 +10,7 @@ fn register_default(svm: &mut litesvm::LiteSVM, authority: &Keypair) {
|
||||
ix_register(
|
||||
&authority.pubkey(),
|
||||
ResolverType::CentralAuthority,
|
||||
AcceptancePolicy::Open,
|
||||
"Original Name",
|
||||
"Original description",
|
||||
100,
|
||||
|
||||
Reference in New Issue
Block a user