Skip to main content
Version: 11.x

Class: CairoBool

Defined in: src/utils/cairoDataTypes/bool.ts:26

A Cairo core::bool : true or false, carried in one felt252 as 1 or 0.

A boolean is the natural input, but the two numbers a bool occupies on the wire are accepted too — 1, 0n, '1', '0x0' — because that is how a bool comes back from a node, as a felt rather than as a JS value. Any other number is refused : a bool is not a felt narrowed to a range, it is exactly two values.

Example​

// the same value, reached three ways
new CairoBool(true).toBoolean(); // true
new CairoBool(1).toBoolean(); // true
new CairoBool('0x1').toBoolean(); // true

Constructors​

Constructor​

new CairoBool(data): CairoBool

Defined in: src/utils/cairoDataTypes/bool.ts:57

Build from a boolean, or from the numbers 0 and 1.

Parameters​

data​

unknown

the value to carry : a boolean, 0 or 1

Returns​

CairoBool

Throws​

when the value is text, a decimal number, not a felt252 input, or a number other than 0 or 1

Example​

const result = new CairoBool(false).toApiRequest();
// result = ["0"]

Properties​

abiSelector​

static abiSelector: string = 'core::bool'

Defined in: src/utils/cairoDataTypes/bool.ts:45

The abi type this class serializes.

Example​

const result = CairoBool.abiSelector;
// result = "core::bool"

data​

data: boolean

Defined in: src/utils/cairoDataTypes/bool.ts:35

The value, always as a boolean.

Example​

const result = new CairoBool('0x1').data;
// result = true

Methods​

__processData()​

static __processData(data): boolean

Defined in: src/utils/cairoDataTypes/bool.ts:75

Turn an accepted input into its boolean.

Nothing here refuses a value : validate is what decides, and only a boolean, a 0 or a 1 reaches this point.

Parameters​

data​

unknown

the value to convert

Returns​

boolean

the boolean the input spells

Example​

const result = CairoBool.__processData('0x1');
// result = true

validate()​

static validate(data): void

Defined in: src/utils/cairoDataTypes/bool.ts:143

Throw unless the value can be carried by a bool.

Text is refused first, then a number with a decimal part. A number or a bigint is read as it is, so that a negative one reaches the last check. Anything else is read as a felt252 — which is what refuses a null, an object or an unsupported type. The value is finally checked to be one of the only two numbers a bool can hold.

Parameters​

data​

unknown

the value to check

Returns​

void

Throws​

when the value is text, a decimal number, not a felt252 input, or a number other than 0 or 1

Example​

CairoBool.validate(true); // passes
CairoBool.validate(2);
// throws Error("Only values 0 or 1 are possible in a core::bool, received 2")
CairoBool.validate(-1);
// throws Error("Only values 0 or 1 are possible in a core::bool, received -1")

is()​

static is(data): boolean

Defined in: src/utils/cairoDataTypes/bool.ts:175

Can this value be carried by a bool?

The non-throwing form of CairoBool.validate, so it answers false for every input that one refuses, whatever the reason.

Parameters​

data​

unknown

the value to test

Returns​

boolean

true when the value is a boolean, a 0 or a 1

Example​

const result = CairoBool.is(1);
// result = true
const result2 = CairoBool.is(2);
// result2 = false (a bool is exactly two values)

isAbiType()​

static isAbiType(abiType): boolean

Defined in: src/utils/cairoDataTypes/bool.ts:196

Is this abi type the one this class serializes?

Parameters​

abiType​

string

the abi type to test

Returns​

boolean

true for core::bool

Example​

const result = CairoBool.isAbiType('core::bool');
// result = true
const result2 = CairoBool.isAbiType('core::felt252');
// result2 = false

factoryFromApiResponse()​

static factoryFromApiResponse(responseIterator): CairoBool

Defined in: src/utils/cairoDataTypes/bool.ts:214

Read one bool off a contract response, advancing the iterator past it.

The felts a node returns are hex strings, and one is consumed per call, so successive calls read successive return values.

Parameters​

responseIterator​

Iterator<string>

the response felts, positioned on this bool

Returns​

CairoBool

the bool that was read

Example​

const response = ['0x1'];
const result = CairoBool.factoryFromApiResponse(response.values()).toBoolean();
// result = true

toApiRequest()​

toApiRequest(): string[]

Defined in: src/utils/cairoDataTypes/bool.ts:93

Serialize to the single felt a contract call carries.

Returns​

string[]

one decimal-string felt, "1" or "0", flagged as compiled

Example​

const result = new CairoBool(true).toApiRequest();
// result = ["1"]
const result2 = new CairoBool(false).toApiRequest();
// result2 = ["0"]

toBoolean()​

toBoolean(): boolean

Defined in: src/utils/cairoDataTypes/bool.ts:106

The value as a boolean.

Returns​

boolean

the boolean this bool holds

Example​

const result = new CairoBool(1).toBoolean();
// result = true

toHexString()​

toHexString(): string

Defined in: src/utils/cairoDataTypes/bool.ts:121

The value in hexadecimal, as the felt a bool occupies.

Returns​

string

"0x1" for true, "0x0" for false

Example​

const result = new CairoBool(true).toHexString();
// result = "0x1"
const result2 = new CairoBool(false).toHexString();
// result2 = "0x0"