Top-Level Statements
Pebble allows certain declarations at the file scope (outside of a contract).
These help define reusable data structures or bring in external functionality.
Import Statements
Experimental
At present, the feature is incomplete and should be considered experimental.
Pebble includes an import mechanism, but its syntax and semantics are still evolving.
It is expected to allow:
-
Reusing code across
.pebblefiles -
Bringing in common utility structs or functions
Struct Declaration
struct is used to define user-defined types (similar to TypeScript interfaces or Rust structs).
Structs are first-class citizens in Pebble, and can be passed around, stored in datums, and destructured.
Syntax
struct StructName {
field1: Type1,
field2: Type2,
...
}
Example
struct Order {
ownerPaymentCreds: Credential,
policy: bytes,
tokenName: bytes,
minReceiveAmount: int
}
You can use destructuring when working with struct values:
const { ownerPaymentCreds, minReceiveAmount } as Order = myDatum;