> ## Documentation Index
> Fetch the complete documentation index at: https://voltaire.tevm.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# primitives/Bytecode

> Auto-generated API documentation

[**@tevm/voltaire**](../index.mdx)

***

[@tevm/voltaire](../index.mdx) / primitives/Bytecode

# primitives/Bytecode

## Interfaces

### ABIEvent

Defined in: [src/primitives/Bytecode/BytecodeType.ts:97](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L97)

ABI event extracted from bytecode

#### Properties

##### hash

> **hash**: `string`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:99](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L99)

##### type

> **type**: `"event"`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:98](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L98)

***

### ABIFunction

Defined in: [src/primitives/Bytecode/BytecodeType.ts:85](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L85)

ABI function extracted from bytecode

#### Properties

##### inputs?

> `optional` **inputs**: \[\{ `name`: `""`; `type`: `"bytes"`; }]

Defined in: [src/primitives/Bytecode/BytecodeType.ts:90](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L90)

##### outputs?

> `optional` **outputs**: \[\{ `name`: `""`; `type`: `"bytes"`; }]

Defined in: [src/primitives/Bytecode/BytecodeType.ts:91](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L91)

##### payable

> **payable**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:89](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L89)

##### selector

> **selector**: `string`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:87](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L87)

##### stateMutability

> **stateMutability**: `"pure"` | `"view"` | `"nonpayable"` | `"payable"`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:88](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L88)

##### type

> **type**: `"function"`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:86](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L86)

***

### BasicBlock

Defined in: [src/primitives/Bytecode/BytecodeType.ts:134](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L134)

Basic block metadata

#### Properties

##### endPc

> **endPc**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:140](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L140)

Ending program counter (exclusive)

##### gasEstimate

> **gasEstimate**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:144](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L144)

Total static gas cost

##### index

> **index**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:136](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L136)

Block index (0-based)

##### instructionCount

> **instructionCount**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:142](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L142)

Number of instructions in block

##### isReachable

> **isReachable**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:156](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L156)

Whether block is reachable from entry

##### maxStack

> **maxStack**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:148](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L148)

Maximum stack depth reached

##### minStack

> **minStack**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:146](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L146)

Minimum stack items required to enter

##### predecessors

> **predecessors**: `number`\[]

Defined in: [src/primitives/Bytecode/BytecodeType.ts:160](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L160)

Predecessor block indices

##### stackEffect

> **stackEffect**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:150](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L150)

Net stack effect (exit - entry)

##### startPc

> **startPc**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:138](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L138)

Starting program counter

##### successors

> **successors**: `number`\[]

Defined in: [src/primitives/Bytecode/BytecodeType.ts:158](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L158)

Successor block indices

##### target?

> `optional` **target**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:154](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L154)

Jump target PC (if terminator is JUMP/JUMPI)

##### terminator

> **terminator**: [`TerminatorType`](#terminatortype)

Defined in: [src/primitives/Bytecode/BytecodeType.ts:152](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L152)

Block terminator type

***

### BlockAnalysisOptions

Defined in: [src/primitives/Bytecode/BytecodeType.ts:166](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L166)

Options for analyzeBlocks()

#### Properties

##### buildCFG?

> `optional` **buildCFG**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:170](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L170)

Build control flow graph (predecessors/successors)

##### computeReachability?

> `optional` **computeReachability**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:168](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L168)

Compute reachability from entry point

##### includeUnreachable?

> `optional` **includeUnreachable**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:172](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L172)

Include unreachable blocks in results

##### validate?

> `optional` **validate**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:174](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L174)

Validate bytecode structure

***

### BlockGas

Defined in: [src/primitives/Bytecode/BytecodeType.ts:210](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L210)

Block gas information

#### Properties

##### blockIndex

> **blockIndex**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:211](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L211)

##### endPc

> **endPc**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:213](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L213)

##### gas

> **gas**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:214](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L214)

##### percentage

> **percentage**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:215](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L215)

##### startPc

> **startPc**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:212](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L212)

***

### BlockStackInfo

Defined in: [src/primitives/Bytecode/BytecodeType.ts:286](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L286)

Block stack information

#### Properties

##### blockIndex

> **blockIndex**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:287](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L287)

##### endPc

> **endPc**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:289](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L289)

##### exitDepth

> **exitDepth**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:292](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L292)

##### maxReached

> **maxReached**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:291](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L291)

##### minRequired

> **minRequired**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:290](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L290)

##### stackEffect

> **stackEffect**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:293](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L293)

##### startPc

> **startPc**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:288](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L288)

***

### ExecutionPath

Defined in: [src/primitives/Bytecode/BytecodeType.ts:231](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L231)

Execution path information

#### Properties

##### blocks

> **blocks**: `number`\[]

Defined in: [src/primitives/Bytecode/BytecodeType.ts:232](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L232)

##### gas

> **gas**: `bigint`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:233](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L233)

##### instructions

> **instructions**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:234](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L234)

***

### ExpensiveInstruction

Defined in: [src/primitives/Bytecode/BytecodeType.ts:221](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L221)

Expensive instruction information

#### Properties

##### category

> **category**: `string`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:225](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L225)

##### gas

> **gas**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:224](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L224)

##### opcode

> **opcode**: `string`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:223](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L223)

##### pc

> **pc**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:222](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L222)

***

### GasAnalysis

Defined in: [src/primitives/Bytecode/BytecodeType.ts:180](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L180)

Gas analysis result

#### Properties

##### byBlock

> **byBlock**: [`BlockGas`](#blockgas)\[]

Defined in: [src/primitives/Bytecode/BytecodeType.ts:186](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L186)

Gas breakdown by block

##### byInstruction

> **byInstruction**: [`InstructionGas`](#instructiongas)\[]

Defined in: [src/primitives/Bytecode/BytecodeType.ts:184](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L184)

Gas breakdown by instruction

##### expensive

> **expensive**: [`ExpensiveInstruction`](#expensiveinstruction)\[]

Defined in: [src/primitives/Bytecode/BytecodeType.ts:188](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L188)

Expensive instructions (>1000 gas)

##### paths?

> `optional` **paths**: `object`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:190](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L190)

Path analysis (if enabled)

###### average

> **average**: `bigint`

###### cheapest

> **cheapest**: [`ExecutionPath`](#executionpath)

###### mostExpensive

> **mostExpensive**: [`ExecutionPath`](#executionpath)

##### total

> **total**: `bigint`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:182](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L182)

Total static gas cost

***

### GasAnalysisOptions

Defined in: [src/primitives/Bytecode/BytecodeType.ts:240](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L240)

Options for analyzeGas()

#### Properties

##### analyzePaths?

> `optional` **analyzePaths**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:242](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L242)

Analyze different execution paths

##### context?

> `optional` **context**: `object`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:248](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L248)

Context for warm/cold gas calculations

###### warmAddresses?

> `optional` **warmAddresses**: `Set`\<`string`>

###### warmSlots?

> `optional` **warmSlots**: `Set`\<`bigint`>

##### includeDynamic?

> `optional` **includeDynamic**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:246](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L246)

Include dynamic gas costs

##### maxPaths?

> `optional` **maxPaths**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:244](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L244)

Maximum paths to explore

***

### InstructionGas

Defined in: [src/primitives/Bytecode/BytecodeType.ts:200](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L200)

Instruction gas information

#### Properties

##### cumulative

> **cumulative**: `bigint`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:204](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L204)

##### gas

> **gas**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:203](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L203)

##### opcode

> **opcode**: `string`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:202](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L202)

##### pc

> **pc**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:201](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L201)

***

### PrettyPrintOptions

Defined in: [src/primitives/Bytecode/BytecodeType.ts:315](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L315)

Options for prettyPrint()

#### Properties

##### colors?

> `optional` **colors**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:317](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L317)

Enable ANSI color codes

##### compact?

> `optional` **compact**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:335](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L335)

Compact mode (less whitespace)

##### lineNumbers?

> `optional` **lineNumbers**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:329](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L329)

Show line numbers

##### maxWidth?

> `optional` **maxWidth**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:333](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L333)

Maximum output width

##### showBlocks?

> `optional` **showBlocks**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:323](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L323)

Show block boundaries

##### showFusions?

> `optional` **showFusions**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:327](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L327)

Show fusion patterns

##### showGas?

> `optional` **showGas**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:319](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L319)

Show gas costs

##### showJumpArrows?

> `optional` **showJumpArrows**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:325](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L325)

Show jump arrows

##### showStack?

> `optional` **showStack**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:321](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L321)

Show stack effects

##### showSummary?

> `optional` **showSummary**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:331](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L331)

Show summary footer

***

### ScanOptions

Defined in: [src/primitives/Bytecode/BytecodeType.ts:105](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L105)

Options for scan() iterator

#### Properties

##### detectFusions?

> `optional` **detectFusions**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:111](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L111)

Detect and yield fusion patterns

##### endPc?

> `optional` **endPc**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:115](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L115)

Stop iteration at specific PC

##### startPc?

> `optional` **startPc**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:113](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L113)

Start iteration at specific PC

##### withGas?

> `optional` **withGas**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:107](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L107)

Include gas cost for each instruction

##### withStack?

> `optional` **withStack**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:109](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L109)

Include stack effect metadata

***

### StackAnalysis

Defined in: [src/primitives/Bytecode/BytecodeType.ts:257](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L257)

Stack analysis result

#### Properties

##### byBlock

> **byBlock**: [`BlockStackInfo`](#blockstackinfo)\[]

Defined in: [src/primitives/Bytecode/BytecodeType.ts:265](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L265)

Stack info by block

##### issues

> **issues**: [`StackIssue`](#stackissue)\[]

Defined in: [src/primitives/Bytecode/BytecodeType.ts:263](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L263)

Stack issues found

##### maxDepth

> **maxDepth**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:261](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L261)

Maximum stack depth reached

##### pathsAnalyzed

> **pathsAnalyzed**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:267](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L267)

Number of paths analyzed

##### valid

> **valid**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:259](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L259)

Whether stack constraints are satisfied

***

### StackAnalysisOptions

Defined in: [src/primitives/Bytecode/BytecodeType.ts:299](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L299)

Options for analyzeStack()

#### Properties

##### analyzePaths?

> `optional` **analyzePaths**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:305](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L305)

Analyze different execution paths

##### failFast?

> `optional` **failFast**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:309](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L309)

Stop at first error

##### initialDepth?

> `optional` **initialDepth**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:301](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L301)

Initial stack depth

##### maxDepth?

> `optional` **maxDepth**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:303](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L303)

Maximum allowed stack depth

##### maxPaths?

> `optional` **maxPaths**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:307](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L307)

Maximum paths to explore

***

### StackIssue

Defined in: [src/primitives/Bytecode/BytecodeType.ts:273](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L273)

Stack issue information

#### Properties

##### actual

> **actual**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:278](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L278)

##### blockIndex

> **blockIndex**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:276](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L276)

##### expected

> **expected**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:277](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L277)

##### message

> **message**: `string`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:279](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L279)

##### opcode?

> `optional` **opcode**: `string`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:280](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L280)

##### pc

> **pc**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:275](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L275)

##### type

> **type**: `"underflow"` | `"overflow"` | `"unreachable"` | `"inconsistent"`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:274](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L274)

## Type Aliases

### ABIItem

> **ABIItem** = [`ABIFunction`](#abifunction) | [`ABIEvent`](#abievent)

Defined in: [src/primitives/Bytecode/BytecodeType.ts:80](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L80)

ABI item (function or event)

***

### Analysis

> **Analysis** = `object`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:42](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L42)

Bytecode analysis result

#### Properties

##### instructions

> `readonly` **instructions**: readonly [`Instruction`](#instruction)\[]

Defined in: [src/primitives/Bytecode/BytecodeType.ts:46](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L46)

All instructions

##### jumpDestinations

> `readonly` **jumpDestinations**: `ReadonlySet`\<`number`>

Defined in: [src/primitives/Bytecode/BytecodeType.ts:44](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L44)

Valid JUMPDEST positions

##### valid

> `readonly` **valid**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:48](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L48)

Whether bytecode is valid

***

### BrandedAbi

> **BrandedAbi** = `ReadonlyArray`\<[`ABIItem`](#abiitem)> & `object`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:75](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L75)

Branded ABI type

#### Type Declaration

##### \[brand]

> `readonly` **\[brand]**: `"Abi"`

***

### BrandedBytecodeHex

> **BrandedBytecodeHex** = `string` & `object`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:70](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L70)

Branded hex string for bytecode

#### Type Declaration

##### \[brand]

> `readonly` **\[brand]**: `"BytecodeHex"`

***

### Instruction

> **Instruction** = `object`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:30](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L30)

Bytecode instruction

#### Properties

##### opcode

> `readonly` **opcode**: [`Opcode`](#opcode-4)

Defined in: [src/primitives/Bytecode/BytecodeType.ts:32](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L32)

Opcode value

##### position

> `readonly` **position**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:34](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L34)

Position in bytecode

##### pushData?

> `readonly` `optional` **pushData**: `Uint8Array`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:36](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L36)

Push data if PUSH instruction

***

### JumpDest

> **JumpDest** = `object`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:20](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L20)

Jump destination information

#### Properties

##### position

> `readonly` **position**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:22](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L22)

Position in bytecode

##### valid

> `readonly` **valid**: `boolean`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:24](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L24)

Whether this is a valid jump destination

***

### Opcode

> **Opcode** = `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:15](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L15)

EVM opcode (single byte instruction)

***

### OpcodeMetadata

> **OpcodeMetadata** = `object`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:54](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L54)

Opcode metadata

#### Properties

##### gas

> `readonly` **gas**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:60](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L60)

Gas cost (base)

##### inputs

> `readonly` **inputs**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:62](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L62)

Stack items removed

##### name

> `readonly` **name**: `string`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:58](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L58)

Mnemonic name

##### opcode

> `readonly` **opcode**: [`Opcode`](#opcode-4)

Defined in: [src/primitives/Bytecode/BytecodeType.ts:56](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L56)

Opcode value

##### outputs

> `readonly` **outputs**: `number`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:64](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L64)

Stack items added

***

### TerminatorType

> **TerminatorType** = `"stop"` | `"return"` | `"revert"` | `"invalid"` | `"selfdestruct"` | `"jump"` | `"jumpi"` | `"fallthrough"`

Defined in: [src/primitives/Bytecode/BytecodeType.ts:121](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/BytecodeType.ts#L121)

Block terminator type

## Variables

### analyze()

> `const` **analyze**: (`code`) => [`Analysis`](#analysis) = `_analyze`

Defined in: [src/primitives/Bytecode/index.ts:56](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L56)

#### Parameters

##### code

`BrandedBytecode`

#### Returns

[`Analysis`](#analysis)

***

### analyzeBlocks()

> `const` **analyzeBlocks**: (`bytecode`, `options?`) => [`BasicBlock`](#basicblock)\[] = `_analyzeBlocks`

Defined in: [src/primitives/Bytecode/index.ts:57](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L57)

#### Parameters

##### bytecode

`BrandedBytecode`

##### options?

[`BlockAnalysisOptions`](#blockanalysisoptions)

#### Returns

[`BasicBlock`](#basicblock)\[]

***

### analyzeGas()

> `const` **analyzeGas**: (`bytecode`, `options?`) => [`GasAnalysis`](#gasanalysis) = `_analyzeGas`

Defined in: [src/primitives/Bytecode/index.ts:61](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L61)

#### Parameters

##### bytecode

`BrandedBytecode`

##### options?

[`GasAnalysisOptions`](#gasanalysisoptions)

#### Returns

[`GasAnalysis`](#gasanalysis)

***

### analyzeJumpDestinations()

> `const` **analyzeJumpDestinations**: (`code`) => `ReadonlySet`\<`number`> = `_analyzeJumpDestinations`

Defined in: [src/primitives/Bytecode/index.ts:65](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L65)

#### Parameters

##### code

`BrandedBytecode`

#### Returns

`ReadonlySet`\<`number`>

***

### analyzeStack()

> `const` **analyzeStack**: (`bytecode`, `options?`) => [`StackAnalysis`](#stackanalysis) = `_analyzeStack`

Defined in: [src/primitives/Bytecode/index.ts:67](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L67)

#### Parameters

##### bytecode

`BrandedBytecode`

##### options?

[`StackAnalysisOptions`](#stackanalysisoptions)

#### Returns

[`StackAnalysis`](#stackanalysis)

***

### BrandedBytecode

> `const` **BrandedBytecode**: `object`

Defined in: [src/primitives/Bytecode/index.ts:152](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L152)

#### Type Declaration

##### \_getNextPc()

> **\_getNextPc**: (`bytecode`, `currentPc`) => `number` | `undefined`

Get next program counter after executing instruction at currentPc

###### Parameters

###### bytecode

`BrandedBytecode`

###### currentPc

`number`

Current program counter

###### Returns

`number` | `undefined`

Next PC, or undefined if at/beyond end

###### Example

```typescript theme={null}
const bytecode = Bytecode("0x6001");  // PUSH1 0x01
getNextPc(bytecode, 0);  // 2 (PUSH1 = 1 byte opcode + 1 byte data)

const bytecode2 = Bytecode("0x01");   // ADD
getNextPc(bytecode2, 0); // undefined (would be at EOF)
```

##### analyze()

> **analyze**: (`code`) => [`Analysis`](#analysis)

###### Parameters

###### code

`BrandedBytecode`

###### Returns

[`Analysis`](#analysis)

##### analyzeBlocks()

> **analyzeBlocks**: (`bytecode`, `options?`) => [`BasicBlock`](#basicblock)\[]

###### Parameters

###### bytecode

`BrandedBytecode`

###### options?

[`BlockAnalysisOptions`](#blockanalysisoptions)

###### Returns

[`BasicBlock`](#basicblock)\[]

##### analyzeGas()

> **analyzeGas**: (`bytecode`, `options?`) => [`GasAnalysis`](#gasanalysis)

###### Parameters

###### bytecode

`BrandedBytecode`

###### options?

[`GasAnalysisOptions`](#gasanalysisoptions)

###### Returns

[`GasAnalysis`](#gasanalysis)

##### analyzeJumpDestinations()

> **analyzeJumpDestinations**: (`code`) => `ReadonlySet`\<`number`>

###### Parameters

###### code

`BrandedBytecode`

###### Returns

`ReadonlySet`\<`number`>

##### analyzeStack()

> **analyzeStack**: (`bytecode`, `options?`) => [`StackAnalysis`](#stackanalysis)

###### Parameters

###### bytecode

`BrandedBytecode`

###### options?

[`StackAnalysisOptions`](#stackanalysisoptions)

###### Returns

[`StackAnalysis`](#stackanalysis)

##### detectFusions()

> **detectFusions**: (`code`) => `unknown`

###### Parameters

###### code

`BrandedBytecode`

###### Returns

`unknown`

##### equals()

> **equals**: (`a`, `b`) => `boolean`

###### Parameters

###### a

`BrandedBytecode`

###### b

`BrandedBytecode`

###### Returns

`boolean`

##### extractRuntime()

> **extractRuntime**: (`code`, `offset`) => `BrandedBytecode`

###### Parameters

###### code

`BrandedBytecode`

###### offset

`number`

###### Returns

`BrandedBytecode`

##### formatInstruction()

> **formatInstruction**: (`inst`) => `string`

###### Parameters

###### inst

[`Instruction`](#instruction)

###### Returns

`string`

##### formatInstructions()

> **formatInstructions**: (`code`) => `string`\[]

###### Parameters

###### code

`BrandedBytecode`

###### Returns

`string`\[]

##### from()

> **from**: (`value`) => `BrandedBytecode`

###### Parameters

###### value

`string` | `Uint8Array`\<`ArrayBufferLike`>

###### Returns

`BrandedBytecode`

##### fromHex()

> **fromHex**: (`hex`) => `BrandedBytecode`

###### Parameters

###### hex

`string`

###### Returns

`BrandedBytecode`

##### getBlock()

> **getBlock**: (`code`, `pc`) => [`BasicBlock`](#basicblock) | `undefined`

###### Parameters

###### code

`BrandedBytecode`

###### pc

`number`

###### Returns

[`BasicBlock`](#basicblock) | `undefined`

##### getPushSize()

> **getPushSize**: (`opcode`) => `number`

###### Parameters

###### opcode

`number`

###### Returns

`number`

##### hash()

> **hash**: (`code`) => `any`

###### Parameters

###### code

`BrandedBytecode`

###### Returns

`any`

##### hasMetadata()

> **hasMetadata**: (`code`) => `boolean`

###### Parameters

###### code

`BrandedBytecode`

###### Returns

`boolean`

##### isPush()

> **isPush**: (`opcode`) => `boolean`

###### Parameters

###### opcode

`number`

###### Returns

`boolean`

##### isTerminator()

> **isTerminator**: (`opcode`) => `boolean`

###### Parameters

###### opcode

`number`

###### Returns

`boolean`

##### isValidJumpDest()

> **isValidJumpDest**: (`code`, `offset`) => `boolean`

###### Parameters

###### code

`BrandedBytecode`

###### offset

`number`

###### Returns

`boolean`

##### parseInstructions()

> **parseInstructions**: (`code`) => [`Instruction`](#instruction)\[]

###### Parameters

###### code

`BrandedBytecode`

###### Returns

[`Instruction`](#instruction)\[]

##### prettyPrint()

> **prettyPrint**: (`bytecode`, `options?`) => `string`

###### Parameters

###### bytecode

`BrandedBytecode`

###### options?

[`PrettyPrintOptions`](#prettyprintoptions)

###### Returns

`string`

##### scan()

> **scan**: (`bytecode`, `options?`) => `Generator`\<\{ `gas?`: `number`; `opcode`: `number`; `pc`: `number`; `size`: `number`; `stackEffect?`: \{ `pop`: `number`; `push`: `number`; }; `type`: `"push"` | `"regular"`; `value?`: `bigint`; }>

###### Parameters

###### bytecode

`BrandedBytecode`

###### options?

[`ScanOptions`](#scanoptions)

###### Returns

`Generator`\<\{ `gas?`: `number`; `opcode`: `number`; `pc`: `number`; `size`: `number`; `stackEffect?`: \{ `pop`: `number`; `push`: `number`; }; `type`: `"push"` | `"regular"`; `value?`: `bigint`; }>

##### size()

> **size**: (`code`) => `number`

###### Parameters

###### code

`BrandedBytecode`

###### Returns

`number`

##### stripMetadata()

> **stripMetadata**: (`code`) => `BrandedBytecode`

###### Parameters

###### code

`BrandedBytecode`

###### Returns

`BrandedBytecode`

##### toAbi()

> **toAbi**: (`bytecode`) => [`BrandedAbi`](#brandedabi)

###### Parameters

###### bytecode

`BrandedBytecode`

###### Returns

[`BrandedAbi`](#brandedabi)

##### toHex()

> **toHex**: (`code`, `prefix?`) => `string`

###### Parameters

###### code

`BrandedBytecode`

###### prefix?

`boolean`

###### Returns

`string`

##### validate()

> **validate**: (`code`) => `boolean`

###### Parameters

###### code

`BrandedBytecode`

###### Returns

`boolean`

***

### detectFusions()

> `const` **detectFusions**: (`code`) => `unknown` = `_detectFusions`

Defined in: [src/primitives/Bytecode/index.ts:71](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L71)

#### Parameters

##### code

`BrandedBytecode`

#### Returns

`unknown`

***

### equals()

> `const` **equals**: (`a`, `b`) => `boolean` = `_equals`

Defined in: [src/primitives/Bytecode/index.ts:72](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L72)

#### Parameters

##### a

`BrandedBytecode`

##### b

`BrandedBytecode`

#### Returns

`boolean`

***

### extractRuntime()

> `const` **extractRuntime**: (`code`, `offset`) => `BrandedBytecode` = `_extractRuntime`

Defined in: [src/primitives/Bytecode/index.ts:73](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L73)

#### Parameters

##### code

`BrandedBytecode`

##### offset

`number`

#### Returns

`BrandedBytecode`

***

### formatInstruction()

> `const` **formatInstruction**: (`inst`) => `string` = `_formatInstruction`

Defined in: [src/primitives/Bytecode/index.ts:77](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L77)

#### Parameters

##### inst

[`Instruction`](#instruction)

#### Returns

`string`

***

### formatInstructions()

> `const` **formatInstructions**: (`code`) => `string`\[] = `_formatInstructions`

Defined in: [src/primitives/Bytecode/index.ts:78](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L78)

#### Parameters

##### code

`BrandedBytecode`

#### Returns

`string`\[]

***

### from()

> `const` **from**: (`value`) => `BrandedBytecode` = `_from`

Defined in: [src/primitives/Bytecode/index.ts:80](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L80)

#### Parameters

##### value

`string` | `Uint8Array`

#### Returns

`BrandedBytecode`

***

### fromHex()

> `const` **fromHex**: (`hex`) => `BrandedBytecode` = `_fromHex`

Defined in: [src/primitives/Bytecode/index.ts:81](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L81)

#### Parameters

##### hex

`string`

#### Returns

`BrandedBytecode`

***

### getBlock()

> `const` **getBlock**: (`code`, `pc`) => [`BasicBlock`](#basicblock) | `undefined` = `_getBlock`

Defined in: [src/primitives/Bytecode/index.ts:82](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L82)

#### Parameters

##### code

`BrandedBytecode`

##### pc

`number`

#### Returns

[`BasicBlock`](#basicblock) | `undefined`

***

### getPushSize()

> `const` **getPushSize**: (`opcode`) => `number` = `_getPushSize`

Defined in: [src/primitives/Bytecode/index.ts:88](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L88)

#### Parameters

##### opcode

`number`

#### Returns

`number`

***

### hash()

> `const` **hash**: (`code`) => `any`

Defined in: [src/primitives/Bytecode/index.ts:53](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L53)

#### Parameters

##### code

`BrandedBytecode`

#### Returns

`any`

***

### hasMetadata()

> `const` **hasMetadata**: (`code`) => `boolean` = `_hasMetadata`

Defined in: [src/primitives/Bytecode/index.ts:89](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L89)

#### Parameters

##### code

`BrandedBytecode`

#### Returns

`boolean`

***

### isPush()

> `const` **isPush**: (`opcode`) => `boolean` = `_isPush`

Defined in: [src/primitives/Bytecode/index.ts:90](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L90)

#### Parameters

##### opcode

`number`

#### Returns

`boolean`

***

### isTerminator()

> `const` **isTerminator**: (`opcode`) => `boolean` = `_isTerminator`

Defined in: [src/primitives/Bytecode/index.ts:91](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L91)

#### Parameters

##### opcode

`number`

#### Returns

`boolean`

***

### isValidJumpDest()

> `const` **isValidJumpDest**: (`code`, `offset`) => `boolean` = `_isValidJumpDest`

Defined in: [src/primitives/Bytecode/index.ts:92](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L92)

#### Parameters

##### code

`BrandedBytecode`

##### offset

`number`

#### Returns

`boolean`

***

### parseInstructions()

> `const` **parseInstructions**: (`code`) => [`Instruction`](#instruction)\[] = `_parseInstructions`

Defined in: [src/primitives/Bytecode/index.ts:94](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L94)

#### Parameters

##### code

`BrandedBytecode`

#### Returns

[`Instruction`](#instruction)\[]

***

### prettyPrint()

> `const` **prettyPrint**: (`bytecode`, `options?`) => `string` = `_prettyPrint`

Defined in: [src/primitives/Bytecode/index.ts:96](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L96)

#### Parameters

##### bytecode

`BrandedBytecode`

##### options?

[`PrettyPrintOptions`](#prettyprintoptions)

#### Returns

`string`

***

### scan()

> `const` **scan**: (`bytecode`, `options?`) => `Generator`\<\{ `gas?`: `number`; `opcode`: `number`; `pc`: `number`; `size`: `number`; `stackEffect?`: \{ `pop`: `number`; `push`: `number`; }; `type`: `"push"` | `"regular"`; `value?`: `bigint`; }> = `_scan`

Defined in: [src/primitives/Bytecode/index.ts:100](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L100)

#### Parameters

##### bytecode

`BrandedBytecode`

##### options?

[`ScanOptions`](#scanoptions)

#### Returns

`Generator`\<\{ `gas?`: `number`; `opcode`: `number`; `pc`: `number`; `size`: `number`; `stackEffect?`: \{ `pop`: `number`; `push`: `number`; }; `type`: `"push"` | `"regular"`; `value?`: `bigint`; }>

***

### size()

> `const` **size**: (`code`) => `number` = `_size`

Defined in: [src/primitives/Bytecode/index.ts:112](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L112)

#### Parameters

##### code

`BrandedBytecode`

#### Returns

`number`

***

### stripMetadata()

> `const` **stripMetadata**: (`code`) => `BrandedBytecode` = `_stripMetadata`

Defined in: [src/primitives/Bytecode/index.ts:113](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L113)

#### Parameters

##### code

`BrandedBytecode`

#### Returns

`BrandedBytecode`

***

### toAbi()

> `const` **toAbi**: (`bytecode`) => [`BrandedAbi`](#brandedabi) = `_toAbi`

Defined in: [src/primitives/Bytecode/index.ts:116](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L116)

#### Parameters

##### bytecode

`BrandedBytecode`

#### Returns

[`BrandedAbi`](#brandedabi)

***

### toHex()

> `const` **toHex**: (`code`, `prefix?`) => `string` = `_toHex`

Defined in: [src/primitives/Bytecode/index.ts:115](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L115)

#### Parameters

##### code

`BrandedBytecode`

##### prefix?

`boolean`

#### Returns

`string`

***

### validate()

> `const` **validate**: (`code`) => `boolean` = `_validate`

Defined in: [src/primitives/Bytecode/index.ts:117](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L117)

#### Parameters

##### code

`BrandedBytecode`

#### Returns

`boolean`

## Functions

### \_getNextPc()

> **\_getNextPc**(`bytecode`, `currentPc`): `number` | `undefined`

Defined in: [src/primitives/Bytecode/getNextPc.js:20](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/getNextPc.js#L20)

Get next program counter after executing instruction at currentPc

#### Parameters

##### bytecode

`BrandedBytecode`

##### currentPc

`number`

Current program counter

#### Returns

`number` | `undefined`

Next PC, or undefined if at/beyond end

#### Example

```typescript theme={null}
const bytecode = Bytecode("0x6001");  // PUSH1 0x01
getNextPc(bytecode, 0);  // 2 (PUSH1 = 1 byte opcode + 1 byte data)

const bytecode2 = Bytecode("0x01");   // ADD
getNextPc(bytecode2, 0); // undefined (would be at EOF)
```

***

### Bytecode()

> **Bytecode**(`value`): `BrandedBytecode`

Defined in: [src/primitives/Bytecode/index.ts:195](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/index.ts#L195)

Create a Bytecode instance from various input types

Primary constructor - use this for Class API:

```typescript theme={null}
import { Bytecode } from '@tevm/voltaire'
const code = Bytecode("0x6001")
```

#### Parameters

##### value

Bytecode input

`string` | `Uint8Array`\<`ArrayBufferLike`>

#### Returns

`BrandedBytecode`

Bytecode instance

***

### Hash()

> **Hash**(`deps`): (`code`) => `any`

Defined in: [src/primitives/Bytecode/hash.js:7](https://github.com/evmts/voltaire/blob/bd6ec34405c15ad8cd51d11579d495dc53813482/src/primitives/Bytecode/hash.js#L7)

Factory: Compute bytecode hash (keccak256)

#### Parameters

##### deps

Crypto dependencies

###### keccak256

(`data`) => `Uint8Array`

Keccak256 hash function

#### Returns

Function that computes bytecode hash

> (`code`): `any`

##### Parameters

###### code

`BrandedBytecode`

##### Returns

`any`
