UNPKG

@drift-labs/sdk

Version:
629 lines (628 loc) • 19.7 kB
{ "version": "0.1.0", "name": "pyth_solana_receiver", "instructions": [ { "name": "initialize", "accounts": [ { "name": "payer", "isMut": true, "isSigner": true }, { "name": "config", "isMut": true, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "initialConfig", "type": { "defined": "Config" } } ] }, { "name": "requestGovernanceAuthorityTransfer", "accounts": [ { "name": "payer", "isMut": false, "isSigner": true }, { "name": "config", "isMut": true, "isSigner": false } ], "args": [ { "name": "targetGovernanceAuthority", "type": "publicKey" } ] }, { "name": "acceptGovernanceAuthorityTransfer", "accounts": [ { "name": "payer", "isMut": false, "isSigner": true }, { "name": "config", "isMut": true, "isSigner": false } ], "args": [] }, { "name": "setDataSources", "accounts": [ { "name": "payer", "isMut": false, "isSigner": true }, { "name": "config", "isMut": true, "isSigner": false } ], "args": [ { "name": "validDataSources", "type": { "vec": { "defined": "DataSource" } } } ] }, { "name": "setFee", "accounts": [ { "name": "payer", "isMut": false, "isSigner": true }, { "name": "config", "isMut": true, "isSigner": false } ], "args": [ { "name": "singleUpdateFeeInLamports", "type": "u64" } ] }, { "name": "setWormholeAddress", "accounts": [ { "name": "payer", "isMut": false, "isSigner": true }, { "name": "config", "isMut": true, "isSigner": false } ], "args": [ { "name": "wormhole", "type": "publicKey" } ] }, { "name": "setMinimumSignatures", "accounts": [ { "name": "payer", "isMut": false, "isSigner": true }, { "name": "config", "isMut": true, "isSigner": false } ], "args": [ { "name": "minimumSignatures", "type": "u8" } ] }, { "name": "postUpdateAtomic", "docs": [ "Post a price update using a VAA and a MerklePriceUpdate.", "This function allows you to post a price update in a single transaction.", "Compared to post_update, it is less secure since you won't be able to verify all guardian signatures if you use this function because of transaction size limitations.", "Typically, you can fit 5 guardian signatures in a transaction that uses this." ], "accounts": [ { "name": "payer", "isMut": true, "isSigner": true }, { "name": "guardianSet", "isMut": false, "isSigner": false, "docs": [ "Instead we do the same steps in deserialize_guardian_set_checked." ] }, { "name": "config", "isMut": false, "isSigner": false }, { "name": "treasury", "isMut": true, "isSigner": false }, { "name": "priceUpdateAccount", "isMut": true, "isSigner": true, "docs": [ "The contraint is such that either the price_update_account is uninitialized or the payer is the write_authority.", "Pubkey::default() is the SystemProgram on Solana and it can't sign so it's impossible that price_update_account.write_authority == Pubkey::default() once the account is initialized" ] }, { "name": "systemProgram", "isMut": false, "isSigner": false }, { "name": "writeAuthority", "isMut": false, "isSigner": true } ], "args": [ { "name": "params", "type": { "defined": "PostUpdateAtomicParams" } } ] }, { "name": "postUpdate", "docs": [ "Post a price update using an encoded_vaa account and a MerklePriceUpdate calldata.", "This should be called after the client has already verified the Vaa via the Wormhole contract.", "Check out target_chains/solana/cli/src/main.rs for an example of how to do this." ], "accounts": [ { "name": "payer", "isMut": true, "isSigner": true }, { "name": "encodedVaa", "isMut": false, "isSigner": false }, { "name": "config", "isMut": false, "isSigner": false }, { "name": "treasury", "isMut": true, "isSigner": false }, { "name": "priceUpdateAccount", "isMut": true, "isSigner": true, "docs": [ "The contraint is such that either the price_update_account is uninitialized or the payer is the write_authority.", "Pubkey::default() is the SystemProgram on Solana and it can't sign so it's impossible that price_update_account.write_authority == Pubkey::default() once the account is initialized" ] }, { "name": "systemProgram", "isMut": false, "isSigner": false }, { "name": "writeAuthority", "isMut": false, "isSigner": true } ], "args": [ { "name": "params", "type": { "defined": "PostUpdateParams" } } ] }, { "name": "reclaimRent", "accounts": [ { "name": "payer", "isMut": true, "isSigner": true }, { "name": "priceUpdateAccount", "isMut": true, "isSigner": false } ], "args": [] } ], "accounts": [ { "name": "Config", "type": { "kind": "struct", "fields": [ { "name": "governanceAuthority", "type": "publicKey" }, { "name": "targetGovernanceAuthority", "type": { "option": "publicKey" } }, { "name": "wormhole", "type": "publicKey" }, { "name": "validDataSources", "type": { "vec": { "defined": "DataSource" } } }, { "name": "singleUpdateFeeInLamports", "type": "u64" }, { "name": "minimumSignatures", "type": "u8" } ] } }, { "name": "priceUpdateV2", "type": { "kind": "struct", "fields": [ { "name": "writeAuthority", "type": "publicKey" }, { "name": "verificationLevel", "type": { "defined": "VerificationLevel" } }, { "name": "priceMessage", "type": { "defined": "PriceFeedMessage" } }, { "name": "postedSlot", "type": "u64" } ] } } ], "types": [ { "name": "PriceFeedMessage", "type": { "kind": "struct", "fields": [ { "name": "feedId", "type": { "array": ["u8", 32] } }, { "name": "price", "type": "i64" }, { "name": "conf", "type": "u64" }, { "name": "exponent", "type": "i32" }, { "name": "publishTime", "type": "i64" }, { "name": "prevPublishTime", "type": "i64" }, { "name": "emaPrice", "type": "i64" }, { "name": "emaConf", "type": "u64" } ] } }, { "name": "MerklePriceUpdate", "type": { "kind": "struct", "fields": [ { "name": "message", "type": "bytes" }, { "name": "proof", "type": { "vec": { "array": ["u8", 20] } } } ] } }, { "name": "DataSource", "type": { "kind": "struct", "fields": [ { "name": "chain", "type": "u16" }, { "name": "emitter", "type": "publicKey" } ] } }, { "name": "PostMultiUpdatesAtomicParams", "type": { "kind": "struct", "fields": [ { "name": "vaa", "type": "bytes" }, { "name": "merklePriceUpdates", "type": { "vec": { "defined": "MerklePriceUpdate" } } } ] } }, { "name": "PostUpdateAtomicParams", "type": { "kind": "struct", "fields": [ { "name": "vaa", "type": "bytes" }, { "name": "merklePriceUpdate", "type": { "defined": "MerklePriceUpdate" } } ] } }, { "name": "PostUpdateParams", "type": { "kind": "struct", "fields": [ { "name": "merklePriceUpdate", "type": { "defined": "MerklePriceUpdate" } } ] } }, { "name": "VerificationLevel", "docs": [ "* This enum represents how many guardian signatures were checked for a Pythnet price update\n * If full, guardian quorum has been attained\n * If partial, at least config.minimum signatures have been verified, but in the case config.minimum_signatures changes in the future we also include the number of signatures that were checked" ], "type": { "kind": "enum", "variants": [ { "name": "Partial", "fields": [ { "name": "numSignatures", "type": "u8" } ] }, { "name": "Full" } ] } } ], "errors": [ { "code": 6000, "name": "InvalidWormholeMessage", "msg": "Received an invalid wormhole message" }, { "code": 6001, "name": "DeserializeMessageFailed", "msg": "An error occurred when deserializing the message" }, { "code": 6002, "name": "InvalidPriceUpdate", "msg": "Received an invalid price update" }, { "code": 6003, "name": "UnsupportedMessageType", "msg": "This type of message is not supported currently" }, { "code": 6004, "name": "InvalidDataSource", "msg": "The tuple emitter chain, emitter doesn't match one of the valid data sources." }, { "code": 6005, "name": "InsufficientFunds", "msg": "Funds are insufficient to pay the receiving fee" }, { "code": 6006, "name": "WrongWriteAuthority", "msg": "This signer can't write to price update account" }, { "code": 6007, "name": "WrongVaaOwner", "msg": "The posted VAA account has the wrong owner." }, { "code": 6008, "name": "DeserializeVaaFailed", "msg": "An error occurred when deserializing the VAA." }, { "code": 6009, "name": "InsufficientGuardianSignatures", "msg": "The number of guardian signatures is below the minimum" }, { "code": 6010, "name": "InvalidVaaVersion", "msg": "Invalid VAA version" }, { "code": 6011, "name": "GuardianSetMismatch", "msg": "Guardian set version in the VAA doesn't match the guardian set passed" }, { "code": 6012, "name": "InvalidGuardianOrder", "msg": "Guardian signature indices must be increasing" }, { "code": 6013, "name": "InvalidGuardianIndex", "msg": "Guardian index exceeds the number of guardians in the set" }, { "code": 6014, "name": "InvalidSignature", "msg": "A VAA signature is invalid" }, { "code": 6015, "name": "InvalidGuardianKeyRecovery", "msg": "The recovered guardian public key doesn't match the guardian set" }, { "code": 6016, "name": "WrongGuardianSetOwner", "msg": "The guardian set account is owned by the wrong program" }, { "code": 6017, "name": "InvalidGuardianSetPda", "msg": "The Guardian Set account doesn't match the PDA derivation" }, { "code": 6018, "name": "GuardianSetExpired", "msg": "The Guardian Set is expired" }, { "code": 6019, "name": "GovernanceAuthorityMismatch", "msg": "The signer is not authorized to perform this governance action" }, { "code": 6020, "name": "TargetGovernanceAuthorityMismatch", "msg": "The signer is not authorized to accept the governance authority" }, { "code": 6021, "name": "NonexistentGovernanceAuthorityTransferRequest", "msg": "The governance authority needs to request a transfer first" } ] }