Adds a role member to a project.
caller: owner address.project_id: project identifier.role: one of "super_admin", "admin", "ngo", "vendor", "beneficiary".new_member: address to add.ContractError::InvalidRoleContractError::RoleAlreadyExistsContractError::RoleLimitExceededContractError::InvalidInputContractError::UnauthorizedContractError::ReentrancyDetectedfn add_role(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
project_id: soroban_sdk::String,
role: soroban_sdk::String,
new_member: soroban_sdk::Address,
) -> Result<(), ContractError>
Gets roles for a project.
project_id: project identifier.fn get_roles(env: soroban_sdk::Env, project_id: soroban_sdk::String) -> Roles
Initializes the contract owner.
owner: address to set as the owner.ContractError::UnauthorizedContractError::AlreadyInitializedfn initialize(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
) -> Result<(), ContractError>
Removes a role member from a project.
caller: owner address.project_id: project identifier.role: role name.member_to_remove: address to remove.ContractError::InvalidRoleContractError::UnauthorizedContractError::ReentrancyDetectedfn remove_role(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
project_id: soroban_sdk::String,
role: soroban_sdk::String,
member_to_remove: soroban_sdk::Address,
) -> Result<(), ContractError>
Pauses the contract for a short window.
caller: owner or contract admin.ContractError::Unauthorizedfn pause_contract(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
) -> Result<(), ContractError>
Unpauses the contract immediately.
caller: owner or contract admin.ContractError::Unauthorizedfn unpause_contract(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
) -> Result<(), ContractError>
Adds a global contract admin.
caller: owner or contract admin.new_admin: address to grant admin rights.ContractError::RoleAlreadyExistsContractError::RoleLimitExceededContractError::UnauthorizedContractError::InvalidInputfn add_contract_admin(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
new_admin: soroban_sdk::Address,
) -> Result<(), ContractError>
Gets a cash allowance.
project_id: project identifier.allowee: address.currency: currency code.ContractError::AllowanceNotFoundContractError::InvalidInputfn get_cash_allowance(
env: soroban_sdk::Env,
project_id: soroban_sdk::String,
allowee: soroban_sdk::Address,
currency: soroban_sdk::String,
) -> Result
Gets an item allowance.
project_id: project identifier.allowee: address.item_id: item identifier.ContractError::AllowanceNotFoundContractError::InvalidInputfn get_item_allowance(
env: soroban_sdk::Env,
project_id: soroban_sdk::String,
allowee: soroban_sdk::Address,
item_id: soroban_sdk::String,
) -> Result
Redeems cash claims credited to a vendor.
vendor: vendor address.project_id: optional project id (defaults to "default_project").currency: currency code.amount: amount to redeem.ContractError::AllowanceNotFoundContractError::InsufficientFundsContractError::ContractPausedContractError::InvalidInputContractError::UnauthorizedContractError::ReentrancyDetectedfn redeem_cash_claims(
env: soroban_sdk::Env,
vendor: soroban_sdk::Address,
project_id: Option,
currency: soroban_sdk::String,
amount: u64,
) -> Result<(), ContractError>
Redeems item claims credited to a vendor.
vendor: vendor address.project_id: optional project id (defaults to "default_project").item_id: item identifier.quantity: quantity to redeem.ContractError::AllowanceNotFoundContractError::InsufficientFundsContractError::ContractPausedContractError::InvalidInputContractError::UnauthorizedContractError::ReentrancyDetectedfn redeem_item_claims(
env: soroban_sdk::Env,
vendor: soroban_sdk::Address,
project_id: Option,
item_id: soroban_sdk::String,
quantity: u64,
) -> Result<(), ContractError>
Claims a cash allowance, optionally crediting a vendor.
caller: beneficiary address.project_id: project identifier.currency: currency code.amount: positive amount.vendor: optional vendor to credit.ContractError::AllowanceNotFoundContractError::ExpiredAllowanceContractError::InsufficientFundsContractError::InvalidInputContractError::UnauthorizedContractError::ReentrancyDetectedfn claim_cash_allowance(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
project_id: soroban_sdk::String,
currency: soroban_sdk::String,
amount: u64,
vendor: Option,
) -> Result<(), ContractError>
Claims an item allowance and credits a vendor.
caller: beneficiary address.vendor: vendor address.project_id: project identifier.item_id: item identifier.quantity: positive quantity.ContractError::AllowanceNotFoundContractError::ExpiredAllowanceContractError::InsufficientFundsContractError::InvalidInputContractError::UnauthorizedContractError::ReentrancyDetectedfn claim_item_allowance(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
vendor: soroban_sdk::Address,
project_id: soroban_sdk::String,
item_id: soroban_sdk::String,
quantity: u64,
) -> Result<(), ContractError>
Removes a global contract admin.
caller: owner or contract admin.admin: admin address to remove.ContractError::Unauthorizedfn remove_contract_admin(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
admin: soroban_sdk::Address,
) -> Result<(), ContractError>
Allocates a cash allowance.
caller: ngo address.project_id: project identifier.allowee: beneficiary/vendor.amount: positive amount.currency: currency code.expiry: future timestamp or none.ContractError::ContractPausedContractError::InvalidInputContractError::UnauthorizedContractError::ReentrancyDetectedfn allocate_cash_allowance(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
project_id: soroban_sdk::String,
allowee: soroban_sdk::Address,
amount: u64,
currency: soroban_sdk::String,
expiry: Option,
) -> Result<(), ContractError>
Allocates an item allowance.
caller: ngo address.project_id: project identifier.allowee: beneficiary/vendor.item_id: item identifier.quantity: positive quantity.expiry: future timestamp or none.ContractError::ContractPausedContractError::InvalidInputContractError::UnauthorizedContractError::ReentrancyDetectedfn allocate_item_allowance(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
project_id: soroban_sdk::String,
allowee: soroban_sdk::Address,
item_id: soroban_sdk::String,
quantity: u64,
expiry: Option,
) -> Result<(), ContractError>
Lists all cash allowances for a project.
project_id: project identifier.fn get_all_cash_allowances(
env: soroban_sdk::Env,
project_id: soroban_sdk::String,
) -> soroban_sdk::Map<(soroban_sdk::Address, soroban_sdk::String), CashAllowance>
Lists all item allowances for a project.
project_id: project identifier.fn get_all_item_allowances(
env: soroban_sdk::Env,
project_id: soroban_sdk::String,
) -> soroban_sdk::Map<(soroban_sdk::Address, soroban_sdk::String), ItemAllowance>
Transfers a cash allowance to another address.
caller: beneficiary address.project_id: project identifier.new_allowee: recipient address.currency: currency code.amount: positive amount.ContractError::AllowanceNotFoundContractError::InsufficientFundsContractError::InvalidInputContractError::UnauthorizedContractError::ReentrancyDetectedContractError::ExpiredAllowancefn transfer_cash_allowance(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
project_id: soroban_sdk::String,
new_allowee: soroban_sdk::Address,
currency: soroban_sdk::String,
amount: u64,
) -> Result<(), ContractError>
Transfers an item allowance to another address.
caller: beneficiary address.project_id: project identifier.new_allowee: recipient address.item_id: item identifier.quantity: positive quantity.ContractError::AllowanceNotFoundContractError::InsufficientFundsContractError::InvalidInputContractError::UnauthorizedContractError::ReentrancyDetectedContractError::ExpiredAllowancefn transfer_item_allowance(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
project_id: soroban_sdk::String,
new_allowee: soroban_sdk::Address,
item_id: soroban_sdk::String,
quantity: u64,
) -> Result<(), ContractError>
Sums total cash allowance across projects for a beneficiary.
beneficiary: address.project_ids: list of project identifiers.ContractError::InvalidInput if overflow occurs or validation failsfn get_total_cash_allowance(
env: soroban_sdk::Env,
beneficiary: soroban_sdk::Address,
project_ids: soroban_sdk::Vec,
) -> Result
Sums total item allowance across projects for a beneficiary.
beneficiary: address.project_ids: list of project identifiers.ContractError::InvalidInput if overflow occurs or validation failsfn get_total_item_allowance(
env: soroban_sdk::Env,
beneficiary: soroban_sdk::Address,
project_ids: soroban_sdk::Vec,
) -> Result
Allocates multiple cash allowances.
caller: ngo address.project_id: project identifier.allowances: tuples of (allowee, currency, amount, expiry).ContractError::ContractPausedContractError::InvalidInputContractError::UnauthorizedContractError::ReentrancyDetectedfn allocate_cash_allowances_batch(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
project_id: soroban_sdk::String,
allowances: soroban_sdk::Vec<
(soroban_sdk::Address, soroban_sdk::String, u64, Option),
>,
) -> Result<(), ContractError>
Allocates multiple item allowances.
caller: ngo address.project_id: project identifier.allowances: tuples of (allowee, item_id, quantity, expiry).ContractError::ContractPausedContractError::InvalidInputContractError::UnauthorizedContractError::ReentrancyDetectedfn allocate_item_allowances_batch(
env: soroban_sdk::Env,
caller: soroban_sdk::Address,
project_id: soroban_sdk::String,
allowances: soroban_sdk::Vec<
(soroban_sdk::Address, soroban_sdk::String, u64, Option),
>,
) -> Result<(), ContractError>