Skip to main content

StarknetSpvVaultContract

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:54

Starknet SPV vault (UTXO-controlled vault) contract representation

Extends​

  • StarknetContractBase<typeof SpvVaultContractAbi>

Implements​

Constructors​

Constructor​

new StarknetSpvVaultContract(
chainInterface,
btcRelay,
bitcoinRpc,
contractAddress,
contractDeploymentHeight?): StarknetSpvVaultContract;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:81

Parameters​

ParameterType
chainInterfaceStarknetChainInterface
btcRelayStarknetBtcRelay<any>
bitcoinRpcBitcoinRpc<any>
contractAddressstring
contractDeploymentHeight?number

Returns​

StarknetSpvVaultContract

Overrides​

StarknetContractBase<typeof SpvVaultContractAbi>.constructor

Properties​

chainId​

readonly chainId: "STARKNET" = "STARKNET";

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:72

Chain identifier string

Implementation of​

SpvVaultContract.chainId


claimTimeout​

readonly claimTimeout: number = 180;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:74


contract​

readonly contract: TypedContractV2<T>;

Defined in: atomiq-chain-starknet/src/starknet/contract/StarknetContractBase.ts:11

Inherited from​

StarknetContractBase.contract

maxClaimsPerTx​

readonly maxClaimsPerTx: number = 10;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:75

Methods​

checkWithdrawalTx()​

checkWithdrawalTx(tx): Promise<void>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:190

Checks if given withdrawal tx is valid and correctly parses on-chain, throws error when there is any issue with the validation

Parameters​

ParameterTypeDescription
txSpvWithdrawalTransactionData

Returns​

Promise<void>

Implementation of​

SpvVaultContract.checkWithdrawalTx


claim()​

claim(
signer,
vault,
txs,
synchronizer?,
initAta?,
txOptions?): Promise<string>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:611

Signs & sends transactions for claiming the funds from a specific vault

Parameters​

ParameterTypeDescription
signerStarknetSignerSigner to use for the transaction
vaultStarknetSpvVaultDataVault to claim from
txsobject[]
synchronizer?RelaySynchronizer<any, any, any>Optiona synchronizer to be used if BTC relay contract is not synced up to the required blockheight
initAta?booleanWhether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
txOptions?TransactionConfirmationOptionsTransaction options

Returns​

Promise<string>

Implementation of​

SpvVaultContract.claim


Claim()​

Claim(
signer,
vault,
data,
blockheader,
merkle,
position): StarknetAction;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:165

Returns a StarknetAction that submits the withdrawal data and executes the vault withdrawal

Parameters​

ParameterTypeDescription
signerstringA starknet signer's address
vaultStarknetSpvVaultDataVault data and configuration
dataStarknetSpvWithdrawalDataVault withdrawal transaction data to execute and claim assets based on it
blockheaderStarknetBtcStoredHeaderA stored and committed bitcoin blockheader where the bitcoin transaction got confirmed
merkleBuffer<ArrayBufferLike>[]Merkle proof for the bitcoin transaction
positionnumberPosition of the bitcoin transaction in the block - used for the merkle proof verification

Returns​

StarknetAction


createVaultData()​

createVaultData(
owner,
vaultId,
utxo,
confirmations,
tokenData): Promise<StarknetSpvVaultData>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:202

Creates vault data for a new vault

Parameters​

ParameterTypeDescription
ownerstringVault owner
vaultIdbigintVault ID
utxostringUtxo on which to assign the vault initially
confirmationsnumberRequired number of bitcoin confirmations to be able to withdraw funds from the vault
tokenDataSpvVaultTokenData[]Data about the tokens in the vault

Returns​

Promise<StarknetSpvVaultData>

Implementation of​

SpvVaultContract.createVaultData


deposit()​

deposit(
signer,
vault,
rawAmounts,
txOptions?): Promise<string>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:620

Signs & sends transactions for depositing funds to a specific spv vault

Parameters​

ParameterTypeDescription
signerStarknetSignerSigner to use for the transaction (can be any)
vaultStarknetSpvVaultDataVault to deposit to
rawAmountsbigint[]Raw amounts to deposit (these are unscaled)
txOptions?TransactionConfirmationOptionsTransaction options

Returns​

Promise<string>

Implementation of​

SpvVaultContract.deposit


Deposit()​

Deposit(
signer,
vault,
rawAmounts): StarknetAction;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:129

Returns a StarknetAction that deposits assets to the spv vault, amounts have to be already scaled! This also doesn't add the approval call!

Parameters​

ParameterTypeDescription
signerstringA starknet signer's address
vaultStarknetSpvVaultDataVault data and configuration
rawAmountsbigint[]An array of amounts to deposit, since the vault supports 2 tokens, up to 2 amounts are allowed

Returns​

StarknetAction


fromOpReturnData()​

static fromOpReturnData(data): object;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:536

Parses withdrawal params from OP_RETURN data

Parameters​

ParameterTypeDescription
dataBufferdata as specified in the OP_RETURN output of the transaction

Returns​

object

NameTypeDefined in
executionHash?stringatomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:536
rawAmountsbigint[]atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:536
recipientstringatomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:536

fromOpReturnData()​

fromOpReturnData(data): object;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:527

Parses withdrawal params from OP_RETURN data

Parameters​

ParameterTypeDescription
dataBufferdata as specified in the OP_RETURN output of the transaction

Returns​

object

NameTypeDefined in
executionHash?stringatomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:527
rawAmountsbigint[]atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:527
recipientstringatomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:527

Implementation of​

SpvVaultContract.fromOpReturnData


Front()​

Front(
signer,
vault,
data,
withdrawalSequence): StarknetAction;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:145

Returns a StarknetAction that fronts the vault withdrawal. This doesn't add the approval call!

Parameters​

ParameterTypeDescription
signerstringA starknet signer's address
vaultStarknetSpvVaultDataVault data and configuration
dataStarknetSpvWithdrawalDataVault withdrawal transaction data to front
withdrawalSequencenumberWhich withdrawal in sequence is this, used to prevent race conditions when 2 parties were to front at the same time

Returns​

StarknetAction


frontLiquidity()​

frontLiquidity(
signer,
vault,
realWithdrawalTx,
withdrawSequence,
txOptions?): Promise<string>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:629

Signs & sends transactions for fronting liquidity for a specific withdrawal btc transaction

Parameters​

ParameterTypeDescription
signerStarknetSignerSigner to use for the transaction (payer of the fronted liquidity)
vaultStarknetSpvVaultDataVault to deposit to
realWithdrawalTxStarknetSpvWithdrawalDataReal withdrawal transaction data
withdrawSequencenumberSequence number of the withdrawal that is being fronted, this used as race condition prevention, such that fronting will not happen if the withdrawal tx is already used in claim()
txOptions?TransactionConfirmationOptionsTransaction options

Returns​

Promise<string>

Implementation of​

SpvVaultContract.frontLiquidity


getAllVaults()​

getAllVaults(owner?): Promise<StarknetSpvVaultData[]>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:291

Returns all currently opened vaults NOTE: This will take a long time, since the implementation will have to go through all the prior events

Parameters​

ParameterType
owner?string

Returns​

Promise<StarknetSpvVaultData[]>

Implementation of​

SpvVaultContract.getAllVaults


getClaimFee()​

getClaimFee(
signer,
vault,
withdrawalData,
feeRate?): Promise<bigint>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:794

Returns the fee in native token base units to claim the swap

Parameters​

ParameterTypeDescription
signerstringSigner claiming the swap
vaultStarknetSpvVaultData
withdrawalDataStarknetSpvWithdrawalDataWithdrawal to claim
feeRate?stringOptional fee rate (fetched on-demand if not provided)

Returns​

Promise<bigint>

Implementation of​

SpvVaultContract.getClaimFee


getFronterAddress()​

getFronterAddress(
owner,
vaultId,
withdrawal): Promise<string>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:328

Returns the party which currently fronted the withdrawal transaction

Parameters​

ParameterTypeDescription
ownerstringOwner of the vault
vaultIdbigintVault ID
withdrawalStarknetSpvWithdrawalDataWithdrawal transaction to check the fronting for

Returns​

Promise<string>

Implementation of​

SpvVaultContract.getFronterAddress


getFronterAddresses()​

getFronterAddresses(withdrawals): Promise<{
[btcTxId: string]: string;
}>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:337

Returns the parties which currently fronted the withdrawal transactions

Parameters​

ParameterTypeDescription
withdrawalsobject[]withdrawals to query

Returns​

Promise<{ [btcTxId: string]: string; }>

Implementation of​

SpvVaultContract.getFronterAddresses


getFrontFee()​

getFrontFee(
signer,
vault,
withdrawalData,
feeRate?): Promise<bigint>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:805

Returns the fee in native token base units to claim the swap

Parameters​

ParameterTypeDescription
signerstringSigner claiming the swap
vaultStarknetSpvVaultData
withdrawalDataStarknetSpvWithdrawalDataWithdrawal to claim
feeRate?stringOptional fee rate (fetched on-demand if not provided)

Returns​

Promise<bigint>

Implementation of​

SpvVaultContract.getFrontFee


getHistoricalWithdrawalStates()​

getHistoricalWithdrawalStates(recipient, startBlockheight?): Promise<{
latestBlockheight?: number;
withdrawals: {
[btcTxId: string]: SpvWithdrawalFrontedState | SpvWithdrawalClaimedState;
};
}>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:489

Returns the full history as fetched from the chain for a specific recipient

Parameters​

ParameterTypeDescription
recipientstringA recipient to check the history for
startBlockheight?number

Returns​

Promise<{ latestBlockheight?: number; withdrawals: { [btcTxId: string]: SpvWithdrawalFrontedState | SpvWithdrawalClaimedState; }; }>

Implementation of​

SpvVaultContract.getHistoricalWithdrawalStates


getMultipleVaultData()​

getMultipleVaultData(vaults): Promise<{
[owner: string]: object;
}>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:239

Returns current vault data for multiple vaults

Parameters​

ParameterTypeDescription
vaultsobject[]Vault data to query

Returns​

Promise<{ [owner: string]: object; }>

Implementation of​

SpvVaultContract.getMultipleVaultData


getVaultData()​

getVaultData(owner, vaultId): Promise<StarknetSpvVaultData>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:228

Returns current vault data

Parameters​

ParameterTypeDescription
ownerstringOwner of the vault
vaultIdbigintVault ID

Returns​

Promise<StarknetSpvVaultData>

Implementation of​

SpvVaultContract.getVaultData


getVaultLatestUtxo()​

getVaultLatestUtxo(owner, vaultId): Promise<string>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:260

Returns the latest utxo of a vault (or null if vault closed or not found)

Parameters​

ParameterTypeDescription
ownerstringOwner of the vault
vaultIdbigintVault ID

Returns​

Promise<string>

Implementation of​

SpvVaultContract.getVaultLatestUtxo


getVaultLatestUtxos()​

getVaultLatestUtxos(vaults): Promise<{
[owner: string]: object;
}>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:270

Returns the latest utxos of for multiple vaults (or null if vault closed or not found)

Parameters​

ParameterTypeDescription
vaultsobject[]Vault data to query

Returns​

Promise<{ [owner: string]: object; }>

Implementation of​

SpvVaultContract.getVaultLatestUtxos


getWithdrawalData()​

getWithdrawalData(btcTx): Promise<StarknetSpvWithdrawalData>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:519

Parses withdrawal data from the parsed bitcoin transaction

Parameters​

ParameterTypeDescription
btcTxBtcTx

Returns​

Promise<StarknetSpvWithdrawalData>

Implementation of​

SpvVaultContract.getWithdrawalData


getWithdrawalState()​

getWithdrawalState(withdrawalTx, scStartBlockheight?): Promise<SpvWithdrawalState>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:468

Returns current state of the withdrawal, optionally only check withdrawals from the provided block height

Parameters​

ParameterTypeDescription
withdrawalTxStarknetSpvWithdrawalData
scStartBlockheight?number

Returns​

Promise<SpvWithdrawalState>

Implementation of​

SpvVaultContract.getWithdrawalState


getWithdrawalStates()​

getWithdrawalStates(withdrawalTxs): Promise<{
[btcTxId: string]: SpvWithdrawalState;
}>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:417

Returns current state of the withdrawals, optionally only check withdrawals from the provided block height

Parameters​

ParameterTypeDescription
withdrawalTxsobject[]Object with the withdrawal tx to check + an optional start blockheight

Returns​

Promise<{ [btcTxId: string]: SpvWithdrawalState; }>

Implementation of​

SpvVaultContract.getWithdrawalStates


open()​

open(
signer,
vault,
txOptions?): Promise<string>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:638

Signs & sends transactions for opening a specific spv vault

Parameters​

ParameterTypeDescription
signerStarknetSignerSigner to use for the transaction (must match owner in vault)
vaultStarknetSpvVaultDataVault to init
txOptions?TransactionConfirmationOptionsTransaction options

Returns​

Promise<string>

Implementation of​

SpvVaultContract.open


Open()​

Open(signer, vault): StarknetAction;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:105

Returns a StarknetAction that opens up the spv vault with the passed data

Parameters​

ParameterTypeDescription
signerstringA starknet signer's address
vaultStarknetSpvVaultDataVault data and configuration

Returns​

StarknetAction


toOpReturnData()​

static toOpReturnData(
recipient,
rawAmounts,
executionHash?): Buffer;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:581

Serializes the withdrawal params to the OP_RETURN data

Parameters​

ParameterTypeDescription
recipientstringRecipient of the withdrawn tokens
rawAmountsbigint[]Raw amount of tokens to withdraw
executionHash?stringOptional execution hash of the actions to execute

Returns​

Buffer


toOpReturnData()​

toOpReturnData(
recipient,
rawAmounts,
executionHash?): Buffer;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:570

Serializes the withdrawal params to the OP_RETURN data

Parameters​

ParameterTypeDescription
recipientstringRecipient of the withdrawn tokens
rawAmountsbigint[]Raw amount of tokens to withdraw
executionHash?stringOptional execution hash of the actions to execute

Returns​

Buffer

Implementation of​

SpvVaultContract.toOpReturnData


txsClaim()​

txsClaim(
signer,
vault,
txs,
synchronizer?,
initAta?,
feeRate?): Promise<StarknetTx[]>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:648

Returns the unsigned transactions for claiming the funds from a specific vault

Parameters​

ParameterTypeDescription
signerstringSigner to use for the transaction
vaultStarknetSpvVaultDataVault to claim from
txsobject[]
synchronizer?RelaySynchronizer<any, any, any>Optiona synchronizer to be used if BTC relay contract is not synced up to the required blockheight
initAta?booleanWhether to initialize a token account if it doesn't exist (applies to e.g. Solana, with token specific ATAs)
feeRate?stringFee rate to use for the transaction

Returns​

Promise<StarknetTx[]>

Implementation of​

SpvVaultContract.txsClaim


txsDeposit()​

txsDeposit(
signer,
vault,
rawAmounts,
feeRate?): Promise<StarknetTx[]>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:718

Returns the unsigned transactions for depositing funds to a specific spv vault

Parameters​

ParameterTypeDescription
signerstringSigner to use for the transaction (can be any)
vaultStarknetSpvVaultDataVault to deposit to
rawAmountsbigint[]Raw amounts to deposit (these are unscaled)
feeRate?stringFee rate to use for the transaction

Returns​

Promise<StarknetTx[]>

Implementation of​

SpvVaultContract.txsDeposit


txsFrontLiquidity()​

txsFrontLiquidity(
signer,
vault,
realWithdrawalTx,
withdrawSequence,
feeRate?): Promise<StarknetTx[]>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:747

Returns the unsigned transactions for fronting liquidity for a specific withdrawal btc transaction

Parameters​

ParameterTypeDescription
signerstringSigner to use for the transaction (payer of the fronted liquidity)
vaultStarknetSpvVaultDataVault to deposit to
realWithdrawalTxStarknetSpvWithdrawalDataReal withdrawal transaction data
withdrawSequencenumberSequence number of the withdrawal that is being fronted, this used as race condition prevention, such that fronting will not happen if the withdrawal tx is already used in claim()
feeRate?stringFee rate to use for the transaction

Returns​

Promise<StarknetTx[]>

Implementation of​

SpvVaultContract.txsFrontLiquidity


txsOpen()​

txsOpen(
signer,
vault,
feeRate?): Promise<StarknetTx[]>;

Defined in: atomiq-chain-starknet/src/starknet/spv_swap/StarknetSpvVaultContract.ts:778

Returns the unsigned transactions for opening a specific spv vault

Parameters​

ParameterTypeDescription
signerstringSigner to use for the transaction (must match owner in vault)
vaultStarknetSpvVaultDataVault to init
feeRate?stringFee rate to use for the transaction

Returns​

Promise<StarknetTx[]>

Implementation of​

SpvVaultContract.txsOpen