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

# svm: CPI probe

> CPI probe: 12 exports of the svm module of @eco-incorp/sauce, including staticCpiScreen, probeCpiAcceptance, classifyVenue, INSTRUCTIONS_SYSVAR, CpiTier, ScreenAccount.

`@eco-incorp/sauce/svm` is the Solana side: staging a program through the kitchen, resolving accounts against the compiler's account manifest, building and sending transactions, and verifying settle programs. Solana execution goes through the Kitchen client here; the SDK's SVM route helpers emit a legacy instruction that the released engine does not accept.

```typescript theme={null}
import { createSauceSvmClient } from "@eco-incorp/sauce/svm";
```

This page covers `sdk/dist/svm/cpi-probe.d.ts`.

<Note>
  Generated from the type declarations shipped in `@eco-incorp/sauce` 0.99.4. Each entry shows the package authors' JSDoc and declaration for this SDK version. For runtime compatibility and deployed addresses, see [architecture and deployments](/programmable-transactions/sauce/architecture-and-deployments).
</Note>

### `staticCpiScreen`

*Function* · `sdk/dist/svm/cpi-probe.d.ts`

The free static screen over a swap's account list. `introspects` /
foreign-signer ⇒ hard P-C candidate; otherwise the pool is a P-A candidate
that the unrecognized-caller simulation confirms.

```typescript theme={null}
export declare function staticCpiScreen(input: StaticScreenInput): StaticScreen;
```

### `probeCpiAcceptance`

*Function* · `sdk/dist/svm/cpi-probe.d.ts`

Runs the unrecognized-caller simulation and classifies the venue. Never
lands a swap; on any simulation error it returns `reject` with the error
detail (a gated program refuses the arbitrary caller). ACCEPT/DEGRADE split
on `expectedOut` when supplied.

```typescript theme={null}
export declare function probeCpiAcceptance(input: AcceptanceProbeInput): Promise<AcceptanceProbe>;
```

### `classifyVenue`

*Function* · `sdk/dist/svm/cpi-probe.d.ts`

Combine the static screen with an optional simulation verdict into the final
tier. Introspection is decisive P-C. Otherwise ACCEPT ⇒ P-A (public/readable
oracle) or P-B (proprietary internal oracle located empirically - the caller
distinguishes via `internalOracle`); REJECT/DEGRADE ⇒ P-C. Without a sim
verdict the static candidate stands (a P-A candidate stays provisional).

```typescript theme={null}
export declare function classifyVenue(screen: StaticScreen, probe?: AcceptanceProbe, opts?: {
    internalOracle?: boolean;
}): VenueClassification;
```

### `INSTRUCTIONS_SYSVAR`

*Variable* · `sdk/dist/svm/cpi-probe.d.ts`

The instructions sysvar - its presence in a swap's account list = introspection.

```typescript theme={null}
INSTRUCTIONS_SYSVAR: Address
```

### `CpiTier`

*Type* · `sdk/dist/svm/cpi-probe.d.ts`

Prop-AMM integrability tier (see the module doc + the historical venue investigation).

```typescript theme={null}
export type CpiTier = "P-A" | "P-B" | "P-C";
```

### `ScreenAccount`

*Interface* · `sdk/dist/svm/cpi-probe.d.ts`

One account of a venue swap, for the static screen (address + signer flag).

```typescript theme={null}
export interface ScreenAccount {
    address?: Address;
    signer?: boolean;
}
```

### `StaticScreenInput`

*Interface* · `sdk/dist/svm/cpi-probe.d.ts`

```typescript theme={null}
export interface StaticScreenInput {
    accounts: readonly ScreenAccount[];
    userSigner?: Address;
}
```

### `StaticScreen`

*Interface* · `sdk/dist/svm/cpi-probe.d.ts`

```typescript theme={null}
export interface StaticScreen {
    introspects: boolean;
    foreignSigners: Address[];
    candidateTier: "P-A" | "P-C";
    reasons: string[];
}
```

### `CpiVerdict`

*Type* · `sdk/dist/svm/cpi-probe.d.ts`

ACCEPT / REJECT / DEGRADE / UNKNOWN - the simulation verdict.

```typescript theme={null}
export type CpiVerdict = "accept" | "reject" | "degrade" | "unknown";
```

### `AcceptanceProbeInput`

*Interface* · `sdk/dist/svm/cpi-probe.d.ts`

```typescript theme={null}
export interface AcceptanceProbeInput {
    rpc: Rpc<SimulateTransactionApi & GetAccountInfoApi>;
    swapIx: Instruction;
    payer: TransactionSigner;
    outAta: Address;
    expectedOut?: bigint;
    degradeBps?: number;
}
```

### `AcceptanceProbe`

*Interface* · `sdk/dist/svm/cpi-probe.d.ts`

```typescript theme={null}
export interface AcceptanceProbe {
    verdict: CpiVerdict;
    delta: bigint;
    cu?: bigint;
    detail?: string;
}
```

### `VenueClassification`

*Interface* · `sdk/dist/svm/cpi-probe.d.ts`

```typescript theme={null}
export interface VenueClassification {
    tier: CpiTier;
    reasons: string[];
    externalScanEligible: boolean;
}
```
