{
	"version": "0.1.0",
	"name": "solana_project",
	"instructions": [
		{
			"name": "initialize",
			"accounts": [
				{
					"name": "config",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "owner",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "systemProgram",
					"isMut": false,
					"isSigner": false
				}
			],
			"args": []
		},
		{
			"name": "registerChain",
			"accounts": [
				{
					"name": "owner",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "systemProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "config",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "emitterAcc",
					"isMut": true,
					"isSigner": false
				}
			],
			"args": [
				{
					"name": "chainId",
					"type": "u16"
				},
				{
					"name": "emitterAddr",
					"type": "string"
				}
			]
		},
		{
			"name": "storeMsg",
			"accounts": [
				{
					"name": "payer",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "systemProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "processedVaa",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "emitterAcc",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "coreBridgeVaa",
					"isMut": false,
					"isSigner": false,
					"docs": ["This requires some fancy hashing, so confirm it's derived address in the function itself."]
				},
				{
					"name": "dataStorage",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "txnCount",
					"isMut": true,
					"isSigner": false
				}
			],
			"args": [
				{
					"name": "currentCount",
					"type": "u8"
				},
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					}
				}
			]
		},
		{
			"name": "transactionDeposit",
			"accounts": [
				{
					"name": "transaction",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "zebecEoa",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "systemProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "dataStorage",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "txnCount",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "pdaSigner",
					"isMut": true,
					"isSigner": false
				}
			],
			"args": [
				{
					"name": "pid",
					"type": "publicKey"
				},
				{
					"name": "accs",
					"type": {
						"vec": {
							"defined": "TransactionAccount"
						}
					}
				},
				{
					"name": "data",
					"type": "bytes"
				},
				{
					"name": "chainId",
					"type": "bytes"
				},
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					}
				}
			]
		},
		{
			"name": "createTransactionStream",
			"accounts": [
				{
					"name": "transaction",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "zebecEoa",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "systemProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "dataStorage",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "txnCount",
					"isMut": true,
					"isSigner": false
				}
			],
			"args": [
				{
					"name": "pid",
					"type": "publicKey"
				},
				{
					"name": "accs",
					"type": {
						"vec": {
							"defined": "TransactionAccount"
						}
					}
				},
				{
					"name": "data",
					"type": "bytes"
				},
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					}
				}
			]
		},
		{
			"name": "transactionStreamUpdate",
			"accounts": [
				{
					"name": "transaction",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "zebecEoa",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "systemProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "dataStorage",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "txnCount",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "pdaSigner",
					"isMut": true,
					"isSigner": false
				}
			],
			"args": [
				{
					"name": "pid",
					"type": "publicKey"
				},
				{
					"name": "accs",
					"type": {
						"vec": {
							"defined": "TransactionAccount"
						}
					}
				},
				{
					"name": "data",
					"type": "bytes"
				},
				{
					"name": "chainId",
					"type": "bytes"
				},
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					}
				}
			]
		},
		{
			"name": "transactionPauseResume",
			"accounts": [
				{
					"name": "transaction",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "zebecEoa",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "systemProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "dataStorage",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "txnCount",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "pdaSigner",
					"isMut": true,
					"isSigner": false
				}
			],
			"args": [
				{
					"name": "pid",
					"type": "publicKey"
				},
				{
					"name": "accs",
					"type": {
						"vec": {
							"defined": "TransactionAccount"
						}
					}
				},
				{
					"name": "data",
					"type": "bytes"
				},
				{
					"name": "chainId",
					"type": "bytes"
				},
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					}
				}
			]
		},
		{
			"name": "createTransactionReceiverWithdraw",
			"accounts": [
				{
					"name": "transaction",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "zebecEoa",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "systemProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "dataStorage",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "txnCount",
					"isMut": true,
					"isSigner": false
				}
			],
			"args": [
				{
					"name": "pid",
					"type": "publicKey"
				},
				{
					"name": "accs",
					"type": {
						"vec": {
							"defined": "TransactionAccount"
						}
					}
				},
				{
					"name": "data",
					"type": "bytes"
				},
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					}
				}
			]
		},
		{
			"name": "createTransactionCancel",
			"accounts": [
				{
					"name": "transaction",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "zebecEoa",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "systemProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "dataStorage",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "txnCount",
					"isMut": true,
					"isSigner": false
				}
			],
			"args": [
				{
					"name": "pid",
					"type": "publicKey"
				},
				{
					"name": "accs",
					"type": {
						"vec": {
							"defined": "TransactionAccount"
						}
					}
				},
				{
					"name": "data",
					"type": "bytes"
				},
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					}
				}
			]
		},
		{
			"name": "createTransactionSenderWithdraw",
			"accounts": [
				{
					"name": "transaction",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "zebecEoa",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "systemProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "dataStorage",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "txnCount",
					"isMut": true,
					"isSigner": false
				}
			],
			"args": [
				{
					"name": "pid",
					"type": "publicKey"
				},
				{
					"name": "accs",
					"type": {
						"vec": {
							"defined": "TransactionAccount"
						}
					}
				},
				{
					"name": "data",
					"type": "bytes"
				},
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					}
				}
			]
		},
		{
			"name": "createTransactionInstantTransfer",
			"accounts": [
				{
					"name": "transaction",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "zebecEoa",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "systemProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "dataStorage",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "txnCount",
					"isMut": true,
					"isSigner": false
				}
			],
			"args": [
				{
					"name": "pid",
					"type": "publicKey"
				},
				{
					"name": "accs",
					"type": {
						"vec": {
							"defined": "TransactionAccount"
						}
					}
				},
				{
					"name": "data",
					"type": "bytes"
				},
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					}
				}
			]
		},
		{
			"name": "transactionDirectTransferNative",
			"accounts": [
				{
					"name": "zebecEoa",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "dataStorage",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "txnCount",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "pdaSigner",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "config",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "portalConfig",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "from",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "mint",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "portalCustody",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "portalAuthoritySigner",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "portalCustodySigner",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "bridgeConfig",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "portalMessage",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "portalEmitter",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "portalSequence",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "bridgeFeeCollector",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "clock",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "rent",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "systemProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "portalBridgeProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "coreBridgeProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "tokenProgram",
					"isMut": false,
					"isSigner": false
				}
			],
			"args": [
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					}
				},
				{
					"name": "chainId",
					"type": "bytes"
				},
				{
					"name": "targetChain",
					"type": "u16"
				},
				{
					"name": "fee",
					"type": "u64"
				}
			]
		},
		{
			"name": "transactionDirectTransferWrapped",
			"accounts": [
				{
					"name": "zebecEoa",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "dataStorage",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "txnCount",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "pdaSigner",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "config",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "from",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "portalConfig",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "wrappedMint",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "wrappedMeta",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "portalAuthoritySigner",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "bridgeConfig",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "portalMessage",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "portalEmitter",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "portalSequence",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "bridgeFeeCollector",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "clock",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "rent",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "systemProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "portalBridgeProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "coreBridgeProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "tokenProgram",
					"isMut": false,
					"isSigner": false
				}
			],
			"args": [
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					}
				},
				{
					"name": "senderChain",
					"type": "bytes"
				},
				{
					"name": "tokenAddress",
					"type": "bytes"
				},
				{
					"name": "tokenChain",
					"type": "u16"
				},
				{
					"name": "currentCount",
					"type": "u8"
				},
				{
					"name": "targetChain",
					"type": "u16"
				},
				{
					"name": "fee",
					"type": "u64"
				}
			]
		},
		{
			"name": "executeTransaction",
			"accounts": [
				{
					"name": "pdaSigner",
					"isMut": true,
					"isSigner": false,
					"docs": ["if different seeds passed the signature will not match"]
				},
				{
					"name": "transaction",
					"isMut": true,
					"isSigner": false
				}
			],
			"args": [
				{
					"name": "ethAdd",
					"type": {
						"array": ["u8", 32]
					}
				},
				{
					"name": "fromChainId",
					"type": "bytes"
				}
			]
		},
		{
			"name": "transferWrapped",
			"accounts": [
				{
					"name": "zebecEoa",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "dataStorage",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "txnCount",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "pdaSigner",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "config",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "from",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "portalConfig",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "wrappedMint",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "wrappedMeta",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "portalAuthoritySigner",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "bridgeConfig",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "portalMessage",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "portalEmitter",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "portalSequence",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "bridgeFeeCollector",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "clock",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "rent",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "systemProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "portalBridgeProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "coreBridgeProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "tokenProgram",
					"isMut": false,
					"isSigner": false
				}
			],
			"args": [
				{
					"name": "sender",
					"type": "bytes"
				},
				{
					"name": "senderChain",
					"type": "bytes"
				},
				{
					"name": "targetChain",
					"type": "u16"
				},
				{
					"name": "fee",
					"type": "u64"
				},
				{
					"name": "receiver",
					"type": "bytes"
				}
			]
		},
		{
			"name": "transferNative",
			"accounts": [
				{
					"name": "zebecEoa",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "dataStorage",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "txnCount",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "pdaSigner",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "config",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "portalConfig",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "from",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "mint",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "portalCustody",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "portalAuthoritySigner",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "portalCustodySigner",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "bridgeConfig",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "portalMessage",
					"isMut": true,
					"isSigner": true
				},
				{
					"name": "portalEmitter",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "portalSequence",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "bridgeFeeCollector",
					"isMut": true,
					"isSigner": false
				},
				{
					"name": "clock",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "rent",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "systemProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "portalBridgeProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "coreBridgeProgram",
					"isMut": false,
					"isSigner": false
				},
				{
					"name": "tokenProgram",
					"isMut": false,
					"isSigner": false
				}
			],
			"args": [
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					}
				},
				{
					"name": "senderChain",
					"type": "bytes"
				},
				{
					"name": "targetChain",
					"type": "u16"
				},
				{
					"name": "fee",
					"type": "u64"
				},
				{
					"name": "receiver",
					"type": "bytes"
				}
			]
		}
	],
	"accounts": [
		{
			"name": "Config",
			"type": {
				"kind": "struct",
				"fields": [
					{
						"name": "owner",
						"type": "publicKey"
					},
					{
						"name": "nonce",
						"type": "u32"
					}
				]
			}
		},
		{
			"name": "EmitterAddrAccount",
			"type": {
				"kind": "struct",
				"fields": [
					{
						"name": "chainId",
						"type": "u16"
					},
					{
						"name": "emitterAddr",
						"type": "string"
					}
				]
			}
		},
		{
			"name": "ProcessedVAA",
			"type": {
				"kind": "struct",
				"fields": []
			}
		},
		{
			"name": "Transaction",
			"type": {
				"kind": "struct",
				"fields": [
					{
						"name": "programId",
						"type": "publicKey"
					},
					{
						"name": "accounts",
						"type": {
							"vec": {
								"defined": "TransactionAccount"
							}
						}
					},
					{
						"name": "data",
						"type": "bytes"
					},
					{
						"name": "didExecute",
						"type": "bool"
					}
				]
			}
		},
		{
			"name": "TransactionData",
			"type": {
				"kind": "struct",
				"fields": [
					{
						"name": "sender",
						"type": "bytes"
					},
					{
						"name": "receiver",
						"type": "bytes"
					},
					{
						"name": "dataAccount",
						"type": "publicKey"
					},
					{
						"name": "fromChainId",
						"type": "u64"
					},
					{
						"name": "tokenMint",
						"type": "publicKey"
					},
					{
						"name": "amount",
						"type": "u64"
					},
					{
						"name": "startTime",
						"type": "u64"
					},
					{
						"name": "endTime",
						"type": "u64"
					},
					{
						"name": "canUpdate",
						"type": "bool"
					},
					{
						"name": "canCancel",
						"type": "bool"
					}
				]
			}
		},
		{
			"name": "Count",
			"type": {
				"kind": "struct",
				"fields": [
					{
						"name": "count",
						"type": "u8"
					}
				]
			}
		}
	],
	"types": [
		{
			"name": "TransferWrappedData",
			"type": {
				"kind": "struct",
				"fields": [
					{
						"name": "nonce",
						"type": "u32"
					},
					{
						"name": "amount",
						"type": "u64"
					},
					{
						"name": "fee",
						"type": "u64"
					},
					{
						"name": "targetAddress",
						"type": {
							"array": ["u8", 32]
						}
					},
					{
						"name": "targetChain",
						"type": "u16"
					}
				]
			}
		},
		{
			"name": "TransferNativeData",
			"type": {
				"kind": "struct",
				"fields": [
					{
						"name": "nonce",
						"type": "u32"
					},
					{
						"name": "amount",
						"type": "u64"
					},
					{
						"name": "fee",
						"type": "u64"
					},
					{
						"name": "targetAddress",
						"type": {
							"array": ["u8", 32]
						}
					},
					{
						"name": "targetChain",
						"type": "u16"
					}
				]
			}
		},
		{
			"name": "TransactionAccount",
			"type": {
				"kind": "struct",
				"fields": [
					{
						"name": "pubkey",
						"type": "publicKey"
					},
					{
						"name": "isSigner",
						"type": "bool"
					},
					{
						"name": "isWritable",
						"type": "bool"
					}
				]
			}
		},
		{
			"name": "PostMessageData",
			"type": {
				"kind": "struct",
				"fields": [
					{
						"name": "nonce",
						"docs": ["Unique nonce for this message"],
						"type": "u32"
					},
					{
						"name": "payload",
						"docs": ["Message payload"],
						"type": "bytes"
					},
					{
						"name": "consistencyLevel",
						"docs": ["Commitment Level required for an attestation to be produced"],
						"type": {
							"defined": "ConsistencyLevel"
						}
					}
				]
			}
		},
		{
			"name": "BridgeData",
			"type": {
				"kind": "struct",
				"fields": [
					{
						"name": "guardianSetIndex",
						"docs": ["The current guardian set index, used to decide which signature sets to accept."],
						"type": "u32"
					},
					{
						"name": "lastLamports",
						"docs": ["Lamports in the collection account"],
						"type": "u64"
					},
					{
						"name": "config",
						"docs": ["Bridge configuration, which is set once upon initialization."],
						"type": {
							"defined": "BridgeConfig"
						}
					}
				]
			}
		},
		{
			"name": "BridgeConfig",
			"type": {
				"kind": "struct",
				"fields": [
					{
						"name": "guardianSetExpirationTime",
						"docs": [
							"Period for how long a guardian set is valid after it has been replaced by a new one.  This",
							"guarantees that VAAs issued by that set can still be submitted for a certain period.  In",
							"this period we still trust the old guardian set."
						],
						"type": "u32"
					},
					{
						"name": "fee",
						"docs": ["Amount of lamports that needs to be paid to the protocol to post a message"],
						"type": "u64"
					}
				]
			}
		},
		{
			"name": "Instruction",
			"type": {
				"kind": "enum",
				"variants": [
					{
						"name": "Initialize"
					},
					{
						"name": "AttestToken"
					},
					{
						"name": "CompleteNative"
					},
					{
						"name": "CompleteWrapped"
					},
					{
						"name": "TransferWrapped"
					},
					{
						"name": "TransferNative"
					},
					{
						"name": "RegisterChain"
					},
					{
						"name": "CreateWrapped"
					},
					{
						"name": "UpgradeContract"
					},
					{
						"name": "CompleteNativeWithPayload"
					},
					{
						"name": "CompleteWrappedWithPayload"
					},
					{
						"name": "TransferWrappedWithPayload"
					},
					{
						"name": "TransferNativeWithPayload"
					}
				]
			}
		},
		{
			"name": "PortalError",
			"type": {
				"kind": "enum",
				"variants": [
					{
						"name": "CustomZeroError"
					}
				]
			}
		},
		{
			"name": "ConsistencyLevel",
			"type": {
				"kind": "enum",
				"variants": [
					{
						"name": "Confirmed"
					},
					{
						"name": "Finalized"
					}
				]
			}
		},
		{
			"name": "Instruction",
			"type": {
				"kind": "enum",
				"variants": [
					{
						"name": "Initialize"
					},
					{
						"name": "PostMessage"
					},
					{
						"name": "PostVAA"
					},
					{
						"name": "SetFees"
					},
					{
						"name": "TransferFees"
					},
					{
						"name": "UpgradeContract"
					},
					{
						"name": "UpgradeGuardianSet"
					},
					{
						"name": "VerifySignatures"
					}
				]
			}
		}
	],
	"events": [
		{
			"name": "Initialized",
			"fields": [
				{
					"name": "owner",
					"type": "publicKey",
					"index": false
				},
				{
					"name": "nonce",
					"type": "u32",
					"index": false
				}
			]
		},
		{
			"name": "RegisteredChain",
			"fields": [
				{
					"name": "chainId",
					"type": "u16",
					"index": false
				},
				{
					"name": "emitterAddr",
					"type": "string",
					"index": false
				}
			]
		},
		{
			"name": "StoredMsg",
			"fields": [
				{
					"name": "msgType",
					"type": "u64",
					"index": false
				},
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					},
					"index": false
				},
				{
					"name": "count",
					"type": "u8",
					"index": false
				}
			]
		},
		{
			"name": "Deposited",
			"fields": [
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					},
					"index": false
				},
				{
					"name": "currentCount",
					"type": "u8",
					"index": false
				}
			]
		},
		{
			"name": "StreamUpdated",
			"fields": [
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					},
					"index": false
				},
				{
					"name": "currentCount",
					"type": "u8",
					"index": false
				}
			]
		},
		{
			"name": "PausedResumed",
			"fields": [
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					},
					"index": false
				},
				{
					"name": "currentCount",
					"type": "u8",
					"index": false
				}
			]
		},
		{
			"name": "DirectTransferredNative",
			"fields": [
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					},
					"index": false
				},
				{
					"name": "senderChain",
					"type": "bytes",
					"index": false
				},
				{
					"name": "targetChain",
					"type": "u16",
					"index": false
				},
				{
					"name": "receiver",
					"type": "bytes",
					"index": false
				},
				{
					"name": "currentCount",
					"type": "u8",
					"index": false
				}
			]
		},
		{
			"name": "DirectTransferredWrapped",
			"fields": [
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					},
					"index": false
				},
				{
					"name": "senderChain",
					"type": "bytes",
					"index": false
				},
				{
					"name": "targetChain",
					"type": "u16",
					"index": false
				},
				{
					"name": "receiver",
					"type": "bytes",
					"index": false
				},
				{
					"name": "currentCount",
					"type": "u8",
					"index": false
				}
			]
		},
		{
			"name": "StreamCreated",
			"fields": [
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					},
					"index": false
				},
				{
					"name": "currentCount",
					"type": "u8",
					"index": false
				}
			]
		},
		{
			"name": "CancelCreated",
			"fields": [
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					},
					"index": false
				},
				{
					"name": "currentCount",
					"type": "u8",
					"index": false
				}
			]
		},
		{
			"name": "SenderWithdrawCreated",
			"fields": [
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					},
					"index": false
				},
				{
					"name": "currentCount",
					"type": "u8",
					"index": false
				}
			]
		},
		{
			"name": "InstantTransferCreated",
			"fields": [
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					},
					"index": false
				},
				{
					"name": "currentCount",
					"type": "u8",
					"index": false
				}
			]
		},
		{
			"name": "ReceiverWithdrawCreated",
			"fields": [
				{
					"name": "sender",
					"type": {
						"array": ["u8", 32]
					},
					"index": false
				},
				{
					"name": "currentCount",
					"type": "u8",
					"index": false
				}
			]
		},
		{
			"name": "ExecutedTransaction",
			"fields": [
				{
					"name": "fromChainId",
					"type": "bytes",
					"index": false
				},
				{
					"name": "ethAdd",
					"type": {
						"array": ["u8", 32]
					},
					"index": false
				},
				{
					"name": "transaction",
					"type": "publicKey",
					"index": false
				}
			]
		}
	],
	"errors": [
		{
			"code": 6000,
			"name": "VAAKeyMismatch",
			"msg": "Posted VAA Key Mismatch"
		},
		{
			"code": 6001,
			"name": "VAAEmitterMismatch",
			"msg": "Posted VAA Emitter Chain ID or Address Mismatch"
		},
		{
			"code": 6002,
			"name": "InvalidSenderWallet",
			"msg": "Sender Wallet Mismatch"
		},
		{
			"code": 6003,
			"name": "AlreadyExecuted",
			"msg": "The given transaction has already been executed."
		},
		{
			"code": 6004,
			"name": "InvalidCPI",
			"msg": "Invalid CPI"
		},
		{
			"code": 6005,
			"name": "InvalidCaller",
			"msg": "Invalid Caller"
		},
		{
			"code": 6006,
			"name": "Overflow",
			"msg": "Overflow"
		},
		{
			"code": 6007,
			"name": "InvalidPayload",
			"msg": "Invalid Payload"
		},
		{
			"code": 6008,
			"name": "InvalidEmitterAddress",
			"msg": "Invalid Emitter Address Provided"
		},
		{
			"code": 6009,
			"name": "CountMismatch",
			"msg": "Invalid Count"
		},
		{
			"code": 6010,
			"name": "MintKeyMismatch",
			"msg": "Invalid Mint Key"
		},
		{
			"code": 6011,
			"name": "PdaSenderMismatch",
			"msg": "Invalid Pda Sender"
		},
		{
			"code": 6012,
			"name": "PdaReceiverMismatch",
			"msg": "Invalid Pda Receiver"
		},
		{
			"code": 6013,
			"name": "SenderDerivedKeyMismatch",
			"msg": "Invalid Sender Derived Public Key"
		},
		{
			"code": 6014,
			"name": "ReceiverDerivedKeyMismatch",
			"msg": "Invalid Receiver Derived Public Key"
		},
		{
			"code": 6015,
			"name": "AmountMismatch",
			"msg": "Invalid Amount"
		},
		{
			"code": 6016,
			"name": "StartTimeMismatch",
			"msg": "Invalid Start Time"
		},
		{
			"code": 6017,
			"name": "EndTimeMismatch",
			"msg": "Invalid End Time"
		},
		{
			"code": 6018,
			"name": "CanCancelMismatch",
			"msg": "Invalid Can Cancel"
		},
		{
			"code": 6019,
			"name": "CanUpdateMismatch",
			"msg": "Invalid Can Update"
		},
		{
			"code": 6020,
			"name": "DataAccountMismatch",
			"msg": "Invalid Data Account"
		}
	]
}
