Vessel Registry

Address: [-------------]

░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░█████╗░██╗░░░░░░█████╗░░██████╗██╗░░██╗░█████╗░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░██╔══██╗██║░░░░░██╔══██╗██╔════╝██║░██╔╝██╔══██╗░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░███████║██║░░░░░███████║╚█████╗░█████═╝░███████║░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░██╔══██║██║░░░░░██╔══██║░╚═══██╗██╔═██╗░██╔══██║░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░██║░░██║███████╗██║░░██║██████╔╝██║░╚██╗██║░░██║░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░╚═╝░░╚═╝╚══════╝╚═╝░░╚═╝╚═════╝░╚═╝░░╚═╝╚═╝░░╚═╝░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░ ░░░░░
░░░░ █░█ █▀▀ █▀ █▀ █▀▀ █░░   █▀█ █▀▀ █▀▀ █ █▀ ▀█▀ █▀█ █▄█ ░░░░░
░░░░ ▀▄▀ ██▄ ▄█ ▄█ ██▄ █▄▄   █▀▄ ██▄ █▄█ █ ▄█ ░█░ █▀▄ ░█░ ░░░░░
░░░░ ░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

IDL

type VesselRegistry =
service {
deployToAlaska: () -> ();
getVessel: (VesselId) -> (opt Vessel) query;
getVesselAddressById: (VesselId) -> (principal) query;
getVesselIDByAddress: (principal) -> (VesselId) query;
getVesselItemApprove: (VesselId, nat) -> (principal);
getVesselItemOwner: (VesselId, nat) -> (principal);
getVesselItems: (VesselId) -> (vec reserved);
getVessels: () -> (vec record {
VesselId;
Vessel;
}) query;
indexVessel: (IndexVessel) -> (VesselId);
itemExists: (VesselId, nat) -> (bool);
vesselExists: (principal) -> (bool) query;
vesselItemExists: (VesselId, nat) -> (bool);
vesselItemTransfer: (VesselId, nat, principal, principal) -> (bool);
whoami: () -> (principal);
};
type VesselInfo =
record {
description: text;
logo: text;
meta_keywords: vec text;
name: text;
recommanded_protocols: vec principal;
symbol: text;
};
type VesselId = nat;
type Vessel =
record {
address: principal;
history_address: principal;
id: nat;
indexed_at: Time;
info: VesselInfo;
};
type Time = int;
type IndexVessel = record {address: text;};
service : (text) -> VesselRegistry

Getters

getVessels

Returns array of indexed Vessels.
@returns [(T.VesselId, T.Vessel)]
@parameters ()

getVessel

Returns Vessel that matches the ID or null if not found.
@returns ?T.Vessel
@parameters (id: T.VesselId)

getVesselAddressById

Returns Vessel's Address that matches the ID.
@returns Principal
@parameters (id: T.VesselId)

getVesselIDByAddress

Returns Vessel's ID that matches the Address/Principal.
@returns T.VesselId
@parameters (p: Principal)

getVesselItems

Returns items in a vessel.
@returns [Any]
@parameters (vessel_id: T.VesselId) @alpha

getVesselItemApprove

Returns the Principal if item is approve to any Principal.
@returns Principal
@parameters (vessel_id: T.VesselId, item_id: Nat)

vesselExists

Returns true if the Vessel exists with the given VesselID.
@returns Bool
@parameters (vessel_id: Principal)

itemExists

Returns true if the items exists with the given VesselID and ItemID.
@returns Bool
@parameters (vessel_id: T.VesselId, item_id: Nat)

vesselItemExists

SAME AS ABOVE FUNCTION.
@returns Bool
@parameters (vessel_id: T.VesselId, item_id: Nat)

Setters

indexVessel

Let you index your own Vessel.
@returns T.VesselId
@parameters (vessel: T.IndexVessel)

vesselItemTransfer

Returns array of indexed protocols.
@returns Bool
@parameters (vessel_id: T.VesselId, item_id: Nat, from: Principal, to: Principal) @alpha